Exemplo n.º 1
0
    def internalSetContents(self, widget, useContentsGeometry=True):
        if self.contents != None:
            if self.contents.parentWidget() == self:
                self.contents.setParent(None)

            self.layout.removeWidget(self.sizeGrip)
            self.layout.removeWidget(self.contents)
            self.layout.removeWidget(self.titleBar)
            self.contents.removeEventFilter(self)

            self.contents.windowTitleChanged.disconnect(self.setWindowTitle)
            self.contents.windowIconChanged.disconnect(self.onIconChange)

        self.contents = widget

        if self.contents != None:
            self.contents.setSizePolicy(QSizePolicy.Expanding,
                                        QSizePolicy.Expanding)
            if self.contents.testAttribute(QtCore.Qt.WA_QuitOnClose):
                self.contents.setAttribute(QtCore.Qt.WA_QuitOnClose, False)
                self.setAttribute(QtCore.Qt.WA_QuitOnClose)

            self.setAttribute(
                QtCore.Qt.WA_DeleteOnClose,
                self.contents.testAttribute(QtCore.Qt.WA_DeleteOnClose))

            self.setWindowTitle(self.contents.windowTitle())
            self.setWindowIcon(self.contents.windowIcon())

            self.contents.installEventFilter(self)

            self.contents.windowTitleChanged.connect(self.setWindowTitle)
            self.contents.windowIconChanged.connect(self.onIconChange)

            if useContentsGeometry:
                self.contents.show()
                self.setGeometry(self.contents.geometry())
                self.contents.setParent(self)
            else:
                self.contents.setParent(self)
                self.contents.show()

            self.updateWindowFlags()
            self.ensureTitleBar()

            self.layout.addWidget(self.titleBar)
            self.layout.addWidget(self.contents)

            if self.sizeGrip == None:
                self.sizeGrip = QSizeGrip(self)
                self.sizeGrip.setMaximumHeight(2)

            import sys
            if sys.platform == 'darwin':
                self.layout.addWidget(self.sizeGrip, 2)  # osx
            else:
                self.layout.addWidget(self.sizeGrip, 2, QtCore.Qt.AlignBottom
                                      | QtCore.Qt.AlignRight)  # window

        self.contentsChanged.emit(self.contents)
Exemplo n.º 2
0
    def __init__(self, parent):
        QSizeGrip.__init__(self, parent)
        self.__corner = Qt.BottomRightCorner

        self.resize(self.sizeHint())

        self.__updatePos()
Exemplo n.º 3
0
    def uiDefinitions(self):
        # Remove Title Bar
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)

        # Set Drop Shadow Window
        self.shadow = QGraphicsDropShadowEffect(self)
        self.shadow.setBlurRadius(20)
        self.shadow.setXOffset(0)
        self.shadow.setYOffset(0)
        self.shadow.setColor(QColor(0, 0, 0, 100))

        # Apply Drop Shadow Frame
        self.ui.frame_background.setGraphicsEffect(self.shadow)

        # Maximize / Restore
        self.ui.btn_maximize.clicked.connect(lambda: self.maximize_restore())

        # Minimize
        self.ui.btn_minimize.clicked.connect(lambda: self.showMinimized())

        # Close
        self.ui.btn_close.clicked.connect(lambda: self.close())

        # Create size grip to resize window
        self.sizegrip = QSizeGrip(self.ui.frame_grip)
        self.sizegrip.setStyleSheet(
            "QSizeGrip { width: 10px; height: 10px; margin: 5px } QSizeGrip:hover { background-color: rgb(50, 42, 94) }"
        )
Exemplo n.º 4
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.config = Config()
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.tabWidget = QTabWidget()
        self._mainLayout = QVBoxLayout()
        self._topBar = QHBoxLayout()
        self.windowCloseButton = QPushButton()
        self.windowCloseButton.setText("X")
        self.windowCloseButton.setFixedWidth(25)
        self.windowCloseButton.setFixedHeight(25)
        self.windowCloseButton.clicked.connect(lambda: self.close())
        self._windowMoveLine = QFrame()
        self._windowMoveLine.setFrameShadow(QFrame.Plain)
        self._windowMoveLine.setStyleSheet("background: black;")
        self._windowMoveLine.setFrameShape(QFrame.HLine)
        self._windowMoveLine.setMinimumSize(10, 10)
        self._topBar.addWidget(self._windowMoveLine)
        self._topBar.addWidget((self.windowCloseButton))
        self._mainLayout.addLayout(self._topBar)
        self._mainLayout.addWidget(self.tabWidget)
        self.setLayout(self._mainLayout)
        self._windowMoveLine.mousePressEvent = self.windowBarMove
        self._windowMoveLine.mouseMoveEvent = self.windowBarMove

        try:
            self.config = pickle.load(open('config.pkl', 'rb'))

        except:
            print("error opening Config File")
        self.isRoboKittyConnected = False
        self.areMotorsEnabled = False

        self.RearRightShoulder = None  # type:AX12A
        self.RearRightFemur = None  # type:AX12A
        self.RearRightLeg = None  # type:AX12A

        self.RearLeftShoulder = None  # type:AX12A
        self.RearLeftFemur = None  # type:AX12A
        self.RearLeftLeg = None  # type:AX12A

        self.FrontLeftShoulder = None  # type:AX12A
        self.FrontLeftFemur = None  # type:AX12A
        self.FrontLeftLeg = None  # type:AX12A

        self.FrontRightShoulder = None  # type:AX12A
        self.FrontRightFemur = None  # type:AX12A
        self.FrontRightLeg = None  # type:AX12A

        self.ax12aInstances = []
        AX12A.debugEnabled = False
        sizeGrip = QSizeGrip(self)
        sizeGrip.setVisible(True)
        self._mainLayout.addWidget(
            sizeGrip, 0, QtCore.Qt.AlignBottom | QtCore.Qt.AlignRight)
        self.setupUi(self.tabWidget)

        self.tabWidget.setCurrentIndex(1)
        self.init()
