2014-11-13 03:41:29 +01:00
|
|
|
# -*- coding: utf-8 -*-
|
2015-01-05 12:33:09 +01:00
|
|
|
from wxUI import (view, dialogs, commonMessageDialogs)
|
2015-02-01 07:49:03 +01:00
|
|
|
from twitter import utils
|
2015-01-28 00:09:28 +01:00
|
|
|
from sessionmanager import manager
|
2014-11-13 03:41:29 +01:00
|
|
|
import buffersController
|
2014-11-13 05:37:52 +01:00
|
|
|
import messages
|
2015-01-20 22:40:33 +01:00
|
|
|
import settings
|
2015-01-13 19:31:37 +01:00
|
|
|
from sessionmanager import session as session_
|
2014-11-13 03:41:29 +01:00
|
|
|
from pubsub import pub
|
|
|
|
import sound
|
|
|
|
import output
|
2015-01-05 12:33:09 +01:00
|
|
|
from twython import TwythonError
|
2014-11-13 03:41:29 +01:00
|
|
|
from mysc.thread_utils import call_threaded
|
|
|
|
from mysc.repeating_timer import RepeatingTimer
|
2015-01-25 09:38:17 +01:00
|
|
|
from mysc import restart
|
2014-11-13 03:41:29 +01:00
|
|
|
import config
|
|
|
|
import widgetUtils
|
2015-01-19 19:15:57 +01:00
|
|
|
import pygeocoder
|
|
|
|
from pygeolib import GeocoderError
|
2014-11-13 03:41:29 +01:00
|
|
|
import platform
|
2014-12-30 03:58:30 +01:00
|
|
|
from extra import SoundsTutorial
|
2015-01-13 19:31:37 +01:00
|
|
|
import logging
|
2014-11-13 03:41:29 +01:00
|
|
|
if platform.system() == "Windows":
|
|
|
|
import keystrokeEditor
|
2015-01-19 19:15:57 +01:00
|
|
|
from keyboard_handler.wx_handler import WXKeyboardHandler
|
2015-02-01 07:49:03 +01:00
|
|
|
import userActionsController
|
2014-11-13 03:41:29 +01:00
|
|
|
|
2015-01-13 19:31:37 +01:00
|
|
|
log = logging.getLogger("mainController")
|
|
|
|
|
2015-01-19 19:15:57 +01:00
|
|
|
geocoder = pygeocoder.Geocoder()
|
|
|
|
|
2014-11-13 03:41:29 +01:00
|
|
|
class Controller(object):
|
|
|
|
|
|
|
|
""" Main Controller for TWBlue. It manages the main window and sessions."""
|
|
|
|
|
|
|
|
def search_buffer(self, name_, user):
|
|
|
|
|
|
|
|
""" Searches a buffer.
|
|
|
|
name_ str: The name for the buffer
|
|
|
|
user str: The account for the buffer.
|
|
|
|
for example you may want to search the home_timeline buffer for the tw_blue2 user.
|
|
|
|
returns buffersController.buffer object with the result if there is one."""
|
|
|
|
for i in self.buffers:
|
|
|
|
if i.name == name_ and i.account == user: return i
|
|
|
|
|
2015-01-05 12:33:09 +01:00
|
|
|
def get_current_buffer(self):
|
|
|
|
buffer = self.view.get_current_buffer()
|
|
|
|
if hasattr(buffer, "account"):
|
|
|
|
buffer = self.search_buffer(buffer.name, buffer.account)
|
|
|
|
return buffer
|
|
|
|
|
2014-11-13 03:41:29 +01:00
|
|
|
def get_best_buffer(self):
|
|
|
|
# Gets the parent buffer to know what account is doing an action
|
|
|
|
view_buffer = self.view.get_current_buffer()
|
|
|
|
# If the account has no session attached, we will need to search the home_timeline for that account to use its session.
|
|
|
|
if view_buffer.type == "account" or view_buffer.type == "empty":
|
|
|
|
buffer = self.search_buffer("home_timeline", view_buffer.account)
|
|
|
|
else:
|
|
|
|
buffer = self.search_buffer(view_buffer.name, view_buffer.account)
|
|
|
|
return buffer
|
|
|
|
|
2015-01-19 19:15:57 +01:00
|
|
|
def get_first_buffer(self, account):
|
|
|
|
for i in self.buffers:
|
2015-01-20 22:40:33 +01:00
|
|
|
if i.account == account and i.invisible == True:
|
2015-01-19 19:15:57 +01:00
|
|
|
buff = i
|
|
|
|
break
|
|
|
|
return self.view.search(buff.name, buff.account)
|
|
|
|
|
|
|
|
def get_last_buffer(self, account):
|
|
|
|
results = []
|
2015-01-20 22:40:33 +01:00
|
|
|
[results.append(i) for i in self.buffers if i.account == account and i.invisible == True]
|
2015-01-19 19:15:57 +01:00
|
|
|
return self.view.search(results[-1].name, results[-1].account)
|
|
|
|
|
2014-11-13 03:41:29 +01:00
|
|
|
def bind_stream_events(self):
|
2015-01-19 00:19:39 +01:00
|
|
|
log.debug("Binding events for the Twitter stream API...")
|
2014-11-13 03:41:29 +01:00
|
|
|
pub.subscribe(self.manage_home_timelines, "item-in-home")
|
|
|
|
pub.subscribe(self.manage_mentions, "mention")
|
|
|
|
pub.subscribe(self.manage_direct_messages, "direct-message")
|
|
|
|
pub.subscribe(self.manage_sent_dm, "sent-dm")
|
|
|
|
pub.subscribe(self.manage_sent_tweets, "sent-tweet")
|
|
|
|
pub.subscribe(self.manage_events, "event")
|
|
|
|
pub.subscribe(self.manage_followers, "follower")
|
|
|
|
pub.subscribe(self.manage_friend, "friend")
|
|
|
|
pub.subscribe(self.manage_unfollowing, "unfollowing")
|
|
|
|
pub.subscribe(self.manage_favourite, "favourite")
|
|
|
|
pub.subscribe(self.manage_unfavourite, "unfavourite")
|
|
|
|
pub.subscribe(self.manage_blocked_user, "blocked-user")
|
|
|
|
pub.subscribe(self.manage_unblocked_user, "unblocked-user")
|
|
|
|
pub.subscribe(self.manage_item_in_timeline, "item-in-timeline")
|
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.CLOSE_EVENT, self.exit)
|
|
|
|
|
|
|
|
def bind_other_events(self):
|
2015-01-19 00:19:39 +01:00
|
|
|
log.debug("Binding other application events...")
|
2014-11-13 03:41:29 +01:00
|
|
|
pub.subscribe(self.editing_keystroke, "editing_keystroke")
|
2015-01-13 19:31:37 +01:00
|
|
|
pub.subscribe(self.manage_stream_errors, "stream-error")
|
2015-01-28 00:09:28 +01:00
|
|
|
pub.subscribe(self.create_new_buffer, "create-new-buffer")
|
2015-01-19 19:15:57 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.show_hide, menuitem=self.view.show_hide)
|
2015-01-02 04:40:57 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.search, menuitem=self.view.menuitem_search)
|
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.learn_sounds, menuitem=self.view.sounds_tutorial)
|
2015-01-25 09:38:17 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.accountConfiguration, menuitem=self.view.account_settings)
|
2015-01-20 22:40:33 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.configuration, menuitem=self.view.prefs)
|
2015-01-02 04:40:57 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.exit, menuitem=self.view.close)
|
2015-01-21 05:07:13 +01:00
|
|
|
if widgetUtils.toolkit == "wx":
|
2015-01-25 09:38:17 +01:00
|
|
|
log.debug("Binding the exit function...")
|
2015-01-21 05:07:13 +01:00
|
|
|
widgetUtils.connectExitFunction(self.exit)
|
2015-01-02 04:40:57 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_tweet, self.view.compose)
|
2015-01-02 16:38:44 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_reply, self.view.reply)
|
2015-01-02 17:53:33 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_retweet, self.view.retweet)
|
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.add_to_favourites, self.view.fav)
|
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.remove_from_favourites, self.view.unfav)
|
2015-01-05 12:33:09 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.view_item, self.view.view)
|
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.delete, self.view.delete)
|
2015-02-01 07:49:03 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.follow, menuitem=self.view.follow)
|
2015-01-02 16:38:44 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.send_dm, self.view.dm)
|
2015-02-01 07:49:03 +01:00
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.unfollow, menuitem=self.view.unfollow)
|
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.mute, menuitem=self.view.mute)
|
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.unmute, menuitem=self.view.unmute)
|
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.report, menuitem=self.view.report)
|
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.block, menuitem=self.view.block)
|
|
|
|
widgetUtils.connect_event(self.view, widgetUtils.MENU, self.unblock, menuitem=self.view.unblock)
|
|
|
|
|
2015-01-19 19:15:57 +01:00
|
|
|
widgetUtils.connect_event(self.view.nb, widgetUtils.NOTEBOOK_PAGE_CHANGED, self.buffer_changed)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
super(Controller, self).__init__()
|
2015-01-19 19:15:57 +01:00
|
|
|
self.showing = True
|
2015-01-02 04:40:57 +01:00
|
|
|
self.view = view.mainFrame()
|
2014-11-13 03:41:29 +01:00
|
|
|
self.buffers = []
|
2015-01-19 19:15:57 +01:00
|
|
|
self.accounts = []
|
|
|
|
self.buffer_positions = {}
|
|
|
|
self.current_account = ""
|
2014-11-13 03:41:29 +01:00
|
|
|
self.view.prepare()
|
|
|
|
self.bind_stream_events()
|
|
|
|
self.bind_other_events()
|
2015-01-20 22:40:33 +01:00
|
|
|
if config.app["app-settings"]["hide_gui"] == True:
|
|
|
|
self.show_hide()
|
|
|
|
self.view.Show()
|
|
|
|
self.view.Hide()
|
|
|
|
if config.app["app-settings"]["use_invisible_keyboard_shorcuts"] == True:
|
|
|
|
km = self.create_invisible_keyboard_shorcuts()
|
|
|
|
self.register_invisible_keyboard_shorcuts(km)
|
2014-12-31 07:07:27 +01:00
|
|
|
|
2014-11-13 03:41:29 +01:00
|
|
|
def do_work(self):
|
2015-01-13 19:31:37 +01:00
|
|
|
log.debug("Creating buffers for all sessions...")
|
|
|
|
for i in session_.sessions:
|
|
|
|
log.debug("Working on session %s" % (i,))
|
|
|
|
self.create_buffers(session_.sessions[i])
|
|
|
|
self.checker_function = RepeatingTimer(60, self.check_connection)
|
|
|
|
self.checker_function.start()
|
2015-01-28 00:09:28 +01:00
|
|
|
def start(self):
|
|
|
|
for i in session_.sessions:
|
|
|
|
self.start_buffers(session_.sessions[i])
|
|
|
|
session_.sessions[session_.sessions.keys()[0]].sound.play("ready.ogg")
|
|
|
|
output.speak(_(u"Ready"))
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def create_buffers(self, session):
|
|
|
|
session.get_user_info()
|
2015-01-19 19:15:57 +01:00
|
|
|
self.accounts.append(session.db["user_name"])
|
|
|
|
self.buffer_positions[session.db["user_name"]] = 1
|
2014-11-13 03:41:29 +01:00
|
|
|
account = buffersController.accountPanel(self.view.nb, session.db["user_name"], session.db["user_name"])
|
|
|
|
self.buffers.append(account)
|
|
|
|
self.view.add_buffer(account.buffer , name=session.db["user_name"])
|
|
|
|
home = buffersController.baseBufferController(self.view.nb, "get_home_timeline", "home_timeline", session, session.db["user_name"])
|
|
|
|
self.buffers.append(home)
|
|
|
|
self.view.insert_buffer(home.buffer, name=_(u"Home"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
2015-01-28 00:09:28 +01:00
|
|
|
mentions = buffersController.baseBufferController(self.view.nb, "get_mentions_timeline", "mentions", session, session.db["user_name"], sound="mention_received.ogg")
|
2014-11-13 03:41:29 +01:00
|
|
|
self.buffers.append(mentions)
|
|
|
|
self.view.insert_buffer(mentions.buffer, name=_(u"Mentions"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
2015-01-28 00:09:28 +01:00
|
|
|
dm = buffersController.baseBufferController(self.view.nb, "get_direct_messages", "direct_messages", session, session.db["user_name"], bufferType="dmPanel", sound="dm_received.ogg")
|
2014-11-13 03:41:29 +01:00
|
|
|
self.buffers.append(dm)
|
|
|
|
self.view.insert_buffer(dm.buffer, name=_(u"Direct messages"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
sent_dm = buffersController.baseBufferController(self.view.nb, "get_sent_messages", "sent_direct_messages", session, session.db["user_name"], bufferType="dmPanel")
|
|
|
|
self.buffers.append(sent_dm)
|
|
|
|
self.view.insert_buffer(sent_dm.buffer, name=_(u"Sent direct messages"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
sent_tweets = buffersController.baseBufferController(self.view.nb, "get_user_timeline", "sent_tweets", session, session.db["user_name"], bufferType="dmPanel", screen_name=session.db["user_name"])
|
|
|
|
self.buffers.append(sent_tweets)
|
|
|
|
self.view.insert_buffer(sent_tweets.buffer, name=_(u"Sent tweets"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
if session.settings["other_buffers"]["show_favourites"] == True:
|
|
|
|
favourites = buffersController.baseBufferController(self.view.nb, "get_favorites", "favourites", session, session.db["user_name"])
|
|
|
|
self.buffers.append(favourites)
|
2014-12-31 07:07:27 +01:00
|
|
|
|
2014-11-13 03:41:29 +01:00
|
|
|
self.view.insert_buffer(favourites.buffer, name=_(u"Favourites"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
if session.settings["other_buffers"]["show_followers"] == True:
|
|
|
|
followers = buffersController.peopleBufferController(self.view.nb, "get_followers_list", "followers", session, session.db["user_name"], screen_name=session.db["user_name"])
|
|
|
|
self.buffers.append(followers)
|
|
|
|
self.view.insert_buffer(followers.buffer, name=_(u"Followers"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
if session.settings["other_buffers"]["show_friends"] == True:
|
|
|
|
friends = buffersController.peopleBufferController(self.view.nb, "get_friends_list", "friends", session, session.db["user_name"], screen_name=session.db["user_name"])
|
|
|
|
self.buffers.append(friends)
|
|
|
|
self.view.insert_buffer(friends.buffer, name=_(u"Friends"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
if session.settings["other_buffers"]["show_blocks"] == True:
|
|
|
|
blocks = buffersController.peopleBufferController(self.view.nb, "list_blocks", "blocked", session, session.db["user_name"])
|
|
|
|
self.buffers.append(blocks)
|
|
|
|
self.view.insert_buffer(blocks.buffer, name=_(u"Blocked users"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
if session.settings["other_buffers"]["show_muted_users"] == True:
|
|
|
|
muted = buffersController.peopleBufferController(self.view.nb, "get_muted_users_list", "muted", session, session.db["user_name"])
|
|
|
|
self.buffers.append(muted)
|
|
|
|
self.view.insert_buffer(muted.buffer, name=_(u"Muted users"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
if session.settings["other_buffers"]["show_events"] == True:
|
|
|
|
events = buffersController.eventsBufferController(self.view.nb, "events", session, session.db["user_name"], bufferType="dmPanel", screen_name=session.db["user_name"])
|
|
|
|
self.buffers.append(events)
|
|
|
|
self.view.insert_buffer(events.buffer, name=_(u"Events"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
timelines = buffersController.emptyPanel(self.view.nb, "timelines", session.db["user_name"])
|
|
|
|
self.buffers.append(timelines)
|
|
|
|
self.view.insert_buffer(timelines.buffer , name=_(u"Timelines"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
for i in session.settings["other_buffers"]["timelines"]:
|
|
|
|
tl = buffersController.baseBufferController(self.view.nb, "get_user_timeline", "%s-timeline" % (i,), session, session.db["user_name"], bufferType=None, screen_name=i)
|
|
|
|
self.buffers.append(tl)
|
|
|
|
self.view.insert_buffer(tl.buffer, name=_(u"Timeline for {}".format(i)), pos=self.view.search("timelines", session.db["user_name"]))
|
|
|
|
searches = buffersController.emptyPanel(self.view.nb, "searches", session.db["user_name"])
|
|
|
|
self.buffers.append(searches)
|
|
|
|
self.view.insert_buffer(searches.buffer , name=_(u"Searches"), pos=self.view.search(session.db["user_name"], session.db["user_name"]))
|
|
|
|
for i in session.settings["other_buffers"]["tweet_searches"]:
|
|
|
|
tl = buffersController.searchBufferController(self.view.nb, "search", "%s-searchterm" % (i,), session, session.db["user_name"], bufferType="searchPanel", q=i)
|
|
|
|
self.buffers.append(tl)
|
|
|
|
self.view.insert_buffer(tl.buffer, name=_(u"Search for {}".format(i)), pos=self.view.search("searches", session.db["user_name"]))
|
|
|
|
tl.timer = RepeatingTimer(180, tl.start_stream)
|
|
|
|
tl.timer.start()
|
|
|
|
|
2015-01-02 04:40:57 +01:00
|
|
|
def search(self, *args, **kwargs):
|
2015-01-19 00:19:39 +01:00
|
|
|
log.debug("Creating a new search...")
|
2014-11-13 03:41:29 +01:00
|
|
|
dlg = dialogs.search.searchDialog()
|
|
|
|
if dlg.get_response() == widgetUtils.OK:
|
|
|
|
term = dlg.get("term")
|
|
|
|
buffer = self.get_best_buffer()
|
|
|
|
if dlg.get("tweets") == True:
|
|
|
|
if term not in buffer.session.settings["other_buffers"]["tweet_searches"]:
|
|
|
|
buffer.session.settings["other_buffers"]["tweet_searches"].append(term)
|
|
|
|
search = buffersController.searchBufferController(self.view.nb, "search", "%s-searchterm" % (term,), buffer.session, buffer.session.db["user_name"], bufferType="searchPanel", q=term)
|
|
|
|
else:
|
2015-01-19 00:19:39 +01:00
|
|
|
log.error("A buffer for the %s search term is already created. You can't create a duplicate buffer." % (term,))
|
2014-11-13 03:41:29 +01:00
|
|
|
return
|
|
|
|
elif dlg.get("users") == True:
|
|
|
|
search = buffersController.searchPeopleBufferController(self.view.nb, "search_users", "%s-searchUser" % (term,), buffer.session, buffer.session.db["user_name"], bufferType=None, q=term)
|
|
|
|
self.buffers.append(search)
|
|
|
|
search.start_stream()
|
|
|
|
self.view.insert_buffer(search.buffer, name=_(u"Search for {}".format(term)), pos=self.view.search("searches", buffer.session.db["user_name"]))
|
|
|
|
search.timer = RepeatingTimer(180, search.start_stream)
|
|
|
|
search.timer.start()
|
|
|
|
dlg.Destroy()
|
|
|
|
|
|
|
|
def edit_keystrokes(self, event=None):
|
|
|
|
dlg = keystrokeEditor.keystrokeEditor()
|
|
|
|
dlg.put_keystrokes(**config.app["keymap"])
|
|
|
|
dlg.ShowModal()
|
|
|
|
dlg.Destroy()
|
|
|
|
|
2014-12-30 03:58:30 +01:00
|
|
|
def learn_sounds(self, *args, **kwargs):
|
2015-01-20 22:40:33 +01:00
|
|
|
buffer = self.get_best_buffer()
|
|
|
|
SoundsTutorial.soundsTutorial(buffer.session)
|
2014-12-30 03:58:30 +01:00
|
|
|
|
2014-11-13 03:41:29 +01:00
|
|
|
def view_user_lists(self, users):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def add_to_list(self, user):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def remove_from_list(self, user):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def lists_manager(self):
|
|
|
|
pass
|
|
|
|
|
2015-01-20 22:40:33 +01:00
|
|
|
def configuration(self, *args, **kwargs):
|
|
|
|
d = settings.globalSettingsController()
|
|
|
|
if d.response == widgetUtils.OK:
|
|
|
|
d.save_configuration()
|
2015-01-25 09:38:17 +01:00
|
|
|
if d.needs_restart == True:
|
|
|
|
commonMessageDialogs.needs_restart()
|
|
|
|
restart.restart_program()
|
|
|
|
|
|
|
|
def accountConfiguration(self, *args, **kwargs):
|
|
|
|
buff = self.get_best_buffer()
|
2015-01-28 00:09:28 +01:00
|
|
|
manager.manager.set_current_session(buff.session.session_id)
|
|
|
|
d = settings.accountSettingsController(buff, self)
|
|
|
|
if d.response == widgetUtils.OK:
|
|
|
|
d.save_configuration()
|
|
|
|
if d.needs_restart == True:
|
|
|
|
commonMessageDialogs.needs_restart()
|
|
|
|
buff.session.settings.write()
|
|
|
|
restart.restart_program()
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def update_profile(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def show_document(self, document):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def report_error(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def check_for_updates(self, show_msg=True):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def show_details_for_user(self, user):
|
|
|
|
pass
|
|
|
|
|
2015-01-05 12:33:09 +01:00
|
|
|
def delete(self, *args, **kwargs):
|
|
|
|
buffer = self.view.get_current_buffer()
|
|
|
|
if hasattr(buffer, "account"):
|
|
|
|
buffer = self.search_buffer(buffer.name, buffer.account)
|
|
|
|
buffer.destroy_status()
|
2014-11-13 03:41:29 +01:00
|
|
|
|
2015-01-02 04:40:57 +01:00
|
|
|
def exit(self, *args, **kwargs):
|
2015-01-20 22:40:33 +01:00
|
|
|
if config.app["app-settings"]["ask_at_exit"] == True:
|
|
|
|
answer = commonMessageDialogs.exit_dialog()
|
|
|
|
if answer == widgetUtils.NO: return
|
2015-01-19 00:19:39 +01:00
|
|
|
log.debug("Exiting...")
|
2015-01-20 22:40:33 +01:00
|
|
|
log.debug("Saving global configuration...")
|
|
|
|
config.app.write()
|
2015-01-13 19:31:37 +01:00
|
|
|
for item in session_.sessions:
|
2015-01-19 00:19:39 +01:00
|
|
|
log.debug("Saving config for %s session" % (session_.sessions[item].session_id,))
|
2015-01-13 19:31:37 +01:00
|
|
|
session_.sessions[item].settings.write()
|
2015-01-19 00:19:39 +01:00
|
|
|
log.debug("Disconnecting streams for %s session" % (session_.sessions[item].session_id,))
|
2015-01-13 19:31:37 +01:00
|
|
|
session_.sessions[item].main_stream.disconnect()
|
|
|
|
session_.sessions[item].timelinesStream.disconnect()
|
2015-01-20 22:40:33 +01:00
|
|
|
session_.sessions[item].sound.cleaner.cancel()
|
2014-11-13 03:41:29 +01:00
|
|
|
widgetUtils.exit_application()
|
|
|
|
|
2015-02-01 07:49:03 +01:00
|
|
|
def follow(self, *args, **kwargs):
|
|
|
|
buff = self.get_current_buffer()
|
|
|
|
if not hasattr(buff, "get_right_tweet"): return
|
|
|
|
tweet = buff.get_right_tweet()
|
|
|
|
if buff.type != "people":
|
|
|
|
users = utils.get_all_users(tweet, buff.session.db)
|
|
|
|
else:
|
|
|
|
users = [tweet["screen_name"]]
|
|
|
|
u = userActionsController.userActionsController(buff, users)
|
|
|
|
|
|
|
|
def unfollow(self, *args, **kwargs):
|
|
|
|
buff = self.get_current_buffer()
|
|
|
|
if not hasattr(buff, "get_right_tweet"): return
|
|
|
|
tweet = buff.get_right_tweet()
|
|
|
|
if buff.type != "people":
|
|
|
|
users = utils.get_all_users(tweet, buff.session.db)
|
|
|
|
else:
|
|
|
|
users = [tweet["screen_name"]]
|
|
|
|
u = userActionsController.userActionsController(buff, users, "unfollow")
|
|
|
|
|
|
|
|
def mute(self, *args, **kwargs):
|
|
|
|
buff = self.get_current_buffer()
|
|
|
|
if not hasattr(buff, "get_right_tweet"): return
|
|
|
|
tweet = buff.get_right_tweet()
|
|
|
|
if buff.type != "people":
|
|
|
|
users = utils.get_all_users(tweet, buff.session.db)
|
|
|
|
else:
|
|
|
|
users = [tweet["screen_name"]]
|
|
|
|
u = userActionsController.userActionsController(buff, users, "mute")
|
|
|
|
|
|
|
|
def unmute(self, *args, **kwargs):
|
|
|
|
buff = self.get_current_buffer()
|
|
|
|
if not hasattr(buff, "get_right_tweet"): return
|
|
|
|
tweet = buff.get_right_tweet()
|
|
|
|
if buff.type != "people":
|
|
|
|
users = utils.get_all_users(tweet, buff.session.db)
|
|
|
|
else:
|
|
|
|
users = [tweet["screen_name"]]
|
|
|
|
u = userActionsController.userActionsController(buff, users, "unmute")
|
|
|
|
|
|
|
|
def block(self, *args, **kwargs):
|
|
|
|
buff = self.get_current_buffer()
|
|
|
|
if not hasattr(buff, "get_right_tweet"): return
|
|
|
|
tweet = buff.get_right_tweet()
|
|
|
|
if buff.type != "people":
|
|
|
|
users = utils.get_all_users(tweet, buff.session.db)
|
|
|
|
else:
|
|
|
|
users = [tweet["screen_name"]]
|
|
|
|
u = userActionsController.userActionsController(buff, users, "block")
|
|
|
|
|
|
|
|
def unblock(self, *args, **kwargs):
|
|
|
|
buff = self.get_current_buffer()
|
|
|
|
if not hasattr(buff, "get_right_tweet"): return
|
|
|
|
tweet = buff.get_right_tweet()
|
|
|
|
if buff.type != "people":
|
|
|
|
users = utils.get_all_users(tweet, buff.session.db)
|
|
|
|
else:
|
|
|
|
users = [tweet["screen_name"]]
|
|
|
|
u = userActionsController.userActionsController(buff, users, "unblock")
|
|
|
|
|
|
|
|
def report(self, *args, **kwargs):
|
|
|
|
buff = self.get_current_buffer()
|
|
|
|
if not hasattr(buff, "get_right_tweet"): return
|
|
|
|
tweet = buff.get_right_tweet()
|
|
|
|
if buff.type != "people":
|
|
|
|
users = utils.get_all_users(tweet, buff.session.db)
|
|
|
|
else:
|
|
|
|
users = [tweet["screen_name"]]
|
|
|
|
u = userActionsController.userActionsController(buff, users, "report")
|
2014-11-13 03:41:29 +01:00
|
|
|
|
2014-11-13 05:37:52 +01:00
|
|
|
def post_tweet(self, event=None):
|
|
|
|
buffer = self.get_best_buffer()
|
2015-01-05 13:05:31 +01:00
|
|
|
buffer.post_tweet()
|
2014-11-13 03:41:29 +01:00
|
|
|
|
2015-01-02 16:38:44 +01:00
|
|
|
def post_reply(self, *args, **kwargs):
|
2015-01-05 12:33:09 +01:00
|
|
|
buffer = self.get_current_buffer()
|
2015-01-02 16:38:44 +01:00
|
|
|
if buffer.name == "sent_direct_messages" or buffer.name == "sent-tweets": return
|
|
|
|
elif buffer.name == "direct_messages":
|
|
|
|
buffer.direct_message()
|
|
|
|
else:
|
|
|
|
buffer.reply()
|
2014-11-13 03:41:29 +01:00
|
|
|
|
2015-01-19 19:15:57 +01:00
|
|
|
def send_dm(self, *args, **kwargs):
|
2015-01-05 12:33:09 +01:00
|
|
|
buffer = self.get_current_buffer()
|
2015-01-02 16:38:44 +01:00
|
|
|
if buffer.name == "sent_direct_messages" or buffer.name == "sent-tweets": return
|
|
|
|
else:
|
|
|
|
buffer.direct_message()
|
2014-11-13 03:41:29 +01:00
|
|
|
|
2015-01-02 17:53:33 +01:00
|
|
|
def post_retweet(self, *args, **kwargs):
|
2015-01-05 12:33:09 +01:00
|
|
|
buffer = self.get_current_buffer()
|
2015-01-02 17:53:33 +01:00
|
|
|
if buffer.type == "dm" or buffer.type == "people" or buffer.type == "events":
|
|
|
|
return
|
|
|
|
else:
|
|
|
|
buffer.retweet()
|
2014-11-13 03:41:29 +01:00
|
|
|
|
2015-01-02 17:53:33 +01:00
|
|
|
def add_to_favourites(self, *args, **kwargs):
|
2015-01-05 12:33:09 +01:00
|
|
|
buffer = self.get_current_buffer()
|
2015-01-02 17:53:33 +01:00
|
|
|
if buffer.type == "dm" or buffer.type == "people" or buffer.type == "events":
|
|
|
|
return
|
|
|
|
else:
|
|
|
|
id = buffer.get_tweet()["id"]
|
|
|
|
call_threaded(buffer.session.api_call, call_name="create_favorite", _sound="favourite.ogg", id=id)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
2015-01-02 17:53:33 +01:00
|
|
|
def remove_from_favourites(self, *args, **kwargs):
|
2015-01-05 12:33:09 +01:00
|
|
|
buffer = self.get_current_buffer()
|
2015-01-02 17:53:33 +01:00
|
|
|
if buffer.type == "dm" or buffer.type == "people" or buffer.type == "events":
|
|
|
|
return
|
|
|
|
else:
|
|
|
|
id = buffer.get_tweet()["id"]
|
|
|
|
call_threaded(buffer.session.api_call, call_name="destroy_favorite", id=id)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
2015-01-05 12:33:09 +01:00
|
|
|
def view_item(self, *args, **kwargs):
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
if buffer.type == "baseBuffer" or buffer.type == "favourites_timeline" or buffer.type == "list" or buffer.type == "search":
|
|
|
|
try:
|
2015-01-20 22:40:33 +01:00
|
|
|
tweet_id = buffer.get_right_tweet()["id"]
|
|
|
|
tweet = buffer.session.twitter.twitter.show_status(id=tweet_id)
|
2015-01-05 12:33:09 +01:00
|
|
|
msg = messages.viewTweet(tweet, )
|
|
|
|
except TwythonError:
|
2015-01-25 09:38:17 +01:00
|
|
|
non_tweet = buffer.get_formatted_message()
|
2015-01-05 12:33:09 +01:00
|
|
|
msg = messages.viewTweet(non_tweet, False)
|
|
|
|
elif buffer.type == "account" or buffer.type == "empty":
|
|
|
|
return
|
|
|
|
else:
|
2015-01-25 09:38:17 +01:00
|
|
|
non_tweet = buffer.get_formatted_message()
|
2015-01-05 12:33:09 +01:00
|
|
|
msg = messages.viewTweet(non_tweet, False)
|
|
|
|
|
2014-11-13 03:41:29 +01:00
|
|
|
def open_timeline(self, user, timeline_tipe):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def remove_buffer(self):
|
|
|
|
pass
|
|
|
|
|
2015-01-19 19:15:57 +01:00
|
|
|
def show_hide(self, *args, **kwargs):
|
|
|
|
km = self.create_invisible_keyboard_shorcuts()
|
|
|
|
if self.showing == True:
|
|
|
|
if config.app["app-settings"]["use_invisible_keyboard_shorcuts"] == False:
|
|
|
|
self.register_invisible_keyboard_shorcuts(km)
|
|
|
|
self.view.Hide()
|
2015-01-21 05:07:13 +01:00
|
|
|
self.fix_wrong_buffer()
|
2015-01-19 19:15:57 +01:00
|
|
|
self.showing = False
|
|
|
|
else:
|
|
|
|
if config.app["app-settings"]["use_invisible_keyboard_shorcuts"] == False:
|
|
|
|
self.unregister_invisible_keyboard_shorcuts(km)
|
|
|
|
self.view.Show()
|
|
|
|
self.showing = True
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def toggle_global_mute(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def toggle_mute(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def toggle_autoread(self):
|
|
|
|
pass
|
|
|
|
|
2015-01-19 19:15:57 +01:00
|
|
|
def skip_buffer(self, forward=True):
|
|
|
|
buff = self.get_current_buffer()
|
|
|
|
if buff.invisible == False:
|
|
|
|
self.view.advance_selection(forward)
|
|
|
|
|
|
|
|
def buffer_changed(self, *args, **kwargs):
|
2015-01-28 00:09:28 +01:00
|
|
|
if self.get_current_buffer().account != self.current_account:
|
|
|
|
self.current_account = self.get_current_buffer().account
|
2015-01-19 19:15:57 +01:00
|
|
|
|
2015-01-21 05:07:13 +01:00
|
|
|
def fix_wrong_buffer(self):
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
if buffer.session == None:
|
|
|
|
self.right()
|
|
|
|
|
2015-01-19 19:15:57 +01:00
|
|
|
def up(self, *args, **kwargs):
|
|
|
|
page = self.get_current_buffer()
|
|
|
|
position = page.buffer.list.get_selected()
|
|
|
|
index = position-1
|
|
|
|
try:
|
|
|
|
page.buffer.list.select_item(index)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
if position == page.buffer.list.get_selected():
|
2015-01-20 22:40:33 +01:00
|
|
|
page.session.sound.play("limit.ogg")
|
2015-01-19 19:15:57 +01:00
|
|
|
try:
|
|
|
|
output.speak(page.get_message())
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
def down(self, *args, **kwargs):
|
|
|
|
page = self.get_current_buffer()
|
|
|
|
position = page.buffer.list.get_selected()
|
|
|
|
index = position+1
|
|
|
|
try:
|
|
|
|
page.buffer.list.select_item(index)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
if position == page.buffer.list.get_selected():
|
2015-01-20 22:40:33 +01:00
|
|
|
page.session.sound.play("limit.ogg")
|
2015-01-19 19:15:57 +01:00
|
|
|
try:
|
|
|
|
output.speak(page.get_message())
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
def left(self, *args, **kwargs):
|
|
|
|
buff = self.view.get_current_buffer_pos()
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
if buff == self.get_first_buffer(buffer.account) or buff == 0:
|
|
|
|
self.view.change_buffer(self.get_last_buffer(buffer.account))
|
|
|
|
else:
|
|
|
|
self.view.change_buffer(buff-1)
|
|
|
|
while self.get_current_buffer().invisible == False: self.skip_buffer(False)
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
try:
|
|
|
|
msg = _(u"%s, %s of %s") % (self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
|
|
|
except:
|
|
|
|
msg = _(u"%s. Empty") % (self.view.get_buffer_text(),)
|
|
|
|
output.speak(msg)
|
|
|
|
|
|
|
|
def right(self, *args, **kwargs):
|
|
|
|
buff = self.view.get_current_buffer_pos()
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
if buff == self.get_last_buffer(buffer.account) or buff+1 == self.view.get_buffer_count():
|
|
|
|
self.view.change_buffer(self.get_first_buffer(buffer.account))
|
|
|
|
else:
|
|
|
|
self.view.change_buffer(buff+1)
|
|
|
|
while self.get_current_buffer().invisible == False: self.skip_buffer(True)
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
try:
|
|
|
|
msg = _(u"%s, %s of %s") % (self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
|
|
|
except:
|
|
|
|
msg = _(u"%s. Empty") % (self.view.get_buffer_text(),)
|
|
|
|
output.speak(msg)
|
|
|
|
|
|
|
|
def next_account(self, *args, **kwargs):
|
|
|
|
index = self.accounts.index(self.current_account)
|
|
|
|
if index+1 == len(self.accounts):
|
|
|
|
index = 0
|
|
|
|
else:
|
|
|
|
index = index+1
|
|
|
|
account = self.accounts[index]
|
|
|
|
self.current_account = account
|
|
|
|
buff = self.view.search("home_timeline", account)
|
|
|
|
self.view.change_buffer(buff)
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
try:
|
|
|
|
msg = _(u"%s. %s, %s of %s") % (buffer.account, self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
|
|
|
except:
|
|
|
|
msg = _(u"%s. Empty") % (self.view.get_buffer_text(),)
|
|
|
|
output.speak(msg)
|
|
|
|
|
|
|
|
def previous_account(self, *args, **kwargs):
|
|
|
|
index = self.accounts.index(self.current_account)
|
|
|
|
if index-1 < 0:
|
|
|
|
index = len(self.accounts)-1
|
|
|
|
else:
|
|
|
|
index = index-1
|
|
|
|
account = self.accounts[index]
|
|
|
|
self.current_account = account
|
|
|
|
buff = self.view.search("home_timeline", account)
|
|
|
|
self.view.change_buffer(buff)
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
try:
|
|
|
|
msg = _(u"%s. %s, %s of %s") % (buffer.account, self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count())
|
|
|
|
except:
|
|
|
|
msg = _(u"%s. Empty") % (self.view.get_buffer_text(),)
|
|
|
|
output.speak(msg)
|
|
|
|
|
2015-01-25 09:38:17 +01:00
|
|
|
def go_home(self):
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
buffer.buffer.list.select_item(0)
|
|
|
|
try:
|
|
|
|
output.speak(buffer.get_message())
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
def go_end(self):
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
buffer.buffer.list.select_item(buffer.buffer.list.get_count()-1)
|
|
|
|
try:
|
|
|
|
output.speak(buffer.get_message())
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
def go_page_up(self):
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
if buffer.buffer.list.get_selected() <= 20:
|
|
|
|
index = 0
|
|
|
|
else:
|
|
|
|
index = buffer.buffer.list.get_selected() - 20
|
|
|
|
buffer.buffer.list.select_item(index)
|
|
|
|
try:
|
|
|
|
output.speak(buffer.get_message())
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
|
|
|
def go_page_down(self):
|
|
|
|
buffer = self.get_current_buffer()
|
|
|
|
if buffer.buffer.list.get_selected() >= buffer.buffer.list.get_count() - 20:
|
|
|
|
index = buffer.buffer.list.get_count()-1
|
|
|
|
else:
|
|
|
|
index = buffer.buffer.list.get_selected() + 20
|
|
|
|
buffer.buffer.list.select_item(index)
|
|
|
|
try:
|
|
|
|
output.speak(buffer.get_message())
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
|
2015-01-20 22:40:33 +01:00
|
|
|
def url(self, *args, **kwargs):
|
|
|
|
self.get_current_buffer().url()
|
|
|
|
|
|
|
|
def audio(self, *args, **kwargs):
|
|
|
|
self.get_current_buffer().audio()
|
|
|
|
def volume_down(self, *args, **kwargs):
|
|
|
|
self.get_current_buffer().volume_down()
|
|
|
|
|
|
|
|
def volume_up(self, *args, **kwargs):
|
|
|
|
self.get_current_buffer().volume_up()
|
|
|
|
|
2015-01-19 19:15:57 +01:00
|
|
|
def create_invisible_keyboard_shorcuts(self):
|
|
|
|
keymap = {}
|
|
|
|
for i in config.app["keymap"]:
|
|
|
|
if hasattr(self, i):
|
|
|
|
keymap[config.app["keymap"][i]] = getattr(self, i)
|
|
|
|
return keymap
|
|
|
|
|
|
|
|
def register_invisible_keyboard_shorcuts(self, keymap):
|
|
|
|
self.keyboard_handler = WXKeyboardHandler(self.view)
|
|
|
|
self.keyboard_handler.register_keys(keymap)
|
|
|
|
|
|
|
|
def unregister_invisible_keyboard_shorcuts(self, keymap):
|
|
|
|
try:
|
|
|
|
self.keyboard_handler.unregister_keys(keymap)
|
|
|
|
del self.keyboard_handler
|
|
|
|
except AttributeError:
|
|
|
|
pass
|
2014-11-13 03:41:29 +01:00
|
|
|
|
2015-01-20 22:40:33 +01:00
|
|
|
def notify(self, session, play_sound=None, message=None, notification=False):
|
2014-11-13 03:41:29 +01:00
|
|
|
if play_sound != None:
|
2015-01-20 22:40:33 +01:00
|
|
|
session.sound.play(play_sound)
|
2014-11-13 03:41:29 +01:00
|
|
|
if message != None:
|
|
|
|
output.speak(message)
|
|
|
|
|
|
|
|
def manage_home_timelines(self, data, user):
|
|
|
|
buffer = self.search_buffer("home_timeline", user)
|
|
|
|
play_sound = "tweet_received.ogg"
|
|
|
|
buffer.add_new_item(data)
|
2015-01-20 22:40:33 +01:00
|
|
|
self.notify(buffer.session, play_sound=play_sound)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def manage_mentions(self, data, user):
|
|
|
|
buffer = self.search_buffer("mentions", user)
|
|
|
|
play_sound = "mention_received.ogg"
|
|
|
|
buffer.add_new_item(data)
|
|
|
|
message = _(u"New mention")
|
2015-01-20 22:40:33 +01:00
|
|
|
self.notify(buffer.session, play_sound=play_sound, message=message)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def manage_direct_messages(self, data, user):
|
|
|
|
buffer = self.search_buffer("direct_messages", user)
|
|
|
|
play_sound = "dm_received.ogg"
|
|
|
|
buffer.add_new_item(data)
|
|
|
|
message = _(u"New direct message")
|
2015-01-20 22:40:33 +01:00
|
|
|
self.notify(buffer.session, play_sound=play_sound, message=message)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def manage_sent_dm(self, data, user):
|
|
|
|
buffer = self.search_buffer("sent_direct_messages", user)
|
|
|
|
play_sound = "dm_sent.ogg"
|
|
|
|
buffer.add_new_item(data)
|
2015-01-20 22:40:33 +01:00
|
|
|
self.notify(buffer.session, play_sound=play_sound)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def manage_sent_tweets(self, data, user):
|
|
|
|
buffer = self.search_buffer("sent_tweets", user)
|
|
|
|
play_sound = "tweet_send.ogg"
|
|
|
|
buffer.add_new_item(data)
|
2015-01-20 22:40:33 +01:00
|
|
|
self.notify(buffer.session, play_sound=play_sound)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def manage_events(self, data, user):
|
|
|
|
buffer = self.search_buffer("events", user)
|
|
|
|
play_sound = "new_event.ogg"
|
|
|
|
buffer.add_new_item(data)
|
2015-01-20 22:40:33 +01:00
|
|
|
self.notify(buffer.session, play_sound=play_sound)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def manage_followers(self, data, user):
|
|
|
|
buffer = self.search_buffer("followers", user)
|
|
|
|
play_sound = "update_followers.ogg"
|
|
|
|
buffer.add_new_item(data)
|
2015-01-20 22:40:33 +01:00
|
|
|
self.notify(buffer.session, play_sound=play_sound)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def manage_friend(self, data, user):
|
|
|
|
buffer = self.search_buffer("friends", user)
|
|
|
|
buffer.add_new_item(data)
|
|
|
|
|
|
|
|
def manage_unfollowing(self, item, user):
|
|
|
|
buffer = self.search_buffer("friends", user)
|
|
|
|
play_sound = "new_event.ogg"
|
|
|
|
buffer.remove_item(item)
|
|
|
|
|
|
|
|
def manage_favourite(self, data, user):
|
|
|
|
buffer = self.search_buffer("favourites", user)
|
|
|
|
play_sound = "favourite.ogg"
|
|
|
|
buffer.add_new_item(data)
|
2015-01-20 22:40:33 +01:00
|
|
|
self.notify(buffer.session, play_sound=play_sound)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def manage_unfavourite(self, item, user):
|
|
|
|
buffer = self.search_buffer("favourites", user)
|
|
|
|
buffer.remove_item(item)
|
|
|
|
|
|
|
|
def manage_blocked_user(self, data, user):
|
|
|
|
buffer = self.search_buffer("blocked", user)
|
|
|
|
buffer.add_new_item(data)
|
|
|
|
|
|
|
|
def manage_unblocked_user(self, item, user):
|
|
|
|
buffer = self.search_buffer("blocked", user)
|
|
|
|
buffer.remove_item(item)
|
|
|
|
|
|
|
|
def manage_item_in_timeline(self, data, user, who):
|
2014-11-13 05:37:52 +01:00
|
|
|
buffer = self.search_buffer("%s-timeline" % (who,), user)
|
2014-11-13 03:41:29 +01:00
|
|
|
play_sound = "tweet_timeline.ogg"
|
|
|
|
buffer.add_new_item(data)
|
2015-01-20 22:40:33 +01:00
|
|
|
self.notify(buffer.session, play_sound=play_sound)
|
2014-11-13 03:41:29 +01:00
|
|
|
|
|
|
|
def editing_keystroke(self, action, parentDialog):
|
|
|
|
print "i've pressed"
|
|
|
|
|
2014-12-31 07:07:27 +01:00
|
|
|
def start_buffers(self, session):
|
2015-01-19 00:19:39 +01:00
|
|
|
log.debug("starting buffers... Session %s" % (session.session_id,))
|
2014-12-31 07:07:27 +01:00
|
|
|
for i in self.buffers:
|
|
|
|
if i.session == session and i.needs_init == True:
|
|
|
|
i.start_stream()
|
2015-01-13 19:31:37 +01:00
|
|
|
log.debug("Starting the streaming endpoint")
|
2014-12-31 07:07:27 +01:00
|
|
|
session.start_streaming()
|
|
|
|
|
2015-01-13 19:31:37 +01:00
|
|
|
def manage_stream_errors(self, session):
|
|
|
|
log.error("An error ocurred with the stream for the %s session. It will be destroyed" % (session,))
|
|
|
|
s = sessions_.session[session]
|
|
|
|
s.listen_stream_error()
|
|
|
|
|
|
|
|
def check_connection(self):
|
|
|
|
for i in session_.sessions:
|
|
|
|
session_.sessions[i].check_connection()
|
|
|
|
|
2015-01-28 00:09:28 +01:00
|
|
|
def create_new_buffer(self, buffer, account, create):
|
|
|
|
buff = self.search_buffer("home_timeline", account)
|
|
|
|
if create == True:
|
|
|
|
if buffer == "favourites":
|
|
|
|
favourites = buffersController.baseBufferController(self.view.nb, "get_favorites", "favourites", buff.session, buff.session.db["user_name"])
|
|
|
|
self.buffers.append(favourites)
|
|
|
|
self.view.insert_buffer(favourites.buffer, name=_(u"Favourites"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
|
|
|
favourites.start_stream()
|
|
|
|
if buffer == "followers":
|
|
|
|
followers = buffersController.peopleBufferController(self.view.nb, "get_followers_list", "followers", buff.session, buff.session.db["user_name"], screen_name=buff.session.db["user_name"])
|
|
|
|
self.buffers.append(followers)
|
|
|
|
self.view.insert_buffer(followers.buffer, name=_(u"Followers"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
|
|
|
followers.start_stream()
|
|
|
|
elif buffer == "friends":
|
|
|
|
friends = buffersController.peopleBufferController(self.view.nb, "get_friends_list", "friends", buff.session, buff.session.db["user_name"], screen_name=buff.session.db["user_name"])
|
|
|
|
self.buffers.append(friends)
|
|
|
|
self.view.insert_buffer(friends.buffer, name=_(u"Friends"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
|
|
|
friends.start_stream()
|
|
|
|
elif buffer == "blocks":
|
|
|
|
blocks = buffersController.peopleBufferController(self.view.nb, "list_blocks", "blocked", buff.session, buff.session.db["user_name"])
|
|
|
|
self.buffers.append(blocks)
|
|
|
|
self.view.insert_buffer(blocks.buffer, name=_(u"Blocked users"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
|
|
|
blocks.start_stream()
|
|
|
|
elif buffer == "mutes":
|
|
|
|
muted = buffersController.peopleBufferController(self.view.nb, "get_muted_users_list", "muted", buff.session, buff.session.db["user_name"])
|
|
|
|
self.buffers.append(muted)
|
|
|
|
self.view.insert_buffer(muted.buffer, name=_(u"Muted users"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
|
|
|
muted.start_stream()
|
|
|
|
elif buffer == "events":
|
|
|
|
events = buffersController.eventsBufferController(self.view.nb, "events", buff.session, buff.session.db["user_name"], bufferType="dmPanel", screen_name=buff.session.db["user_name"])
|
|
|
|
self.buffers.append(events)
|
|
|
|
self.view.insert_buffer(events.buffer, name=_(u"Events"), pos=self.view.search(buff.session.db["user_name"], buff.session.db["user_name"]))
|
|
|
|
|
2014-11-13 03:41:29 +01:00
|
|
|
def __del__(self):
|
|
|
|
config.app.write()
|