2016-02-14 00:06:36 +01:00
|
|
|
# -*- coding: utf-8 -*-
|
2016-02-15 12:43:40 +01:00
|
|
|
import wx
|
2016-02-14 00:06:36 +01:00
|
|
|
import widgetUtils
|
|
|
|
import messages
|
2016-02-15 02:24:45 +01:00
|
|
|
import utils
|
2016-02-15 22:09:33 +01:00
|
|
|
import posts
|
2016-02-16 00:49:39 +01:00
|
|
|
import player
|
2016-02-14 00:06:36 +01:00
|
|
|
from wxUI.tabs import home
|
|
|
|
from pubsub import pub
|
2016-02-15 02:24:45 +01:00
|
|
|
from sessionmanager import session
|
2016-02-15 12:43:40 +01:00
|
|
|
from mysc.thread_utils import call_threaded
|
2016-02-14 00:06:36 +01:00
|
|
|
|
|
|
|
class baseBuffer(object):
|
|
|
|
def __init__(self, parent=None, name="", session=None, composefunc=None, *args, **kwargs):
|
|
|
|
super(baseBuffer, self).__init__()
|
|
|
|
self.args = args
|
|
|
|
self.kwargs = kwargs
|
|
|
|
self.create_tab(parent)
|
|
|
|
self.tab.name = name
|
|
|
|
self.session = session
|
|
|
|
self.compose_function = composefunc
|
|
|
|
self.update_function = "get_page"
|
|
|
|
self.name = name
|
|
|
|
self.connect_events()
|
|
|
|
|
|
|
|
def create_tab(self, parent):
|
|
|
|
self.tab = home.homeTab(parent)
|
|
|
|
|
|
|
|
def insert(self, item, reversed=False):
|
|
|
|
item_ = getattr(session, self.compose_function)(item, self.session)
|
|
|
|
self.tab.list.insert_item(reversed, *item_)
|
|
|
|
|
|
|
|
def get_items(self, no_next=True):
|
|
|
|
num = getattr(self.session, "get_newsfeed")(no_next=no_next, name=self.name, *self.args, **self.kwargs)
|
|
|
|
print num
|
|
|
|
if no_next == True:
|
|
|
|
if self.tab.list.get_count() > 0 and num > 0:
|
|
|
|
print "inserting a value"
|
|
|
|
[self.insert(i, True) for i in self.session.db[self.name]["items"][-num:]]
|
|
|
|
else:
|
|
|
|
[self.insert(i) for i in self.session.db[self.name]["items"][:num]]
|
|
|
|
|
|
|
|
def post(self, *args, **kwargs):
|
|
|
|
p = messages.post(title=_(u"Write your post"), caption="", text="")
|
|
|
|
if p.message.get_response() == widgetUtils.OK:
|
|
|
|
msg = p.message.get_text().encode("utf-8")
|
|
|
|
privacy_opts = p.get_privacy_options()
|
2016-02-15 02:24:45 +01:00
|
|
|
attachments = ""
|
|
|
|
urls = utils.find_urls_in_text(msg)
|
|
|
|
if len(urls) != 0:
|
|
|
|
if len(attachments) == 0: attachments = urls[0]
|
|
|
|
else: attachments += urls[0]
|
|
|
|
msg = msg.replace(urls[0], "")
|
|
|
|
self.session.post_wall_status(message=msg, friends_only=privacy_opts, attachments=attachments)
|
2016-02-14 00:06:36 +01:00
|
|
|
pub.sendMessage("posted", buffer=self.name)
|
|
|
|
|
|
|
|
def connect_events(self):
|
|
|
|
widgetUtils.connect_event(self.tab.post, widgetUtils.BUTTON_PRESSED, self.post)
|
2016-02-15 12:43:40 +01:00
|
|
|
widgetUtils.connect_event(self.tab.list.list, widgetUtils.KEYPRESS, self.get_event)
|
|
|
|
|
|
|
|
def get_event(self, ev):
|
|
|
|
if ev.GetKeyCode() == wx.WXK_RETURN and ev.ControlDown(): event = "play_audio"
|
2016-02-15 22:09:33 +01:00
|
|
|
elif ev.GetKeyCode() == wx.WXK_RETURN: event = "open_post"
|
2016-02-15 12:43:40 +01:00
|
|
|
elif ev.GetKeyCode() == wx.WXK_F5: event = "volume_down"
|
|
|
|
elif ev.GetKeyCode() == wx.WXK_F6: event = "volume_up"
|
|
|
|
else:
|
|
|
|
event = None
|
|
|
|
ev.Skip()
|
|
|
|
if event != None:
|
|
|
|
try:
|
|
|
|
getattr(self, event)()
|
|
|
|
except AttributeError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
def volume_down(self):
|
|
|
|
player.player.volume = player.player.volume-5
|
|
|
|
|
|
|
|
def volume_up(self):
|
|
|
|
player.player.volume = player.player.volume+5
|
2016-02-14 00:06:36 +01:00
|
|
|
|
|
|
|
class feedBuffer(baseBuffer):
|
|
|
|
|
|
|
|
def get_items(self, no_next=True):
|
|
|
|
num = getattr(self.session, "get_page")(no_next=no_next, name=self.name, *self.args, **self.kwargs)
|
|
|
|
print num
|
|
|
|
if no_next == True:
|
|
|
|
if self.tab.list.get_count() > 0 and num > 0:
|
|
|
|
print "inserting a value"
|
|
|
|
[self.insert(i, True) for i in self.session.db[self.name]["items"][-num:]]
|
|
|
|
else:
|
|
|
|
[self.insert(i) for i in self.session.db[self.name]["items"][:num]]
|
|
|
|
|
2016-02-15 12:43:40 +01:00
|
|
|
|
2016-02-14 00:06:36 +01:00
|
|
|
class audioBuffer(feedBuffer):
|
|
|
|
def create_tab(self, parent):
|
|
|
|
self.tab = home.audioTab(parent)
|
2016-02-15 09:15:38 +01:00
|
|
|
|
|
|
|
def connect_events(self):
|
|
|
|
widgetUtils.connect_event(self.tab.play, widgetUtils.BUTTON_PRESSED, self.play_audio)
|
2016-02-15 12:43:40 +01:00
|
|
|
super(audioBuffer, self).connect_events()
|
2016-02-15 09:15:38 +01:00
|
|
|
|
|
|
|
def play_audio(self, *args, **kwargs):
|
|
|
|
selected = self.tab.list.get_selected()
|
2016-02-16 00:49:39 +01:00
|
|
|
pub.sendMessage("play-audio", audio_object=self.session.db[self.name]["items"][selected]["url"])
|
2016-02-15 09:15:38 +01:00
|
|
|
|
2016-02-15 22:09:33 +01:00
|
|
|
def open_post(self):
|
|
|
|
selected = self.tab.list.get_selected()
|
|
|
|
a = posts.audio(self.session, self.session.db[self.name]["items"][selected])
|
|
|
|
a.dialog.get_response()
|
|
|
|
|