Fix consistent back buttons
Now you can go all the way back, from any where via backbuttons.
This commit is contained in:
parent
a776e913a8
commit
1a97232327
1 changed files with 17 additions and 10 deletions
27
main.py
27
main.py
|
@ -45,7 +45,8 @@ class Cast(wx.Frame):
|
|||
channels=[YouTube.YouTube('UCu6mSoMNzHQiBIOCkHUa2Aw')])
|
||||
]
|
||||
self.m_selected_channel = None
|
||||
self.show_splash(None)
|
||||
self.m_selected_provider_index = None
|
||||
self.show_provider_list(None)
|
||||
|
||||
def get_chromecasts(self) -> None:
|
||||
"""
|
||||
|
@ -55,7 +56,7 @@ class Cast(wx.Frame):
|
|||
"""
|
||||
self.m_chromecasts, self.m_browser = pychromecast.get_chromecasts()
|
||||
|
||||
def show_splash(self, _) -> None:
|
||||
def show_provider_list(self, _) -> None:
|
||||
self.m_sizer.Clear(delete_windows=True)
|
||||
self.m_sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
provider_index = 0
|
||||
|
@ -75,9 +76,14 @@ class Cast(wx.Frame):
|
|||
self.m_panel.Layout()
|
||||
|
||||
def show_channel_list(self, _, provider_index) -> None:
|
||||
self.m_selected_provider_index = provider_index
|
||||
self.m_selected_provider = self.m_providers[provider_index]
|
||||
self.m_sizer.Clear(delete_windows=True)
|
||||
self.m_sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
self.m_selected_provider = self.m_providers[provider_index]
|
||||
backbtn = wx.Button(self.m_panel, -1, label="Go back", size=(480, 40))
|
||||
backbtn.Bind(wx.EVT_BUTTON, lambda event: self.show_provider_list(event))
|
||||
self.m_sizer.Add(backbtn, wx.ALIGN_CENTER_VERTICAL)
|
||||
self.m_sizer.AddSpacer(10)
|
||||
channel_index = 0
|
||||
for channel in self.m_selected_provider.get_channels():
|
||||
bitmap = channel.get_logo_as_bitmap()
|
||||
|
@ -113,7 +119,7 @@ class Cast(wx.Frame):
|
|||
wx.GetApp().Yield()
|
||||
|
||||
backbtn = wx.Button(self.m_panel, -1, label="Go back", size=(480, 40))
|
||||
backbtn.Bind(wx.EVT_BUTTON, lambda event: self.show_splash(event))
|
||||
backbtn.Bind(wx.EVT_BUTTON, lambda event: self.show_channel_list(event, self.m_selected_provider_index))
|
||||
self.m_sizer.Add(backbtn, wx.ALIGN_CENTER_VERTICAL)
|
||||
self.m_sizer.AddSpacer(10)
|
||||
for item in channel.get_items():
|
||||
|
@ -171,7 +177,8 @@ class Cast(wx.Frame):
|
|||
chromecast_button = wx.Button(self.m_panel, -1, "Cast")
|
||||
chromecast_button.Bind(
|
||||
wx.EVT_BUTTON,
|
||||
lambda event, muri=uri: self.select_chromecast(event, muri))
|
||||
lambda event, muri=uri, index=provider_index: self.
|
||||
select_chromecast(event, muri, index))
|
||||
self.m_sizer.Add(chromecast_button, (2, 2))
|
||||
|
||||
if self.m_selected_chromecast:
|
||||
|
@ -191,7 +198,7 @@ class Cast(wx.Frame):
|
|||
self.m_panel.Layout()
|
||||
self.m_panel.ScrollChildIntoView(self.m_control)
|
||||
|
||||
def select_chromecast(self, _, uri):
|
||||
def select_chromecast(self, _, uri, provider_index):
|
||||
self.m_sizer.Clear(delete_windows=True)
|
||||
self.m_sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
|
||||
|
@ -202,16 +209,16 @@ class Cast(wx.Frame):
|
|||
label=friendly_name,
|
||||
size=(480, 40))
|
||||
btn.Bind(wx.EVT_BUTTON,
|
||||
lambda event, chromecast=cast, muri=uri: self.
|
||||
set_chromecast(event, chromecast, muri))
|
||||
lambda event, chromecast=cast, muri=uri, index=provider_index: self.
|
||||
set_chromecast(event, chromecast, muri, index))
|
||||
self.m_sizer.Add(btn, wx.ALIGN_CENTER_VERTICAL)
|
||||
self.m_panel.SetSizer(self.m_sizer)
|
||||
self.m_sizer.Fit(self)
|
||||
self.m_panel.Layout()
|
||||
|
||||
def set_chromecast(self, event, chromecast, uri):
|
||||
def set_chromecast(self, event, chromecast, uri, provider_index):
|
||||
self.m_selected_chromecast = chromecast
|
||||
self.show_player(event, uri)
|
||||
self.show_player(event, uri, provider_index)
|
||||
|
||||
def cast(self, event, uri):
|
||||
mimetype = 'video/mp4'
|
||||
|
|
Loading…
Add table
Reference in a new issue