Пример #1
0
    def __add_scroll_area__(self, username):
        sub_frame = QFrame()
        sub_frame.setContentsMargins(0, 0, 0, 0)

        sub_frame.setAccessibleName(sub_qframe_styles[0])
        sub_frame.setStyleSheet(sub_qframe_styles[1])

        user_profile_layout = QHBoxLayout()
        user_profile_layout.setContentsMargins(0, 0, 0, 0)

        self.username_icon = QPushButton()
        self.username_icon.setContentsMargins(0, 0, 0, 0)
        self.username_icon.setAccessibleName(username_icon_styles[0])
        self.username_icon.setStyleSheet(username_icon_styles[1])
        icon = QIcon('./assets/user.png')
        self.username_icon.setIcon(icon)
        self.username_icon.setIconSize(QSize(40, 40))

        self.username_label = QLabel(username)
        self.username_label.setContentsMargins(0, 0, 0, 0)
        self.username_label.setAccessibleName(username_label_styles[0])
        self.username_label.setStyleSheet(username_label_styles[1])

        user_profile_layout.addWidget(self.username_icon)
        user_profile_layout.addWidget(self.username_label)

        sub_frame.setLayout(user_profile_layout)

        self.scroll_layout.addRow(sub_frame)
Пример #2
0
    def manage_menu(self):
        self.table = QTableWidget()
        self.table.setStyleSheet("background:#fff")
        self.table.resize(self.width(), self.height())
        self.table.setColumnCount(7)

        self.table.horizontalHeader().setSectionResizeMode(
            QHeaderView.ResizeToContents
        )
        self.table.setHorizontalHeaderItem(0, QTableWidgetItem("License Plate"))
        self.table.setHorizontalHeaderItem(1, QTableWidgetItem("Car Brand"))
        self.table.setHorizontalHeaderItem(2, QTableWidgetItem("Owner Name"))
        self.table.setHorizontalHeaderItem(3, QTableWidgetItem("Space ID"))
        self.table.setHorizontalHeaderItem(4, QTableWidgetItem("Check-in time"))
        self.table.setHorizontalHeaderItem(5, QTableWidgetItem("Discount"))
        self.table.setHorizontalHeaderItem(6, QTableWidgetItem("ACTION"))

        self.refresh_manage_menu()

        frame = QFrame()
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        layout.addWidget(self.table)
        frame.setLayout(layout)
        frame.setContentsMargins(0, 0, 0, 0)
        frame.setMaximumWidth(self.width())
        frame.setMinimumWidth(self.width())
        frame.setMaximumHeight(self.height())
        frame.setMinimumHeight(self.height())
        self.vertical_3.addWidget(frame)
        self.vertical_3.addStretch()
    def __add_inclued_paths_layout__(self):
        frame = QFrame()
        frame.setAccessibleName(inclued_paths_section_style[0])
        frame.setStyleSheet(inclued_paths_section_style[1])
        frame.setContentsMargins(10, 0, 10, 45)

        layout = QHBoxLayout()
        layout.addStretch()

        frame.setLayout(layout)

        radio_group = QButtonGroup()

        radio_button_login_finder = QRadioButton()
        radio_button_login_finder.setText("Login finder")
        radio_button_login_finder.setAccessibleName(radio_buttons_style[0])
        radio_button_login_finder.setStyleSheet(radio_buttons_style[1])
        radio_button_login_finder.setChecked(True)

        radio_group.addButton(radio_button_login_finder)

        layout.addWidget(radio_button_login_finder)

        label = QLabel("Paths")
        label.setAccessibleName(db_label_style[0])
        label.setStyleSheet(db_label_style[1])
        label.setContentsMargins(0, 0, 0, 40)
        layout.addWidget(label)

        self.v_main_layout.addWidget(frame)
    def __add_languages_layout__(self):
        frame = QFrame()
        frame.setAccessibleName(inclued_paths_section_style[0])
        frame.setStyleSheet(inclued_paths_section_style[1])
        frame.setContentsMargins(10, 0, 10, 45)

        layout = QHBoxLayout()
        layout.addStretch()

        button_groups = QButtonGroup()

        radio_button_php = QRadioButton()
        radio_button_php.setText("PHP")
        radio_button_php.setChecked(True)
        radio_button_php.setAccessibleName(radio_buttons_style[0])
        radio_button_php.setStyleSheet(radio_buttons_style[1])

        button_groups.addButton(radio_button_php)

        layout.addWidget(radio_button_php)

        label = QLabel("Languages")
        label.setAccessibleName(db_label_style[0])
        label.setStyleSheet(db_label_style[1])
        label.setContentsMargins(0, 0, 0, 40)
        layout.addWidget(label)

        frame.setLayout(layout)

        self.v_main_layout.addWidget(frame)
Пример #5
0
    def __add_widget__(self):
        """ this function return a q-frame to use in main layout """

        main_frame = QFrame()
        main_frame.setContentsMargins(0, 10, 0, 0)
        main_frame.setAccessibleName(main_frame_styles[0])
        main_frame.setStyleSheet(main_frame_styles[1])

        frame_layout = QVBoxLayout()
        frame_layout.setContentsMargins(0, 0, 0, 0)
        frame_layout.setStretch(0, 0)
        frame_layout.setSpacing(0)

        self.table_widget = QTableWidget()
        self.table_widget.setAccessibleName(table_widget_styles[0])
        self.table_widget.setStyleSheet(table_widget_styles[1])
        self.table_widget.verticalHeader().hide()
        self.table_widget.setRowCount(0)
        self.table_widget.setColumnCount(4)
        self.table_widget.setHorizontalHeaderLabels(["IP Client", "Name", "Port", "System"])

        header = self.table_widget.horizontalHeader()
        header.setAccessibleName(table_header_styles[0])
        header.setStyleSheet(table_header_styles[1])
        header.setSectionResizeMode(0, QHeaderView.Stretch)
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        header.setSectionResizeMode(2, QHeaderView.Stretch)
        header.setSectionResizeMode(3, QHeaderView.Stretch)

        frame_layout.addWidget(self.table_widget)
        main_frame.setLayout(frame_layout)

        return main_frame
Пример #6
0
class Page(QWidget):
    Hiding = QtCore.pyqtSignal(int)
    Showing = QtCore.pyqtSignal(int)

    def __init__(self, index: int, page_name: str, parent: QWidget = None):
        super(Page, self).__init__(parent)

        self.myIndex: int = index
        self.setObjectName(page_name)
        self.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.MinimumExpanding)
        self.setContentsMargins(0, 0, 0, 0)

        self.hboxlayout = QHBoxLayout(self)
        self.hboxlayout.setContentsMargins(0, 0, 0, 0)
        self.hboxlayout.setSpacing(0)
        self.setLayout(self.hboxlayout)

        scroll_area = QScrollArea(self)
        scroll_area.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        scroll_area.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        scroll_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.MinimumExpanding)

        scroll_area.setFrameShape(QFrame.NoFrame)
        scroll_area.setFrameShadow(QFrame.Plain)
        scroll_area.setLineWidth(0)
        scroll_area.setWidgetResizable(True)
        scroll_area.installEventFilter(TTScroller(scroll_area))

        self.inner_area = QFrame()
        self.inner_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Ignored)
        self.inner_area.setProperty("TTPage", QtCore.QVariant(True))
        self.inner_area.setContentsMargins(0, 0, 0, 0)
        self.inner_area.setFrameShape(QFrame.Box)
        self.inner_area.setLineWidth(0)

        self.innerLayout = QHBoxLayout(self.inner_area)
        self.innerLayout.setContentsMargins(0, 0, 0, 0)
        self.innerLayout.setSpacing(2)
        self.inner_area.setLayout(self.innerLayout)

        spacer = QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Minimum)
        self.innerLayout.addItem(spacer)
        scroll_area.setWidget(self.inner_area)
        self.hboxlayout.addWidget(scroll_area)

    def add_group(self, name: str):
        grp = group.Group(name, self.inner_area)
        self.innerLayout.insertWidget(self.innerLayout.count() - 1, grp)
        parent_toolbar = tabtoolbar.find_tabtoolbar(self)  # type: ignore[attr-defined]
        if not parent_toolbar:
            raise Exception("Could not find Parent Tabtoolbar")

        parent_toolbar.adjust_verticalsize(grp.height())
        return grp

    def hide(self):
        self.Hiding.emit(self.myIndex)

    def show(self):
        self.Showing.emit(self.myIndex)
Пример #7
0
 def horizontalSpacer():
     spacer = QFrame()
     spacer.setFrameShape(QFrame.HLine)
     spacer.setMaximumHeight(1)
     spacer.setContentsMargins(0, 0, 0, 0)
     # spacer.setLineWidth(0)
     # spacer.setFrameShadow(QFrame.Sunken)
     spacer.setStyleSheet('color: #434858')
     return spacer
Пример #8
0
def draw_boarder(parent, width, height):
    frame = QFrame()
    frame.setFixedSize(int(width), int(height))
    frame.setFrameShape(QFrame.StyledPanel)
    frame.setLineWidth(2)
    frame.setContentsMargins(5, 5, 5, 5)
    parent.addWidget(frame)

    return frame
