Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import gi
- gi.require_version('Gtk', '3.0')
- from gi.repository import Gtk, GLib, Gdk
- import helpers.search
- import player
- from time import sleep
- class ApplicationWindow(Gtk.Window):
- def __init__(self):
- Gtk.Window.__init__(self, title="YAudio", resizable=False)
- header = Gtk.HeaderBar(title="YAudio")
- header.set_subtitle("Youtube audio streaming player")
- header.props.show_close_button = True
- self.set_titlebar(header)
- self.set_border_width(10)
- self.set_default_size(500, 600)
- self.set_hexpand(False)
- self.player_paused=False
- self.is_player_active = False
- self.connect("destroy",Gtk.main_quit)
- self.updateFullTime = True
- def show(self):
- self.show_all()
- def setup_objects_and_events(self):
- self.test = Gtk.Button("test")
- self.playback_button = Gtk.Button()
- self.stop_button = Gtk.Button()
- self.play_image = Gtk.Image.new_from_icon_name(
- "gtk-media-play",
- Gtk.IconSize.MENU
- )
- self.pause_image = Gtk.Image.new_from_icon_name(
- "gtk-media-pause",
- Gtk.IconSize.MENU
- )
- self.stop_image = Gtk.Image.new_from_icon_name(
- "gtk-media-stop",
- Gtk.IconSize.MENU
- )
- self.playback_button.set_image(self.play_image)
- self.stop_button.set_image(self.stop_image)
- self.player = player.Player(self)
- self.playback_button.connect("clicked", self.player.toggle_player_playback)
- self.stop_button.connect("clicked", self.player.stop_player)
- # self.test.connect("clicked", self.tester)
- # start boxes
- self.vbox = Gtk.VBox()
- self.add(self.vbox)
- # header box
- self.header = Gtk.HBox()
- self.header_left = Gtk.HBox()
- self.header_right = Gtk.VBox()
- self.header.pack_start(self.header_left, False, True, 0)
- self.header.pack_start(self.header_right, True, True, 0)
- self.vbox.pack_start(self.header, False, True, 0)
- # controls box
- self.controls = Gtk.HBox(spacing=8)
- self.controls.set_border_width(8)
- self.header_right.pack_start(self.controls, False, True, 0)
- # button play
- self.controls.pack_start(self.playback_button, False, True, 0)
- # button stop
- self.controls.pack_start(self.stop_button, False, True, 0)
- self.controls.pack_start(Gtk.HSeparator(), False, True, 0)
- # progress
- self.slider = Gtk.HScale.new_with_range(0, 100, 1)
- self.slider_update_signal_id = self.slider.connect(
- "value-changed", self.player.on_slider_changed)
- self.slider.set_draw_value(False)
- self.slider.set_sensitive(True)
- self.seek_panel = Gtk.VBox()
- self.controls.pack_start(self.seek_panel, True, True, 0)
- self.seek_labels = Gtk.HBox()
- self.seek_panel.pack_start(self.seek_labels, True, True, 10)
- self.track_title = Gtk.Label('', halign=Gtk.Align.START, valign=Gtk.Align.END)
- self.track_title.set_use_markup(True)
- self.track_title.set_markup('<span font="Roboto 10" weight="300">Idle</span>')
- self.seek_labels.pack_start(self.track_title, True, True, 0)
- self.track_time = Gtk.Label('05:00', halign=Gtk.Align.END, valign=Gtk.Align.END)
- self.track_time.set_use_markup(True)
- self.track_time.set_markup('<span font="Roboto 24" weight="100">0:00:00</span>')
- self.seek_labels.pack_start(self.track_time, True, True, 0)
- self.seek_panel.pack_start(self.slider, True, True, 0)
- # entry search
- self.vbox.pack_start(Gtk.HSeparator(), False, False, 0)
- self.search_panel = Gtk.VBox()
- self.vbox.pack_start(self.search_panel, False, False, 5)
- self.search_entry_box = Gtk.HBox()
- self.search_panel.pack_start(self.search_entry_box, True, True, 0)
- self.search_entry = Gtk.Entry()
- self.search_entry.set_text("")
- self.search_entry.set_placeholder_text("Поиск...")
- self.search_entry_box.pack_start(self.search_entry, True, True, 0)
- # search result
- self.vbox.pack_start(Gtk.HSeparator(), False, False, 0)
- self.search_result_box = Gtk.VBox()
- self.vbox.pack_start(self.search_result_box, False, False, 0)
- self.search_result_text = Gtk.VBox()
- self.search_result_box.pack_start(self.search_result_text, False, False, 0)
- self.result_label = Gtk.Label('', halign=Gtk.Align.START, valign=Gtk.Align.END)
- self.result_label.set_use_markup(True)
- self.search_result_text.pack_start(self.result_label, False, False, 0)
- raw_html = helpers.search.get_search_results_html('mops')
- vids = helpers.search.get_videos(raw_html)
- self.scrolled = Gtk.ScrolledWindow()
- self.scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
- for _ in vids:
- attrs = helpers.search.get_video_attrs(_)
- self.label_p = Gtk.Label(attrs['title'])
- self.listhbox = Gtk.HBox()
- self.vbox.pack_start(self.listhbox, False, False, 5)
- self.button_p = Gtk.Button()
- self.play_image = Gtk.Image.new_from_icon_name(
- "gtk-media-play",
- Gtk.IconSize.MENU
- )
- self.button_p.set_image(self.play_image)
- self.button_p.connect("clicked", self.get_url_and_start, attrs['id'])
- self.listhbox.pack_start(self.button_p, False, True, 2)
- self.listhbox.pack_start(Gtk.HSeparator(), False, False, 2)
- self.listhbox.pack_start(self.label_p, False, True, 2)
- self.scrolled.add_with_viewport(self.listhbox)
- def get_url_and_start(self, widget, id):
- self.player.start()
- if __name__ == '__main__':
- window = ApplicationWindow()
- window.setup_objects_and_events()
- window.show()
- Gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement