Advertisement
Guest User

Untitled

a guest
Jun 9th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.21 KB | None | 0 0
  1. import sys
  2. import gi
  3. gi.require_version('Gtk', '3.0')
  4. from gi.repository import Gtk, GLib, Gdk
  5. import helpers.search
  6. import player
  7. from time import sleep
  8.  
  9. class ApplicationWindow(Gtk.Window):    
  10.  
  11.     def __init__(self):        
  12.         Gtk.Window.__init__(self, title="YAudio", resizable=False)
  13.         header = Gtk.HeaderBar(title="YAudio")
  14.         header.set_subtitle("Youtube audio streaming player")
  15.         header.props.show_close_button = True
  16.         self.set_titlebar(header)
  17.         self.set_border_width(10)
  18.         self.set_default_size(500, 600)
  19.         self.set_hexpand(False)
  20.         self.player_paused=False
  21.         self.is_player_active = False
  22.         self.connect("destroy",Gtk.main_quit)
  23.  
  24.         self.updateFullTime = True        
  25.            
  26.     def show(self):
  27.         self.show_all()
  28.        
  29.     def setup_objects_and_events(self):
  30.         self.test = Gtk.Button("test")
  31.         self.playback_button = Gtk.Button()
  32.         self.stop_button = Gtk.Button()
  33.        
  34.        
  35.         self.play_image = Gtk.Image.new_from_icon_name(
  36.                 "gtk-media-play",
  37.                 Gtk.IconSize.MENU
  38.             )
  39.         self.pause_image = Gtk.Image.new_from_icon_name(
  40.                 "gtk-media-pause",
  41.                 Gtk.IconSize.MENU
  42.             )
  43.         self.stop_image = Gtk.Image.new_from_icon_name(
  44.                 "gtk-media-stop",
  45.                 Gtk.IconSize.MENU
  46.             )
  47.        
  48.         self.playback_button.set_image(self.play_image)
  49.         self.stop_button.set_image(self.stop_image)    
  50.  
  51.         self.player = player.Player(self)    
  52.        
  53.        
  54.         self.playback_button.connect("clicked", self.player.toggle_player_playback)
  55.         self.stop_button.connect("clicked", self.player.stop_player)
  56.         # self.test.connect("clicked", self.tester)        
  57.  
  58.         # start boxes
  59.         self.vbox = Gtk.VBox()
  60.         self.add(self.vbox)        
  61.  
  62.         # header box
  63.         self.header = Gtk.HBox()
  64.         self.header_left = Gtk.HBox()
  65.         self.header_right = Gtk.VBox()
  66.         self.header.pack_start(self.header_left, False, True, 0)
  67.         self.header.pack_start(self.header_right, True, True, 0)
  68.         self.vbox.pack_start(self.header, False, True, 0)
  69.  
  70.         # controls box
  71.         self.controls = Gtk.HBox(spacing=8)
  72.         self.controls.set_border_width(8)
  73.         self.header_right.pack_start(self.controls, False, True, 0)
  74.  
  75.         # button play
  76.         self.controls.pack_start(self.playback_button, False, True, 0)
  77.  
  78.         # button stop
  79.         self.controls.pack_start(self.stop_button, False, True, 0)
  80.  
  81.         self.controls.pack_start(Gtk.HSeparator(), False, True, 0)
  82.  
  83.         # progress
  84.         self.slider = Gtk.HScale.new_with_range(0, 100, 1)
  85.         self.slider_update_signal_id = self.slider.connect(
  86.              "value-changed", self.player.on_slider_changed)
  87.  
  88.         self.slider.set_draw_value(False)
  89.         self.slider.set_sensitive(True)
  90.  
  91.         self.seek_panel = Gtk.VBox()
  92.         self.controls.pack_start(self.seek_panel, True, True, 0)
  93.  
  94.         self.seek_labels = Gtk.HBox()
  95.         self.seek_panel.pack_start(self.seek_labels, True, True, 10)
  96.  
  97.         self.track_title = Gtk.Label('', halign=Gtk.Align.START, valign=Gtk.Align.END)
  98.         self.track_title.set_use_markup(True)
  99.         self.track_title.set_markup('<span font="Roboto 10" weight="300">Idle</span>')
  100.         self.seek_labels.pack_start(self.track_title, True, True, 0)
  101.  
  102.         self.track_time = Gtk.Label('05:00', halign=Gtk.Align.END, valign=Gtk.Align.END)
  103.         self.track_time.set_use_markup(True)
  104.         self.track_time.set_markup('<span font="Roboto 24" weight="100">0:00:00</span>')
  105.         self.seek_labels.pack_start(self.track_time, True, True, 0)
  106.  
  107.         self.seek_panel.pack_start(self.slider, True, True, 0)
  108.  
  109.  
  110.         # entry search
  111.         self.vbox.pack_start(Gtk.HSeparator(), False, False, 0)
  112.         self.search_panel = Gtk.VBox()
  113.         self.vbox.pack_start(self.search_panel, False, False, 5)
  114.  
  115.         self.search_entry_box = Gtk.HBox()
  116.         self.search_panel.pack_start(self.search_entry_box, True, True, 0)
  117.         self.search_entry = Gtk.Entry()
  118.         self.search_entry.set_text("")
  119.         self.search_entry.set_placeholder_text("Поиск...")
  120.         self.search_entry_box.pack_start(self.search_entry, True, True, 0)
  121.  
  122.         # search result
  123.         self.vbox.pack_start(Gtk.HSeparator(), False, False, 0)
  124.         self.search_result_box = Gtk.VBox()
  125.         self.vbox.pack_start(self.search_result_box, False, False, 0)
  126.  
  127.         self.search_result_text = Gtk.VBox()
  128.         self.search_result_box.pack_start(self.search_result_text, False, False, 0)
  129.         self.result_label = Gtk.Label('', halign=Gtk.Align.START, valign=Gtk.Align.END)
  130.         self.result_label.set_use_markup(True)        
  131.         self.search_result_text.pack_start(self.result_label, False, False, 0)
  132.        
  133.    
  134.         raw_html = helpers.search.get_search_results_html('mops')
  135.         vids = helpers.search.get_videos(raw_html)
  136.        
  137.         self.scrolled = Gtk.ScrolledWindow()
  138.         self.scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
  139.  
  140.         for _ in vids:
  141.             attrs = helpers.search.get_video_attrs(_)
  142.            
  143.             self.label_p = Gtk.Label(attrs['title'])
  144.             self.listhbox = Gtk.HBox()
  145.             self.vbox.pack_start(self.listhbox, False, False, 5)
  146.             self.button_p = Gtk.Button()
  147.             self.play_image = Gtk.Image.new_from_icon_name(
  148.                 "gtk-media-play",
  149.                 Gtk.IconSize.MENU
  150.             )
  151.             self.button_p.set_image(self.play_image)
  152.             self.button_p.connect("clicked", self.get_url_and_start, attrs['id'])
  153.             self.listhbox.pack_start(self.button_p, False, True, 2)
  154.             self.listhbox.pack_start(Gtk.HSeparator(), False, False, 2)
  155.             self.listhbox.pack_start(self.label_p, False, True, 2)
  156.  
  157.         self.scrolled.add_with_viewport(self.listhbox)
  158.  
  159.     def get_url_and_start(self, widget, id):
  160.         self.player.start()    
  161.  
  162. if __name__ == '__main__':
  163.      
  164.     window = ApplicationWindow()
  165.     window.setup_objects_and_events()
  166.     window.show()
  167.     Gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement