Browse Source

Keep bitmaps in dictionary

doc-issue-template
MrS0m30n3 8 years ago
parent
commit
45c5b78a4f
1 changed files with 42 additions and 33 deletions
  1. 75
      youtube_dl_gui/mainframe.py

75
youtube_dl_gui/mainframe.py

@ -200,18 +200,38 @@ class MainFrame(wx.Frame):
self.app_icon = wx.Icon(app_icon_path, wx.BITMAP_TYPE_PNG)
self.SetIcon(self.app_icon)
bitmap_data = (
("down", "arrow_down_32px.png"),
("up", "arrow_up_32px.png"),
("play", "camera_32px.png"),
("start", "cloud_download_32px.png"),
("delete", "delete_32px.png"),
("folder", "folder_32px.png"),
("pause", "pause_32px.png"),
("resume", "play_arrow_32px.png"),
("reload", "reload_32px.png"),
("settings", "settings_20px.png"),
("stop", "stop_32px.png")
)
self._bitmaps = {}
for item in bitmap_data:
target, name = item
self._bitmaps[target] = wx.Bitmap(os.path.join(self._pixmaps_path, name))
# Set the data for all the wx.Button items
# name, label, icon, size, event_handler
# name, label, size, event_handler
buttons_data = (
("delete", self.DELETE_LABEL, "delete_32px.png", (55, 55), self._on_delete),
("play", self.PLAY_LABEL, "camera_32px.png", (55, 55), self._on_play),
("up", self.UP_LABEL, "arrow_up_32px.png", (55, 55), self._on_arrow_up),
("down", self.DOWN_LABEL, "arrow_down_32px.png", (55, 55), self._on_arrow_down),
("reload", self.RELOAD_LABEL, "reload_32px.png", (55, 55), self._on_reload),
("pause", self.PAUSE_LABEL, "pause_32px.png", (55, 55), self._on_pause),
("start", self.START_LABEL, "cloud_download_32px.png", (55, 55), self._on_start),
("savepath", "...", None, (40, 27), self._on_savepath),
("add", self.ADD_LABEL, None, (-1, -1), self._on_add)
("delete", self.DELETE_LABEL, (55, 55), self._on_delete),
("play", self.PLAY_LABEL, (55, 55), self._on_play),
("up", self.UP_LABEL, (55, 55), self._on_arrow_up),
("down", self.DOWN_LABEL, (55, 55), self._on_arrow_down),
("reload", self.RELOAD_LABEL, (55, 55), self._on_reload),
("pause", self.PAUSE_LABEL, (55, 55), self._on_pause),
("start", self.START_LABEL, (55, 55), self._on_start),
("savepath", "...", (40, 27), self._on_savepath),
("add", self.ADD_LABEL, (-1, -1), self._on_add)
)
# Set the data for the settings menu item
@ -235,11 +255,11 @@ class MainFrame(wx.Frame):
self._panel = wx.Panel(self)
self._url_text = self._create_statictext(self.URLS_LABEL)
self._settings_button = self._create_bitmap_button("settings_20px.png", (30, 30), self._on_settings)
self._settings_button = self._create_bitmap_button(self._bitmaps["settings"], (30, 30), self._on_settings)
self._url_list = self._create_textctrl(wx.TE_MULTILINE | wx.TE_DONTWRAP, self._on_urllist_edit)
self._folder_icon = self._create_static_bitmap("folder_32px.png")
self._folder_icon = self._create_static_bitmap(self._bitmaps["folder"])
self._path_combobox = ExtComboBox(self._panel, 5, style=wx.CB_READONLY)
self._videoformat_combobox = ExtComboBox(self._panel, choices=self._video_formats.values(), style=wx.CB_READONLY)
@ -253,12 +273,12 @@ class MainFrame(wx.Frame):
self._buttons = {}
for item in buttons_data:
name, label, icon, size, evt_handler = item
name, label, size, evt_handler = item
button = wx.Button(self._panel, label=label, size=size)
if icon is not None:
button.SetBitmap(wx.Bitmap(os.path.join(self._pixmaps_path, icon)), wx.TOP)
if name in self._bitmaps:
button.SetBitmap(self._bitmaps[name], wx.TOP)
if evt_handler is not None:
button.Bind(wx.EVT_BUTTON, evt_handler)
@ -380,10 +400,6 @@ class MainFrame(wx.Frame):
self._status_bar_write(msg)
def _update_pause_button(self, event):
# REFACTOR keep all icons in a data stracture instead of creating them each time
pause_icon = wx.Bitmap(os.path.join(self._pixmaps_path, "pause_32px.png"))
resume_icon = wx.Bitmap(os.path.join(self._pixmaps_path, "play_arrow_32px.png"))
selected_row = self._status_list.get_selected()
if selected_row != -1:
@ -392,14 +408,14 @@ class MainFrame(wx.Frame):
if download_item.stage == "Paused":
self._buttons["pause"].SetLabel("Resume")
self._buttons["pause"].SetBitmap(resume_icon, wx.TOP)
self._buttons["pause"].SetBitmap(self._bitmaps["resume"], wx.TOP)
elif download_item.stage == "Queued":
self._buttons["pause"].SetLabel("Pause")
self._buttons["pause"].SetBitmap(pause_icon, wx.TOP)
self._buttons["pause"].SetBitmap(self._bitmaps["pause"], wx.TOP)
else:
if self._buttons["pause"].GetLabel() == "Resume":
self._buttons["pause"].SetLabel("Pause")
self._buttons["pause"].SetBitmap(pause_icon, wx.TOP)
self._buttons["pause"].SetBitmap(self._bitmaps["pause"], wx.TOP)
def _update_videoformat(self, event):
self.opt_manager.options["video_format"] = self._video_formats[self._videoformat_combobox.GetValue()]
@ -610,8 +626,7 @@ class MainFrame(wx.Frame):
return wx.StaticText(self._panel, label=label)
def _create_bitmap_button(self, icon, size=(-1, -1), handler=None):
bitmap = wx.Bitmap(os.path.join(self._pixmaps_path, icon))
button = wx.BitmapButton(self._panel, bitmap=bitmap, size=size, style=wx.NO_BORDER)
button = wx.BitmapButton(self._panel, bitmap=icon, size=size, style=wx.NO_BORDER)
if handler is not None:
button.Bind(wx.EVT_BUTTON, handler)
@ -619,8 +634,7 @@ class MainFrame(wx.Frame):
return button
def _create_static_bitmap(self, icon):
bitmap = wx.Bitmap(os.path.join(self._pixmaps_path, icon))
return wx.StaticBitmap(self._panel, bitmap=bitmap)
return wx.StaticBitmap(self._panel, bitmap=icon)
def _create_textctrl(self, style=None, event_handler=None):
if style is None:
@ -721,11 +735,7 @@ class MainFrame(wx.Frame):
def _reset_widgets(self):
"""Resets GUI widgets after update or download process. """
self._buttons["start"].SetLabel("Start")
icon = wx.Bitmap(os.path.join(self._pixmaps_path, "cloud_download_32px.png"))
self._buttons["start"].SetBitmap(icon, wx.TOP)
#self._download_btn.SetLabel(self.DOWNLOAD_LABEL)
#self._download_btn.Enable()
#self._update_btn.Enable()
self._buttons["start"].SetBitmap(self._bitmaps["start"], wx.TOP)
def _print_stats(self):
"""Display download stats in the status bar. """
@ -850,8 +860,7 @@ class MainFrame(wx.Frame):
self._status_bar_write(self.DOWNLOAD_STARTED)
self._buttons["start"].SetLabel(self.STOP_LABEL)
icon = wx.Bitmap(os.path.join(self._pixmaps_path, "stop_32px.png"))
self._buttons["start"].SetBitmap(icon, wx.TOP)
self._buttons["start"].SetBitmap(self._bitmaps["stop"], wx.TOP)
def _paste_from_clipboard(self):
"""Paste the content of the clipboard to the self._url_list widget.

Loading…
Cancel
Save