icons and sticker window
This commit is contained in:
parent
53a381222f
commit
63774ba5df
9 changed files with 65 additions and 7 deletions
BIN
src/images/audio_message.png
Executable file
BIN
src/images/audio_message.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
BIN
src/images/menu.png
Executable file
BIN
src/images/menu.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
BIN
src/images/smiley.png
Executable file
BIN
src/images/smiley.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
BIN
src/images/sticker.png
Executable file
BIN
src/images/sticker.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 94 KiB |
BIN
src/images/video_message.png
Executable file
BIN
src/images/video_message.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
|
@ -432,6 +432,14 @@ class MainWindow(QtGui.QMainWindow):
|
|||
self.smiley.height()))
|
||||
self.smiley.show()
|
||||
|
||||
def send_sticker(self):
|
||||
self.sticker = StickerWindow(self)
|
||||
self.sticker.setGeometry(QtCore.QRect(self.x() if Settings.get_instance()['mirror_mode'] else 270 + self.x(),
|
||||
self.y() + self.height() - 200,
|
||||
self.sticker.width(),
|
||||
self.sticker.height()))
|
||||
self.sticker.show()
|
||||
|
||||
def active_call(self):
|
||||
self.update_call_state('finish_call')
|
||||
|
||||
|
|
|
@ -249,6 +249,7 @@ class DropdownMenu(QtGui.QWidget):
|
|||
self.screenshotButton.clicked.connect(parent.send_screenshot)
|
||||
self.connect(self.screenshotButton, QtCore.SIGNAL("rightClicked()"), lambda: parent.send_screenshot(True))
|
||||
self.smileyButton.clicked.connect(parent.send_smiley)
|
||||
self.stickerButton.clicked.connect(parent.send_sticker)
|
||||
|
||||
def leaveEvent(self, event):
|
||||
self.close()
|
||||
|
@ -257,3 +258,42 @@ class DropdownMenu(QtGui.QWidget):
|
|||
if event.type() == QtCore.QEvent.WindowDeactivate:
|
||||
self.close()
|
||||
return False
|
||||
|
||||
|
||||
class StickerItem(QtGui.QWidget):
|
||||
|
||||
def __init__(self, fl):
|
||||
super(StickerItem, self).__init__()
|
||||
self._image_label = QtGui.QLabel(self)
|
||||
self.path = fl
|
||||
self.pixmap = QtGui.QPixmap()
|
||||
self.pixmap.load(fl)
|
||||
self.setFixedSize(150, self.pixmap.height())
|
||||
self._image_label.setPixmap(self.pixmap)
|
||||
|
||||
|
||||
class StickerWindow(QtGui.QWidget):
|
||||
|
||||
def __init__(self, parent):
|
||||
super(StickerWindow, self).__init__()
|
||||
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
|
||||
self.setMaximumSize(150, 200)
|
||||
self.setMinimumSize(150, 200)
|
||||
self.list = QtGui.QListWidget(self)
|
||||
self.list.setGeometry(QtCore.QRect(0, 0, 150, 200))
|
||||
self.arr = smileys.sticker_loader()
|
||||
for sticker in self.arr:
|
||||
item = StickerItem(sticker)
|
||||
elem = QtGui.QListWidgetItem()
|
||||
elem.setSizeHint(QtCore.QSize(150, item.height()))
|
||||
self.list.addItem(elem)
|
||||
self.list.setItemWidget(elem, item)
|
||||
self.list.clicked.connect(self.click)
|
||||
self.parent = parent
|
||||
|
||||
def click(self, index):
|
||||
num = index.row()
|
||||
self.parent.profile.send_sticker(self.arr[num])
|
||||
self.close()
|
||||
|
||||
|
||||
|
|
|
@ -716,7 +716,7 @@ class Profile(contact.Contact, Singleton):
|
|||
settings = Settings.get_instance()
|
||||
friend = self.get_friend_by_number(friend_number)
|
||||
auto = settings['allow_auto_accept'] and friend.tox_id in settings['auto_accept_from_friends']
|
||||
inline = (file_name == 'toxygen_inline.png' or file_name == 'utox-inline.png') and settings['allow_inline']
|
||||
inline = (file_name in ('toxygen_inline.png', 'utox-inline.png', 'sticker.png')) and settings['allow_inline']
|
||||
if inline and size < 1024 * 1024:
|
||||
self.accept_transfer(None, '', friend_number, file_number, size, True)
|
||||
tm = TransferMessage(MESSAGE_OWNER['FRIEND'],
|
||||
|
@ -833,8 +833,18 @@ class Profile(contact.Contact, Singleton):
|
|||
Send screenshot to current active friend
|
||||
:param data: raw data - png
|
||||
"""
|
||||
self.send_inline(data, 'toxygen_inline.png')
|
||||
|
||||
def send_sticker(self, path):
|
||||
with open(path) as fl:
|
||||
data = fl.read()
|
||||
self.send_inline(data, 'sticker.png')
|
||||
|
||||
def send_inline(self, data, file_name):
|
||||
friend = self._friends[self._active_friend]
|
||||
st = SendFromBuffer(self._tox, friend.number, data, 'toxygen_inline.png')
|
||||
if friend.status is None:
|
||||
return
|
||||
st = SendFromBuffer(self._tox, friend.number, data, file_name)
|
||||
self._file_transfers[(friend.number, st.get_file_number())] = st
|
||||
tm = TransferMessage(MESSAGE_OWNER['ME'],
|
||||
time.time(),
|
||||
|
|
|
@ -74,12 +74,12 @@ def sticker_loader():
|
|||
"""
|
||||
:return dict of stickers
|
||||
"""
|
||||
result = {}
|
||||
result = []
|
||||
d = util.curr_directory() + '/stickers/'
|
||||
keys = [x[1] for x in os.walk(d)][0]
|
||||
for key in keys:
|
||||
path = d + key
|
||||
files = map(lambda f: f.endswith('.png'), os.listdir(path))
|
||||
if files:
|
||||
result[key] = files
|
||||
path = d + key + '/'
|
||||
files = filter(lambda f: f.endswith('.png'), os.listdir(path))
|
||||
files = map(lambda f: path + f, files)
|
||||
result.extend(files)
|
||||
return result
|
||||
|
|
Loading…
Reference in a new issue