Пример #9
0
class QShadowFrame(QFrame):

	def __init__(self, master=None, only_pressed=True):
		super().__init__(master)
		self.only_pressed = only_pressed
		self._be_pressing = False
		self.build_inter()

	def build_inter(self):
		self.init_images()

		self.main_frame = QFrame()
		self.main_frame.setAlignment(Qt.AlignCenter)
		self.main_frame.setSizePolicy(self.sizePolicy())
		self.main_frame.setContentsMargins(0, 0, 0, 0)

		self.left_lb = QLabel(self)

		self.setContentsMargins(0, 0, 0, 0)

	def init_images(self):
		self._left = Image.open(os.path.join(paths.IMAGE, "left_shadow.png"))
		self._right = left.rotate(180)
		self._top = Image.open(os.path.join(paths.IMAGE, "top_shadow.png"))
		self._bottom = top.rotate(180)
		self.left = self._left.toqpixmap()
		self.left.fill()
		self.right = self._right.toqpixmap()
		self.right.fill()
		self.top = self._top.toqpixmap()
		self.top.fill()
		self.bottom = self._bottom.toqpixmap()
		self.bottom.fill()
		self.adjust_size()

	def adjust_size(self):
		self.left = self.left.scaled(self.left.width(), self.main_frame.height() + 2 * self.top.height())
		self.right = self.right.scaled(self.left.width(), self.left.height())
		self.top = self.top.scaled(self.main_frame.width(), self.top.height())
		self.bottom = self.bottom.scaled(self.top.width(), self.top.height())

	def update_lb(self):
		self.left_lb.setPixmap(self.left)
		self.right_lb.setPixmap(self.right)
		self.top_lb.setPixmap(self.top)
		self.bottom.setPixmap(self.bottom)

	def mousePressEvent(self, *args, **kwargs):
		pass

	def resizeEvent(self):
		if self.only_pressed and not self._be_pressing:
			return
		self.adjust_size()
		self.update_lb()
Пример #10
0
 def makeLCDframe(self, lcdUpper, lcd, lcdLower):
     lcdlayout = QVBoxLayout()
     lcdlayout.addWidget(lcdUpper, 1)
     lcdlayout.addWidget(lcd, 5)
     lcdlayout.addWidget(lcdLower, 1)
     lcdlayout.setSpacing(0)
     lcdlayout.setContentsMargins(0, 0, 0, 0)
     frame = QFrame()
     frame.setContentsMargins(0, 0, 0, 0)
     frame.setLayout(lcdlayout)
     return frame
Пример #11
0
	def _createTopBar(self):
		topbar = QFrame()
		topbar.setFixedHeight(50)
		topbar.setLayout(QHBoxLayout())
		topbar.setContentsMargins(10, 0, 0, 0)
		topbar.setSizePolicy(QSizePolicy(1, 0))
		topbar.setObjectName("topbar")

		self.titleText = QLabel("Produtos")
		topbar.layout().addWidget(self.titleText)
		return topbar
Пример #12
0
    def addManagePage(self):
        data = self.dbOperation.getCurrentVehicle()
        self.table = QTableWidget()
        self.table.setStyleSheet("background:#fff")
        self.table.resize(self.width(), self.height())
        self.table.setRowCount(len(data))
        self.table.setColumnCount(7)

        self.table.horizontalHeader().setSectionResizeMode(
            QHeaderView.ResizeToContents)
        self.table.setHorizontalHeaderItem(0, QTableWidgetItem("ID"))
        self.table.setHorizontalHeaderItem(1, QTableWidgetItem("Name"))
        self.table.setHorizontalHeaderItem(2, QTableWidgetItem("VEHICLE No"))
        self.table.setHorizontalHeaderItem(3, QTableWidgetItem("MOBILE"))
        self.table.setHorizontalHeaderItem(4, QTableWidgetItem("VEHICLE TYPE"))
        self.table.setHorizontalHeaderItem(5, QTableWidgetItem("ENTRY TIME"))
        self.table.setHorizontalHeaderItem(6, QTableWidgetItem("ACTION"))

        loop = 0
        for smalldata in data:
            self.table.setItem(loop, 0, QTableWidgetItem(str(smalldata[0])))
            self.table.setItem(loop, 1, QTableWidgetItem(str(smalldata[1])))
            self.table.setItem(loop, 2, QTableWidgetItem(str(smalldata[6])))
            self.table.setItem(loop, 3, QTableWidgetItem(str(smalldata[2])))
            self.table.setItem(loop, 4, QTableWidgetItem(str(smalldata[7])))
            self.table.setItem(loop, 5, QTableWidgetItem(str(smalldata[3])))
            self.button_exit = QPushButton("Exit")
            self.button_exit.setStyleSheet(
                "color:#fff;padding:8px 0px;font-size:20px;background:green;border:1px solid white"
            )
            self.table.setCellWidget(loop, 6, self.button_exit)
            self.button_exit.clicked.connect(self.exitCall)
            loop = loop + 1

        frame = QFrame()
        layout = QVBoxLayout()
        button = QPushButton("Refresh")
        button.setStyleSheet(
            "color:#fff;padding:8px 0px;font-size:20px;background:green;border:1px solid white"
        )
        button.clicked.connect(self.refreshManage)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        layout.addWidget(button)
        layout.addWidget(self.table)
        frame.setLayout(layout)
        frame.setContentsMargins(0, 0, 0, 0)
        frame.setMaximumWidth(self.width())
        frame.setMinimumWidth(self.width())
        frame.setMaximumHeight(self.height())
        frame.setMinimumHeight(self.height())
        self.vertical_3.addWidget(frame)
        self.vertical_3.addStretch()
 def _init_editor_frame(self):
     editor_frame = QFrame()
     editor_frame.setContentsMargins(0, 0, 0, 0)
     editor_layout = QHBoxLayout()
     editor_layout.setContentsMargins(0, 0, 0, 0)
     self._editor = CodeEditor()
     self._editor.controlReturnKeyPressed.connect(
         self.controlReturnKeyPressedEvent.emit)
     self._editor.escapeKeyPressed.connect(self.escapeKeyPressedEvent.emit)
     editor_layout.addWidget(self._editor)
     editor_frame.setLayout(editor_layout)
     return editor_frame
Пример #14
0
    def __init__(self, name: str, parent: QWidget):
        super(Group, self).__init__(parent)
        # self.setFrameShape(QFrame.NoFrame)
        # self.setLineWidth(0)
        self.setContentsMargins(0, 0, 0, 0)
        self.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)

        seperator_layout = QHBoxLayout(self)
        seperator_layout.setContentsMargins(0, 0, 0, 0)
        seperator_layout.setSpacing(0)
        seperator_layout.setDirection(QBoxLayout.LeftToRight)
        self.setLayout(seperator_layout)

        outer_layout = QVBoxLayout()
        outer_layout.setContentsMargins(0, 0, 0, 0)
        outer_layout.setSpacing(0)
        outer_layout.setDirection(QBoxLayout.TopToBottom)
        seperator_layout.addLayout(outer_layout)
        seperator_layout.addWidget(self.create_separator())

        inner_frame = QFrame(self)
        inner_frame.setFrameShape(QFrame.NoFrame)
        inner_frame.setLineWidth(0)
        inner_frame.setContentsMargins(0, 0, 0, 0)
        inner_frame.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Minimum)

        self.inner_layout = QHBoxLayout(inner_frame)
        self.inner_layout.setContentsMargins(2, 4, 2, 0)
        self.inner_layout.setSpacing(4)
        self.inner_layout.setDirection(QBoxLayout.LeftToRight)
        inner_frame.setLayout(self.inner_layout)

        outer_layout.addWidget(inner_frame)

        self.group_name = QLabel(name, self)
        self.group_name.setProperty("TTGroupName", QtCore.QVariant(True))
        self.group_name.setSizePolicy(QSizePolicy.Preferred,
                                      QSizePolicy.Maximum)
        self.group_name.setAlignment(QtCore.Qt.AlignHCenter
                                     | QtCore.Qt.AlignVCenter  # type: ignore
                                     )
        self.group_name.adjustSize()
        outer_layout.addWidget(self.group_name)

        parent_tabtoolbar = tabtoolbar.find_tabtoolbar(self)
        if not parent_tabtoolbar:
            raise Exception("Could not find Parent Tabtoolbar")

        group_maxheight = parent_tabtoolbar.group_maxheight
        rowcount = parent_tabtoolbar.rowcount()
        height = group_maxheight + self.group_name.height() + rowcount - 1
        self.setMinimumHeight(height)
        self.setMaximumHeight(height)
Пример #15
0
    def addTitle(self, title):
        label = QLabel(title)
        label.setContentsMargins(16, 4, 16, 4)

        vbox = VBoxLayout()
        vbox.addWidget(label)

        frame = QFrame()
        frame.setFrameShape(QFrame.StyledPanel)
        frame.setContentsMargins(4, 4, 4, 4)
        frame.setLayout(vbox)
        self.vbox.addWidget(frame)