Exemplo n.º 5
0
    def setupUi(self, MainWindow):
        Ui_MainWindow.setupUi(self, MainWindow)

        ## REMOVE TITLE BAR
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        # self.setAttribute(QtCore.Qt.WA_TranslucentBackground)

        ## SHOW ==> DROP SHADOW
        # self.shadow = QGraphicsDropShadowEffect(self)
        # self.shadow.setBlurRadius(17)
        # self.shadow.setXOffset(0)
        # self.shadow.setYOffset(0)
        # self.shadow.setColor(QColor(0, 0, 0, 150))
        # self.frame_main.setGraphicsEffect(self.shadow)
        #
        # ==> RESIZE WINDOW
        self.sizegrip = QSizeGrip(self.frame_size_grip)
        self.sizegrip.setStyleSheet(
            "width: 20px; height: 20px; margin 0px; padding: 0px;")

        ### ==> MINIMIZE
        self.btn_minimize.clicked.connect(lambda: self.showMinimized())

        ## ==> MAXIMIZE/RESTORE
        self.btn_maximize_restore.clicked.connect(
            lambda: self.maximize_restore())

        ## SHOW ==> CLOSE APPLICATION
        self.btn_close.clicked.connect(lambda: self.close())

        ## TAB ==> tabs button click events
        self.pushButton_home.clicked.connect(lambda: self.switch_tab("home"))
        self.pushButton_crawler.clicked.connect(
            lambda: self.switch_tab("crawler"))
        self.pushButton_comments.clicked.connect(
            lambda: self.switch_tab("comments"))
        self.pushButton_commandInjection.clicked.connect(
            lambda: self.switch_tab("command_injection"))
        self.pushButton_localFileInclusion.clicked.connect(
            lambda: self.switch_tab("local_file_inclusion"))
        self.pushButton_sqlInjection.clicked.connect(
            lambda: self.switch_tab("sql_injection"))
        self.pushButton_stored_xssInjection.clicked.connect(
            lambda: self.switch_tab("xss_injection"))

        ##Upload file url events
        self.pushButton_url_file_open.clicked.connect(self.browse_url_file)

        ##Crawling event
        self.pushButton_start_crawling.clicked.connect(self.start_crawling)

        ##log
        sys.stdout = ConsoleLog(self.plainTextEdit_home_log,
                                "color:rgb(85, 255, 127);")
        sys.stderr = ConsoleLog(self.plainTextEdit_home_log,
                                "color:rgb(225, 0, 0);")
Exemplo n.º 6
0
    def __init__(self):
        super().__init__()

        self.title = "PyQt5 - Frameless Window"
        self.left = 500
        self.top = 200
        self.width = 200
        self.height = 200
        self.iconName = "_imagens/mouse.ico"

        self.setWindowTitle(self.title)
        self.setWindowIcon(QtGui.QIcon(self.iconName))
        self.setGeometry(self.left, self.top, self.width, self.height)

        flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint
                                      | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowFlags(flags)

        vbox = QVBoxLayout()
        sizegrip = QSizeGrip(self)
        vbox.addWidget(sizegrip)

        self.setLayout(vbox)

        self.show()
Exemplo n.º 7
0
    def __init__(self):
        super(Ventana, self).__init__()
        self.app = Ui_MainWindow()
        self.app.setupUi(self)
        self.dragPos = QPoint()
        self.app.btn_exportar.setEnabled(False)
        self.app.grip = QSizeGrip(self.app.Grip)

        # ----- Datos ------
        self.fila_num = 0
        self.fila_value = 0

        def moverVentana(event):
            if event.buttons() == Qt.LeftButton:
                self.move(self.pos() + event.globalPos() - self.dragPos)
                self.dragPos = event.globalPos()
                event.accept()

        self.app.Ventana.mouseMoveEvent = moverVentana

        # Botones Ventana.
        self.app.btn_verde.clicked.connect(lambda: self.ControlWindow())
        self.app.btn_amarillo.clicked.connect(
            lambda: events.minimizarVentana(self))
        self.app.btn_rojo.clicked.connect(lambda: events.cerrarVentana(self))

        # Botones funcionales
        self.app.btn_abrir.clicked.connect(lambda: self.getChat())
        self.app.btn_exportar.clicked.connect(
            lambda: events.exportarChat(self.fila_num, self.fila_value))

        self.control_ventana = 0
Exemplo n.º 8
0
    def __init__(self):
        super().__init__()

        self.title = "PyQt5 Size Grip"
        self.top = 200
        self.left = 500
        self.width = 640
        self.height = 480

        self.setWindowTitle(self.title)
        self.setWindowIcon(QtGui.QIcon("icon.png"))
        self.setGeometry(self.left, self.top, self.width, self.height)

        flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint
                                      | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowFlags(flags)

        vboxlayout = QVBoxLayout()

        sizegrip = QSizeGrip(self)
        #sizegrip.setVisible(True)
        vboxlayout.addWidget(sizegrip)

        self.setLayout(vboxlayout)

        self.show()
Exemplo n.º 9
0
    def __init__(self, controller):

        super().__init__()

        self.main_controller = controller

        # create and setup Window from Ui_MainWindow Model

        self.setupUi(self)

        # set startsize and minimum size
        start_size = QSize(1000, 720)
        self.dragPos = QtCore.QPoint(300, 25)

        self.resize(start_size)
        self.setMinimumSize(start_size)

        # set flags to the window
        flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint)
        self.setWindowFlags(flags)

        # connenct the buttons
        self.btn_close.clicked.connect(lambda: self.close())
        self.btn_maximise_restore.clicked.connect(
            lambda: self.main_controller.change_window_format())
        self.btn_minimize.clicked.connect(lambda: self.minimize())
        self.btn_tgl_menu.clicked.connect(lambda: self.change_sidemenu())

        #create function that handles window_drag events
        def move_window(event):
            self.main_controller.on_drag_window()

            if event.buttons() == Qt.LeftButton:
                self.move(self.pos() + event.globalPos() - self.dragPos)
                self.dragPos = event.globalPos()
                event.accept()

        self.frame_header_top.mouseMoveEvent = move_window

        #connect frame to sizegrip
        self.sizegrip = QSizeGrip(self.frame_size_grip)
        self.sizegrip.setStyleSheet(
            "width: 20px; height: 20px; margin 0px; padding: 0px;")

        # SHOW ==> MAIN WINDOW
        self.show()
Exemplo n.º 10
0
    def __init__(self, filename, title, parent=None):
        super(ImagePlayer, self).__init__()

        #set screen save
        self.settings = QSettings('settings.ini', QSettings.IniFormat)

        # set up exit action
        quitAction = QAction("E&xit",
                             self,
                             shortcut="Ctrl+Q",
                             triggered=self.close)
        self.addAction(quitAction)
        self.setContextMenuPolicy(Qt.ActionsContextMenu)

        # Load the file into a QMovie
        self.movie = QMovie(filename, QByteArray(), self)

        #size = self.movie.scaledSize()
        self.setWindowFlags(Qt.FramelessWindowHint
                            | Qt.WindowStaysOnBottomHint)
        self.setAttribute(Qt.WA_TranslucentBackground)
        #self.resize(self.settings.value("size", QSize(size.width, size.height)))
        self.move(self.settings.value("pos", QPoint(50, 50)))
        #self.setGeometry(parser.getint('screen_position', 'x'), parser.getint('screen_position', 'y'), size.width(), size.height())
        self.setWindowTitle(title)

        self.movie_screen = QLabel()
        # Make label fit the gif
        self.movie_screen.setSizePolicy(QSizePolicy.Expanding,
                                        QSizePolicy.Expanding)
        self.movie_screen.setAlignment(Qt.AlignCenter)
        self.movie_screen.setScaledContents(
            True)  #allow image to scale with label
        self.setMinimumSize(QSize(200, 150))  #restrict it to a min size
        self.movie_screen.setStyleSheet(open('style.css').read())

        # Create the layout
        main_layout = QVBoxLayout()
        sizegrip = QSizeGrip(
            self)  #enable size grip for scaling borderless window
        main_layout.addWidget(self.movie_screen)
        main_layout.addWidget(sizegrip, 0, Qt.AlignBottom | Qt.AlignRight)

        self.setLayout(main_layout)

        # Add the QMovie object to the label
        self.movie.setCacheMode(QMovie.CacheAll)
        self.movie.setSpeed(self.settings.value(
            "playspeed", 30,
            type=int))  #set relative playback speed percentage
        self.movie_screen.setMovie(self.movie)
        self.movie.start()
        self.movie.loopCount()

        self.timer = QTimer(self)
        self.timer.singleShot(2000, self.GetMap)
        self.timer.timeout.connect(self.GetMap)
        self.timer.start(901000)  #milliseconds. 1000 is 1 second
Exemplo n.º 11
0
    def UIaction(self):
        cetralwidget = QWidget()
        self.setCentralWidget(cetralwidget)
        cenlay = QVBoxLayout()
        cetralwidget.setLayout(cenlay)

        flags = Qt.WindowFlags(Qt.FramelessWindowHint)
        self.setWindowFlags(flags)

        szgrip = QSizeGrip(self)
        cenlay.addWidget(szgrip)
Exemplo n.º 12
0
    def sizegrips(self):
        """adds sizegrips"""
        self.sizegrip1 = QSizeGrip(self)
        self.sizegrip1.setVisible(True)

        self.sizegrip2 = QSizeGrip(self)
        self.sizegrip2.setVisible(True)

        self.sizegrip3 = QSizeGrip(self)
        self.sizegrip3.setVisible(True)

        self.sizegrip4 = QSizeGrip(self)
        self.sizegrip4.setVisible(True)
Exemplo n.º 13
0
    def __init__(self, parent=None):
        super(ResizableRubberBand, self).__init__(parent)

        self.draggable = True
        self.dragging_threshold = 0
        self.mousePressPos = None
        self.mouseMovePos = None
        self.borderRadius = 5

        self.setWindowFlags(Qt.SubWindow)
        layout = QHBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)

        self.grip2 = QSizeGrip(self)
        self.grip2.setFixedSize(15, 15)

        layout.addWidget(self.grip2, 0, Qt.AlignRight | Qt.AlignBottom)
        self.band = QRubberBand(QRubberBand.Rectangle, self)
        self.band.show()
        self.show()
    def uiDefinitions(self):
        def dobleClickMaximizeRestore(event):
            # IF DOUBLE CLICK CHANGE STATUS ==> Üst kısıma 2 kere basıldığında tam ekran yapma
            if event.type() == QtCore.QEvent.MouseButtonDblClick:
                QtCore.QTimer.singleShot(250, lambda: self.maximize_restore())

        ## REMOVE ==> STANDARD TITLE BAR ==> standart ekran boyutu
        if GLOBAL_TITLE_BAR:
            self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
            self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
            self.ui.frame_label_top_btns.mouseDoubleClickEvent = dobleClickMaximizeRestore
        else:
            self.ui.horizontalLayout.setContentsMargins(0, 0, 0, 0)
            self.ui.frame_label_top_btns.setContentsMargins(8, 0, 0, 5)
            self.ui.frame_label_top_btns.setMinimumHeight(42)
            self.ui.frame_icon_top_bar.hide()
            self.ui.frame_btns_right.hide()
            self.ui.frame_size_grip.hide()

        ## SHOW ==> DROP SHADOW ==> gölge düşürme
        self.shadow = QGraphicsDropShadowEffect(self)
        self.shadow.setBlurRadius(17)
        self.shadow.setXOffset(0)
        self.shadow.setYOffset(0)
        self.shadow.setColor(QColor(0, 0, 0, 150))
        self.ui.frame_main.setGraphicsEffect(self.shadow)

        ## ==> RESIZE WINDOW ==>Ana Ekran Boyutlandırma
        self.sizegrip = QSizeGrip(self.ui.frame_size_grip)
        self.sizegrip.setStyleSheet(
            "width: 20px; height: 20px; margin 0px; padding: 0px;")

        ### ==> MINIMIZE ==> Minumum butonuna basıldığında
        self.ui.btn_minimize.clicked.connect(lambda: self.showMinimized())

        ## ==> MAXIMIZE/RESTORE ==> Maximum butonuna basıldığında
        self.ui.btn_maximize_restore.clicked.connect(
            lambda: self.maximize_restore())

        ## SHOW ==> CLOSE APPLICATION ==> Kapatma butonuna basıldığında
        self.ui.btn_close.clicked.connect(lambda: self.close())
Exemplo n.º 15
0
    def __init__(self, ):
        super().__init__(parent=None)

        self._widget = None
        self._timer = QTimer(self)
        self._old_pos = None
        self._widget = None
        self._size_grip = QSizeGrip(self)
        self._timer.timeout.connect(self.__on_timeout)

        # setup window layout
        self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
        self._size_grip.setFixedSize(20, 20)
        self._layout = QVBoxLayout(self)
        self._layout.setContentsMargins(0, 0, 0, 0)
        self._layout.setSpacing(0)
        self._layout.addWidget(self._size_grip)
        self._layout.setAlignment(self._size_grip,
                                  Qt.AlignBottom | Qt.AlignRight)

        self.setMouseTracking(True)
    def InitWindow(self):
        self.setWindowIcon(QtGui.QIcon(self.iconName))
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowFlags(flags)
        vbox = QVBoxLayout()
        sizegrip = QSizeGrip(self)
        vbox.addWidget(sizegrip)
        self.setLayout(vbox)
        self.show()
Exemplo n.º 17
0
    def Interface(self):

        flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint
                                      | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowFlags(flags)

        sizegrip = QSizeGrip(self)

        v_box = QVBoxLayout()
        v_box.addWidget(sizegrip)

        self.setLayout(v_box)
Exemplo n.º 18
0
    def __init__(self, parent=None):
        super().__init__(parent=parent)

        self._border_radius = 10
        self.label = QLabel('...', self)
        self._size_grip = QSizeGrip(self)
        self._size_grip.setFixedWidth(self._border_radius * 2)

        font = self.font()
        font.setPointSize(24)
        self.label.setFont(font)
        self.label.setAlignment(Qt.AlignBaseline | Qt.AlignVCenter | Qt.AlignHCenter)
        self.label.setWordWrap(False)

        self._layout = QHBoxLayout(self)
        self._layout.setContentsMargins(0, 0, 0, 0)
        self._layout.setSpacing(0)
        self._layout.addSpacing(self._border_radius * 2)
        self._layout.addWidget(self.label)
        self._layout.addWidget(self._size_grip)
        self._layout.setAlignment(self._size_grip, Qt.AlignBottom)
Exemplo n.º 19
0
    def __init__(self, control, screens: list) -> None:
        super().__init__(flags=Qt.FramelessWindowHint)
        self.setWindowTitle("My player")
        self.control = control
        self.mainWidget = MainWidget(self.control, self, screens)
        color = QPalette()
        color.setColor(QPalette.Background, QColor(20, 20, 20))
        self.setPalette(color)
        self.setCentralWidget(self.mainWidget)
        self.menuBar = self.mainWidget.menus
        self.setMinimumSize(1000, 800)
        self.setFocusPolicy(Qt.StrongFocus)
        self.setMouseTracking(True)

        self.timer = QTimer()
        self.timer.setInterval(200)
        self.timer.timeout.connect(self.getMousePos)
        self.timer.start()

        self.move((screens[0].geometry().width() - self.width()) // 2,
                  (screens[0].geometry().height() - self.height()) // 2)

        self.right = self.left = self.up = self.down = False
        self.start = QPoint(0, 0)
        self.gripSize = 10
        self.grips = []
        self.pressedForMenuBar = False
        for i in range(4):
            grip = QSizeGrip(self)
            grip.setStyleSheet("background-color: transparent")
            grip.resize(self.gripSize, self.gripSize)
            self.grips.append(grip)
Exemplo n.º 20
0
    def createUi(self):
        self.ui = Ui_MainWindow()
        self.fontsDB = QFontDatabase()
        self.ui.setupUi(self)
        self.move(50, 50)
        self.setAcceptDrops(True)
        self.last_font = None

        # transparent
        self.setAttribute(Qt.WA_DeleteOnClose, True)
        self.setAttribute(Qt.WA_TranslucentBackground, True)
        #self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)

        self.setStyleSheet("background: transparent; border: none;")
        self.oldPos = self.pos()

        seizGrip = QSizeGrip(self)
        self.ui.sldTrans.setValue(99)
        self.text_background_color = "#333333"
        #self.text_background_color = "transparent"
        self.text_color = "#FFFEEE"

        # disable observe checkbox on start
        self.ui.chkObserve.setEnabled(False)
        self.ui.chkHB.setEnabled(False)

        self.setAcceptDrops(True)
        self.ui.textEdit.setAcceptDrops(False)

        self.ui.cmbTextSamples.currentIndexChanged.connect(self.setSampleText)
        self.ui.cmbFontSize.currentIndexChanged.connect(self.setFontSize)
        self.observer.fileChanged.connect(self.setTextFont)
        self.ui.textEdit.textChanged.connect(self.saveUserText)
        self.ui.btnPdbExport.clicked.connect(self.exportToPdf)
        self.ui.sldTrans.valueChanged.connect(self.adjustTransparent)
        self.ui.chkHB.stateChanged.connect(self.showHbViewBar)

        #self.ui.textEdit

        self.resize(self.settings.value("size", QSize(270, 225)))
        self.move(self.settings.value("pos", QPoint(50, 50)))
        self.setCustomSampleText()
        self.refreshTextStyle()
        try:
            self.text_font_size = self.settings.value("last_font_size",
                                                      self.text_font_size)
            self.last_font = self.settings.value("last_font")
            if self.last_font:
                #self.setTextFont(self.last_font, int(self.text_font_size))
                pass
        except:
            pass
Exemplo n.º 21
0
    def __init__(self, parent, url, image_size):
        super().__init__()
        self.main = parent
        self.setupUi(self)
        self.setAcceptDrops(True)
        self.url = url
        self.image = QImage(url)
        self.image_size = image_size
        self.setBackgroundExists()
        self.resized.connect(self.synchronize)

        flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowFlags(flags)
        sizegrip = QSizeGrip(self)
        sizegrip.setVisible(True)
        self.gridLayout.addWidget(sizegrip)

        self.pushButton_close.clicked.connect(self.on_click)
        self.pushButton_cancel.clicked.connect(self.on_click)
        self.pushbutton_calibrate.clicked.connect(self.on_click)
        self.title.installEventFilter(self)
        self.pressing = False
Exemplo n.º 22
0
    def __init__(self, parent=None):
        super().__init__(parent)

        self.draggable = True
        self.dragging_threshold = 5
        self.mousePressPos = None
        self.mouseMovePos = None

        self.parent = parent

        self.setWindowFlags(Qt.SubWindow)
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)


        top = QHBoxLayout()
        top.setContentsMargins(0, 0, 0, 0)
        top.addWidget( QSizeGrip(self), 0, Qt.AlignLeft | Qt.AlignTop)
        top.addWidget( HSizeGrip(self), 0, Qt.AlignHCenter | Qt.AlignTop)
        top.addWidget( QSizeGrip(self), 0, Qt.AlignRight | Qt.AlignTop)
        layout.addLayout(top)

        center = QHBoxLayout()
        center.setContentsMargins(0, 0, 0, 0)
        center.addWidget( VSizeGrip(self), 0, Qt.AlignLeft | Qt.AlignVCenter)
        center.addWidget( VSizeGrip(self), 0, Qt.AlignRight | Qt.AlignVCenter)
        layout.addLayout(center)

        bottom = QHBoxLayout()
        bottom.setContentsMargins(0, 0, 0, 0)
        bottom.addWidget( QSizeGrip(self), 0, Qt.AlignLeft | Qt.AlignBottom)
        bottom.addWidget( HSizeGrip(self), 0, Qt.AlignHCenter | Qt.AlignBottom)
        bottom.addWidget( QSizeGrip(self), 0, Qt.AlignRight | Qt.AlignBottom)
        layout.addLayout(bottom)

        self.setLayout(layout)

        self.rubberband = QRubberBand(QRubberBand.Rectangle, self)
