toxygen/src/smileys.py

86 lines
2.8 KiB
Python
Raw Normal View History

2016-06-11 10:36:52 +00:00
import util
import json
2016-06-11 12:37:52 +00:00
import os
2016-06-11 10:36:52 +00:00
try:
from PySide import QtCore
except ImportError:
from PyQt4 import QtCore
class SmileyLoader(util.Singleton):
2016-06-11 12:37:52 +00:00
"""
Class which loads smileys packs and insert smileys into messages
"""
2016-06-11 10:36:52 +00:00
def __init__(self, settings):
2016-06-13 21:32:45 +00:00
self._settings = settings
self._curr_pack = None # current pack name
self._smileys = {} # smileys dict. key - smiley (str), value - path to image (str)
self._set = {} # smileys dict without duplicates
2016-06-11 10:36:52 +00:00
self.load_pack()
def load_pack(self):
2016-06-11 12:37:52 +00:00
"""
Loads smiley pack
"""
2016-06-13 21:32:45 +00:00
pack_name = self._settings['smiley_pack']
if self._settings['smileys'] and self._curr_pack != pack_name:
self._curr_pack = pack_name
2016-06-11 10:36:52 +00:00
path = self.get_smileys_path() + 'config.json'
try:
with open(path) as fl:
2016-06-13 21:32:45 +00:00
self._smileys = json.loads(fl.read())
2016-06-11 10:36:52 +00:00
print 'Smiley pack', pack_name, 'loaded'
2016-06-13 21:32:45 +00:00
self._set = {}
for key, value in self._smileys.items():
2016-06-14 18:47:03 +00:00
value = self.get_smileys_path() + value
2016-06-13 21:32:45 +00:00
if value not in self._set.values():
self._set[key] = value
2016-06-11 10:36:52 +00:00
except:
2016-06-13 21:32:45 +00:00
self._smileys = {}
self._set = {}
2016-06-11 10:36:52 +00:00
print 'Smiley pack', pack_name, 'was not loaded'
def get_smileys_path(self):
2016-06-13 21:32:45 +00:00
return util.curr_directory() + '/smileys/' + self._curr_pack + '/'
2016-06-11 10:36:52 +00:00
2016-06-11 12:37:52 +00:00
def get_packs_list(self):
d = util.curr_directory() + '/smileys/'
return [x[1] for x in os.walk(d)][0]
2016-06-14 18:47:03 +00:00
def get_smileys(self):
return list(self._set.items())
2016-06-11 10:36:52 +00:00
def add_smileys_to_text(self, text, edit):
2016-06-11 12:37:52 +00:00
"""
Adds smileys to text
:param text: message
:param edit: MessageEdit instance
:return text with smileys
"""
2016-06-14 18:47:03 +00:00
if not self._settings['smileys'] or not len(self._smileys):
2016-06-11 10:36:52 +00:00
return text
arr = text.split(' ')
for i in range(len(arr)):
2016-06-13 21:32:45 +00:00
if arr[i] in self._smileys:
file_name = self._smileys[arr[i]] # image name
2016-06-11 10:36:52 +00:00
arr[i] = u'<img title=\"{}\" src=\"{}\" />'.format(arr[i], file_name)
2016-06-11 12:37:52 +00:00
if file_name.endswith('.gif'): # animated smiley
2016-06-11 10:36:52 +00:00
edit.addAnimation(QtCore.QUrl(file_name), self.get_smileys_path() + file_name)
return ' '.join(arr)
2016-06-13 21:32:45 +00:00
def sticker_loader():
"""
:return dict of stickers
"""
2016-06-14 20:55:41 +00:00
result = []
2016-06-13 21:32:45 +00:00
d = util.curr_directory() + '/stickers/'
keys = [x[1] for x in os.walk(d)][0]
for key in keys:
2016-06-14 20:55:41 +00:00
path = d + key + '/'
files = filter(lambda f: f.endswith('.png'), os.listdir(path))
files = map(lambda f: path + f, files)
result.extend(files)
2016-06-13 21:32:45 +00:00
return result