bug fixes
This commit is contained in:
parent
c90822bf57
commit
ab419eddda
5 changed files with 22 additions and 23 deletions
|
@ -89,9 +89,10 @@ def friend_status_message(tox, friend_num, status_message, size, user_data):
|
||||||
invoke_in_main_thread(profile.set_active)
|
invoke_in_main_thread(profile.set_active)
|
||||||
|
|
||||||
|
|
||||||
def friend_message(window):
|
def friend_message(window, tray):
|
||||||
"""
|
"""
|
||||||
:param window: main window
|
:param window: main window
|
||||||
|
:param tray: tray
|
||||||
:return: function for tox.callback_friend_message. Adds new message to list
|
:return: function for tox.callback_friend_message. Adds new message to list
|
||||||
"""
|
"""
|
||||||
def wrapped(tox, friend_number, message_type, message, size, user_data):
|
def wrapped(tox, friend_number, message_type, message, size, user_data):
|
||||||
|
@ -102,7 +103,7 @@ def friend_message(window):
|
||||||
if not window.isActiveWindow():
|
if not window.isActiveWindow():
|
||||||
friend = profile.get_friend_by_number(friend_number)
|
friend = profile.get_friend_by_number(friend_number)
|
||||||
if settings['notifications']:
|
if settings['notifications']:
|
||||||
invoke_in_main_thread(tray_notification, friend.name, message.decode('utf8'))
|
invoke_in_main_thread(tray_notification, friend.name, message.decode('utf8'), tray)
|
||||||
if settings['sound_notifications']:
|
if settings['sound_notifications']:
|
||||||
sound_notification(SOUND_NOTIFICATION['MESSAGE'])
|
sound_notification(SOUND_NOTIFICATION['MESSAGE'])
|
||||||
return wrapped
|
return wrapped
|
||||||
|
@ -117,14 +118,14 @@ def friend_request(tox, public_key, message, message_size, user_data):
|
||||||
invoke_in_main_thread(profile.process_friend_request, tox_id, message.decode('utf-8'))
|
invoke_in_main_thread(profile.process_friend_request, tox_id, message.decode('utf-8'))
|
||||||
|
|
||||||
|
|
||||||
def init_callbacks(tox, window):
|
def init_callbacks(tox, window, tray):
|
||||||
"""
|
"""
|
||||||
Initialization of all callbacks.
|
Initialization of all callbacks.
|
||||||
:param tox: tox instance
|
:param tox: tox instance
|
||||||
:param window: main window
|
:param window: main window
|
||||||
"""
|
"""
|
||||||
tox.callback_friend_status(friend_status, 0)
|
tox.callback_friend_status(friend_status, 0)
|
||||||
tox.callback_friend_message(friend_message(window), 0)
|
tox.callback_friend_message(friend_message(window, tray), 0)
|
||||||
tox.callback_self_connection_status(self_connection_status(tox), 0)
|
tox.callback_self_connection_status(self_connection_status(tox), 0)
|
||||||
tox.callback_friend_connection_status(friend_connection_status, 0)
|
tox.callback_friend_connection_status(friend_connection_status, 0)
|
||||||
tox.callback_friend_name(friend_name, 0)
|
tox.callback_friend_name(friend_name, 0)
|
||||||
|
|
21
src/main.py
21
src/main.py
|
@ -55,12 +55,17 @@ class Toxygen(object):
|
||||||
data = ProfileHelper.open_profile(path, name)
|
data = ProfileHelper.open_profile(path, name)
|
||||||
self.tox = tox_factory(data, settings)
|
self.tox = tox_factory(data, settings)
|
||||||
|
|
||||||
|
# tray icon
|
||||||
|
self.tray = QtGui.QSystemTrayIcon(QtGui.QIcon(curr_directory() + '/images/icon.png'))
|
||||||
|
self.tray.setContextMenu(QtGui.QMenu())
|
||||||
|
self.tray.show()
|
||||||
|
|
||||||
self.ms = MainWindow(self.tox, self.reset)
|
self.ms = MainWindow(self.tox, self.reset)
|
||||||
self.ms.show()
|
self.ms.show()
|
||||||
QtGui.QApplication.setStyle(get_style(settings['theme'])) # set application style
|
QtGui.QApplication.setStyle(get_style(settings['theme'])) # set application style
|
||||||
|
|
||||||
# init thread
|
# init thread
|
||||||
self.init = self.InitThread(self.tox, self.ms)
|
self.init = self.InitThread(self.tox, self.ms, self.tray)
|
||||||
self.init.start()
|
self.init.start()
|
||||||
|
|
||||||
# starting thread for tox iterate
|
# starting thread for tox iterate
|
||||||
|
@ -83,14 +88,12 @@ class Toxygen(object):
|
||||||
self.mainloop.wait()
|
self.mainloop.wait()
|
||||||
self.init.terminate()
|
self.init.terminate()
|
||||||
data = self.tox.get_savedata()
|
data = self.tox.get_savedata()
|
||||||
length = self.tox.get_savedata_size()
|
ProfileHelper.save_profile(data)
|
||||||
savedata = ''.join('{}'.format(data[i]) for i in xrange(length))
|
|
||||||
ProfileHelper.save_profile(savedata)
|
|
||||||
del self.tox
|
del self.tox
|
||||||
# create new tox instance
|
# create new tox instance
|
||||||
self.tox = tox_factory(savedata, Settings.get_instance())
|
self.tox = tox_factory(data, Settings.get_instance())
|
||||||
# init thread
|
# init thread
|
||||||
self.init = self.InitThread(self.tox, self.ms)
|
self.init = self.InitThread(self.tox, self.ms, self.tray)
|
||||||
self.init.start()
|
self.init.start()
|
||||||
|
|
||||||
# starting thread for tox iterate
|
# starting thread for tox iterate
|
||||||
|
@ -104,13 +107,13 @@ class Toxygen(object):
|
||||||
|
|
||||||
class InitThread(QtCore.QThread):
|
class InitThread(QtCore.QThread):
|
||||||
|
|
||||||
def __init__(self, tox, ms):
|
def __init__(self, tox, ms, tray):
|
||||||
QtCore.QThread.__init__(self)
|
QtCore.QThread.__init__(self)
|
||||||
self.tox, self.ms = tox, ms
|
self.tox, self.ms, self.tray = tox, ms, tray
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
# initializing callbacks
|
# initializing callbacks
|
||||||
init_callbacks(self.tox, self.ms)
|
init_callbacks(self.tox, self.ms, self.tray)
|
||||||
# bootstrap
|
# bootstrap
|
||||||
for data in node_generator():
|
for data in node_generator():
|
||||||
self.tox.bootstrap(*data)
|
self.tox.bootstrap(*data)
|
||||||
|
|
|
@ -11,11 +11,8 @@ SOUND_NOTIFICATION = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def tray_notification(title, text):
|
def tray_notification(title, text, tray):
|
||||||
if QtGui.QSystemTrayIcon.isSystemTrayAvailable():
|
if QtGui.QSystemTrayIcon.isSystemTrayAvailable():
|
||||||
tray = QtGui.QSystemTrayIcon(QtGui.QIcon(curr_directory() + '/images/icon.png'))
|
|
||||||
tray.setContextMenu(QtGui.QMenu())
|
|
||||||
tray.show()
|
|
||||||
if len(text) > 30:
|
if len(text) > 30:
|
||||||
text = text[:27] + '...'
|
text = text[:27] + '...'
|
||||||
tray.showMessage(title, text, QtGui.QSystemTrayIcon.NoIcon, 3000)
|
tray.showMessage(title, text, QtGui.QSystemTrayIcon.NoIcon, 3000)
|
||||||
|
|
|
@ -428,10 +428,10 @@ class Profile(Contact, Singleton):
|
||||||
active_friend = property(get_active, set_active)
|
active_friend = property(get_active, set_active)
|
||||||
|
|
||||||
def get_active_number(self):
|
def get_active_number(self):
|
||||||
return self._friends[self._active_friend].number
|
return self._friends[self._active_friend].number if self._active_friend + 1 else -1
|
||||||
|
|
||||||
def get_active_name(self):
|
def get_active_name(self):
|
||||||
return self._friends[self._active_friend].name
|
return self._friends[self._active_friend].name if self._active_friend + 1 else ''
|
||||||
|
|
||||||
def is_active_online(self):
|
def is_active_online(self):
|
||||||
return self._active_friend + 1 and self._friends[self._active_friend].status is not None
|
return self._active_friend + 1 and self._friends[self._active_friend].status is not None
|
||||||
|
@ -451,7 +451,7 @@ class Profile(Contact, Singleton):
|
||||||
user_name = Profile.get_instance().get_active_name()
|
user_name = Profile.get_instance().get_active_name()
|
||||||
self.create_message_item(message.decode('utf-8'), curr_time(), user_name, message_type)
|
self.create_message_item(message.decode('utf-8'), curr_time(), user_name, message_type)
|
||||||
self._messages.scrollToBottom()
|
self._messages.scrollToBottom()
|
||||||
self._friends[self._active_friend].append_message((message,
|
self._friends[self._active_friend].append_message((message.decode('utf-8'),
|
||||||
MESSAGE_OWNER['FRIEND'],
|
MESSAGE_OWNER['FRIEND'],
|
||||||
time.time(),
|
time.time(),
|
||||||
message_type))
|
message_type))
|
||||||
|
|
|
@ -56,10 +56,8 @@ class TestTox():
|
||||||
tox.self_set_name(name)
|
tox.self_set_name(name)
|
||||||
tox.self_set_status_message(status_message)
|
tox.self_set_status_message(status_message)
|
||||||
data = tox.get_savedata()
|
data = tox.get_savedata()
|
||||||
length = tox.get_savedata_size()
|
|
||||||
savedata = ''.join('{}'.format(data[i]) for i in xrange(length))
|
|
||||||
del tox
|
del tox
|
||||||
tox = tox_factory(savedata)
|
tox = tox_factory(data)
|
||||||
assert tox.self_get_name() == name
|
assert tox.self_get_name() == name
|
||||||
assert tox.self_get_status_message() == status_message
|
assert tox.self_get_status_message() == status_message
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue