further to check : showing of the meniu on player ui and player ui to run in fullscreen
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -11,25 +11,43 @@ sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
|
||||
from logging_config import Logger
|
||||
from player_app import SimpleMediaPlayerApp
|
||||
from player_ui import PlayerUI
|
||||
from media_playback_controller import MediaPlaybackController
|
||||
from splash_screen import SplashScreen
|
||||
from playlist_manager import PlaylistManager
|
||||
from threading import Thread
|
||||
|
||||
if __name__ == "__main__":
|
||||
import tkinter as tk
|
||||
root = tk.Tk()
|
||||
# Play splash screen first, then start player
|
||||
playlist_manager = PlaylistManager()
|
||||
playlist_manager.fetch_playlist() # Start fetching playlist in parallel with splash
|
||||
intro_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'resources', 'intro1.mp4')
|
||||
preload_result = {}
|
||||
def preload_first_media(playlist):
|
||||
if playlist and len(playlist) > 0:
|
||||
first_item = playlist[0]
|
||||
file_path = first_item.get('url', '')
|
||||
if file_path and os.path.exists(file_path):
|
||||
try:
|
||||
from PIL import Image
|
||||
if file_path.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp', '.gif')):
|
||||
img = Image.open(file_path)
|
||||
img.load() # Force decode
|
||||
preload_result['image'] = img
|
||||
except Exception as e:
|
||||
Logger.warning(f"[MAIN] Preload failed: {e}")
|
||||
Logger.info(f"[MAIN] About to show splash screen: {intro_path}")
|
||||
def start_player():
|
||||
Logger.info("[MAIN] Splash finished, waiting for playlist...")
|
||||
playlist = playlist_manager.wait_for_playlist()
|
||||
Logger.info(f"[MAIN] Playlist loaded: {playlist}")
|
||||
player = SimpleMediaPlayerApp(root)
|
||||
player.playlist = playlist or []
|
||||
player.run()
|
||||
Thread(target=preload_first_media, args=(playlist,), daemon=True).start()
|
||||
ui = PlayerUI(root)
|
||||
playback = MediaPlaybackController(app=None, ui=ui)
|
||||
playback.set_playlist(playlist or [])
|
||||
playback.play_current_media()
|
||||
Logger.info("[MAIN] Player UI and playback started.")
|
||||
splash = SplashScreen(root, intro_path, duration=10)
|
||||
splash.show(on_finish=start_player)
|
||||
Logger.info("[MAIN] splash.show() called, entering mainloop...")
|
||||
|
||||
@@ -50,6 +50,7 @@ class SimpleMediaPlayerApp:
|
||||
self.playlist = []
|
||||
self.current_index = 0
|
||||
self.scaling_mode = 'fit'
|
||||
self.auto_advance_timer = None
|
||||
self.hide_controls_timer = None
|
||||
self.settings_window = None
|
||||
# UI extraction
|
||||
@@ -173,6 +174,12 @@ class SimpleMediaPlayerApp:
|
||||
def cancel_timers(self):
|
||||
self.playback.cancel_timers()
|
||||
|
||||
def show_no_content_message(self):
|
||||
self.playback.show_no_content_message()
|
||||
|
||||
def log_event(self, file_name, event):
|
||||
self.playback.log_event(file_name, event)
|
||||
|
||||
def show_controls(self):
|
||||
if self.ui.control_frame:
|
||||
self.ui.control_frame.place(relx=0.98, rely=0.98, anchor='se')
|
||||
|
||||
Reference in New Issue
Block a user