Пример #16
0
    def new_event(self, event):

        oneEventFrame = QFrame()
        heightSlot = event.duration * self.oneMinSlot
        #oneEventFrame.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed))
        #oneEventFrame.resize(Ui_MainWindow.widthSlot, heightSlot)
        oneEventFrame.setFixedHeight(heightSlot)
        oneEventFrame.setContentsMargins(0, 0, 0, 0)
        oneEventFrame.setStyleSheet("background-color: rgb(2, 116, 205); border-bottom: 1px solid rgb(128, 128, 255);")
        #color = QtGui.QColor(233, 10, 150)


        oneEventLayout = QHBoxLayout()
        oneEventLayout.setContentsMargins(0, 0, 0, 0)
        oneEventLayout.setObjectName("oneEventLayout")
        oneEventFrame.setLayout(oneEventLayout)
        oneEventLayout.setSpacing(0)

        labelNameEvent = QLabel()
        labelNameEvent.setToolTipDuration(10)
        labelNameEvent.setObjectName("labelNameEvent")
        #labelNameEvent.setText(event.time + " " + event.name)

        labelNameEvent.setAutoFillBackground(True)
        labelNameEvent.setFixedHeight(heightSlot)
        if event.link is not None:
            link = f'<a href="{event.link}">event.time + " " + event.name</a>'
        else:
            link = event.time + " " + event.name
        print(link)
        labelNameEvent.setText(link)
        labelNameEvent.setOpenExternalLinks(True)
        labelNameEvent.setStyleSheet("color: white;")
        sheet = "a { text-decoration: underline; color: white }"
        #labelNameEvent.setDefaultStyleSheet(sheet)
        #labelNameEvent.resize(Ui_MainWindow.widthSlot, oneEventFrame.height())
        oneEventLayout.addWidget(labelNameEvent)
        print(event.link)
        if event.link is not None:

            labelLinkImg = QLabel(link)
            labelLinkImg.setOpenExternalLinks(True)
            labelLinkImg.setMouseTracking(False)
            labelLinkImg.setLayoutDirection(QtCore.Qt.RightToLeft)
            labelLinkImg.setText("")
            labelLinkImg.setPixmap(QtGui.QPixmap("linkk.png"))
            labelLinkImg.setCursor(QCursor(QtCore.Qt.PointingHandCursor))
            #self.label_img.setOpenExternalLinks(True)
            #self.label_img.setObjectName("label_img")
            oneEventLayout.addWidget(labelLinkImg)

        return oneEventFrame
Пример #17
0
    def set_new_pdf(self, files):
        """
        Adds the files from the list onto the UI by creating the necessary buttons, layouts and Frames

        :param files: List of pdf names in the form of folder/filename.pdf
        :return: Nothing
        """
        for file in files:
            self.pdf_files.append(file)

            # This layout is used to place the up/down button on top of each other
            up_down_layout = QVBoxLayout()
            up_button = QPushButton("\u2303")
            up_button.setFixedSize(self.move_button_size)
            down_button = QPushButton("\u2304")
            down_button.setFixedSize(self.move_button_size)

            up_button.clicked.connect(self.move_up)
            down_button.clicked.connect(self.move_down)

            self.up_button_list.append(up_button)
            self.down_button_list.append(down_button)

            up_down_layout.addWidget(up_button)
            up_down_layout.addWidget(down_button)

            up_down_layout.setSpacing(1)

            # The foldername isn't displayed on the label
            pdf_name = os.path.split(file)[1]
            label = QLabel(pdf_name)

            main_layout = QHBoxLayout()
            main_layout.setContentsMargins(0, 0, 0, 0)

            width = self.widgets.MERGE_LeftLayout.geometry().width()
            height = self.move_button_size.height() * 2 + 5

            new_frame = QFrame()
            new_frame.setContentsMargins(0, 0, 0, 0)
            new_frame.setFixedSize(QSize(width, height))
            new_frame.setLayout(main_layout)
            new_frame.setFrameStyle(QFrame.WinPanel | QFrame.Plain)

            self.frame_list.append(new_frame)

            main_layout.addLayout(up_down_layout)
            main_layout.addWidget(label)

            # because of spacer at the bottom
            self.widgets.MERGE_PDFsVLayout.insertWidget(
                len(self.up_button_list) - 1, new_frame)
Пример #18
0
    def __init__(self, item, item_list, viewer):
        super().__init__(item, viewer)
        self.setObjectName("LootWidget")
        self.item = item
        self.item_list = item_list
        self.viewer = viewer

        name_frame = QFrame()
        name_frame.setContentsMargins(0, 0, 0, 0)
        name_frame.setLayout(QHBoxLayout())
        self.name_label = NameLabel(item.name)
        self.name_label.setObjectName("LootWidget_name")
        name_frame.layout().addWidget(self.name_label)
        name_frame.layout().addStretch(1)

        self.reroll_button = RerollButton()
        self.reroll_button.clicked.connect(self.reroll_item)

        self.button_bar = QFrame()
        self.button_bar.setContentsMargins(0, 0, 0, 0)
        self.button_bar.setLayout(QHBoxLayout())

        self.button_bar.setHidden(True)
        self.type_dropdown = QComboBox()
        self.type_dropdown.addItem("Any")
        self.type_dropdown.addItem("Weapon")
        self.type_dropdown.addItem("Armor")
        self.type_dropdown.addItems(self.item_list.unique_attr("type"))
        if self.item.type in ["Staff", "Melee", "Ranged", "Rod"]:
            self.type_dropdown.setCurrentText("Weapon")
        elif self.item.type in ["Light Armor, Medium Armor, Heavy Armor"]:
            self.type_dropdown.setCurrentText("Armor")
        else:
            self.type_dropdown.setCurrentText(self.item.type)

        self.rarity_dropdown = QComboBox()
        self.rarity_dropdown.addItems(self.item_list.unique_attr("rarity"))
        self.rarity_dropdown.setCurrentText(self.item.rarity)

        self.button_bar.layout().addWidget(self.type_dropdown)
        self.button_bar.layout().addWidget(self.rarity_dropdown)
        self.button_bar.layout().addStretch(1)
        self.button_bar.layout().addWidget(self.reroll_button)

        self.setLayout(QVBoxLayout())
        QSpacerItem(50, 10)
        self.layout().setContentsMargins(20, 5, 10, 10)
        self.layout().addWidget(name_frame)
        self.layout().addWidget(self.button_bar)
        self.setFrameShape(QFrame.Box)
Пример #19
0
    def __add_widget__(self):
        main_frame = QFrame()
        main_frame.setContentsMargins(0, 0, 0, 0)
        main_frame.setAccessibleName(main_frame_styles[0])
        main_frame.setStyleSheet(main_frame_styles[1])

        frame_layout = QHBoxLayout()
        frame_layout.setContentsMargins(0, 0, 0, 0)
        frame_layout.setStretch(0, 0)
        frame_layout.setSpacing(0)

        main_frame.setLayout(frame_layout)

        return main_frame
    def __add_widget__(self):
        main_frame = QFrame()
        main_frame.setContentsMargins(0, 0, 0, 0)
        main_frame.setAccessibleName(main_frame_styles[0])
        main_frame.setStyleSheet(main_frame_styles[1])

        frame_layout = QHBoxLayout()
        frame_layout.setContentsMargins(0, 0, 0, 0)
        frame_layout.setStretch(0, 0)
        frame_layout.setSpacing(0)

        text_input = QTextEdit()
        text_input.setPlaceholderText("Type something...")
        # text_input.setAlignment(Qt.AlignCenter)
        text_input.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        text_input.setAlignment(Qt.AlignVCenter)
        text_input.setAccessibleName(input_text_styles[0])
        text_input.setStyleSheet(input_text_styles[1])

        attach_icon = QPushButton()
        attach_icon.setAccessibleName(attach_icon_styles[0])
        attach_icon.setStyleSheet(attach_icon_styles[1])
        icon_attach = QIcon('./assets/clip.png')
        attach_icon.setIcon(icon_attach)
        attach_icon.setIconSize(QSize(25, 25))

        sticker_icon = QPushButton()
        sticker_icon.setAccessibleName(sticker_icon_styles[0])
        sticker_icon.setStyleSheet(sticker_icon_styles[1])
        icon_sticker = QIcon('./assets/smile.png')
        sticker_icon.setIcon(icon_sticker)
        sticker_icon.setIconSize(QSize(25, 25))

        send_icon = QPushButton()
        send_icon.setAccessibleName(send_icon_styles[0])
        send_icon.setStyleSheet(send_icon_styles[1])
        icon_send = QIcon('./assets/paper-plane.png')
        send_icon.setIcon(icon_send)
        send_icon.setIconSize(QSize(25, 25))

        frame_layout.addWidget(text_input)
        frame_layout.addWidget(attach_icon)
        frame_layout.addWidget(sticker_icon)
        frame_layout.addWidget(send_icon)
        main_frame.setLayout(frame_layout)

        return main_frame
    def __add_widget__(self):
        main_frame = QFrame()
        main_frame.setContentsMargins(0, 0, 0, 0)
        main_frame.setAccessibleName(main_frame_styles[0])
        main_frame.setStyleSheet(main_frame_styles[1])

        frame_layout = QHBoxLayout()
        frame_layout.setContentsMargins(0, 0, 0, 0)
        frame_layout.setStretch(0, 0)
        frame_layout.setSpacing(0)

        user_icon = QPushButton()
        user_icon.setAccessibleName(user_icon_styles[0])
        user_icon.setStyleSheet(user_icon_styles[1])
        icon = QIcon('./assets/user.png')
        user_icon.setIcon(icon)
        user_icon.setIconSize(QSize(60, 60))

        user_label = QLabel('Username')
        user_label.setFrameShape(QFrame.NoFrame)
        user_label.setAccessibleName(user_label_styles[0])
        user_label.setStyleSheet(user_label_styles[1])

        call_icon = QPushButton()
        call_icon.setAccessibleName(call_icon_styles[0])
        call_icon.setStyleSheet(call_icon_styles[1])
        icon_call = QIcon('./assets/Phone-icon.png')
        call_icon.setIcon(icon_call)
        call_icon.setIconSize(QSize(25, 25))

        video_icon = QPushButton()
        video_icon.setAccessibleName(video_icon_styles[0])
        video_icon.setStyleSheet(video_icon_styles[1])
        icon_video = QIcon('./assets/communications.png')
        video_icon.setIcon(icon_video)
        video_icon.setIconSize(QSize(25, 25))

        frame_layout.addWidget(user_icon)
        frame_layout.addWidget(user_label)
        frame_layout.addWidget(call_icon)
        frame_layout.addWidget(video_icon)

        main_frame.setLayout(frame_layout)

        return main_frame
    def setup_ui(self, containers: QFrame, page_name: str):
        page_containers = QFrame(containers)
        page_containers.setFrameShape(QFrame.StyledPanel)
        page_containers.setFrameShadow(QFrame.Raised)
        page_containers.setObjectName("central_page_maker")
        vl_page_containers = QVBoxLayout(page_containers)
        vl_page_containers.setObjectName("vl_page_containers")

        scroll_area_page_containers = QScrollArea(page_containers)
        scroll_area_page_containers.setObjectName(
            CentralPageMakerStyle.scroll_area_page_containers_style[0])
        scroll_area_page_containers.setStyleSheet(
            CentralPageMakerStyle.scroll_area_page_containers_style[1])
        scroll_area_page_containers.setWidgetResizable(True)
        scroll_area_page_containers.setLayoutDirection(Qt.RightToLeft)
        scroll_area_contents_page_containers = QFrame()
        scroll_area_contents_page_containers.setObjectName(
            "scroll_area_contents_page_containers")
        scroll_area_contents_page_containers.setContentsMargins(45, 45, 45, 45)

        form_base_layout = QFormLayout(scroll_area_contents_page_containers)
        form_base_layout.setContentsMargins(0, 0, 0, 0)
        form_base_layout.setHorizontalSpacing(0)
        form_base_layout.setVerticalSpacing(100)
        form_base_layout.setObjectName("form_base_layout")

        if page_name.split('-')[0] == "[TOOL]":
            from ...pages.tools.tool_page_maker import ToolPageMaker
            ToolPageMaker(
                self,
                form_base_layout,
                scroll_area_contents_page_containers,
                tool_box=page_name.split('-')[2].split(' ')[0]).make_page()

        # lbl_title
        lbl_title = QLabel(scroll_area_contents_page_containers)
        lbl_title.setGeometry(QRect(441, 10, 281, 16))
        lbl_title.setObjectName(CentralPageMakerStyle.lbl_title_style[0])
        lbl_title.setStyleSheet(CentralPageMakerStyle.lbl_title_style[1])
        vl_page_containers.addWidget(scroll_area_page_containers)
        scroll_area_page_containers.setWidget(
            scroll_area_contents_page_containers)

        return scroll_area_page_containers
