Fixed actions when there are no posts in a buffer
This commit is contained in:
parent
d43f5f5320
commit
0e96ed1519
@ -29,6 +29,10 @@ class baseBuffer(object):
|
|||||||
|
|
||||||
def get_post(self):
|
def get_post(self):
|
||||||
""" Return the currently focused post."""
|
""" Return the currently focused post."""
|
||||||
|
# Handle case where there are no items in the buffer.
|
||||||
|
if self.tab.list.get_count() == 0:
|
||||||
|
wx.Bell()
|
||||||
|
return None
|
||||||
return self.session.db[self.name]["items"][self.tab.list.get_selected()]
|
return self.session.db[self.name]["items"][self.tab.list.get_selected()]
|
||||||
|
|
||||||
def __init__(self, parent=None, name="", session=None, composefunc=None, *args, **kwargs):
|
def __init__(self, parent=None, name="", session=None, composefunc=None, *args, **kwargs):
|
||||||
@ -169,6 +173,8 @@ class baseBuffer(object):
|
|||||||
""" Returns contextual menu options. They will change according to the focused item"""
|
""" Returns contextual menu options. They will change according to the focused item"""
|
||||||
m = menus.postMenu()
|
m = menus.postMenu()
|
||||||
p = self.get_post()
|
p = self.get_post()
|
||||||
|
if p == None:
|
||||||
|
return
|
||||||
if p.has_key("likes") == False:
|
if p.has_key("likes") == False:
|
||||||
m.like.Enable(False)
|
m.like.Enable(False)
|
||||||
elif p["likes"]["user_likes"] == 1:
|
elif p["likes"]["user_likes"] == 1:
|
||||||
@ -186,6 +192,8 @@ class baseBuffer(object):
|
|||||||
def do_like(self, *args, **kwargs):
|
def do_like(self, *args, **kwargs):
|
||||||
""" Set like in the currently focused post."""
|
""" Set like in the currently focused post."""
|
||||||
post = self.get_post()
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
user = post[self.user_key]
|
user = post[self.user_key]
|
||||||
id = post[self.post_key]
|
id = post[self.post_key]
|
||||||
if post.has_key("type"):
|
if post.has_key("type"):
|
||||||
@ -201,6 +209,8 @@ class baseBuffer(object):
|
|||||||
def do_dislike(self, *args, **kwargs):
|
def do_dislike(self, *args, **kwargs):
|
||||||
""" Set dislike (undo like) in the currently focused post."""
|
""" Set dislike (undo like) in the currently focused post."""
|
||||||
post = self.get_post()
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
user = post[self.user_key]
|
user = post[self.user_key]
|
||||||
id = post[self.post_key]
|
id = post[self.post_key]
|
||||||
if post.has_key("type"):
|
if post.has_key("type"):
|
||||||
@ -215,10 +225,12 @@ class baseBuffer(object):
|
|||||||
|
|
||||||
def do_comment(self, *args, **kwargs):
|
def do_comment(self, *args, **kwargs):
|
||||||
""" Make a comment into the currently focused post."""
|
""" Make a comment into the currently focused post."""
|
||||||
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
comment = messages.comment(title=_(u"Add a comment"), caption="", text="")
|
comment = messages.comment(title=_(u"Add a comment"), caption="", text="")
|
||||||
if comment.message.get_response() == widgetUtils.OK:
|
if comment.message.get_response() == widgetUtils.OK:
|
||||||
msg = comment.message.get_text().encode("utf-8")
|
msg = comment.message.get_text().encode("utf-8")
|
||||||
post = self.get_post()
|
|
||||||
try:
|
try:
|
||||||
user = post[self.user_key]
|
user = post[self.user_key]
|
||||||
id = post[self.post_key]
|
id = post[self.post_key]
|
||||||
@ -254,6 +266,8 @@ class baseBuffer(object):
|
|||||||
def play_audio(self, *args, **kwargs):
|
def play_audio(self, *args, **kwargs):
|
||||||
""" Play audio in currently focused buffer, if possible."""
|
""" Play audio in currently focused buffer, if possible."""
|
||||||
post = self.get_post()
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
if post.has_key("type") and post["type"] == "audio":
|
if post.has_key("type") and post["type"] == "audio":
|
||||||
pub.sendMessage("play-audio", audio_object=post["audio"]["items"][0])
|
pub.sendMessage("play-audio", audio_object=post["audio"]["items"][0])
|
||||||
return True
|
return True
|
||||||
@ -261,6 +275,8 @@ class baseBuffer(object):
|
|||||||
def open_person_profile(self, *args, **kwargs):
|
def open_person_profile(self, *args, **kwargs):
|
||||||
""" Views someone's user profile."""
|
""" Views someone's user profile."""
|
||||||
selected = self.get_post()
|
selected = self.get_post()
|
||||||
|
if selected == None:
|
||||||
|
return
|
||||||
# Check all possible keys for an user object in VK API.
|
# Check all possible keys for an user object in VK API.
|
||||||
keys = ["from_id", "source_id", "id"]
|
keys = ["from_id", "source_id", "id"]
|
||||||
for i in keys:
|
for i in keys:
|
||||||
@ -270,6 +286,8 @@ class baseBuffer(object):
|
|||||||
def open_post(self, *args, **kwargs):
|
def open_post(self, *args, **kwargs):
|
||||||
""" Opens the currently focused post."""
|
""" Opens the currently focused post."""
|
||||||
post = self.get_post()
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
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"]["items"])
|
a = posts.audio(self.session, post["audio"]["items"])
|
||||||
a.dialog.get_response()
|
a.dialog.get_response()
|
||||||
@ -290,6 +308,8 @@ class baseBuffer(object):
|
|||||||
def get_users(self):
|
def get_users(self):
|
||||||
""" Returns source user in the post."""
|
""" Returns source user in the post."""
|
||||||
post = self.get_post()
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
if post.has_key("type") == False:
|
if post.has_key("type") == False:
|
||||||
return [post["from_id"]]
|
return [post["from_id"]]
|
||||||
else:
|
else:
|
||||||
@ -299,6 +319,8 @@ class baseBuffer(object):
|
|||||||
""" Function executed when the item in a list is selected.
|
""" Function executed when the item in a list is selected.
|
||||||
For this buffer it updates the date of posts in the list."""
|
For this buffer it updates the date of posts in the list."""
|
||||||
post = self.get_post()
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
original_date = arrow.get(post["date"])
|
original_date = arrow.get(post["date"])
|
||||||
created_at = original_date.humanize(locale=languageHandler.curLang[:2])
|
created_at = original_date.humanize(locale=languageHandler.curLang[:2])
|
||||||
self.tab.list.list.SetItem(self.tab.list.get_selected(), 2, created_at)
|
self.tab.list.list.SetItem(self.tab.list.get_selected(), 2, created_at)
|
||||||
@ -360,6 +382,8 @@ class audioBuffer(feedBuffer):
|
|||||||
|
|
||||||
def play_audio(self, *args, **kwargs):
|
def play_audio(self, *args, **kwargs):
|
||||||
selected = self.tab.list.get_selected()
|
selected = self.tab.list.get_selected()
|
||||||
|
if selected == -1:
|
||||||
|
return
|
||||||
if selected == -1:
|
if selected == -1:
|
||||||
selected = 0
|
selected = 0
|
||||||
pub.sendMessage("play-audio", audio_object=self.session.db[self.name]["items"][selected])
|
pub.sendMessage("play-audio", audio_object=self.session.db[self.name]["items"][selected])
|
||||||
@ -367,7 +391,9 @@ class audioBuffer(feedBuffer):
|
|||||||
|
|
||||||
def play_next(self, *args, **kwargs):
|
def play_next(self, *args, **kwargs):
|
||||||
selected = self.tab.list.get_selected()
|
selected = self.tab.list.get_selected()
|
||||||
if selected < 0 or selected == self.tab.list.get_count()-1:
|
if selected == -1:
|
||||||
|
return
|
||||||
|
elif selected < 0 or selected == self.tab.list.get_count()-1:
|
||||||
selected = 0
|
selected = 0
|
||||||
if self.tab.list.get_count() <= selected+1:
|
if self.tab.list.get_count() <= selected+1:
|
||||||
newpos = 0
|
newpos = 0
|
||||||
@ -378,7 +404,9 @@ class audioBuffer(feedBuffer):
|
|||||||
|
|
||||||
def play_previous(self, *args, **kwargs):
|
def play_previous(self, *args, **kwargs):
|
||||||
selected = self.tab.list.get_selected()
|
selected = self.tab.list.get_selected()
|
||||||
if selected <= 0:
|
if selected == -1:
|
||||||
|
return
|
||||||
|
elif selected <= 0:
|
||||||
selected = self.tab.list.get_count()
|
selected = self.tab.list.get_count()
|
||||||
newpos = selected-1
|
newpos = selected-1
|
||||||
self.tab.list.select_item(newpos)
|
self.tab.list.select_item(newpos)
|
||||||
@ -386,6 +414,8 @@ class audioBuffer(feedBuffer):
|
|||||||
|
|
||||||
def open_post(self, *args, **kwargs):
|
def open_post(self, *args, **kwargs):
|
||||||
selected = self.tab.list.get_selected()
|
selected = self.tab.list.get_selected()
|
||||||
|
if selected == 0 or selected == -1:
|
||||||
|
return
|
||||||
audios = [self.session.db[self.name]["items"][selected]]
|
audios = [self.session.db[self.name]["items"][selected]]
|
||||||
a = posts.audio(self.session, audios)
|
a = posts.audio(self.session, audios)
|
||||||
a.dialog.get_response()
|
a.dialog.get_response()
|
||||||
@ -395,6 +425,8 @@ class audioBuffer(feedBuffer):
|
|||||||
selected = self.tab.list.get_selected()
|
selected = self.tab.list.get_selected()
|
||||||
if selected == -1:
|
if selected == -1:
|
||||||
selected = 0
|
selected = 0
|
||||||
|
if self.name not in self.session.db:
|
||||||
|
return
|
||||||
audios = [i for i in self.session.db[self.name]["items"][selected:]]
|
audios = [i for i in self.session.db[self.name]["items"][selected:]]
|
||||||
pub.sendMessage("play-audios", audios=audios)
|
pub.sendMessage("play-audios", audios=audios)
|
||||||
return True
|
return True
|
||||||
@ -423,6 +455,8 @@ class audioBuffer(feedBuffer):
|
|||||||
|
|
||||||
def add_to_library(self, *args, **kwargs):
|
def add_to_library(self, *args, **kwargs):
|
||||||
post = self.get_post()
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
args = {}
|
args = {}
|
||||||
args["audio_id"] = post["id"]
|
args["audio_id"] = post["id"]
|
||||||
if post.has_key("album_id"):
|
if post.has_key("album_id"):
|
||||||
@ -434,6 +468,8 @@ class audioBuffer(feedBuffer):
|
|||||||
|
|
||||||
def remove_from_library(self, *args, **kwargs):
|
def remove_from_library(self, *args, **kwargs):
|
||||||
post = self.get_post()
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
args = {}
|
args = {}
|
||||||
args["audio_id"] = post["id"]
|
args["audio_id"] = post["id"]
|
||||||
args["owner_id"] = self.session.user_id
|
args["owner_id"] = self.session.user_id
|
||||||
@ -443,9 +479,12 @@ class audioBuffer(feedBuffer):
|
|||||||
self.tab.list.remove_item(self.tab.list.get_selected())
|
self.tab.list.remove_item(self.tab.list.get_selected())
|
||||||
|
|
||||||
def move_to_album(self, *args, **kwargs):
|
def move_to_album(self, *args, **kwargs):
|
||||||
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
album = selector.album(_(u"Select the album where you want to move this song"), self.session)
|
album = selector.album(_(u"Select the album where you want to move this song"), self.session)
|
||||||
if album.item == None: return
|
if album.item == None: return
|
||||||
id = self.get_post()["id"]
|
id = post["id"]
|
||||||
response = self.session.vk.client.audio.moveToAlbum(album_id=album.item, audio_ids=id)
|
response = self.session.vk.client.audio.moveToAlbum(album_id=album.item, audio_ids=id)
|
||||||
if response == 1:
|
if response == 1:
|
||||||
# Translators: Used when the user has moved an audio to an album.
|
# Translators: Used when the user has moved an audio to an album.
|
||||||
@ -453,6 +492,8 @@ class audioBuffer(feedBuffer):
|
|||||||
|
|
||||||
def get_menu(self):
|
def get_menu(self):
|
||||||
p = self.get_post()
|
p = self.get_post()
|
||||||
|
if p == None:
|
||||||
|
return
|
||||||
m = menus.audioMenu()
|
m = menus.audioMenu()
|
||||||
widgetUtils.connect_event(m, widgetUtils.MENU, self.open_post, menuitem=m.open)
|
widgetUtils.connect_event(m, widgetUtils.MENU, self.open_post, menuitem=m.open)
|
||||||
widgetUtils.connect_event(m, widgetUtils.MENU, self.play_audio, menuitem=m.play)
|
widgetUtils.connect_event(m, widgetUtils.MENU, self.play_audio, menuitem=m.play)
|
||||||
@ -500,6 +541,8 @@ class videoBuffer(feedBuffer):
|
|||||||
""" Due to inheritance this method should be called play_audio, but play the currently focused video.
|
""" Due to inheritance this method should be called play_audio, but play the currently focused video.
|
||||||
Opens a webbrowser pointing to the video's URL."""
|
Opens a webbrowser pointing to the video's URL."""
|
||||||
selected = self.tab.list.get_selected()
|
selected = self.tab.list.get_selected()
|
||||||
|
if self.tab.list.get_count() == 0:
|
||||||
|
return
|
||||||
if selected == -1:
|
if selected == -1:
|
||||||
selected = 0
|
selected = 0
|
||||||
output.speak(_(u"Opening video in webbrowser..."))
|
output.speak(_(u"Opening video in webbrowser..."))
|
||||||
@ -508,11 +551,7 @@ class videoBuffer(feedBuffer):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def open_post(self, *args, **kwargs):
|
def open_post(self, *args, **kwargs):
|
||||||
selected = self.tab.list.get_selected()
|
pass
|
||||||
audios = [self.session.db[self.name]["items"][selected]]
|
|
||||||
a = posts.audio(self.session, audios)
|
|
||||||
a.dialog.get_response()
|
|
||||||
a.dialog.Destroy()
|
|
||||||
|
|
||||||
def remove_buffer(self, mandatory=False):
|
def remove_buffer(self, mandatory=False):
|
||||||
if "me_video" == self.name:
|
if "me_video" == self.name:
|
||||||
@ -538,6 +577,8 @@ class videoBuffer(feedBuffer):
|
|||||||
|
|
||||||
def add_to_library(self, *args, **kwargs):
|
def add_to_library(self, *args, **kwargs):
|
||||||
post = self.get_post()
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
args = {}
|
args = {}
|
||||||
args["video_id"] = post["id"]
|
args["video_id"] = post["id"]
|
||||||
if post.has_key("album_id"):
|
if post.has_key("album_id"):
|
||||||
@ -549,6 +590,8 @@ class videoBuffer(feedBuffer):
|
|||||||
|
|
||||||
def remove_from_library(self, *args, **kwargs):
|
def remove_from_library(self, *args, **kwargs):
|
||||||
post = self.get_post()
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
args = {}
|
args = {}
|
||||||
args["video_id"] = post["id"]
|
args["video_id"] = post["id"]
|
||||||
args["owner_id"] = self.session.user_id
|
args["owner_id"] = self.session.user_id
|
||||||
@ -558,9 +601,12 @@ class videoBuffer(feedBuffer):
|
|||||||
self.tab.list.remove_item(self.tab.list.get_selected())
|
self.tab.list.remove_item(self.tab.list.get_selected())
|
||||||
|
|
||||||
def move_to_album(self, *args, **kwargs):
|
def move_to_album(self, *args, **kwargs):
|
||||||
|
post= self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
album = selector.album(_(u"Select the album where you want to move this video"), self.session, "video_albums")
|
album = selector.album(_(u"Select the album where you want to move this video"), self.session, "video_albums")
|
||||||
if album.item == None: return
|
if album.item == None: return
|
||||||
id = self.get_post()["id"]
|
id = post["id"]
|
||||||
response = self.session.vk.client.video.addToAlbum(album_ids=album.item, video_id=id, target_id=self.session.user_id, owner_id=self.get_post()["owner_id"])
|
response = self.session.vk.client.video.addToAlbum(album_ids=album.item, video_id=id, target_id=self.session.user_id, owner_id=self.get_post()["owner_id"])
|
||||||
if response == 1:
|
if response == 1:
|
||||||
# Translators: Used when the user has moved an video to an album.
|
# Translators: Used when the user has moved an video to an album.
|
||||||
@ -569,6 +615,8 @@ class videoBuffer(feedBuffer):
|
|||||||
def get_menu(self):
|
def get_menu(self):
|
||||||
""" We'll use the same menu that is used for audio items, as the options are exactly the same"""
|
""" We'll use the same menu that is used for audio items, as the options are exactly the same"""
|
||||||
p = self.get_post()
|
p = self.get_post()
|
||||||
|
if p == None:
|
||||||
|
return
|
||||||
m = menus.audioMenu()
|
m = menus.audioMenu()
|
||||||
# widgetUtils.connect_event(m, widgetUtils.MENU, self.open_post, menuitem=m.open)
|
# widgetUtils.connect_event(m, widgetUtils.MENU, self.open_post, menuitem=m.open)
|
||||||
# widgetUtils.connect_event(m, widgetUtils.MENU, self.play_audio, menuitem=m.play)
|
# widgetUtils.connect_event(m, widgetUtils.MENU, self.play_audio, menuitem=m.play)
|
||||||
@ -806,11 +854,16 @@ class peopleBuffer(feedBuffer):
|
|||||||
widgetUtils.connect_event(self.tab.new_chat, widgetUtils.BUTTON_PRESSED, self.new_chat)
|
widgetUtils.connect_event(self.tab.new_chat, widgetUtils.BUTTON_PRESSED, self.new_chat)
|
||||||
|
|
||||||
def new_chat(self, *args, **kwargs):
|
def new_chat(self, *args, **kwargs):
|
||||||
user_id = self.session.db[self.name]["items"][self.tab.list.get_selected()]["id"]
|
user = self.get_post()
|
||||||
|
if user == None:
|
||||||
|
return
|
||||||
|
user_id = user["id"]
|
||||||
pub.sendMessage("new-chat", user_id=user_id)
|
pub.sendMessage("new-chat", user_id=user_id)
|
||||||
|
|
||||||
def onFocus(self, *args, **kwargs):
|
def onFocus(self, *args, **kwargs):
|
||||||
post = self.session.db[self.name]["items"][self.tab.list.get_selected()]
|
post = self.get_post()
|
||||||
|
if post == None:
|
||||||
|
return
|
||||||
if post.has_key("last_seen") == False: return
|
if post.has_key("last_seen") == False: return
|
||||||
original_date = arrow.get(post["last_seen"]["time"])
|
original_date = arrow.get(post["last_seen"]["time"])
|
||||||
created_at = original_date.humanize(locale=languageHandler.curLang[:2])
|
created_at = original_date.humanize(locale=languageHandler.curLang[:2])
|
||||||
@ -880,6 +933,8 @@ class requestsBuffer(peopleBuffer):
|
|||||||
https://vk.com/dev/friends.add
|
https://vk.com/dev/friends.add
|
||||||
"""
|
"""
|
||||||
person = self.get_post()
|
person = self.get_post()
|
||||||
|
if person == None:
|
||||||
|
return
|
||||||
result = self.session.vk.client.friends.add(user_id=person["id"])
|
result = self.session.vk.client.friends.add(user_id=person["id"])
|
||||||
if result == 2:
|
if result == 2:
|
||||||
msg = _(u"{0} {1} now is your friend.").format(person["first_name"], person["last_name"])
|
msg = _(u"{0} {1} now is your friend.").format(person["first_name"], person["last_name"])
|
||||||
@ -892,6 +947,8 @@ class requestsBuffer(peopleBuffer):
|
|||||||
https://vk.com/dev/friends.delete
|
https://vk.com/dev/friends.delete
|
||||||
"""
|
"""
|
||||||
person = self.get_post()
|
person = self.get_post()
|
||||||
|
if person == None:
|
||||||
|
return
|
||||||
result = self.session.vk.client.friends.delete(user_id=person["id"])
|
result = self.session.vk.client.friends.delete(user_id=person["id"])
|
||||||
if "out_request_deleted" in result:
|
if "out_request_deleted" in result:
|
||||||
msg = _(u"You've deleted the friends request to {0} {1}.").format(person["first_name"], person["last_name"])
|
msg = _(u"You've deleted the friends request to {0} {1}.").format(person["first_name"], person["last_name"])
|
||||||
@ -906,6 +963,8 @@ class requestsBuffer(peopleBuffer):
|
|||||||
https://vk.com/dev/friends.add
|
https://vk.com/dev/friends.add
|
||||||
"""
|
"""
|
||||||
person = self.get_post()
|
person = self.get_post()
|
||||||
|
if person == None:
|
||||||
|
return
|
||||||
result = self.session.vk.client.friends.add(user_id=person["id"], follow=1)
|
result = self.session.vk.client.friends.add(user_id=person["id"], follow=1)
|
||||||
if result == 2:
|
if result == 2:
|
||||||
msg = _(u"{0} {1} is following you.").format(person["first_name"], person["last_name"])
|
msg = _(u"{0} {1} is following you.").format(person["first_name"], person["last_name"])
|
||||||
|
Loading…
Reference in New Issue
Block a user