diff --git a/wobuzz/ui/playlist_tabs.py b/wobuzz/ui/playlist_tabs.py deleted file mode 100644 index b5e1ce7..0000000 --- a/wobuzz/ui/playlist_tabs.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/python3 - -from PyQt6.QtCore import Qt -from PyQt6.QtGui import QDragEnterEvent, QMouseEvent -from PyQt6.QtWidgets import QTabWidget, QTabBar, QLineEdit - - -class PlaylistTabs(QTabWidget): - def __init__(self, library, parent=None): - self.library = library - - super().__init__(parent) - - self.tab_bar = PlaylistTabBar(self) - self.setTabBar(self.tab_bar) - self.setDocumentMode(True) - - self.setMovable(True) - self.setAcceptDrops(True) - - def addTab(self, widget, label): - super().addTab(widget, None) - - index = self.tab_bar.count() - 1 - - title = TabTitle(label, self.tab_bar, index) - - self.tab_bar.setTabButton(index, QTabBar.ButtonPosition.RightSide, title) - - -class PlaylistTabBar(QTabBar): - def __init__(self, parent=None): - super().__init__(parent) - - self.tab_widget = parent - self.app = parent.library.app - - self.setAcceptDrops(True) - - self.tabBarClicked.connect(self.on_click) - self.tabBarDoubleClicked.connect(self.on_doubleclick) - - def dragEnterEvent(self, event: QDragEnterEvent): - index = self.tabAt(event.position().toPoint()) - - self.tab_widget.setCurrentIndex(index) - - def on_click(self, index): - playlist_view = self.tab_widget.widget(index) - playlist = playlist_view.playlist - - self.app.gui.clicked_playlist = playlist - - def on_doubleclick(self, index): - playlist_view = self.tab_widget.widget(index) - playlist = playlist_view.playlist - - self.app.player.start_playlist(playlist) - - -class TabTitle(QLineEdit): - def __init__(self, label, parent, index: int): - super().__init__(label, parent) - - self.tab_bar: PlaylistTabBar = parent - self.index = index - - self.setStyleSheet("QLineEdit {background: transparent;}") - - self.setFocusPolicy(Qt.FocusPolicy.NoFocus) - - def mouseDoubleClickEvent(self, event: QMouseEvent): - self.tab_bar.tabBarDoubleClicked.emit(self.index) - - def mousePressEvent(self, event: QMouseEvent): - self.tab_bar.tabBarClicked.emit(self.index) - self.tab_bar.setCurrentIndex(self.index) - diff --git a/wobuzz/ui/playlist_tabs/__init__.py b/wobuzz/ui/playlist_tabs/__init__.py new file mode 100644 index 0000000..9270c1a --- /dev/null +++ b/wobuzz/ui/playlist_tabs/__init__.py @@ -0,0 +1,5 @@ +#!/usr/bin/python3 + +from .tab_widget import PlaylistTabs +from .tab_bar import PlaylistTabBar +from .tab_title import TabTitle \ No newline at end of file diff --git a/wobuzz/ui/playlist_tabs/tab_bar.py b/wobuzz/ui/playlist_tabs/tab_bar.py new file mode 100644 index 0000000..02b9f18 --- /dev/null +++ b/wobuzz/ui/playlist_tabs/tab_bar.py @@ -0,0 +1,35 @@ +#!/usr/bin/python3 + +from PyQt6.QtGui import QDragEnterEvent +from PyQt6.QtWidgets import QTabBar + + +class PlaylistTabBar(QTabBar): + def __init__(self, parent=None): + super().__init__(parent) + + self.tab_widget = parent + self.app = parent.library.app + + self.setAcceptDrops(True) + + self.tabBarClicked.connect(self.on_click) + self.tabBarDoubleClicked.connect(self.on_doubleclick) + + def dragEnterEvent(self, event: QDragEnterEvent): + index = self.tabAt(event.position().toPoint()) + + self.tab_widget.setCurrentIndex(index) + + def on_click(self, index): + playlist_view = self.tab_widget.widget(index) + playlist = playlist_view.playlist + + self.app.gui.clicked_playlist = playlist + + def on_doubleclick(self, index): + playlist_view = self.tab_widget.widget(index) + playlist = playlist_view.playlist + + self.app.player.start_playlist(playlist) + diff --git a/wobuzz/ui/playlist_tabs/tab_title.py b/wobuzz/ui/playlist_tabs/tab_title.py new file mode 100644 index 0000000..0c4ef38 --- /dev/null +++ b/wobuzz/ui/playlist_tabs/tab_title.py @@ -0,0 +1,27 @@ +#!/usr/bin/python3 + +from PyQt6.QtCore import Qt +from PyQt6.QtGui import QMouseEvent +from PyQt6.QtWidgets import QLineEdit + +from .tab_bar import PlaylistTabBar + + +class TabTitle(QLineEdit): + def __init__(self, label, parent, index: int): + super().__init__(label, parent) + + self.tab_bar: PlaylistTabBar = parent + self.index = index + + self.setStyleSheet("QLineEdit {background: transparent;}") + + self.setFocusPolicy(Qt.FocusPolicy.NoFocus) + + def mouseDoubleClickEvent(self, event: QMouseEvent): + self.tab_bar.tabBarDoubleClicked.emit(self.index) + + def mousePressEvent(self, event: QMouseEvent): + self.tab_bar.tabBarClicked.emit(self.index) + self.tab_bar.setCurrentIndex(self.index) + diff --git a/wobuzz/ui/playlist_tabs/tab_widget.py b/wobuzz/ui/playlist_tabs/tab_widget.py new file mode 100644 index 0000000..f799caf --- /dev/null +++ b/wobuzz/ui/playlist_tabs/tab_widget.py @@ -0,0 +1,30 @@ +#!/usr/bin/python3 + +from PyQt6.QtWidgets import QTabWidget, QTabBar + +from .tab_bar import PlaylistTabBar +from .tab_title import TabTitle + + +class PlaylistTabs(QTabWidget): + def __init__(self, library, parent=None): + self.library = library + + super().__init__(parent) + + self.tab_bar = PlaylistTabBar(self) + self.setTabBar(self.tab_bar) + self.setDocumentMode(True) + + self.setMovable(True) + self.setAcceptDrops(True) + + def addTab(self, widget, label): + super().addTab(widget, None) + + index = self.tab_bar.count() - 1 + + title = TabTitle(label, self.tab_bar, index) + + self.tab_bar.setTabButton(index, QTabBar.ButtonPosition.RightSide, title) +