Пример #23
0
class ScrollArea(QScrollArea):
    """包括一个ScrollArea做主体承载一个QFrame的基础类。"""
    scrollDown = pyqtSignal()

    def __init__(self, parent=None):
        super(ScrollArea, self).__init__()
        self.parent = parent
        self.frame = QFrame()
        self.frame.setContentsMargins(0, 0, 0, 0)
        self.frame.setObjectName('frame')

        # 用于发出scroll滑到最底部的信号。
        self.verticalScrollBar().valueChanged.connect(self.sliderPostionEvent)

        self.setWidgetResizable(True)

        self.setWidget(self.frame)#必须设置Widget

    def noInternet(self):
        # 设置没有网络的提示。
        self.noInternetLayout = QGridLayout()
        self.setLayout(self.mainLayout)

        self.Tip = QLabel("您已进入没有网络的异次元,打破次元壁 →", self)
        self.TipButton = QPushButton("打破次元壁", self)
        self.TipButton.setObjectName("TipButton")

        self.TipLayout = QHBoxLayout()
        self.TipLayout.addWidget(self.Tip)
        self.TipLayout.addWidget(self.TipButton)

        # self.indexAllSings.setLayout(self.TipLayout)

        self.noInternetLayout.addLayout(self.TipLayout, 0, 0, Qt.AlignCenter|Qt.AlignTop)

        self.frame.setLayout(self.noInternetLayout)

    def sliderPostionEvent(self):
        if self.verticalScrollBar().value() == self.verticalScrollBar().maximum():
            self.scrollDown.emit()

    def maximumValue(self):
        return self.verticalScrollBar().maximum()
Пример #24
0
    def set_paragraph(self, h2='', h3='', text='', img=None):
        if h2 != '':
            lbl_h2 = QLabel(h2, self.inner)
            fnt = lbl_h2.font()
            fnt.setPointSize(self.H2_FONT_SIZE)
            lbl_h2.setFont(fnt)
            lbl_h2.setFixedHeight(self.H2_HEIGHT)
            lbl_h2.setAlignment(Qt.AlignBottom)
            lbl_h2.setMargin(self.SIDE_MARGIN)
            self.vbox.addWidget(lbl_h2)

            frm = QFrame(self.inner)
            frm.setFrameShape(QFrame.HLine)
            frm.setContentsMargins(self.SIDE_MARGIN, 0, self.SIDE_MARGIN, 0)
            plt = frm.palette()
            plt.setColor(QPalette.WindowText, Qt.darkGray)
            frm.setPalette(plt)
            self.vbox.addWidget(frm)

        if text != '':
            lbl_txt = QLabel(text, self.inner)
            lbl_txt.setWordWrap(True)
            fnt = lbl_txt.font()
            fnt.setPointSize(self.TEXT_FONT_SIZE)
            lbl_txt.setFont(fnt)
            lbl_txt.setMargin(self.SIDE_MARGIN)
            self.vbox.addWidget(lbl_txt)

        if img is not None:
            if self.params.lang == 'en':
                img += '_en.png'
            else:
                img += '_jp.png'
            pixmap = QPixmap(img)
            if not pixmap.isNull():
                lbl_img = QLabel(self.inner)
                lbl_img.setPixmap(pixmap)
                self.lbl_img_list.append(lbl_img)
                self.pixmap_list.append(pixmap.scaledToWidth(pixmap.width()))
                self.vbox.addWidget(lbl_img)

        self.inner.setLayout(self.vbox)
Пример #25
0
    def set_paragraph(self, h2='', h3='', text='', img=None):
        if h2 != '':
            lbl_h2 = QLabel(h2, self.inner)
            fnt = lbl_h2.font()
            fnt.setPointSize(self.H2_FONT_SIZE)
            lbl_h2.setFont(fnt)
            lbl_h2.setFixedHeight(self.H2_HEIGHT)
            lbl_h2.setAlignment(Qt.AlignBottom)
            lbl_h2.setMargin(self.SIDE_MARGIN)
            self.vbox.addWidget(lbl_h2)

            frm = QFrame(self.inner)
            frm.setFrameShape(QFrame.HLine)
            frm.setContentsMargins(self.SIDE_MARGIN, 0, self.SIDE_MARGIN, 0)
            plt = frm.palette()
            plt.setColor(QPalette.WindowText, Qt.darkGray)
            frm.setPalette(plt)
            self.vbox.addWidget(frm)

        if text != '':
            lbl_txt = QLabel(text, self.inner)
            lbl_txt.setWordWrap(True)
            fnt = lbl_txt.font()
            fnt.setPointSize(self.TEXT_FONT_SIZE)
            lbl_txt.setFont(fnt)
            lbl_txt.setMargin(self.SIDE_MARGIN)
            self.vbox.addWidget(lbl_txt)

        if img is not None:
            if self.params.lang == 'en':
                img += '_en.png'
            else:
                img += '_jp.png'
            pixmap = QPixmap(img)
            if not pixmap.isNull():
                lbl_img = QLabel(self.inner)
                lbl_img.setPixmap(pixmap)
                self.lbl_img_list.append(lbl_img)
                self.pixmap_list.append(pixmap.scaledToWidth(pixmap.width()))
                self.vbox.addWidget(lbl_img)

        self.inner.setLayout(self.vbox)
Пример #26
0
    def _init_search_field(self):
        search_field_frame = QFrame()
        search_field_layout = QHBoxLayout()
        search_field_layout.addWidget(VSep(self))

        self._search_field = SearchField(self)
        self._search_field.setIcon(qtawesome.icon("fa.search"))
        self._search_field.setPlaceholderText("Search codec")
        self._search_field.textChanged.connect(lambda text: {})
        search_field_layout.addWidget(self._search_field)

        self._search_field_button = QToolButton()
        self._search_field_button.setIcon(qtawesome.icon("fa.arrow-circle-right"))
        self._search_field_button.setContentsMargins(0, 0, 0, 0)
        search_field_layout.addWidget(self._search_field_button)

        search_field_frame.setLayout(search_field_layout)
        search_field_frame.setContentsMargins(5, 0, 5, 5) # left, top, right, bottom
        search_field_frame.layout().setContentsMargins(0, 0, 0, 0)
        return search_field_frame
Пример #27
0
    def __add_widget__(self):
        """ this function return a q-frame to use in main layout """

        main_frame = QFrame()
        main_frame.setContentsMargins(0, 0, 0, 0)
        main_frame.setAccessibleName(main_frame_styles[0])
        main_frame.setStyleSheet(main_frame_styles[1])

        frame_layout = QHBoxLayout()
        frame_layout.setContentsMargins(0, 0, 0, 0)
        frame_layout.setStretch(0, 0)
        frame_layout.setSpacing(0)

        self.q_text_edit = QTextEdit()
        self.q_text_edit.setAccessibleName(q_text_edit_styles[0])
        self.q_text_edit.setReadOnly(True)
        self.q_text_edit.setStyleSheet(q_text_edit_styles[1])

        frame_layout.addWidget(self.q_text_edit)

        main_frame.setLayout(frame_layout)

        return main_frame