Exemplo n.º 23
0
    def status(self):
        if self.statused.isChecked() == True:
            self.statusbar = QStatusBar(self)
            self.statusbar.setGeometry(
                QRect(self.geometry().x() - self.geometry().getCoords()[0],
                      self.geometry().width(),
                      self.geometry().width(), 20))
            self.textEdit.setGeometry(
                QRect(self.geometry().x() - self.geometry().getCoords()[0],
                      self.geometry().y() - self.geometry().getCoords()[1],
                      self.geometry().width(),
                      self.geometry().height() - 42))
            font = QFont()
            font.setPointSize(10)
            self.statusbar.setFont(font)
            self.label = QLabel("Row: 0 | Col: 0")
            self.statusbar.addPermanentWidget(self.label)
            self.time = QLCDNumber()
            self.time.setDigitCount(8)
            self.time.setFrameShadow(QFrame.Sunken)
            self.time.setFrameShape(QFrame.Panel)
            self.statusbar.addWidget(self.time)
            self.setStatusBar(self.statusbar)
        else:
            self.textEdit.setGeometry(
                QRect(self.geometry().x() - self.geometry().getCoords()[0],
                      self.geometry().y() - self.geometry().getCoords()[1],
                      self.geometry().width(),
                      self.geometry().height() - 21))

            vboxlayout = QVBoxLayout()
            vboxlayout.setContentsMargins(QtCore.QMargins())
            vboxlayout.setSpacing(0)
            sizegrip = QSizeGrip(self.centralwidget)
            sizegrip.setVisible(True)
            vboxlayout.addWidget(sizegrip, 0, Qt.AlignBottom | Qt.AlignRight)
            self.centralwidget.setLayout(vboxlayout)
            self.statusbar.hide()
Exemplo n.º 24
0
def main():
    # excepthook redirect
    sys._excepthook = sys.excepthook
    sys.excepthook = exception_hook

    # creating app
    app = QApplication(sys.argv)
    gui = canSnifferGUI()

    #applying dark theme
    qtmodern.styles.dark(app)
    darked_gui = qtmodern.windows.ModernWindow(gui)

    # adding a grip to the top left corner to make the frameless window resizable
    layout = QVBoxLayout()
    sizegrip = QSizeGrip(darked_gui)
    sizegrip.setMaximumSize(30, 30)
    layout.addWidget(sizegrip, 50, Qt.AlignBottom | Qt.AlignRight)
    darked_gui.setLayout(layout)

    #starting the app
    darked_gui.show()
    app.exec_()
Exemplo n.º 25
0
    def __init__(self, parent):
        super().__init__(parent)
        self.setWindowFlag(Qt.SubWindow)
        sizeGrip = QSizeGrip(self)
        layout = QVBoxLayout(self)
        layout.addWidget(sizeGrip, 0, Qt.AlignBottom | Qt.AlignRight)

        shortcut = QShortcut(QKeySequence("Ctrl+Down"), self)
        shortcut.activated.connect(self.splitCell)

        font = self.font()
        font.setPointSize(config.fontSize)
        self.setFont(font)

        self.document().contentsChanged.connect(self.sizeChange)
Exemplo n.º 26
0
    def __init__(self, parent=None):
        super(ResizableRubberBand, self).__init__(parent)
        self.setMinimumSize(30, 30)
        self.setWindowFlags(Qt.SubWindow)
        self.layout = QHBoxLayout(self)
        self.layout.setContentsMargins(0, 0, 0, 0)

        self.grip1 = QSizeGrip(self)
        self.layout.addWidget(self.grip1, 0, Qt.AlignRight | Qt.AlignBottom)

        self.rubberband = QRubberBand(QRubberBand.Rectangle, self)
        self.rubberband.move(0, 0)
        self.rubberband.show()
        self.move_offset = None
        self.resize(150, 150)

        self.show()
Exemplo n.º 27
0
    def InitWindow(self):
        self.setWindowIcon(QtGui.QIcon("home.png"))
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # Create a frameless window
        flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint
                                      | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowFlags(flags)

        # Adding size grip for resizing the window
        vbox = QVBoxLayout()
        sizegrip = QSizeGrip(self)
        vbox.addWidget(sizegrip)

        self.setLayout(vbox)

        self.show()
Exemplo n.º 28
0
    def __init__(self):
        super().__init__()

        self.title = "PyQt5 Frameless Window"
        self.left = 500
        self.top = 200
        self.width = 300
        self.height = 250

        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint
                                      | QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowFlags(flags)

        vbox = QVBoxLayout()
        sizegrip = QSizeGrip(self)
        vbox.addWidget(sizegrip)

        self.show()
