Show multiple audios in the newsfeed. Modified the audios displayer
This commit is contained in:
		@@ -94,7 +94,8 @@ class baseBuffer(object):
 | 
				
			|||||||
	def open_post(self):
 | 
						def open_post(self):
 | 
				
			||||||
		post = self.session.db[self.name]["items"][self.tab.list.get_selected()]
 | 
							post = self.session.db[self.name]["items"][self.tab.list.get_selected()]
 | 
				
			||||||
		if post.has_key("type") and post["type"] == "audio":
 | 
							if post.has_key("type") and post["type"] == "audio":
 | 
				
			||||||
			a = posts.audio(self.session, post["audio"][1])
 | 
								print "opening audio"
 | 
				
			||||||
 | 
								a = posts.audio(self.session, post["audio"]["items"])
 | 
				
			||||||
			a.dialog.get_response()
 | 
								a.dialog.get_response()
 | 
				
			||||||
			a.dialog.Destroy()
 | 
								a.dialog.Destroy()
 | 
				
			||||||
		elif post.has_key("type") and post["type"] == "friend":
 | 
							elif post.has_key("type") and post["type"] == "friend":
 | 
				
			||||||
@@ -132,6 +133,7 @@ class audioBuffer(feedBuffer):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	def open_post(self):
 | 
						def open_post(self):
 | 
				
			||||||
		selected = self.tab.list.get_selected()
 | 
							selected = self.tab.list.get_selected()
 | 
				
			||||||
		a = posts.audio(self.session, self.session.db[self.name]["items"][selected])
 | 
							audios = [self.session.db[self.name]["items"][selected]]
 | 
				
			||||||
 | 
							a = posts.audio(self.session, audios)
 | 
				
			||||||
		a.dialog.get_response()
 | 
							a.dialog.get_response()
 | 
				
			||||||
		a.dialog.Destroy()
 | 
							a.dialog.Destroy()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -189,70 +189,91 @@ class comment(object):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class audio(postController):
 | 
					class audio(postController):
 | 
				
			||||||
	def __init__(self, session, postObject):
 | 
						def __init__(self, session, postObject):
 | 
				
			||||||
 | 
							self.added_audios = {}
 | 
				
			||||||
		self.session = session
 | 
							self.session = session
 | 
				
			||||||
		self.post = postObject
 | 
							self.post = postObject
 | 
				
			||||||
		self.dialog = postDialogs.audio()
 | 
							self.dialog = postDialogs.audio()
 | 
				
			||||||
		self.fill_information()
 | 
							widgetUtils.connect_event(self.dialog.list, widgetUtils.LISTBOX_CHANGED, self.handle_changes)
 | 
				
			||||||
		if self.post["owner_id"] == self.session.user_id:
 | 
							print "loading audios..."
 | 
				
			||||||
			self.dialog.change_state("remove", True)
 | 
							self.load_audios()
 | 
				
			||||||
		else:
 | 
							print "Filling information..."
 | 
				
			||||||
			self.dialog.change_state("add", True)
 | 
							self.fill_information(0)
 | 
				
			||||||
		widgetUtils.connect_event(self.dialog.download, widgetUtils.BUTTON_PRESSED, self.download)
 | 
							widgetUtils.connect_event(self.dialog.download, widgetUtils.BUTTON_PRESSED, self.download)
 | 
				
			||||||
		widgetUtils.connect_event(self.dialog.play, widgetUtils.BUTTON_PRESSED, self.play)
 | 
							widgetUtils.connect_event(self.dialog.play, widgetUtils.BUTTON_PRESSED, self.play)
 | 
				
			||||||
		widgetUtils.connect_event(self.dialog.add, widgetUtils.BUTTON_PRESSED, self.add_to_library)
 | 
							widgetUtils.connect_event(self.dialog.add, widgetUtils.BUTTON_PRESSED, self.add_to_library)
 | 
				
			||||||
		widgetUtils.connect_event(self.dialog.remove, widgetUtils.BUTTON_PRESSED, self.remove_from_library)
 | 
							widgetUtils.connect_event(self.dialog.remove, widgetUtils.BUTTON_PRESSED, self.remove_from_library)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def add_to_library(self, *args, **kwargs):
 | 
						def add_to_library(self, *args, **kwargs):
 | 
				
			||||||
 | 
							post = self.post[self.dialog.get_audio()]
 | 
				
			||||||
		args = {}
 | 
							args = {}
 | 
				
			||||||
		args["audio_id"] = self.post["id"]
 | 
							args["audio_id"] = post["id"]
 | 
				
			||||||
		if self.post.has_key("album_id"):
 | 
							if post.has_key("album_id"):
 | 
				
			||||||
			args["album_id"] = self.post["album_id"]
 | 
								args["album_id"] = post["album_id"]
 | 
				
			||||||
		args["owner_id"] = self.post["owner_id"]
 | 
							args["owner_id"] = post["owner_id"]
 | 
				
			||||||
		audio = self.session.vk.client.audio.add(**args)
 | 
							audio = self.session.vk.client.audio.add(**args)
 | 
				
			||||||
		if audio != None and int(audio) > 21:
 | 
							if audio != None and int(audio) > 21:
 | 
				
			||||||
			self.audio_id = audio
 | 
								self.added_audios[post["id"]] = audio
 | 
				
			||||||
			self.owner_id = self.session.user_id
 | 
					 | 
				
			||||||
			self.dialog.change_state("add", False)
 | 
								self.dialog.change_state("add", False)
 | 
				
			||||||
			self.dialog.change_state("remove", True)
 | 
								self.dialog.change_state("remove", True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def remove_from_library(self, *args, **kwargs):
 | 
						def remove_from_library(self, *args, **kwargs):
 | 
				
			||||||
 | 
							post = self.post[self.dialog.get_audio()]
 | 
				
			||||||
		args = {}
 | 
							args = {}
 | 
				
			||||||
		if hasattr(self, "audio_id"):
 | 
							if self.added_audios.has_key(post["id"]):
 | 
				
			||||||
			args["audio_id"] = self.audio_id
 | 
								args["audio_id"] = self.added_audios[post["id"]]
 | 
				
			||||||
			args["owner_id"] = self.owner_id
 | 
								args["owner_id"] = self.session.user_id
 | 
				
			||||||
			del self.audio_id, self.owner_id
 | 
					 | 
				
			||||||
		else:
 | 
							else:
 | 
				
			||||||
			args["audio_id"] = self.post["aid"]
 | 
								args["audio_id"] = post["id"]
 | 
				
			||||||
			args["owner_id"] = self.post["owner_id"]
 | 
								args["owner_id"] = post["owner_id"]
 | 
				
			||||||
		result = self.session.vk.client.audio.delete(**args)
 | 
							result = self.session.vk.client.audio.delete(**args)
 | 
				
			||||||
		print result
 | 
					 | 
				
			||||||
		if int(result) == 1:
 | 
							if int(result) == 1:
 | 
				
			||||||
			self.dialog.change_state("add", True)
 | 
								self.dialog.change_state("add", True)
 | 
				
			||||||
			self.dialog.change_state("remove", False)
 | 
								self.dialog.change_state("remove", False)
 | 
				
			||||||
 | 
								if self.added_audios.has_key(post["id"]):
 | 
				
			||||||
 | 
									self.added_audios.pop(post["id"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def fill_information(self):
 | 
						def fill_information(self, index):
 | 
				
			||||||
		if self.post.has_key("artist"):
 | 
							post = self.post[index]
 | 
				
			||||||
			self.dialog.set("artist", self.post["artist"])
 | 
							if post.has_key("artist"):
 | 
				
			||||||
		if self.post.has_key("title"):
 | 
								self.dialog.set("artist", post["artist"])
 | 
				
			||||||
			self.dialog.set("title", self.post["title"])
 | 
							if post.has_key("title"):
 | 
				
			||||||
		if self.post.has_key("duration"):
 | 
								self.dialog.set("title", post["title"])
 | 
				
			||||||
			self.dialog.set("duration", utils.seconds_to_string(self.post["duration"]))
 | 
							if post.has_key("duration"):
 | 
				
			||||||
		self.dialog.set_title(u"{0} - {1}".format(self.post["title"], self.post["artist"]))
 | 
								self.dialog.set("duration", utils.seconds_to_string(post["duration"]))
 | 
				
			||||||
 | 
							self.dialog.set_title(u"{0} - {1}".format(post["title"], post["artist"]))
 | 
				
			||||||
		call_threaded(self.get_lyrics)
 | 
							call_threaded(self.get_lyrics)
 | 
				
			||||||
 | 
							if  post["owner_id"] == self.session.user_id or self.added_audios.has_key(post["id"]) == True:
 | 
				
			||||||
 | 
								self.dialog.change_state("remove", True)
 | 
				
			||||||
 | 
								self.dialog.change_state("add", False)
 | 
				
			||||||
 | 
							else:
 | 
				
			||||||
 | 
								self.dialog.change_state("add", True)
 | 
				
			||||||
 | 
								self.dialog.change_state("remove", False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def get_lyrics(self):
 | 
						def get_lyrics(self):
 | 
				
			||||||
		if self.post.has_key("lyrics_id"):
 | 
							post = self.post[self.dialog.get_audio()]
 | 
				
			||||||
			l = self.session.vk.client.audio.getLyrics(lyrics_id=int(self.post["lyrics_id"]))
 | 
							if post.has_key("lyrics_id"):
 | 
				
			||||||
 | 
								l = self.session.vk.client.audio.getLyrics(lyrics_id=int(post["lyrics_id"]))
 | 
				
			||||||
			self.dialog.set("lyric", l["text"])
 | 
								self.dialog.set("lyric", l["text"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def download(self, *args, **kwargs):
 | 
						def download(self, *args, **kwargs):
 | 
				
			||||||
		f = u"{0} - {1}.mp3".format(self.post["title"], self.post["artist"])
 | 
							post = self.post[self.dialog.get_audio()]
 | 
				
			||||||
 | 
							f = u"{0} - {1}.mp3".format(post["title"], post["artist"])
 | 
				
			||||||
		path = self.dialog.get_destination_path(f)
 | 
							path = self.dialog.get_destination_path(f)
 | 
				
			||||||
		if path != None:
 | 
							if path != None:
 | 
				
			||||||
			pub.sendMessage("download-file", url=self.post["url"], filename=path)
 | 
								pub.sendMessage("download-file", url=post["url"], filename=path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def play(self, *args, **kwargs):
 | 
						def play(self, *args, **kwargs):
 | 
				
			||||||
		pub.sendMessage("play-audio", audio_object=self.post["url"])
 | 
							post = self.post[self.dialog.get_audio()]
 | 
				
			||||||
 | 
							pub.sendMessage("play-audio", audio_object=post["url"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def load_audios(self):
 | 
				
			||||||
 | 
							for i in self.post:
 | 
				
			||||||
 | 
								s = u"{0} - {1}. {2}".format(i["title"], i["artist"], utils.seconds_to_string(i["duration"]))
 | 
				
			||||||
 | 
								self.dialog.insert_audio(s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def handle_changes(self, *args, **kwargs):
 | 
				
			||||||
 | 
							p = self.dialog.get_audio()
 | 
				
			||||||
 | 
							self.fill_information(p)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class friendship(object):
 | 
					class friendship(object):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,6 +54,7 @@ RADIOBUTTON = wx.EVT_RADIOBUTTON
 | 
				
			|||||||
# Taskbar mouse clicks.
 | 
					# Taskbar mouse clicks.
 | 
				
			||||||
TASKBAR_RIGHT_CLICK = wx.EVT_TASKBAR_RIGHT_DOWN
 | 
					TASKBAR_RIGHT_CLICK = wx.EVT_TASKBAR_RIGHT_DOWN
 | 
				
			||||||
TASKBAR_LEFT_CLICK = wx.EVT_TASKBAR_LEFT_DOWN
 | 
					TASKBAR_LEFT_CLICK = wx.EVT_TASKBAR_LEFT_DOWN
 | 
				
			||||||
 | 
					LISTBOX_CHANGED = wx.EVT_LISTBOX
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def exit_application():
 | 
					def exit_application():
 | 
				
			||||||
	""" Closes the current window cleanly. """
 | 
						""" Closes the current window cleanly. """
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -108,6 +108,12 @@ class audio(widgetUtils.BaseDialog):
 | 
				
			|||||||
		super(audio, self).__init__(parent=None, *args, **kwargs)
 | 
							super(audio, self).__init__(parent=None, *args, **kwargs)
 | 
				
			||||||
		panel = wx.Panel(self)
 | 
							panel = wx.Panel(self)
 | 
				
			||||||
		sizer = wx.BoxSizer(wx.VERTICAL)
 | 
							sizer = wx.BoxSizer(wx.VERTICAL)
 | 
				
			||||||
 | 
							lbl_list = wx.StaticText(panel, wx.NewId(), _(u"Audio files"))
 | 
				
			||||||
 | 
							self.list = wx.ListBox(panel, wx.NewId())
 | 
				
			||||||
 | 
							listS = wx.BoxSizer(wx.HORIZONTAL)
 | 
				
			||||||
 | 
							listS.Add(lbl_list, 0, wx.ALL, 5)
 | 
				
			||||||
 | 
							listS.Add(self.list, 0, wx.ALL, 5)
 | 
				
			||||||
 | 
							sizer.Add(listS, 0, wx.ALL, 5)
 | 
				
			||||||
		lbl_title = wx.StaticText(panel, wx.NewId(), _(u"Title"))
 | 
							lbl_title = wx.StaticText(panel, wx.NewId(), _(u"Title"))
 | 
				
			||||||
		self.title = wx.TextCtrl(panel, wx.NewId(), size=(413, -1), style=wx.TE_READONLY|wx.TE_MULTILINE)
 | 
							self.title = wx.TextCtrl(panel, wx.NewId(), size=(413, -1), style=wx.TE_READONLY|wx.TE_MULTILINE)
 | 
				
			||||||
		titleBox = wx.BoxSizer(wx.HORIZONTAL)
 | 
							titleBox = wx.BoxSizer(wx.HORIZONTAL)
 | 
				
			||||||
@@ -155,6 +161,12 @@ class audio(widgetUtils.BaseDialog):
 | 
				
			|||||||
			return saveFileDialog.GetPath()
 | 
								return saveFileDialog.GetPath()
 | 
				
			||||||
		saveFileDialog.Destroy()
 | 
							saveFileDialog.Destroy()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def insert_audio(self, audio_):
 | 
				
			||||||
 | 
							self.list.Append(audio_)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def get_audio(self):
 | 
				
			||||||
 | 
							return self.list.GetSelection()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class friendship(widgetUtils.BaseDialog):
 | 
					class friendship(widgetUtils.BaseDialog):
 | 
				
			||||||
	def __init__(self):
 | 
						def __init__(self):
 | 
				
			||||||
		super(friendship, self).__init__(parent=None)
 | 
							super(friendship, self).__init__(parent=None)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user