Пример #28
0
 def construct_innerframe(self, spacing: int) -> QFrame:
     parent_toolbar = tabtoolbar.find_tabtoolbar(self)
     if not parent_toolbar:
         raise Exception("Could not find Parent Tabtoolbar")
     group_maxheight = parent_toolbar.group_maxheight
     rowcount = parent_toolbar.rowcount()
     frame = QFrame(self)
     frame.setFrameShape(QFrame.NoFrame)
     frame.setLineWidth(0)
     frame.setContentsMargins(0, 0, 0, 0)
     policy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
     policy.setHorizontalStretch(0)
     policy.setVerticalStretch(1)
     frame.setSizePolicy(policy)
     frame.setMaximumHeight(group_maxheight / rowcount)
     llayout = QHBoxLayout(frame)
     # layout.setMargin(0)
     llayout.setContentsMargins(0, 0, 0, 0)
     llayout.setSpacing(spacing)
     llayout.setDirection(QBoxLayout.LeftToRight)
     frame.setLayout(llayout)
     spacer = QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding)
     llayout.addItem(spacer)
     return frame
Пример #29
0
class NetworkPanel(QWidget):
    def __init__(self, parent):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.centralFrame = QFrame(self)
        self.centralFrame.setFrameShape(QFrame.NoFrame)
        self.centralFrame.setFrameShadow(QFrame.Raised)
        self.centralFrame.setContentsMargins(0, 0, 0, 0)
        self.centralFrame.setStyleSheet("background: black;"
                                        "border: 1px solid gray;"
                                        "border-radius: 5px;")

        self.contentFrame = QFrame(self.centralFrame)
        self.contentFrame.setFrameShape(QFrame.NoFrame)
        self.contentFrame.setFrameShadow(QFrame.Raised)
        self.contentFrame.setContentsMargins(10, 10, 10, 10)
        self.contentFrame.setStyleSheet("border: none;")

        self.networkFrame = QFrame(self.contentFrame)
        self.networkFrame.setFrameShape(QFrame.NoFrame)
        self.networkFrame.setFrameShadow(QFrame.Raised)
        self.networkFrame.setContentsMargins(0, 0, 0, 0)
        self.networkFrame.setStyleSheet("border: none;")

        self.controlFrame = QFrame(self.networkFrame)
        self.controlFrame.setFrameShape(QFrame.NoFrame)
        self.controlFrame.setFrameShadow(QFrame.Raised)
        self.controlFrame.setContentsMargins(0, 0, 0, 0)
        self.controlFrame.setStyleSheet("border: none;")

        self.controlLabelFrame = QFrame(self.controlFrame)
        self.controlLabelFrame.setFrameShape(QFrame.NoFrame)
        self.controlLabelFrame.setFrameShadow(QFrame.Raised)
        self.controlLabelFrame.setContentsMargins(0, 0, 0, 0)
        self.controlLabelFrame.setStyleSheet("border: none;")

        self.controlLabel = Label(self.controlLabelFrame)
        self.controlLabel.setText("Network Controls")

        self.controlLabelLayout = QHBoxLayout(self.controlLabelFrame)
        self.controlLabelLayout.addWidget(self.controlLabel)
        self.controlLabelLayout.setContentsMargins(0, 0, 0, 0)
        self.controlLabelLayout.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)

        self.controlBtnsFrame = QFrame(self.controlFrame)
        self.controlBtnsFrame.setFrameShape(QFrame.NoFrame)
        self.controlBtnsFrame.setFrameShadow(QFrame.Raised)
        self.controlBtnsFrame.setContentsMargins(0, 0, 0, 0)
        self.controlBtnsFrame.setStyleSheet(
            "background-color: rgb(27, 29, 35);"
            "border: 1px solid gray;"
            "border-radius: 5px;"
        )

        self.connectBtn = PushButton(self.controlBtnsFrame)
        self.connectBtn.setIcon(QIcon(resource_path("icons/cil-media-play")))
        self.connectBtn.setIconSize(QSize(50, 50))
        self.connectBtn.setToolTip("Scan for ANT+ devices")

        self.disconnectBtn = PushButton(self.controlBtnsFrame)
        self.disconnectBtn.setIcon(QIcon(resource_path("icons/cil-media-stop")))
        self.disconnectBtn.setIconSize(QSize(50, 50))
        self.disconnectBtn.setToolTip("Stop ANT+ connection")

        self.resetBtn = PushButton(self.controlBtnsFrame)
        self.resetBtn.setIcon(QIcon(resource_path("icons/cil-reload")))
        self.resetBtn.setIconSize(QSize(50, 50))
        self.resetBtn.setToolTip("Reset ANT+ session")

        self.controlBtnsLayout = QHBoxLayout(self.controlBtnsFrame)
        self.controlBtnsLayout.addWidget(self.connectBtn, alignment=Qt.AlignRight)
        self.controlBtnsLayout.addWidget(self.disconnectBtn, alignment=Qt.AlignRight)
        self.controlBtnsLayout.addWidget(self.resetBtn, alignment=Qt.AlignRight)
        self.controlBtnsLayout.setContentsMargins(5, 0, 0, 0)
        self.controlBtnsLayout.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)

        self.controlLayout = QVBoxLayout(self.controlFrame)
        self.controlLayout.addWidget(self.controlLabelFrame)
        self.controlLayout.addWidget(self.controlBtnsFrame)
        self.controlLayout.setContentsMargins(0, 0, 0, 0)

        self.devicesFrame = QFrame(self.contentFrame)
        self.devicesFrame.setFrameShape(QFrame.NoFrame)
        self.devicesFrame.setFrameShadow(QFrame.Raised)
        self.devicesFrame.setContentsMargins(0, 0, 0, 0)
        self.devicesFrame.setStyleSheet("border: none;")

        self.devicesListBox = ListBox(self.devicesFrame)
        self.devicesListBox.setStyleSheet(
            "background-color: rgb(27, 29, 35);"
            "border: 1px solid gray;"
            "border-radius: 5px;"
        )

        self.devicesLabelFrame = QFrame(self.devicesFrame)
        self.devicesLabelFrame.setFrameShape(QFrame.NoFrame)
        self.devicesLabelFrame.setFrameShadow(QFrame.Raised)
        self.devicesLabelFrame.setContentsMargins(0, 0, 0, 0)
        self.devicesLabelFrame.setStyleSheet("border: none;")

        self.devicesLabel = Label(self.devicesLabelFrame)
        self.devicesLabel.setText("Broadcasting Devices")
        self.devicesLabel.setStyleSheet("border: none;")

        self.devicesLabelLayout = QHBoxLayout(self.devicesLabelFrame)
        self.devicesLabelLayout.addWidget(self.devicesLabel, alignment=Qt.AlignLeft)
        self.devicesLabelLayout.setContentsMargins(0, 0, 0, 0)
        self.devicesLabelLayout.setAlignment(Qt.AlignVCenter | Qt.AlignLeft)

        self.devicesLayout = QVBoxLayout(self.devicesFrame)
        self.devicesLayout.addWidget(self.devicesLabelFrame)
        self.devicesLayout.addWidget(self.devicesListBox)
        self.devicesLayout.setContentsMargins(0, 0, 0, 0)
        self.devicesLayout.setAlignment(Qt.AlignTop | Qt.AlignLeft)

        self.sessionFrame = QFrame(self.contentFrame)
        self.sessionFrame.setFrameShape(QFrame.NoFrame)
        self.sessionFrame.setFrameShadow(QFrame.Raised)
        self.sessionFrame.setContentsMargins(0, 0, 0, 0)
        self.sessionFrame.setStyleSheet("border: none;")

        self.sessionLabelFrame = QFrame(self.sessionFrame)
        self.sessionLabelFrame.setFrameShape(QFrame.NoFrame)
        self.sessionLabelFrame.setFrameShadow(QFrame.Raised)
        self.sessionLabelFrame.setContentsMargins(0, 0, 0, 0)
        self.sessionLabelFrame.setStyleSheet("border: none;")

        self.sessionLabel = Label(self.sessionLabelFrame)
        self.sessionLabel.setText("Network Statistics")
        self.sessionLabel.setStyleSheet("border: none;")

        self.sessionLabelLayout = QHBoxLayout(self.sessionLabelFrame)
        self.sessionLabelLayout.addWidget(self.sessionLabel, alignment=Qt.AlignLeft)
        self.sessionLabelLayout.setContentsMargins(0, 0, 0, 0)
        self.sessionLabelLayout.setAlignment(Qt.AlignVCenter | Qt.AlignLeft)

        self.sessionTextFrame = QFrame(self.sessionFrame)
        self.sessionTextFrame.setFrameShape(QFrame.NoFrame)
        self.sessionTextFrame.setFrameShadow(QFrame.Raised)
        self.sessionTextFrame.setContentsMargins(0, 0, 0, 0)
        self.sessionTextFrame.setStyleSheet(
            "background-color: rgb(27, 29, 35);"
            "border: 1px solid gray;"
            "border-radius: 5px;"
        )

        self.sessionText = TextEdit(self.sessionTextFrame)

        self.sessionTextLayout = QHBoxLayout(self.sessionTextFrame)
        self.sessionTextLayout.addWidget(self.sessionText)
        self.sessionTextLayout.setContentsMargins(0, 0, 0, 0)
        self.sessionTextLayout.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)

        self.sessionLayout = QVBoxLayout(self.sessionFrame)
        self.sessionLayout.addWidget(self.sessionLabelFrame)
        self.sessionLayout.addWidget(self.sessionTextFrame)
        self.sessionLayout.setContentsMargins(0, 0, 0, 0)
        self.sessionLayout.setAlignment(Qt.AlignTop | Qt.AlignLeft)

        self.networkLayout = QVBoxLayout(self.networkFrame)
        self.networkLayout.addWidget(self.controlFrame)
        self.networkLayout.addWidget(self.devicesFrame)
        self.networkLayout.addWidget(self.sessionFrame)
        self.networkLayout.setContentsMargins(0, 0, 0, 0)

        self.infoFrame = QFrame(self.contentFrame)
        self.infoFrame.setFrameShape(QFrame.NoFrame)
        self.infoFrame.setFrameShadow(QFrame.Raised)
        self.infoFrame.setContentsMargins(0, 0, 0, 0)
        self.infoFrame.setStyleSheet("border: none;")

        self.graphicsFrame = QFrame(self.infoFrame)
        self.graphicsFrame.setFrameShape(QFrame.NoFrame)
        self.graphicsFrame.setFrameShadow(QFrame.Raised)
        self.graphicsFrame.setContentsMargins(0, 0, 0, 0)
        self.graphicsFrame.setStyleSheet("border: none;")

        self.fitnessGraphics = FitnessGraphics(self.graphicsFrame)

        self.graphicsLayout = QVBoxLayout(self.graphicsFrame)
        self.graphicsLayout.addWidget(self.fitnessGraphics)
        self.graphicsLayout.setContentsMargins(0, 0, 0, 0)

        self.infoLayout = QVBoxLayout(self.infoFrame)
        self.infoLayout.addWidget(self.graphicsFrame)
        self.infoLayout.setContentsMargins(0, 0, 0, 0)
        self.infoLayout.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)

        self.contentLayout = QHBoxLayout(self.contentFrame)
        self.contentLayout.addWidget(self.networkFrame, stretch=1)
        self.contentLayout.addWidget(self.infoFrame, stretch=1)
        self.contentLayout.setContentsMargins(0, 0, 0, 0)

        self.centralLayout = QHBoxLayout(self.centralFrame)
        self.centralLayout.addWidget(self.contentFrame)
        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)
        self.setContentsMargins(0, 0, 0, 0)