Exemplo n.º 29
0
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = MainUI()
        self.ui.setupUi(self)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowMinimizeButtonHint)
        self.gripSize = 16
        self.grips = []
        # Resize window
        for i in range(4):
            grip = QSizeGrip(self)
            grip.setVisible(False)
            grip.resize(self.gripSize, self.gripSize)
            self.grips.append(grip)

        self._btn_clicked_connect()
        self.show()
Exemplo n.º 30
0
    def __init__(self, parent=None):
        super(RoundedWindow, self).__init__(parent)

        # make the window frameless
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)

        self.backgroundColor = hex2QColor("efefef")
        self.foregroundColor = hex2QColor("333333")
        self.borderRadius = 5
        self.draggable = True
        self.dragging_threshould = 5
        self.__mousePressPos = None
        self.__mouseMovePos = None

        layout = QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        layout.addWidget(QSizeGrip(self), 0,
                         QtCore.Qt.AlignBottom | QtCore.Qt.AlignRight)

        self.setMinimumSize(320, 240)
Exemplo n.º 31
0
class MainForm(QDialog):
   def __init__(self, parent = None):
      QDialog.__init__(self, parent)
      
      # If a Nemu instance is already running, this is as far as we go
      self.connectToRunning()
      
      self.holdOpen = False
      self.menuItems = []
      self.allItems = []
      self.favorites = []
      self.currentItem = None
      self.menuFile = os.path.expanduser('~/.nemu/menu')
      self.favoritesFile = os.path.expanduser('~/.nemu/favorites')
      # NOTE: If you change this, also update migrate-settings
      self.settingsFile = os.path.expanduser('~/.nemu/settings')
      self.initSettings()

      self.server = QLocalServer()
      self.server.newConnection.connect(self.handleConnection)
      QLocalServer.removeServer('nemuSocket')
      self.server.listen('nemuSocket')
      
      self.configDir = os.path.expanduser('~/.nemu')
      if not os.path.isdir(self.configDir):
         os.mkdir(self.configDir)
      self.menuItems = self.loadConfig(self.menuFile, self.menuItems)
      self.favorites = self.loadConfig(self.favoritesFile, self.favorites)
      # Don't load directly into self.settings so we can add new default values as needed
      try:
         tempSettings = self.loadConfig(self.settingsFile, self.settings)
         for key, value in tempSettings.items():
            self.settings[key] = value
      except SystemError:
         print('ERROR: Failed to load settings. You may need to run migrate-settings.')
         raise
      # This should never happen, but unfortunately bugs do, so clean up orphaned items.
      # We need to do this because these items won't show up in the UI, but may interfere with
      # merges if they duplicate something that is being merged in.
      self.menuItems[:] = [i for i in self.menuItems if i.parent == None or i.parent in self.menuItems]
      # Look for broken icon paths
      needSave = False
      for i in self.menuItems + self.favorites:
          if not os.path.exists(i.icon):
              i.findIcon()
              needSave = True
      if needSave:
         self.saveMenu()


      for i in self.menuItems:
         if not hasattr(i, 'imported'):
            i.imported = False
      
      self.setupUI()
      
      self.setContextMenuPolicy(Qt.ActionsContextMenu)
      self.createMenu(self)
      
      self.refresh(False)
      
      if len(self.menuItems) == 0:
         self.firstRun()
      
      self.show()
      
      self.keepaliveTimer = QTimer(self)
      self.keepaliveTimer.timeout.connect(self.keepalive)
      self.keepaliveTimer.start(60000)
      
      
   def initSettings(self):
      self.settings = dict()
      self.settings['width'] = 400
      self.settings['height'] = 400
      self.settings['quit'] = False
      self.settings['imported'] = []
      self.settings['iconTheme'] = None
      
      
   def loadConfig(self, filename, default):
      if os.path.exists(filename):
         with open(filename, 'rb') as f:
            data = f.read().replace('PyQt4', 'PyQt5')
            return cPickle.loads(data)
      else:
         return default
      
      
   def setupUI(self):
      self.resize(self.settings['width'], self.settings['height'])
      self.setWindowFlags(Qt.FramelessWindowHint | Qt.CustomizeWindowHint | Qt.WindowStaysOnTopHint)
      #self.setWindowFlags(Qt.X11BypassWindowManagerHint)
      self.setWindowTitle('Nemu')
      self.setMouseTracking(True)
      
      iconPath = os.path.join(os.path.dirname(__file__), 'images')
      iconPath = os.path.join(iconPath, 'nemu.png')
      self.setWindowIcon(IconCache()[iconPath])
      
      self.place()
      
      self.buttonListLayout = QVBoxLayout(self)
      self.setMargins(self.buttonListLayout)
      
      self.buttonLayout = QHBoxLayout()
      self.setMargins(self.buttonLayout)
      
      # Settings and Filter box
      self.filterLayout = QHBoxLayout()
      self.settingsButton = QPushButton()
      self.settingsButton.setIcon(QIcon(iconPath))
      self.settingsButton.setMinimumHeight(35)
      self.settingsButton.clicked.connect(self.settingsClicked)
      self.filterLayout.addWidget(self.settingsButton, 0)
      
      self.filterLabel = QLabel("Filter")
      self.filterLayout.addWidget(self.filterLabel)
      
      self.filterBox = QLineEdit()
      self.filterBox.textChanged.connect(self.refresh)
      self.filterLayout.addWidget(self.filterBox)
      
      self.sizeGrip = QSizeGrip(self)
      self.sizeGrip.setMinimumSize(QSize(25, 25))
      self.filterLayout.addWidget(self.sizeGrip, 0, Qt.AlignRight | Qt.AlignTop)
      
      self.buttonListLayout.addLayout(self.filterLayout)
      
      # Top buttons and labels
      self.backButton = QPushButton('Favorites')
      self.backButton.setMinimumHeight(35)
      self.backButton.clicked.connect(self.backClicked)
      self.buttonLayout.addWidget(self.backButton, 1)
      
      self.currentLabel = QLabel()
      self.currentLabel.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
      self.buttonLayout.addWidget(self.currentLabel, 1)
      
      self.buttonListLayout.addLayout(self.buttonLayout, 0)
      
      # Menu item display
      self.listSplitter = QSplitter()
      self.buttonListLayout.addWidget(self.listSplitter, 1)
      
      self.leftList = ListWidget(self.clearListMouseOver)
      self.listSplitter.addWidget(self.leftList)
      
      self.rightList = ListWidget(self.clearListMouseOver)
      self.listSplitter.addWidget(self.rightList)
      
      # Has to be done after adding widgets to the splitter or the size will get reset again
      if 'splitterState' in self.settings:
         self.listSplitter.restoreState(self.settings['splitterState'])
      
   def setMargins(self, layout, margin = 0):
      layout.setSpacing(margin)
      layout.setContentsMargins(margin, margin, margin, margin)
      
      
   def createMenu(self, widget):
      addFavoriteAction = QAction('Add to Favorites', self)
      addFavoriteAction.triggered.connect(self.addFavoriteClicked)
      widget.insertAction(None, addFavoriteAction)
      addAction = QAction("New...", self)
      addAction.triggered.connect(self.newClicked)
      widget.insertAction(None, addAction)
      editAction = QAction("Edit...", self)
      editAction.triggered.connect(self.editClicked)
      widget.insertAction(None, editAction)
      deleteAction = QAction("Delete", self)
      deleteAction.triggered.connect(self.deleteClicked)
      widget.insertAction(None, deleteAction)
      
      
   def hideOrClose(self):
      if self.settings['quit']:
         self.close()
      else:
         self.hide()
         
   def closeEvent(self, event):
      self.saveSettings()
      
   def hideEvent(self, event):
      self.releaseMouse()
      self.saveSettings()
      
   def mouseMoveEvent(self, event):
      if self.hasMouse():
         self.releaseMouse()
      
   def leaveEvent(self, event):
      # If we set holdOpen, it means that we've opened a dialog, so we shouldn't grab
      if not self.hasMouse():
         self.grabMouse()
      
   def mousePressEvent(self, event):
      if not self.hasMouse():
         self.hideOrClose()
         
   def hasMouse(self):
      return self.geometry().contains(QCursor.pos())
         

   def saveSettings(self):
      self.settings['splitterState'] = self.listSplitter.saveState()
      self.settings['width'] = self.width()
      self.settings['height'] = self.height()
      with open(self.settingsFile, 'wb') as f:
         cPickle.dump(self.settings, f)
         
   def place(self):
      desktop = qApp.desktop()
      screenSize = desktop.availableGeometry(QCursor.pos())
      self.move(screenSize.x(), screenSize.y() + screenSize.height() - self.height())
         
         
   def newClicked(self):
      form = AddForm()
      
      self.holdOpen = True
      form.exec_()
      self.checkMouse()
      self.holdOpen = False
      
      if form.accepted:
         item = MenuItem()
         item.name = form.name
         item.command = form.command
         item.working = form.working
         item.folder = form.folder
         item.icon = form.icon
         item.findIcon()
         
         clicked = self.getClicked()
         if clicked:
            parent = clicked.item.parent
         elif self.leftList.mouseOver:
            if self.currentItem != None:
               parent = self.currentItem.parent
            else:
               parent = None
         else:
            parent = self.currentItem
         item.parent = parent
         
         self.menuItems.append(item)
         self.refresh()
      
   def editClicked(self):
      form = AddForm()
      clicked = self.getClicked()
      if clicked == None:
         return
      item = clicked.item
      
      form.name = item.name
      form.command = item.command
      form.working = item.working
      form.folder = item.folder
      form.icon = item.icon
      form.populateFields()
      
      self.holdOpen = True
      form.exec_()
      self.checkMouse()
      self.holdOpen = False
      
      if form.accepted:
         item.name = form.name
         item.command = form.command
         item.working = form.working
         item.folder = form.folder
         item.icon = form.icon
         item.imported = False
         item.findIcon()
         self.refresh()
         
         
   def checkMouse(self):
      if not self.hasMouse():
         self.grabMouse()
      
      
   def deleteClicked(self):
      clicked = self.getClicked()
      if clicked == None:
         return
      self.delete(clicked.item)
      self.refresh()
      
   # Delete item and all of its children so we don't leave around orphaned items
   def delete(self, item):
      for i in self.menuItems:
         if i.parent == item:
            i.deleted = True
      
      if item in self.menuItems:
         item.deleted = True
         item.imported = False
      if item in self.favorites:
         self.favorites.remove(item)
      
      
   def addFavoriteClicked(self):
      newFavorite = copy.copy(self.getClicked().item)
      newFavorite.parent = None
      self.favorites.append(newFavorite)
      self.refresh()
      
      
   def getClicked(self):
      for i in self.allItems:
         if i.mouseOver:
            return i
            
   def clearMouseOver(self):
      for i in self.allItems:
         i.mouseOver = False
         
   def clearListMouseOver(self):
      self.leftList.mouseOver = False
      self.rightList.mouseOver = False
      
      
   def refresh(self, save = True):
      self.leftList.clear()
      self.rightList.clear()
      self.allItems = []
      sortedLeft = []
      sortedRight = []
      self.updateFilter()
      
      if self.currentItem != None:
         currParent = self.currentItem.parent
         for i in self.menuItems:
            if i.parent == currParent and not i.deleted and i.matchedFilter:
               sortedLeft.append(i)
      else:
         for i in self.favorites:
            sortedLeft.append(i)
      
      for i in self.menuItems:
         if i.parent == self.currentItem and not i.deleted and i.matchedFilter:
            sortedRight.append(i)
            
      sortedLeft.sort(key = lambda x: x.name)
      sortedLeft.sort(key = lambda x: not x.folder)
      sortedRight.sort(key = lambda x: x.name)
      sortedRight.sort(key = lambda x: not x.folder)
      for i in sortedLeft:
         self.leftList.add(self.createItem(i))
      for i in sortedRight:
         self.rightList.add(self.createItem(i))
         
      if save:
         self.saveMenu()

   def saveMenu(self):
      # Save the current menu status
      with open(self.menuFile, 'wb') as f:
         cPickle.dump(self.menuItems, f)
      with open(self.favoritesFile, 'wb') as f:
         cPickle.dump(self.favorites, f)

   def createItem(self, item):
      newItem = ListItem(item, self.clearMouseOver)
      newItem.clicked.connect(self.itemClicked)
      self.allItems.append(newItem)
      return newItem
      
   def updateFilter(self):
      filterValue = str(self.filterBox.text())
      
      for i in self.menuItems:
         i.checkFilter(filterValue)
            
      
   def itemClicked(self):
      sender = self.sender()
      if sender.item.folder:
         self.setCurrentItem(sender.item)
         self.refresh(False)
      else:
         flags = ['f', 'F', 'u', 'U', 'd', 'D', 'n', 'N', 'i', 'k', 'v', 'm']
         command = sender.item.command
         for i in flags:
            command = command.replace('%' + i, '')
         # %c needs a proper value in some cases
         command = command.replace('%c', '"%s"' % sender.item.name)
         working = sender.item.working
         if not os.path.isdir(working):
            working = None
            
         # Need to redirect stdout and stderr so if the process writes something it won't fail
         with open(os.path.devnull, 'w') as devnull:
            Popen(command + '&', stdout=devnull, stderr=devnull, shell=True, cwd=working)
         self.hideOrClose()
         
         
   def backClicked(self):
      if self.currentItem:
         self.setCurrentItem(self.currentItem.parent)
         self.refresh(False)
         
         
   def setCurrentItem(self, item):
      self.currentItem = item
      if item != None:
         self.currentLabel.setText(item.name)
         if item.parent != None:
            self.backButton.setText(item.parent.name)
         else:
            self.backButton.setText('Favorites')
      else:
         self.currentLabel.setText('')
         self.backButton.setText('Favorites')
         
         
   def settingsClicked(self):
      form = SettingsForm(self)
      form.quitCheck.setChecked(self.settings['quit'])
      theme = self.settings.get('iconTheme')
      if theme:
         form.themeCombo.setCurrentIndex(form.themeCombo.findText(theme))
      
      self.holdOpen = True
      form.exec_()
      self.checkMouse()
      self.holdOpen = False
      
      if form.accepted:
         self.settings['quit'] = form.quitCheck.isChecked()
      
      
   def firstRun(self):
      QMessageBox.information(self, 'First Time?', 'Your menu is currently empty.  It is recommended that you import an existing menu file.')
      self.settingsClicked()
      
      
   def connectToRunning(self):
      self.socket = QLocalSocket()
      self.socket.connectToServer('nemuSocket')
      self.socket.waitForConnected(1000)
      
      if self.socket.state() == QLocalSocket.ConnectedState:
         print 'Server found'
         if self.socket.waitForReadyRead(3000):
            line = self.socket.readLine()
            print line
         else:
            print self.socket.errorString()
         sys.exit()
      else:
         print 'No server running'
      
      
   def handleConnection(self):
      import datetime
      print "Got connection", datetime.datetime.now()
      
      connection = self.server.nextPendingConnection()
      connection.write('connected')
      del connection
      
      self.setCurrentItem(None)
      self.filterBox.setText('')
      self.refresh(False)
      self.show()
      print "Showed", datetime.datetime.now()
      return
      
      
   # Call periodically to keep data resident in memory (hopefully)
   def keepalive(self):
      if self.isHidden():
         self.refresh(False)
