2016-02-14 00:06:36 +01:00
# -*- coding: utf-8 -*-
2016-06-05 21:15:40 +02:00
import languageHandler
import arrow
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-03-27 08:11:52 +02:00
import output
2016-05-11 03:23:48 +02:00
import logging
2016-06-29 11:08:37 +02:00
import selector
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-06-08 12:45:03 +02:00
from wxUI import commonMessages , menus
2016-04-11 18:48:35 +02:00
from vk import upload
2016-04-14 00:45:05 +02:00
from vk . exceptions import VkAPIMethodError
2016-02-14 00:06:36 +01:00
2016-05-11 03:23:48 +02:00
log = logging . getLogger ( " controller.buffers " )
2016-02-14 00:06:36 +01:00
class baseBuffer ( object ) :
2016-03-22 09:10:59 +01:00
""" a basic representation of a buffer. Other buffers should be derived from this class """
2016-06-08 12:45:03 +02:00
def get_post ( self ) :
return self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ]
2016-02-14 00:06:36 +01:00
def __init__ ( self , parent = None , name = " " , session = None , composefunc = None , * args , * * kwargs ) :
2016-03-22 09:10:59 +01:00
""" parent wx.Treebook: parent for the buffer panel,
name str : Name for saving this buffer ' s data in the local storage variable,
session sessionmanager . session . vkSession : Session for performing operations in the Vk API . This session should be logged in when this class is instanciated .
composefunc str : This function will be called for composing the result which will be put in the listCtrl . Composefunc should existss in the sessionmanager . session module .
args and kwargs will be passed to get_items ( ) """
2016-02-14 00:06:36 +01:00
super ( baseBuffer , self ) . __init__ ( )
self . args = args
self . kwargs = kwargs
self . create_tab ( parent )
2016-03-22 09:10:59 +01:00
# Add the name to the new control so we could look for it when needed.
2016-02-14 00:06:36 +01:00
self . tab . name = name
self . session = session
self . compose_function = composefunc
self . update_function = " get_page "
self . name = name
self . connect_events ( )
2016-06-08 12:45:03 +02:00
self . user_key = " source_id "
self . post_key = " post_id "
2016-02-14 00:06:36 +01:00
def create_tab ( self , parent ) :
2016-03-22 09:10:59 +01:00
""" Creates the Wx panel. """
2016-02-14 00:06:36 +01:00
self . tab = home . homeTab ( parent )
def insert ( self , item , reversed = False ) :
2016-03-22 09:10:59 +01:00
""" Add a new item to the list. Uses session.composefunc for parsing the dictionary and create a valid result for putting it in the list. """
2016-02-14 00:06:36 +01:00
item_ = getattr ( session , self . compose_function ) ( item , self . session )
self . tab . list . insert_item ( reversed , * item_ )
2016-02-24 00:49:55 +01:00
def get_items ( self , show_nextpage = False ) :
2016-03-23 18:48:30 +01:00
""" Retrieves items from the VK API. This function is called repeatedly by the main controller and users could call it implicitly as well with the update buffer option.
2016-04-14 00:45:05 +02:00
show_nextpage boolean : If it ' s true, it will try to load previous results.
"""
retrieved = True # Control variable for handling unauthorised/connection errors.
try :
num = getattr ( self . session , " get_newsfeed " ) ( show_nextpage = show_nextpage , name = self . name , * self . args , * * self . kwargs )
except VkAPIMethodError as err :
print ( u " Error {0} : {1} " . format ( err . code , err . message ) )
retrieved = err . code
return retrieved
2016-02-24 00:49:55 +01:00
if show_nextpage == False :
2016-02-14 00:06:36 +01:00
if self . tab . list . get_count ( ) > 0 and num > 0 :
print " inserting a value "
2016-03-23 09:15:52 +01:00
v = [ i for i in self . session . db [ self . name ] [ " items " ] [ : num ] ]
v . reverse ( )
[ self . insert ( i , True ) for i in v ]
2016-02-14 00:06:36 +01:00
else :
[ self . insert ( i ) for i in self . session . db [ self . name ] [ " items " ] [ : num ] ]
2016-02-24 00:49:55 +01:00
else :
if num > 0 :
[ self . insert ( i , False ) for i in self . session . db [ self . name ] [ " items " ] [ : num ] ]
2016-04-14 00:45:05 +02:00
return retrieved
2016-02-24 00:49:55 +01:00
2016-03-31 18:33:02 +02:00
def get_more_items ( self ) :
2016-02-24 00:49:55 +01:00
self . get_items ( show_nextpage = True )
2016-02-14 00:06:36 +01:00
def post ( self , * args , * * kwargs ) :
p = messages . post ( title = _ ( u " Write your post " ) , caption = " " , text = " " )
if p . message . get_response ( ) == widgetUtils . OK :
2016-04-11 18:48:35 +02:00
call_threaded ( self . do_last , p = p )
def do_last ( self , p ) :
msg = p . message . get_text ( ) . encode ( " utf-8 " )
privacy_opts = p . get_privacy_options ( )
attachments = " "
if hasattr ( p , " attachments " ) :
attachments = self . upload_attachments ( p . 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 )
pub . sendMessage ( " posted " , buffer = self . name )
2016-02-23 12:48:05 +01:00
p . message . Destroy ( )
2016-02-14 00:06:36 +01:00
2016-04-11 18:48:35 +02:00
def upload_attachments ( self , attachments ) :
# To do: Check the caption and description fields for this kind of attachments.
local_attachments = " "
uploader = upload . VkUpload ( self . session . vk . client )
for i in attachments :
if i [ " type " ] == " photo " :
photos = i [ " file " ]
description = i [ " description " ]
r = uploader . photo_wall ( photos , caption = description )
id = r [ 0 ] [ " id " ]
owner_id = r [ 0 ] [ " owner_id " ]
# self.session.vk.client.photos.edit(photo_id=id, owner_id=owner_id, caption=description)
local_attachments + = " photo {0} _ {1} , " . format ( owner_id , id )
return local_attachments
2016-02-14 00:06:36 +01:00
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 )
2016-06-08 12:45:03 +02:00
widgetUtils . connect_event ( self . tab . list . list , wx . EVT_LIST_ITEM_RIGHT_CLICK , self . show_menu )
widgetUtils . connect_event ( self . tab . list . list , wx . EVT_LIST_KEY_DOWN , self . show_menu_by_key )
2016-06-05 21:15:40 +02:00
self . tab . set_focus_function ( self . onFocus )
2016-02-15 12:43:40 +01:00
2016-06-08 12:45:03 +02:00
def show_menu ( self , ev , pos = 0 , * args , * * kwargs ) :
if self . tab . list . get_count ( ) == 0 : return
menu = self . get_menu ( )
if pos != 0 :
self . tab . PopupMenu ( menu , pos )
else :
self . tab . PopupMenu ( menu , ev . GetPosition ( ) )
def show_menu_by_key ( self , ev ) :
if self . tab . list . get_count ( ) == 0 :
return
if ev . GetKeyCode ( ) == wx . WXK_WINDOWS_MENU :
self . show_menu ( widgetUtils . MENU , pos = self . tab . list . list . GetPosition ( ) )
def get_menu ( self ) :
m = menus . postMenu ( )
p = self . get_post ( )
if p . has_key ( " likes " ) == False :
m . like . Enable ( False )
elif p [ " likes " ] [ " user_likes " ] == 1 :
m . like . Enable ( False )
m . dislike . Enable ( True )
if p . has_key ( " comments " ) == False :
m . comment . Enable ( False )
widgetUtils . connect_event ( m , widgetUtils . MENU , self . open_post , menuitem = m . open )
widgetUtils . connect_event ( m , widgetUtils . MENU , self . do_like , menuitem = m . like )
widgetUtils . connect_event ( m , widgetUtils . MENU , self . do_dislike , menuitem = m . dislike )
widgetUtils . connect_event ( m , widgetUtils . MENU , self . do_comment , menuitem = m . comment )
return m
def do_like ( self , * args , * * kwargs ) :
post = self . get_post ( )
user = post [ self . user_key ]
id = post [ self . post_key ]
if post . has_key ( " type " ) :
type_ = post [ " type " ]
else :
type_ = " post "
l = self . session . vk . client . likes . add ( owner_id = user , item_id = id , type = type_ )
self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ] [ " likes " ] [ " count " ] = l [ " likes " ]
self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ] [ " likes " ] [ " user_likes " ] = 1
output . speak ( _ ( u " You liked this " ) )
def do_dislike ( self , * args , * * kwargs ) :
post = self . get_post ( )
user = post [ self . user_key ]
id = post [ self . post_key ]
if post . has_key ( " type " ) :
type_ = post [ " type " ]
else :
type_ = " post "
l = self . session . vk . client . likes . delete ( owner_id = user , item_id = id , type = type_ )
self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ] [ " likes " ] [ " count " ] = l [ " likes " ]
self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ] [ " likes " ] [ " user_likes " ] = 2
output . speak ( _ ( u " You don ' t like this " ) )
def do_comment ( self , * args , * * kwargs ) :
comment = messages . comment ( title = _ ( u " Add a comment " ) , caption = " " , text = " " )
if comment . message . get_response ( ) == widgetUtils . OK :
msg = comment . message . get_text ( ) . encode ( " utf-8 " )
post = self . get_post ( )
try :
user = post [ self . user_key ]
id = post [ self . post_key ]
self . session . vk . client . wall . addComment ( owner_id = user , post_id = id , text = msg )
output . speak ( _ ( u " You ' ve posted a comment " ) )
except Exception as msg :
print msg
2016-02-15 12:43:40 +01:00
def get_event ( self , ev ) :
2016-02-20 00:36:19 +01:00
if ev . GetKeyCode ( ) == wx . WXK_RETURN and ev . ControlDown ( ) and ev . ShiftDown ( ) : event = " pause_audio "
2016-02-22 12:04:30 +01:00
elif 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 ) ( )
2016-02-22 12:53:37 +01:00
except AttributeError :
2016-02-15 12:43:40 +01:00
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
2016-02-16 23:32:40 +01:00
def play_audio ( self , * args , * * kwargs ) :
post = self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ]
if post . has_key ( " type " ) and post [ " type " ] == " audio " :
2016-03-26 16:08:41 +01:00
pub . sendMessage ( " play-audio " , audio_object = post [ " audio " ] [ " items " ] [ 0 ] )
2016-02-16 23:32:40 +01:00
2016-06-08 12:45:03 +02:00
def open_post ( self , * args , * * kwargs ) :
2016-02-18 00:37:57 +01:00
post = self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ]
if post . has_key ( " type " ) and post [ " type " ] == " audio " :
2016-02-24 17:30:07 +01:00
a = posts . audio ( self . session , post [ " audio " ] [ " items " ] )
2016-02-18 00:37:57 +01:00
a . dialog . get_response ( )
2016-02-23 12:48:05 +01:00
a . dialog . Destroy ( )
2016-02-18 00:37:57 +01:00
elif post . has_key ( " type " ) and post [ " type " ] == " friend " :
pub . sendMessage ( " open-post " , post_object = post , controller_ = " friendship " )
else :
pub . sendMessage ( " open-post " , post_object = post , controller_ = " postController " )
2016-02-20 00:36:19 +01:00
def pause_audio ( self , * args , * * kwargs ) :
player . player . pause ( )
2016-04-14 00:45:05 +02:00
def remove_buffer ( self , mandatory ) : return False
2016-03-27 08:11:52 +02:00
2016-04-12 22:36:30 +02:00
def get_users ( self ) :
post = self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ]
if post . has_key ( " type " ) == False :
2016-04-15 16:06:18 +02:00
return [ post [ " from_id " ] ]
2016-04-12 22:36:30 +02:00
else :
return [ post [ " source_id " ] ]
2016-06-05 21:15:40 +02:00
def onFocus ( self , * args , * * kwargs ) :
""" Function executed when the item in a list is selected.
For this buffer it updates the date of posts in the list . """
post = self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ]
original_date = arrow . get ( post [ " date " ] )
created_at = original_date . humanize ( locale = languageHandler . getLanguage ( ) )
self . tab . list . list . SetStringItem ( self . tab . list . get_selected ( ) , 2 , created_at )
2016-02-14 00:06:36 +01:00
class feedBuffer ( baseBuffer ) :
2016-02-24 00:49:55 +01:00
def get_items ( self , show_nextpage = False ) :
2016-04-14 00:45:05 +02:00
retrieved = True
try :
num = getattr ( self . session , " get_page " ) ( show_nextpage = show_nextpage , name = self . name , * self . args , * * self . kwargs )
print num
except VkAPIMethodError as err :
print ( u " Error {0} : {1} " . format ( err . code , err . message ) )
retrieved = err . code
return retrieved
2016-02-24 00:49:55 +01:00
if show_nextpage == False :
2016-02-14 00:06:36 +01:00
if self . tab . list . get_count ( ) > 0 and num > 0 :
print " inserting a value "
2016-03-23 09:15:52 +01:00
v = [ i for i in self . session . db [ self . name ] [ " items " ] [ : num ] ]
v . reverse ( )
[ self . insert ( i , True ) for i in v ]
2016-02-14 00:06:36 +01:00
else :
[ self . insert ( i ) for i in self . session . db [ self . name ] [ " items " ] [ : num ] ]
2016-04-14 00:45:05 +02:00
return retrieved
2016-02-14 00:06:36 +01:00
2016-04-15 00:23:08 +02:00
def remove_buffer ( self , mandatory = False ) :
if " me_feed " == self . name :
output . speak ( _ ( u " This buffer can ' t be deleted " ) )
return False
else :
if mandatory == False :
dlg = commonMessages . remove_buffer ( )
else :
dlg = widgetUtils . YES
if dlg == widgetUtils . YES :
self . session . db . pop ( self . name )
return True
else :
return False
2016-06-08 12:45:03 +02:00
def __init__ ( self , * args , * * kwargs ) :
super ( feedBuffer , self ) . __init__ ( * args , * * kwargs )
self . user_key = " from_id "
self . post_key = " id "
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-03-23 15:17:45 +01:00
widgetUtils . connect_event ( self . tab . play_all , widgetUtils . BUTTON_PRESSED , self . play_all )
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-03-26 16:08:41 +01:00
pub . sendMessage ( " play-audio " , audio_object = self . session . db [ self . name ] [ " items " ] [ selected ] )
2016-02-15 09:15:38 +01:00
2016-06-08 12:45:03 +02:00
def open_post ( self , * args , * * kwargs ) :
2016-02-15 22:09:33 +01:00
selected = self . tab . list . get_selected ( )
2016-02-24 17:30:07 +01:00
audios = [ self . session . db [ self . name ] [ " items " ] [ selected ] ]
a = posts . audio ( self . session , audios )
2016-02-15 22:09:33 +01:00
a . dialog . get_response ( )
2016-02-23 12:48:05 +01:00
a . dialog . Destroy ( )
2016-03-22 09:10:59 +01:00
2016-03-23 15:17:45 +01:00
def play_all ( self , * args , * * kwargs ) :
selected = self . tab . list . get_selected ( )
2016-03-23 18:36:07 +01:00
if selected == - 1 :
selected = 0
2016-03-26 16:08:41 +01:00
audios = [ i for i in self . session . db [ self . name ] [ " items " ] [ selected : ] ]
2016-03-23 15:57:16 +01:00
pub . sendMessage ( " play-audios " , audios = audios )
2016-04-15 00:23:08 +02:00
def remove_buffer ( self , mandatory = False ) :
2016-03-27 08:11:52 +02:00
if " me_audio " == self . name or " popular_audio " == self . name or " recommended_audio " == self . name :
output . speak ( _ ( u " This buffer can ' t be deleted " ) )
return False
else :
2016-04-14 00:45:05 +02:00
if mandatory == False :
dlg = commonMessages . remove_buffer ( )
else :
dlg = widgetUtils . YES
2016-03-27 08:11:52 +02:00
if dlg == widgetUtils . YES :
self . session . db . pop ( self . name )
return True
else :
return False
2016-03-31 18:33:02 +02:00
def get_more_items ( self , * args , * * kwargs ) :
output . speak ( _ ( u " This buffer doesn ' t support getting more items. " ) )
2016-06-05 21:15:40 +02:00
def onFocus ( self , * args , * * kwargs ) :
pass
2016-06-08 12:45:03 +02:00
def add_to_library ( self , * args , * * kwargs ) :
post = self . get_post ( )
args = { }
args [ " audio_id " ] = post [ " id " ]
if post . has_key ( " album_id " ) :
args [ " album_id " ] = post [ " album_id " ]
args [ " owner_id " ] = post [ " owner_id " ]
audio = self . session . vk . client . audio . add ( * * args )
if audio != None and int ( audio ) > 21 :
output . speak ( _ ( u " Audio added to your library " ) )
def remove_from_library ( self , * args , * * kwargs ) :
post = self . get_post ( )
args = { }
args [ " audio_id " ] = post [ " id " ]
args [ " owner_id " ] = self . session . user_id
result = self . session . vk . client . audio . delete ( * * args )
if int ( result ) == 1 :
output . speak ( _ ( u " Removed audio from library " ) )
2016-06-29 11:08:37 +02:00
def move_to_album ( self , * args , * * kwargs ) :
album = selector . audioAlbum ( _ ( u " Select the album where you want to move this song " ) , self . session )
if album . item == None : return
id = self . get_post ( ) [ " id " ]
response = self . session . vk . client . audio . moveToAlbum ( album_id = album . item , audio_ids = id )
if response == 1 :
output . speak ( _ ( u " Moved " ) )
2016-06-08 12:45:03 +02:00
def get_menu ( self ) :
p = self . get_post ( )
m = menus . audioMenu ( )
widgetUtils . connect_event ( m , widgetUtils . MENU , self . open_post , menuitem = m . open )
widgetUtils . connect_event ( m , widgetUtils . MENU , self . play_audio , menuitem = m . play )
2016-06-29 11:08:37 +02:00
widgetUtils . connect_event ( m , widgetUtils . MENU , self . move_to_album , menuitem = m . move )
2016-06-08 12:45:03 +02:00
# if owner_id is the current user, the audio is added to the user's audios.
if p [ " owner_id " ] == self . session . user_id :
m . library . SetItemLabel ( _ ( u " &Remove from library " ) )
widgetUtils . connect_event ( m , widgetUtils . MENU , self . remove_from_library , menuitem = m . library )
else :
widgetUtils . connect_event ( m , widgetUtils . MENU , self . add_to_library , menuitem = m . library )
return m
2016-03-23 15:57:16 +01:00
class empty ( object ) :
def __init__ ( self , name = None , parent = None , * args , * * kwargs ) :
self . tab = home . empty ( parent = parent , name = name )
self . name = name
def get_items ( self , * args , * * kwargs ) :
pass
2016-03-31 18:33:02 +02:00
def get_more_items ( self , * args , * * kwargs ) :
output . speak ( _ ( u " This buffer doesn ' t support getting more items. " ) )
2016-03-27 08:11:52 +02:00
2016-04-15 00:23:08 +02:00
def remove_buffer ( self , mandatory = False ) : return False
2016-05-17 19:46:57 +02:00
class chatBuffer ( baseBuffer ) :
2016-06-05 21:15:40 +02:00
def onFocus ( self , * args , * * kwargs ) :
2016-06-06 11:27:07 +02:00
msg = self . session . db [ self . name ] [ " items " ] [ - 1 ]
if msg [ " read_state " ] == 0 and msg [ " id " ] not in self . reads :
self . reads . append ( msg [ " id " ] )
self . session . db [ self . name ] [ " items " ] [ - 1 ] [ " read_state " ] = 1
2016-06-05 21:15:40 +02:00
2016-05-17 19:46:57 +02:00
def create_tab ( self , parent ) :
self . tab = home . chatTab ( parent )
def connect_events ( self ) :
widgetUtils . connect_event ( self . tab . send , widgetUtils . BUTTON_PRESSED , self . send_chat_to_user )
2016-06-06 11:27:07 +02:00
self . tab . set_focus_function ( self . onFocus )
2016-05-17 19:46:57 +02:00
def get_items ( self , show_nextpage = False ) :
retrieved = True # Control variable for handling unauthorised/connection errors.
try :
num = getattr ( self . session , " get_messages " ) ( name = self . name , * self . args , * * self . kwargs )
except VkAPIMethodError as err :
print ( u " Error {0} : {1} " . format ( err . code , err . message ) )
retrieved = err . code
return retrieved
if show_nextpage == False :
if self . tab . list . get_count ( ) > 0 and num > 0 :
print " inserting a value "
v = [ i for i in self . session . db [ self . name ] [ " items " ] [ : num ] ]
v . reverse ( )
[ self . insert ( i , True ) for i in v ]
else :
[ self . insert ( i ) for i in self . session . db [ self . name ] [ " items " ] [ : num ] ]
else :
if num > 0 :
[ self . insert ( i , False ) for i in self . session . db [ self . name ] [ " items " ] [ : num ] ]
return retrieved
def send_chat_to_user ( self , * args , * * kwargs ) :
text = self . tab . text . GetValue ( )
if text == " " : return
2016-05-25 18:33:57 +02:00
response = self . session . vk . client . messages . send ( user_id = self . kwargs [ " user_id " ] , message = text )
2016-06-06 11:27:07 +02:00
def __init__ ( self , * args , * * kwargs ) :
super ( chatBuffer , self ) . __init__ ( * args , * * kwargs )
self . reads = [ ]
2016-05-25 18:33:57 +02:00
class peopleBuffer ( feedBuffer ) :
def create_tab ( self , parent ) :
self . tab = home . peopleTab ( parent )
def connect_events ( self ) :
super ( peopleBuffer , self ) . connect_events ( )
widgetUtils . connect_event ( self . tab . new_chat , widgetUtils . BUTTON_PRESSED , self . new_chat )
def new_chat ( self , * args , * * kwargs ) :
user_id = self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ] [ " id " ]
2016-06-05 21:15:40 +02:00
pub . sendMessage ( " new-chat " , user_id = user_id )
def onFocus ( self , * args , * * kwargs ) :
post = self . session . db [ self . name ] [ " items " ] [ self . tab . list . get_selected ( ) ]
if post . has_key ( " last_seen " ) == False : return
original_date = arrow . get ( post [ " last_seen " ] [ " time " ] )
created_at = original_date . humanize ( locale = languageHandler . getLanguage ( ) )
self . tab . list . list . SetStringItem ( self . tab . list . get_selected ( ) , 1 , created_at )
2016-06-08 12:45:03 +02:00
def open_timeline ( self , * args , * * kwargs ) :
pass
def get_menu ( self , * args , * * kwargs ) :
m = menus . peopleMenu ( )
widgetUtils . connect_event ( m , widgetUtils . MENU , self . new_chat , menuitem = m . message )
widgetUtils . connect_event ( m , widgetUtils . MENU , self . open_timeline , menuitem = m . timeline )
return m