Пример #30
0
class TitleBar(QWidget):
    def __init__(self, ui_main):
        super().__init__()

        self.ui_main = ui_main

        self.initUI()

        self.minimizeBtn.clicked.connect(self.ui_main.showMinimized)
        self.resizeBtn.clicked.connect(self.resizeClicked)

    def initUI(self):
        self.sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        self.sizePolicy.setHorizontalStretch(0)
        self.sizePolicy.setVerticalStretch(0)

        self.centralFrame = QFrame(self)
        self.centralFrame.setMinimumSize(QSize(0, 40))
        self.centralFrame.setMaximumSize(QSize(16777215, 42))
        self.centralFrame.setStyleSheet(u"background-color: rgba(27, 29, 35, 255)")
        self.centralFrame.setFrameShape(QFrame.NoFrame)
        self.centralFrame.setFrameShadow(QFrame.Raised)
        self.centralFrame.setContentsMargins(0, 0, 0, 0)

        """
        Title Frame, Label, and Layout
        """
        self.titleFrame = QFrame(self.centralFrame)
        self.sizePolicy.setHeightForWidth(self.titleFrame.sizePolicy().hasHeightForWidth())
        self.titleFrame.setSizePolicy(self.sizePolicy)
        self.titleFrame.setFrameShape(QFrame.NoFrame)
        self.titleFrame.setFrameShadow(QFrame.Raised)
        self.titleFrame.setContentsMargins(0, 0, 0, 0)
        self.titleFrame.setStyleSheet("border: none;")

        self.label = TitleBarLabel(self.titleFrame)

        self.titleFrameLayout = QHBoxLayout(self.titleFrame)
        self.titleFrameLayout.setSpacing(0)
        self.titleFrameLayout.setContentsMargins(5, 0, 10, 0)

        self.titleFrameLayout.addWidget(self.label)

        """
        Buttons Frame, Buttons, and Layout
        """
        self.btnsFrame = QFrame(self.centralFrame)
        self.sizePolicy.setHeightForWidth(self.btnsFrame.sizePolicy().hasHeightForWidth())
        self.btnsFrame.setSizePolicy(self.sizePolicy)
        self.btnsFrame.setMaximumSize(QSize(120, 16777215))
        self.btnsFrame.setFrameShape(QFrame.NoFrame)
        self.btnsFrame.setFrameShadow(QFrame.Raised)
        self.btnsFrame.setContentsMargins(0, 0, 0, 0)
        self.btnsFrame.setStyleSheet("border: none;")

        self.minimizeBtn = MinimizeButton(self.btnsFrame)
        self.resizeBtn = ResizeButton(self.btnsFrame)
        self.closeBtn = CloseButton(self.btnsFrame)

        self.btnsLayout = QHBoxLayout(self.btnsFrame)
        self.btnsLayout.addWidget(self.minimizeBtn)
        self.btnsLayout.addWidget(self.resizeBtn)
        self.btnsLayout.addWidget(self.closeBtn)
        self.btnsLayout.setSpacing(0)
        self.btnsLayout.setContentsMargins(0, 0, 0, 0)

        """
        Central Layout
        """
        self.centralLayout = QHBoxLayout(self.centralFrame)
        self.centralLayout.addWidget(self.titleFrame)
        self.centralLayout.addWidget(self.btnsFrame, 0, Qt.AlignRight)
        self.centralLayout.setSpacing(0)
        self.centralLayout.setContentsMargins(0, 0, 0, 0)

        """
        UI Layout
        """
        self.uiLayout = QVBoxLayout(self)
        self.uiLayout.addWidget(self.centralFrame)
        self.uiLayout.setContentsMargins(0, 0, 0, 0)

        self.setLayout(self.uiLayout)

    def mouseMoveEvent(self, ev):
        self.ui_main.moveWindow(ev)

    def resizeClicked(self):
        if self.ui_main.windowState() == Qt.WindowMaximized:
            self.ui_main.showNormal()
            self.setToolTip("Maximize")
            self.resizeBtn.setIcon(QtGui.QIcon(resource_path("icons/cil-window-maximize.png")))

        else:
            self.ui_main.showMaximized()
            self.setToolTip("Restore")
            self.resizeBtn.setIcon(QtGui.QIcon(resource_path("icons/cil-window-restore.png")))
Пример #31
0
Файл: qtx.py Проект: winks/pynt
  def addStuff(self, posts):
    for post in posts:
      # xpanel holds one post
      xpanel_layout = QHBoxLayout()
      xpanel_layout.setSpacing(5)
      xpanel_layout.setContentsMargins(self.no_margin)

      xpanel = QFrame()
      xpanel.setContentsMargins(self.no_margin)
      xpanel.setLayout(xpanel_layout)

      avatar_label = self.updated_avatar(self.AVATAR_DEFAULT)

      # panel holds controls and view
      panel_layout = QVBoxLayout()
      panel_layout.setSpacing(0)
      panel_layout.setContentsMargins(self.no_margin)

      panel = QFrame()
      panel.setLayout(panel_layout)
      panel.setContentsMargins(self.no_margin)
      panel.setStyleSheet("background-color:green;")

      # control holds the controls at the top
      control_layout = QHBoxLayout()
      control_layout.setSpacing(0)
      control_layout.setContentsMargins(self.no_margin)

      controls = QFrame()
      controls.setStyleSheet("background-color:#ffeeee;")
      controls.setContentsMargins(self.no_margin)
      controls.setLayout(control_layout)

      # ctrl_ is inside control
      ctrl_url = QPushButton()
      ctrl_url.setContentsMargins(self.no_margin)
      ctrl_url.setStyleSheet("QPushButton { color: black; }")
      ctrl_url.setFlat(True)
      ctrl_url.setIcon(QIcon(self.ICON_URL))

      ctrl_updated = QPushButton()
      ctrl_updated.setContentsMargins(self.no_margin)
      ctrl_updated.setStyleSheet("color:#000000;")
      ctrl_updated.setFlat(True)
      ctrl_updated.setIcon(QIcon(self.ICON_TIME))

      ctrl_user = QPushButton()
      ctrl_user.setContentsMargins(self.no_margin)
      ctrl_user.setStyleSheet("QPushButton { color: black; }")
      ctrl_user.setFlat(True)
      ctrl_user.setIcon(QIcon(self.ICON_USER))

      # view displays HTML
      view = WebView()
      #view.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
      view.setMinimumHeight(200)
      view.setContentsMargins(self.no_margin)
      view.setStyleSheet("background-color:#eeeeff;")


      # set the data to the widgets
      domain = post["guid"].split('/')[0]
      path = "assets/{}_user.jpg".format(domain)
      avatar_label = self.updated_avatar(path)

      ctrl_url.setText(post["url"])
      ctrl_updated.setText(post["edited_at"])
      ctrl_user.setText(self.pynt.users[domain]["display_name"])
      view.setHtml(post["body_html"])

      # now put everything together
      control_layout.addWidget(ctrl_user)
      control_layout.addWidget(ctrl_updated)
      control_layout.addWidget(ctrl_url)

      panel_layout.addWidget(controls)
      panel_layout.addWidget(view)

      xpanel_layout.addWidget(avatar_label, 0, Qt.AlignTop)
      xpanel_layout.addWidget(panel)

      self.layout.addWidget(xpanel)

    return self