Exemplo n.º 32
0
 def setupUI(self):
    self.resize(self.settings['width'], self.settings['height'])
    self.setWindowFlags(Qt.FramelessWindowHint | Qt.CustomizeWindowHint | Qt.WindowStaysOnTopHint)
    #self.setWindowFlags(Qt.X11BypassWindowManagerHint)
    self.setWindowTitle('Nemu')
    self.setMouseTracking(True)
    
    iconPath = os.path.join(os.path.dirname(__file__), 'images')
    iconPath = os.path.join(iconPath, 'nemu.png')
    self.setWindowIcon(IconCache()[iconPath])
    
    self.place()
    
    self.buttonListLayout = QVBoxLayout(self)
    self.setMargins(self.buttonListLayout)
    
    self.buttonLayout = QHBoxLayout()
    self.setMargins(self.buttonLayout)
    
    # Settings and Filter box
    self.filterLayout = QHBoxLayout()
    self.settingsButton = QPushButton()
    self.settingsButton.setIcon(QIcon(iconPath))
    self.settingsButton.setMinimumHeight(35)
    self.settingsButton.clicked.connect(self.settingsClicked)
    self.filterLayout.addWidget(self.settingsButton, 0)
    
    self.filterLabel = QLabel("Filter")
    self.filterLayout.addWidget(self.filterLabel)
    
    self.filterBox = QLineEdit()
    self.filterBox.textChanged.connect(self.refresh)
    self.filterLayout.addWidget(self.filterBox)
    
    self.sizeGrip = QSizeGrip(self)
    self.sizeGrip.setMinimumSize(QSize(25, 25))
    self.filterLayout.addWidget(self.sizeGrip, 0, Qt.AlignRight | Qt.AlignTop)
    
    self.buttonListLayout.addLayout(self.filterLayout)
    
    # Top buttons and labels
    self.backButton = QPushButton('Favorites')
    self.backButton.setMinimumHeight(35)
    self.backButton.clicked.connect(self.backClicked)
    self.buttonLayout.addWidget(self.backButton, 1)
    
    self.currentLabel = QLabel()
    self.currentLabel.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
    self.buttonLayout.addWidget(self.currentLabel, 1)
    
    self.buttonListLayout.addLayout(self.buttonLayout, 0)
    
    # Menu item display
    self.listSplitter = QSplitter()
    self.buttonListLayout.addWidget(self.listSplitter, 1)
    
    self.leftList = ListWidget(self.clearListMouseOver)
    self.listSplitter.addWidget(self.leftList)
    
    self.rightList = ListWidget(self.clearListMouseOver)
    self.listSplitter.addWidget(self.rightList)
    
    # Has to be done after adding widgets to the splitter or the size will get reset again
    if 'splitterState' in self.settings:
       self.listSplitter.restoreState(self.settings['splitterState'])