class TableWidget(QFrame): def __init__(self, parent): super(TableWidget, self).__init__(parent) self.m_frame = QFrame(self) self.m_frame.setFrameShape(QFrame.Panel) self.m_frame.setFrameShadow(QFrame.Plain) horizontalLayout = QHBoxLayout(self.m_frame) horizontalLayout.setContentsMargins(0, 0, 0, 0) horizontalLayout.setSpacing(0) self.m_table = QTableView(self.m_frame) self.m_table.setStatusTip("") self.m_table.setLayoutDirection(Qt.LeftToRight) self.m_table.setFrameShape(QFrame.NoFrame) self.m_table.setFrameShadow(QFrame.Plain) self.m_table.setSelectionBehavior(QAbstractItemView.SelectRows) horizontalLayout.addWidget(self.m_table) self.m_line = QFrame(self.m_frame) self.m_line.setFrameShadow(QFrame.Plain) self.m_line.setFrameShape(QFrame.VLine) horizontalLayout.addWidget(self.m_line) self.m_toolBtnFrame = QFrame(self.m_frame) self.m_toolBtnFrame.setLayoutDirection(Qt.RightToLeft) self.m_toolBtnFrame.setFrameShape(QFrame.NoFrame) self.m_toolBtnFrame.setFrameShadow(QFrame.Plain) self.m_verticalLayout = QVBoxLayout(self.m_toolBtnFrame) self.m_verticalLayout.setContentsMargins(1, 1, 1, 1) self.m_verticalLayout.setSpacing(1) self.m_addBtn = QToolButton(self.m_toolBtnFrame) icon = QIcon() icon.addPixmap(QPixmap(":/icons/plus.png"), QIcon.Normal, QIcon.Off) self.m_addBtn.setIcon(icon) self.m_addBtn.setAutoRaise(True) self.m_addBtn.setArrowType(Qt.NoArrow) self.m_verticalLayout.addWidget(self.m_addBtn) self.m_deleteBtn = QToolButton(self.m_toolBtnFrame) icon1 = QIcon() icon1.addPixmap(QPixmap(":/icons/minus.png"), QIcon.Normal, QIcon.Off) self.m_deleteBtn.setIcon(icon1) self.m_deleteBtn.setAutoRaise(True) self.m_verticalLayout.addWidget(self.m_deleteBtn) self.m_clearAllBtn = QToolButton(self.m_toolBtnFrame) icon1 = QIcon() icon1.addPixmap(QPixmap(":/icons/clear.png"), QIcon.Normal, QIcon.Off) self.m_clearAllBtn.setIcon(icon1) self.m_clearAllBtn.setAutoRaise(True) self.m_verticalLayout.addWidget(self.m_clearAllBtn) self.m_clearAllBtn.setVisible(False) self.m_browseBtn = QToolButton(self.m_toolBtnFrame) icon1 = QIcon() icon1.addPixmap(QPixmap(":/icons/local.png"), QIcon.Normal, QIcon.Off) self.m_browseBtn.setIcon(icon1) self.m_browseBtn.setAutoRaise(True) self.m_verticalLayout.addWidget(self.m_browseBtn) self.m_browseBtn.setVisible(False) self.m_editBtn = QToolButton(self.m_toolBtnFrame) icon1 = QIcon() icon1.addPixmap(QPixmap(":/icons/edit.png"), QIcon.Normal, QIcon.Off) self.m_editBtn.setIcon(icon1) self.m_editBtn.setAutoRaise(True) self.m_verticalLayout.addWidget(self.m_editBtn) self.m_editBtn.setVisible(False) self.m_pdfBtn = QToolButton(self.m_toolBtnFrame) icon1 = QIcon() icon1.addPixmap(QPixmap(":/icons/pdf.png"), QIcon.Normal, QIcon.Off) self.m_pdfBtn.setIcon(icon1) self.m_pdfBtn.setAutoRaise(True) self.m_verticalLayout.addWidget(self.m_pdfBtn) self.m_pdfBtn.setVisible(False) self.m_pdfBtn.setToolTip("Generate PDF report") self.m_htmlBtn = QToolButton(self.m_toolBtnFrame) icon1 = QIcon() icon1.addPixmap(QPixmap(":/icons/html.png"), QIcon.Normal, QIcon.Off) self.m_htmlBtn.setIcon(icon1) self.m_htmlBtn.setAutoRaise(True) self.m_verticalLayout.addWidget(self.m_htmlBtn) self.m_htmlBtn.setVisible(False) self.m_htmlBtn.setToolTip("Generate HTML report") self.m_textBtn = QToolButton(self.m_toolBtnFrame) icon1 = QIcon() icon1.addPixmap(QPixmap(":/icons/text.png"), QIcon.Normal, QIcon.Off) self.m_textBtn.setIcon(icon1) self.m_textBtn.setAutoRaise(True) self.m_verticalLayout.addWidget(self.m_textBtn) self.m_textBtn.setVisible(False) self.m_textBtn.setToolTip("Generate report in text format") spacerItem = QSpacerItem(20, 10, QSizePolicy.Minimum, QSizePolicy.Expanding) self.m_verticalLayout.addItem(spacerItem) horizontalLayout.addWidget(self.m_toolBtnFrame) mainLayout = QHBoxLayout() mainLayout.setContentsMargins(0, 0, 0, 0) mainLayout.addWidget(self.m_frame) self.setLayout(mainLayout) def addActionToAddBtn(self, action): menu = self.m_addBtn.menu() if menu is None: self.m_addBtn.setMenu(QMenu()) self.m_addBtn.setPopupMode(QToolButton.MenuButtonPopup) menu = self.m_addBtn.menu() menu.addAction(action) def showClearAll(self, show): self.m_clearAllBtn.setVisible(show) def showBrowse(self, show): self.m_browseBtn.setVisible(show) def showEdit(self, show): self.m_editBtn.setVisible(show) def showPdfBtn(self, show): self.m_pdfBtn.setVisible(show) def showHtmlBtn(self, show): self.m_htmlBtn.setVisible(show) def showTextBtn(self, show): self.m_textBtn.setVisible(show) def showAddBtn(self, show): self.m_addBtn.setVisible(show) def showDeleteBtn(self, show): self.m_deleteBtn.setVisible(show) def showBtns(self, show): self.m_toolBtnFrame.setVisible(show) def model(self): return self.m_table.model() def setModel(self, model): self.m_table.setModel(model) if self.m_table.selectionModel() is not None: self.m_table.selectionModel().selectionChanged.connect( self.updateDeleteBtnState) self.updateDeleteBtnState() self.m_table.selectionModel().selectionChanged.connect( self.updateEditBtnState) self.updateEditBtnState() self.m_table.selectionModel().selectionChanged.connect( self.updatePdfBtnState) self.updatePdfBtnState() self.m_table.selectionModel().selectionChanged.connect( self.updateHtmlBtnState) self.updateHtmlBtnState() self.m_table.selectionModel().selectionChanged.connect( self.updateTextBtnState) self.updateTextBtnState() def updateDeleteBtnState(self): enable = self.m_table.selectionModel().hasSelection() self.m_deleteBtn.setEnabled(enable) def updateEditBtnState(self): enable = self.m_table.selectionModel().hasSelection() self.m_editBtn.setEnabled(enable) def updateHtmlBtnState(self): enable = self.m_table.selectionModel().hasSelection() self.m_htmlBtn.setEnabled(enable) def updatePdfBtnState(self): enable = self.m_table.selectionModel().hasSelection() self.m_pdfBtn.setEnabled(enable) def updateTextBtnState(self): enable = self.m_table.selectionModel().hasSelection() self.m_textBtn.setEnabled(enable) def addBtn(self): return self.m_addBtn def deleteBtn(self): return self.m_deleteBtn def clearAllBtn(self): return self.m_clearAllBtn def browseBtn(self): return self.m_browseBtn def editBtn(self): return self.m_editBtn def pdfBtn(self): return self.m_pdfBtn def htmlBtn(self): return self.m_htmlBtn def textBtn(self): return self.m_textBtn def table(self): return self.m_table
class SideMenu(QWidget): SCAN_BUTTON = 0 VIEW_BUTTON = 1 WRITE_BUTTON = 2 def __init__(self, parent): super().__init__() self.initUI() def initUI(self): self.centralFrame = QFrame(self) self.sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) self.sizePolicy.setHorizontalStretch(0) self.sizePolicy.setVerticalStretch(0) self.sizePolicy.setHeightForWidth( self.centralFrame.sizePolicy().hasHeightForWidth()) self.centralFrame.setSizePolicy(self.sizePolicy) self.centralFrame.setFrameShape(QFrame.NoFrame) self.centralFrame.setFrameShadow(QFrame.Raised) self.centralFrame.setMinimumSize(QSize(70, 0)) self.centralFrame.setMaximumSize(QSize(70, 16777215)) self.centralFrame.setLayoutDirection(Qt.LeftToRight) self.centralFrame.setStyleSheet(u"background-color: rgb(27, 29, 35);") self.logoFrame = QFrame(self.centralFrame) self.logoFrame.setFrameShape(QFrame.NoFrame) self.logoFrame.setFrameShadow(QFrame.Raised) self.logoFrame.setContentsMargins(0, 0, 0, 0) self.logoFrame.setStyleSheet("border: none;") self.logoWidget = Logo(self.logoFrame) self.logoLayout = QHBoxLayout(self.logoFrame) self.logoLayout.setAlignment(Qt.AlignCenter) self.logoLayout.addWidget(self.logoWidget) self.btnsFrame = QFrame(self.centralFrame) self.btnsFrame.setFrameShape(QFrame.NoFrame) self.btnsFrame.setFrameShadow(QFrame.Raised) self.btnsFrame.setContentsMargins(0, 0, 0, 0) self.btnsFrame.setStyleSheet("border: none;") self.networkBtn = MenuButton(self.btnsFrame) self.networkBtn.setIcon(QIcon( resource_path("icons/cil-wifi-signal-1"))) self.networkBtn.setToolTip("Scan for Devices") self.viewBtn = MenuButton(self.btnsFrame) self.viewBtn.setIcon(QIcon(resource_path("icons/cil-speedometer"))) self.viewBtn.setToolTip("View Device Measurements") self.writeBtn = MenuButton(self.btnsFrame) self.writeBtn.setIcon(QIcon(resource_path("icons/cil-transfer"))) self.writeBtn.setToolTip("Output Device Measurements") self.btnsLayout = QVBoxLayout(self.btnsFrame) self.btnsLayout.addWidget(self.networkBtn) self.btnsLayout.addWidget(self.viewBtn) self.btnsLayout.addWidget(self.writeBtn) self.btnsLayout.setContentsMargins(0, 0, 0, 0) self.centralLayout = QVBoxLayout(self.centralFrame) self.centralLayout.addWidget(self.logoFrame, stretch=.5, alignment=Qt.AlignTop) self.centralLayout.addWidget(self.btnsFrame, stretch=4, alignment=Qt.AlignTop) self.centralLayout.setContentsMargins(0, 0, 0, 0) self.uiLayout = QHBoxLayout(self) self.uiLayout.addWidget(self.centralFrame) self.uiLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.uiLayout)
class Registered: def __init__(self, form_base_layout: QFormLayout): super(Registered, self).__init__() self.form_base_layout: QFormLayout = form_base_layout def setup_ui(self, containers: QFrame, plugins: Any): # parent_unregistered_frame self.parent_registered_frame = QFrame(containers) self.parent_registered_frame.setFrameShape(QFrame.StyledPanel) self.parent_registered_frame.setFrameShadow(QFrame.Raised) self.parent_registered_frame.setContentsMargins(0, 45, 0, 0) # parent_vl_unregistered_frame self.parent_vl_registered_frame = QVBoxLayout( self.parent_registered_frame) self.parent_vl_registered_frame.setContentsMargins(30, 30, 30, 30) self.parent_vl_registered_frame.setObjectName("vl_registered_frame") # registered_frame self.registered_frame = QFrame(self.parent_registered_frame) self.registered_frame.setMinimumSize(QSize(0, 500)) self.registered_frame.setMaximumSize(QSize(16777215, 16777215)) self.registered_frame.setObjectName( RegisteredStyles.registered_frame_style[0]) self.registered_frame.setStyleSheet( RegisteredStyles.registered_frame_style[1]) self.registered_frame.setFrameShape(QFrame.StyledPanel) self.registered_frame.setLayoutDirection(Qt.LeftToRight) self.registered_frame.setFrameShadow(QFrame.Raised) # vl_registered_frame self.vl_registered_frame = QVBoxLayout(self.registered_frame) self.vl_registered_frame.setContentsMargins(30, 30, 30, 30) self.vl_registered_frame.setObjectName("vl_registered_frame") # Add ScrollView self.scroll_area = QScrollArea(self.registered_frame) self.scroll_area.setObjectName(RegisteredStyles.scroll_area_style[0]) self.scroll_area.setStyleSheet(RegisteredStyles.scroll_area_style[1]) self.scroll_area.setWidgetResizable(True) self.scroll_area_contents = QWidget() self.scroll_area_contents.setGeometry(QRect(0, 0, 1080, 344)) self.scroll_area_contents.setObjectName( "scroll_area_contents_page_containers") # Add Vlayout ScroolView self.vlayout_scroll_view = QVBoxLayout(self.scroll_area_contents) self.vlayout_scroll_view.setObjectName("vlayout_scroll_view") # frame_containers_items_registered self.frame_containers_items_registered = QFrame( self.scroll_area_contents) self.frame_containers_items_registered.setFrameShape( QFrame.StyledPanel) self.frame_containers_items_registered.setFrameShadow(QFrame.Raised) self.frame_containers_items_registered.setObjectName( "frame_containers_items_registered") self.vl_registered_frame.addWidget( self.frame_containers_items_registered) self.regestered_frame_gridLayout = QGridLayout( self.frame_containers_items_registered) self.regestered_frame_gridLayout.setSpacing(24) self.regestered_frame_gridLayout.setObjectName( "regestered_frame_gridLayout") # lbl_registered self.lbl_registered = QLabel(self.parent_registered_frame) self.lbl_registered.setGeometry(QRect(75, 15, 141, 32)) # self.lbl_registered.setMinimumSize(QSize(91, 32)) # self.lbl_registered.setObjectName(RegisteredStyles.lbl_registered_style[0]) # self.lbl_registered.setStyleSheet(RegisteredStyles.lbl_registered_style[1]) # self.lbl_registered.setAlignment(Qt.AlignCenter) # self.lbl_registered.setText("REGISTERED") start_index = box_primitive().create_box( containers=self.frame_containers_items_registered, frame_gridLayout=self.regestered_frame_gridLayout, plugins=plugins) # box_primitive().create_box( # containers=self.frame_containers_items_registered, count_box=5, # start_index=start_index, frame_gridLayout=self.regestered_frame_gridLayout, # box_type=False # ) del start_index self.vlayout_scroll_view.addWidget( self.frame_containers_items_registered, 0, Qt.AlignLeft) self.scroll_area.setWidget(self.scroll_area_contents) self.vl_registered_frame.addWidget(self.scroll_area) self.parent_vl_registered_frame.addWidget(self.registered_frame) self.form_base_layout.setWidget(1, QFormLayout.SpanningRole, self.parent_registered_frame)