Пример #32
0
class TabToolbar(QToolBar):
    """[summary]

    Args:
        _TabToolbar ([type]): [description]

    Returns:
        [type]: [description]
    """

    Minimized = QtCore.pyqtSignal()
    Maximized = QtCore.pyqtSignal()
    SpecialTabClicked = QtCore.pyqtSignal()
    StyleChanged = QtCore.pyqtSignal()

    def __init__(self,
                 parent: QWidget = None,
                 group_maxheight: int = 75,
                 group_rowcount: int = 3):
        super(TabToolbar, self).__init__(parent)
        style.register_default_styles()
        self.group_rowcount = group_rowcount
        self.group_maxheight = group_maxheight
        self.has_specialtab = False
        self.current_index = 0
        self.ignore_styleevent = False
        self.is_shown = True
        self._is_minimized = False
        self.maxheight = QtWidgets.QWIDGETSIZE_MAX
        self._style = style.StyleParams()
        self.setObjectName("TabToolbar")

        # self.tempShowTimer = QtCore.QTimer()
        # self.tempShowTimer.setSingleShot(True)
        # self.tempShowTimer.setInterval(QApplication.doubleClickInterval())

        self.setProperty("TabToolbar", QtCore.QVariant(True))
        self.layout().setContentsMargins(0, 0, 0, 0)
        self.layout().setSpacing(0)
        self.setContentsMargins(0, 0, 0, 0)
        self.setFloatable(False)
        self.setMovable(False)
        self.setAllowedAreas(QtCore.Qt.TopToolBarArea)
        self.tabBar = QTabWidget(self)

        self.tabBar.setProperty("TTWidget", QtCore.QVariant(True))
        self.tabBar.tabBar().setProperty("TTTab", QtCore.QVariant(True))
        self.tabBarHandle = self.addWidget(self.tabBar)
        self.tabBar.setUsesScrollButtons(True)

        self.cornerActions = QFrame(self)
        self.cornerActions.setFrameShape(QFrame.NoFrame)
        self.cornerActions.setLineWidth(0)
        self.cornerActions.setContentsMargins(0, 0, 0, 0)
        self.cornerActions.setSizePolicy(QSizePolicy.Preferred,
                                         QSizePolicy.Minimum)
        self.cornerLayout = QHBoxLayout(self.cornerActions)

        self.cornerLayout.setContentsMargins(0, 0, 0, 0)
        self.cornerLayout.setSpacing(0)
        self.cornerLayout.setDirection(QBoxLayout.LeftToRight)
        self.cornerActions.setLayout(self.cornerLayout)

        self.hideAction = QAction(self)
        self.hideAction.setCheckable(True)
        self.hideAction.setText("▲")
        self.hideButton = QToolButton(self.tabBar)
        self.hideButton.setProperty("TTHide", QtCore.QVariant(True))
        self.hideButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextOnly)
        self.hideButton.setDefaultAction(self.hideAction)
        self.hideButton.setAutoRaise(True)
        self.hideButton.setSizePolicy(QSizePolicy.Expanding,
                                      QSizePolicy.Expanding)

        self.hideAction.triggered.connect(self._hideaction)
        self.tabBar.tabBarDoubleClicked.connect(self.hideAction.trigger)
        self.tabBar.tabBarClicked.connect(self.current_tabchanged)
        self.tabBar.currentChanged.connect(self.focus_changed)
        self.cornerLayout.addWidget(self.hideButton)
        self.tabBar.setCornerWidget(self.cornerActions)
        self.set_style(style.get_defaultstyle())

    def _hideaction(self):
        # self.tempShowTimer.start()
        self._is_minimized = self.hideAction.isChecked()
        self.hideAction.setText("▼" if self._is_minimized else "▲")
        self.hide_at(self.tabBar.currentIndex())
        if self._is_minimized:
            self.Minimized.emit()
        else:
            self.Maximized.emit()

    def event(self, event: QtCore.QEvent):
        if event.type(
        ) == QtCore.QEvent.StyleChange and not self.ignore_styleevent:
            # TODO: Validatre if we need a timer
            stylename = (self._style.objectName()
                         if self._style else style.get_defaultstyle())
            self.set_style(stylename)
        return super(TabToolbar, self).event(event)

    def focus_changed(self, old: QWidget = None, now: QWidget = None):
        if now and now != self:
            if self.isMinimized() and self.is_shown:
                parent = now
                while parent:
                    parent = parent.parent()
                    if parent == self:
                        return
                self.hide_at(self.current_index)

    def rowcount(self):
        return self.group_rowcount

    def group_maxheight(self):
        return self.group_maxheight * style.get_scalefactor(self)

    def set_style(self, stylename: str):
        self.ignore_styleevent = True
        self._style = style.create_style(stylename)
        stylesheet = style.get_stylesheet(self._style)
        self.setStyleSheet(stylesheet)
        self.ignore_styleevent = False
        self.StyleChanged.emit()

    def get_style(self) -> str:
        if self._style:
            return self._style.objectName()
        return ""

    def add_corneraction(self, action: QAction):
        action_button = QToolButton(self.tabBar)
        action_button.setProperty("TTInternal", QtCore.QVariant(True))
        action_button.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
        action_button.setDefaultAction(action)
        action_button.setAutoRaise(True)
        action_button.setSizePolicy(QSizePolicy.Expanding,
                                    QSizePolicy.Expanding)
        self.cornerActions.layout().addWidget(action_button)

    def set_specialtabenabled(self, enabled: bool):
        self.has_specialtab = enabled
        self.tabBar.tabBar().setProperty("TTSpecial", QtCore.QVariant(enabled))
        if enabled and self.tabBar.count() > 0:
            self.tabBar.setCurrentIndex(1)

    def hide_action(self) -> QAction:
        return self.hideAction

    def tab_clicked(self, index: int):
        if self.tempShowTimer.isActive() or (index == 0
                                             and self.has_specialtab):
            return
        if self._is_minimized:
            if self.is_shown and index != self.current_index:
                return
            self._is_minimized = self.is_shown
            self.hide_at(index)
            self._is_minimized = True

    def current_tabchanged(self, index: int):
        QtCore.QSignalBlocker(self.tabBar)
        if index == 0 and self.has_specialtab:
            self.tabBar.setCurrentIndex(self.current_index)
            self.SpecialTabClicked.emit()
        else:
            self.current_index = index

    @property
    def current_tab(self) -> int:
        return self.current_index

    def set_currenttab(self, index: int):
        self.tabBar.setCurrentIndex(index)

    def hide_at(self, index: int):
        if self._is_minimized:
            minheight = self.tabBar.tabBar().height() + 2
            self.tabBar.setMaximumHeight(minheight)
            self.tabBar.setMinimumHeight(minheight)
            self.setMaximumHeight(minheight)
            self.setMinimumHeight(minheight)
            self.is_shown = False
        else:
            self.tabBar.setCurrentIndex(index)
            if not self.is_shown:
                self.tabBar.setMaximumHeight(self.maxheight)
                self.tabBar.setMinimumHeight(self.maxheight)
                self.setMaximumHeight(self.maxheight)
                self.setMinimumHeight(self.maxheight)
                self.tabBar.adjustSize()
            self.setFocus()
            self.is_shown = True

    def hide_tab(self, index: int):
        page = self.sender()
        QtCore.QSignalBlocker(page)
        for i in range(self.tabBar.count()):
            if self.tabBar.widget(i) == page:
                self.tabBar.removeTab(i)
                return
        self.current_index = self.tabBar.currentIndex()

    @QtCore.pyqtSlot(int)
    def _adjustverticalsize(self, vsize: int):
        self.maxheight = vsize + self.tabBar.tabBar().height() + 6
        self.setMaximumHeight(self.maxheight)
        self.setMinimumHeight(self.maxheight)

    def adjust_verticalsize(self, vsize: int):
        QtCore.QTimer.singleShot(0, lambda: self._adjustverticalsize(vsize)
                                 )  # type: ignore[attr-defined]
        # self._AdjustVerticleSize(vSize)

    def show_tab(self, index: int):
        tab_page = self.sender()
        QtCore.QSignalBlocker(tab_page)
        self.tabBar.insertTab(index, tab_page, tab_page.objectName())
        self.current_index = self.tabBar.currentIndex()

    def add_page(self, page_name: str) -> page.Page:
        tab_page = page.Page(self.tabBar.count(), page_name)
        QtCore.QSignalBlocker(tab_page)
        tab_page.Hiding.connect(self.hide_tab)
        tab_page.Showing.connect(self.show_tab)
        self.tabBar.addTab(tab_page, page_name)
        return tab_page
Пример #33
0
class DolphinUpdate(QMainWindow):

    APP_TITLE = 'DolphinUpdate 3.1'
    DOWNLOAD_PATH = os.path.join(os.getenv('APPDATA'), 'DolphinUpdate/')

    def __init__(self, user_data_control):
        super().__init__()
        sys.excepthook = self._displayError
        self._udc = user_data_control

        self.check = QPixmap("res/check.png")
        self.cancel = QPixmap("res/cancel.png")

        self.setGeometry(500, 500, 500, 465)
        self.init_ui()
        self.init_window()
        self.init_user_data()

        self.setWindowTitle(self.APP_TITLE)
        self.setWindowIcon(QIcon('res/rabbit.png'))
        center(self)
        self.show()

    # PyQt Error Handling
    def _displayError(self, etype, evalue, etraceback):
        tb = ''.join(traceback.format_exception(etype, evalue, etraceback))
        QMessageBox.critical(self, "FATAL ERROR", "An unexpected error occurred:\n%s\n\n%s" % (evalue, tb))

    def init_ui(self):
        """create the UI elements in the main window"""
        self.statusBar().showMessage('Ready')

        main = QWidget()
        self.setCentralWidget(main)

        self.dolphin_dir = QLineEdit(main)
        self.dolphin_dir.setPlaceholderText("Please Select a Dolphin Directory")
        self.dolphin_dir.setReadOnly(True)

        self.version = QLineEdit(main)
        self.version.setPlaceholderText("Installation Status Unknown")
        self.version.setReadOnly(True)

        self.current = QLineEdit(main)
        self.current.setPlaceholderText("Loading Current Version...")
        self.current.setReadOnly(True)

        self.changelog_frame = QFrame(main)
        changelog_vbox = QVBoxLayout(self.changelog_frame)
        self.changelog = QTextBrowser(main)
        self.changelog.setPlaceholderText("Loading Changelog...")
        self.changelog.setReadOnly(True)
        changelog_vbox.addWidget(QLabel('Changelog:'))
        changelog_vbox.addWidget(self.changelog)
        self.changelog_frame.setContentsMargins(0, 20, -7, 0)

        grid = QGridLayout()
        main.setLayout(grid)

        self.dolphin_dir_status = QLabel(main)
        self.dolphin_dir_status.setPixmap(self.cancel)
        self.version_status = QLabel(main)
        self.version_status.setPixmap(self.cancel)
        self.current_status = QLabel(main)
        self.current_status.setPixmap(QPixmap("res/info.png"))

        grid.addWidget(self.dolphin_dir_status, 0, 0, Qt.AlignCenter)
        grid.addWidget(QLabel('Dolphin Directory:'), 0, 2)
        grid.addWidget(self.dolphin_dir, 0, 3)

        grid.addWidget(self.version_status, 1, 0, Qt.AlignCenter)
        grid.addWidget(QLabel('Your Version:'), 1, 2)
        grid.addWidget(self.version, 1, 3)

        grid.addWidget(self.current_status, 2, 0, Qt.AlignCenter)
        grid.addWidget(QLabel('Current Version:'), 2, 2)
        grid.addWidget(self.current, 2, 3)

        grid.addWidget(self.changelog_frame, 3, 0, 1, 4)

        grid.setSpacing(10)
        grid.setVerticalSpacing(2)
        grid.setRowStretch(3, 1)

    def init_window(self):
        self.update_thread = UpdateThread()
        self.update_thread.current.connect(self.update_current)
        self.update_thread.changelog.connect(self.update_changelog)
        self.update_thread.error.connect(self.show_warning)
        self.update_thread.start()

        self.download_thread = DownloadThread()
        self.download_thread.status.connect(self.update_version)
        self.download_thread.error.connect(self.show_warning)

        open_action = QAction(QIcon('res/open.png'), '&Open', self)
        open_action.setShortcut('Ctrl+O')
        open_action.setStatusTip('Select Dolphin Folder')
        open_action.triggered.connect(self.select_dolphin_folder)

        self.hide_changelog_action = QAction('Hide Changelog', self)
        self.hide_changelog_action.setStatusTip('Hide Changelog Section')
        self.hide_changelog_action.setCheckable(True)
        self.hide_changelog_action.toggled.connect(self.hide_changelog)
        self.hide_changelog_action.setChecked(self._udc.get_hide_changelog())

        update_action = QAction(QIcon('res/synchronize.png'), '&Refresh', self)
        update_action.setStatusTip('Refresh Current Version')
        update_action.triggered.connect(self.retrieve_current)

        download_action = QAction(QIcon('res/download.png'), '&Download', self)
        download_action.setStatusTip('Download Newest Version')
        download_action.triggered.connect(self.download_new)

        clear_action = QAction(QIcon('res/delete.png'), '&Clear Version', self)
        clear_action.setStatusTip('Reset Your Version')
        clear_action.triggered.connect(self.clear_version)

        exit_action = QAction(QIcon('res/exit.png'), '&Exit', self)
        exit_action.setShortcut('Ctrl+Q')
        exit_action.setStatusTip('Exit application')
        exit_action.triggered.connect(self.close)

        launch_dolphin_action = QAction(QIcon('res/dolphin.png'), '&Launch Dolphin', self)
        launch_dolphin_action.setShortcut('Ctrl+D')
        launch_dolphin_action.setStatusTip('Launch Dolphin')
        launch_dolphin_action.triggered.connect(self.launch_dolphin)

        file_menu = self.menuBar().addMenu('&File')
        file_menu.addAction(open_action)
        file_menu.addAction(update_action)
        file_menu.addAction(clear_action)
        file_menu.addAction(launch_dolphin_action)
        file_menu.addAction(exit_action)

        file_menu = self.menuBar().addMenu('&View')
        file_menu.addAction(self.hide_changelog_action)
        
        toolbar = self.addToolBar('Toolbar')
        toolbar.addAction(open_action)
        toolbar.addAction(update_action)
        toolbar.addAction(download_action)
        toolbar.addSeparator()
        toolbar.addAction(launch_dolphin_action)

        settings_frame = QFrame()
        settings_form = QFormLayout(settings_frame)
        self.auto_launch_check = QCheckBox(settings_frame)
        self.auto_launch_check.setChecked(self._udc.get_auto_launch())
        settings_form.addRow("Auto Launch?", self.auto_launch_check)
        
        self.launch_qt_check = QCheckBox(settings_frame)
        self.launch_qt_check.setChecked(self._udc.get_qt())
        settings_form.addRow("Launch QT Version?", self.launch_qt_check)
        settings_form.setContentsMargins(0, 1, 2, 0)
        self.statusBar().addPermanentWidget(settings_frame)
    
    def launch_dolphin(self):
        dolphin_dir = self.dolphin_dir.text()
        if not dolphin_dir:
            self.show_warning('Please select a dolphin folder.')
            return

        if (self.launch_qt_check.isChecked() == False):
          dolphinexe = 'Dolphin.exe'
        else:
          dolphinexe = 'DolphinQt2.exe'
        dolphin_path = os.path.join(dolphin_dir, dolphinexe)
        if not os.path.isfile(dolphin_path):
            self.show_warning('Could not find "' + dolphinexe + '".')
            return

        subprocess.Popen(dolphin_path, cwd=dolphin_dir)
        self.close()

    def update_version(self, message):
        if message == 'finished':
            self.version.setText(self.version.placeholderText())
            self.version.setPlaceholderText("Installation Status Unknown")
            self.version_status.setPixmap(self.check)
            self._udc.set_user_version(self.version.text())
            if self.auto_launch_check.isChecked() and QApplication.keyboardModifiers() != Qt.ShiftModifier:
                QTimer.singleShot(1000, self.launch_dolphin)
        else:
            self.version.setPlaceholderText(message)

    def download_new(self):
        dolphin_dir = self.dolphin_dir.text()
        version = self.version.text()

        if self.current.text() == version:
            self.show_warning('You already have the most recent version.')
            return
        elif not os.path.isdir(dolphin_dir):
            self.show_warning('Your dolphin folder path is invalid.')
            self.dolphin_dir_status.setPixmap(QPixmap("res/cancel.png"))
            return

        if not self.download_thread.isRunning():
            if dir == 'Please Select a Dolphin Directory':
                self.show_warning('Please select a dolphin folder.')

            self.version.setText('')
            self.download_thread.update(dolphin_dir, version)
            self.download_thread.start()

    def update_changelog(self, message):
        self.changelog.setText(message)

    def show_warning(self, message):
        QMessageBox.warning(self, 'Uh-oh', message, QMessageBox.Ok)

    def clear_version(self):
        reply = QMessageBox.question(self, 'Clear', "Are you sure you want to reset your version?", QMessageBox.Yes | 
                                     QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            self.version.setText('')
            self.version_status.setPixmap(self.cancel)
            self._udc.set_user_version('')

    def retrieve_current(self):
        if ~self.update_thread.isRunning():
            self.current.setText('')
            self.update_thread.start()

    def update_current(self, current):
        self.current.setText(current)
        if self.version.text() == self.current.text():
            self.version_status.setPixmap(self.check)
            if self.auto_launch_check.isChecked() and QApplication.keyboardModifiers() != Qt.ShiftModifier:
                QTimer.singleShot(1000, self.launch_dolphin)
        else:
            self.version_status.setPixmap(self.cancel)
            if self.auto_launch_check.isChecked() and self.dolphin_dir.text():
                self.download_new()

    def select_dolphin_folder(self):
        folder = str(QFileDialog.getExistingDirectory(self, 'Select Dolphin Directory'))
        if folder:
            self.dolphin_dir.setText(folder)
            self.dolphin_dir_status.setPixmap(QPixmap("res/check.png"))
            self._udc.set_user_path(folder)

    def hide_changelog(self, checked):
        self._udc.set_hide_changelog(checked)
        if checked:
            self.setMinimumHeight(250)
            self.changelog_frame.hide()
            self.resize(500, 250)
        else:
            self.setMinimumHeight(375)
            self.resize(500, 465)
            self.changelog_frame.show()

    def init_user_data(self):
        """initialize the dolphin path"""
        path, version = self._udc.load_user_data()
        if path:
            self.dolphin_dir.setText(path)
            if os.path.isdir(path):
                self.dolphin_dir_status.setPixmap(self.check)
        if version:
            self.version.setText(version)

    # PyQt closeEvent called on exit
    def closeEvent(self, event):
        self._udc.set_auto_launch(self.auto_launch_check.isChecked())
        self._udc.set_qt(self.launch_qt_check.isChecked())
        if self.download_thread.isRunning():
            event.ignore()
            reply = QMessageBox.question(self, 'Exit', "Are you sure you want to quit?", QMessageBox.Yes |
                                         QMessageBox.No, QMessageBox.No)
            if reply == QMessageBox.Yes:
                self.hide()
                self.download_thread.finished.connect(qApp.quit)
        else:
            event.accept()