some improvements
This commit is contained in:
parent
3b5e869055
commit
ce7f6e03f5
5 changed files with 39 additions and 22 deletions
|
@ -1,9 +1,11 @@
|
||||||
# coding=utf-8
|
# coding=utf-8
|
||||||
from sqlite3 import connect
|
from sqlite3 import connect
|
||||||
from settings import Settings
|
import profile as pr
|
||||||
from os import chdir
|
from os import chdir
|
||||||
|
|
||||||
|
|
||||||
|
PAGE_SIZE = 42
|
||||||
|
|
||||||
MESSAGE_OWNER = {
|
MESSAGE_OWNER = {
|
||||||
'ME': 0,
|
'ME': 0,
|
||||||
'FRIEND': 1
|
'FRIEND': 1
|
||||||
|
@ -13,7 +15,7 @@ MESSAGE_OWNER = {
|
||||||
class History(object):
|
class History(object):
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
self._name = name
|
self._name = name
|
||||||
chdir(Settings.get_default_path())
|
chdir(pr.ProfileHelper.get_path())
|
||||||
db = connect(name + '.hstr')
|
db = connect(name + '.hstr')
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
cursor.execute('CREATE TABLE IF NOT EXISTS friends('
|
cursor.execute('CREATE TABLE IF NOT EXISTS friends('
|
||||||
|
@ -22,7 +24,7 @@ class History(object):
|
||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
def export(self, directory):
|
def export(self, directory):
|
||||||
path = Settings.get_default_path() + self._name + '.hstr'
|
path = pr.ProfileHelper.get_path() + self._name + '.hstr'
|
||||||
new_path = directory + self._name + '.hstr'
|
new_path = directory + self._name + '.hstr'
|
||||||
with open(path, 'rb') as fin:
|
with open(path, 'rb') as fin:
|
||||||
data = fin.read()
|
data = fin.read()
|
||||||
|
@ -31,7 +33,7 @@ class History(object):
|
||||||
print 'History exported to: {}'.format(new_path)
|
print 'History exported to: {}'.format(new_path)
|
||||||
|
|
||||||
def add_friend_to_db(self, tox_id):
|
def add_friend_to_db(self, tox_id):
|
||||||
chdir(Settings.get_default_path())
|
chdir(pr.ProfileHelper.get_path())
|
||||||
db = connect(self._name + '.hstr')
|
db = connect(self._name + '.hstr')
|
||||||
try:
|
try:
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
|
@ -51,7 +53,7 @@ class History(object):
|
||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
def delete_friend_from_db(self, tox_id):
|
def delete_friend_from_db(self, tox_id):
|
||||||
chdir(Settings.get_default_path())
|
chdir(pr.ProfileHelper.get_path())
|
||||||
db = connect(self._name + '.hstr')
|
db = connect(self._name + '.hstr')
|
||||||
try:
|
try:
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
|
@ -65,7 +67,7 @@ class History(object):
|
||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
def friend_exists_in_db(self, tox_id):
|
def friend_exists_in_db(self, tox_id):
|
||||||
chdir(Settings.get_default_path())
|
chdir(pr.ProfileHelper.get_path())
|
||||||
db = connect(self._name + '.hstr')
|
db = connect(self._name + '.hstr')
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
cursor.execute('SELECT 0 FROM friends WHERE tox_id=?', (tox_id, ))
|
cursor.execute('SELECT 0 FROM friends WHERE tox_id=?', (tox_id, ))
|
||||||
|
@ -74,7 +76,7 @@ class History(object):
|
||||||
return result is not None
|
return result is not None
|
||||||
|
|
||||||
def save_messages_to_db(self, tox_id, messages_iter):
|
def save_messages_to_db(self, tox_id, messages_iter):
|
||||||
chdir(Settings.get_default_path())
|
chdir(pr.ProfileHelper.get_path())
|
||||||
db = connect(self._name + '.hstr')
|
db = connect(self._name + '.hstr')
|
||||||
try:
|
try:
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
|
@ -88,7 +90,7 @@ class History(object):
|
||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
def delete_messages(self, tox_id):
|
def delete_messages(self, tox_id):
|
||||||
chdir(Settings.get_default_path())
|
chdir(pr.ProfileHelper.get_path())
|
||||||
db = connect(self._name + '.hstr')
|
db = connect(self._name + '.hstr')
|
||||||
try:
|
try:
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
|
@ -105,7 +107,7 @@ class History(object):
|
||||||
|
|
||||||
class MessageGetter(object):
|
class MessageGetter(object):
|
||||||
def __init__(self, name, tox_id):
|
def __init__(self, name, tox_id):
|
||||||
chdir(Settings.get_default_path())
|
chdir(pr.ProfileHelper.get_path())
|
||||||
self._db = connect(name + '.hstr')
|
self._db = connect(name + '.hstr')
|
||||||
self._cursor = self._db.cursor()
|
self._cursor = self._db.cursor()
|
||||||
self._cursor.execute('SELECT message, owner, unix_time, message_type FROM id' + tox_id +
|
self._cursor.execute('SELECT message, owner, unix_time, message_type FROM id' + tox_id +
|
||||||
|
|
|
@ -60,9 +60,9 @@ class MessageItem(QtGui.QWidget):
|
||||||
self.message.setStyleSheet("QTextEdit { color: #4169E1; }")
|
self.message.setStyleSheet("QTextEdit { color: #4169E1; }")
|
||||||
else:
|
else:
|
||||||
if text[0] == '>':
|
if text[0] == '>':
|
||||||
self.message.setStyleSheet("QPlainTextEdit { color: green; }")
|
self.message.setStyleSheet("QTextEdit { color: green; }")
|
||||||
if text[-1] == '<':
|
if text[-1] == '<':
|
||||||
self.message.setStyleSheet("QPlainTextEdit { color: red; }")
|
self.message.setStyleSheet("QTextEdit { color: red; }")
|
||||||
|
|
||||||
|
|
||||||
class ContactItem(QtGui.QWidget):
|
class ContactItem(QtGui.QWidget):
|
||||||
|
|
|
@ -13,7 +13,11 @@ class MessageArea(QtGui.QPlainTextEdit):
|
||||||
|
|
||||||
def keyPressEvent(self, event):
|
def keyPressEvent(self, event):
|
||||||
if event.key() == QtCore.Qt.Key_Return:
|
if event.key() == QtCore.Qt.Key_Return:
|
||||||
self.parent.send_message()
|
modifiers = event.modifiers()
|
||||||
|
if modifiers & QtCore.Qt.ControlModifier or modifiers & QtCore.Qt.ShiftModifier:
|
||||||
|
self.appendPlainText('')
|
||||||
|
else:
|
||||||
|
self.parent.send_message()
|
||||||
else:
|
else:
|
||||||
super(self.__class__, self).keyPressEvent(event)
|
super(self.__class__, self).keyPressEvent(event)
|
||||||
|
|
||||||
|
@ -384,7 +388,7 @@ class MainWindow(QtGui.QMainWindow):
|
||||||
|
|
||||||
|
|
||||||
class ScreenShotWindow(QtGui.QWidget):
|
class ScreenShotWindow(QtGui.QWidget):
|
||||||
# TODO: make window semi-transparent
|
# TODO: make selected area transparent
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(ScreenShotWindow, self).__init__()
|
super(ScreenShotWindow, self).__init__()
|
||||||
self.setMouseTracking(True)
|
self.setMouseTracking(True)
|
||||||
|
@ -405,6 +409,7 @@ class ScreenShotWindow(QtGui.QWidget):
|
||||||
self.rubberband.setGeometry(
|
self.rubberband.setGeometry(
|
||||||
QtCore.QRect(self.origin, event.pos()).normalized())
|
QtCore.QRect(self.origin, event.pos()).normalized())
|
||||||
QtGui.QWidget.mouseMoveEvent(self, event)
|
QtGui.QWidget.mouseMoveEvent(self, event)
|
||||||
|
self.repaint()
|
||||||
|
|
||||||
def mouseReleaseEvent(self, event):
|
def mouseReleaseEvent(self, event):
|
||||||
if self.rubberband.isVisible():
|
if self.rubberband.isVisible():
|
||||||
|
@ -425,3 +430,4 @@ class ScreenShotWindow(QtGui.QWidget):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
|
|
||||||
PAGE_SIZE = 42
|
|
||||||
|
|
||||||
MESSAGE_TYPE = {
|
MESSAGE_TYPE = {
|
||||||
'TEXT': 0,
|
'TEXT': 0,
|
||||||
|
|
|
@ -227,7 +227,8 @@ class Friend(Contact):
|
||||||
data.reverse()
|
data.reverse()
|
||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
self._corr = map(lambda tupl: TextMessage(*tupl), data) + self._corr
|
data = map(lambda tupl: TextMessage(*tupl), data)
|
||||||
|
self._corr = data + self._corr
|
||||||
self._history_loaded = True
|
self._history_loaded = True
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@ -258,7 +259,7 @@ class Friend(Contact):
|
||||||
"""
|
"""
|
||||||
if hasattr(self, '_message_getter'):
|
if hasattr(self, '_message_getter'):
|
||||||
del self._message_getter
|
del self._message_getter
|
||||||
self._corr = []
|
self._corr = filter(lambda x: x.get_type() > 1, self._corr)
|
||||||
self._unsaved_messages = 0
|
self._unsaved_messages = 0
|
||||||
|
|
||||||
def update_transfer_data(self, file_number, status):
|
def update_transfer_data(self, file_number, status):
|
||||||
|
@ -595,12 +596,18 @@ class Profile(Contact, Singleton):
|
||||||
return
|
return
|
||||||
data.reverse()
|
data.reverse()
|
||||||
for message in data:
|
for message in data:
|
||||||
data = message.get_data()
|
if message.get_type() <= 1:
|
||||||
self.create_message_item(data[0],
|
data = message.get_data()
|
||||||
convert_time(data[2]),
|
self.create_message_item(data[0],
|
||||||
friend.name if data[1] else self._name,
|
convert_time(data[2]),
|
||||||
data[3],
|
friend.name if data[1] else self._name,
|
||||||
False)
|
data[3],
|
||||||
|
False)
|
||||||
|
elif message.get_type() == 2:
|
||||||
|
item = self.create_file_transfer_item(message, False)
|
||||||
|
if message.get_status() in (2, 4):
|
||||||
|
ft = self._file_transfers[(message.get_friend_number(), message.get_file_number())]
|
||||||
|
ft.set_state_changed_handler(item.update)
|
||||||
|
|
||||||
def export_history(self, directory):
|
def export_history(self, directory):
|
||||||
self._history.export(directory)
|
self._history.export(directory)
|
||||||
|
@ -811,6 +818,7 @@ class Profile(Contact, Singleton):
|
||||||
file_number)
|
file_number)
|
||||||
if friend_number == self.get_active_number():
|
if friend_number == self.get_active_number():
|
||||||
self.create_file_transfer_item(tm)
|
self.create_file_transfer_item(tm)
|
||||||
|
self._messages.scrollToBottom()
|
||||||
else:
|
else:
|
||||||
friend.set_messages(True)
|
friend.set_messages(True)
|
||||||
friend.append_message(tm)
|
friend.append_message(tm)
|
||||||
|
@ -867,6 +875,7 @@ class Profile(Contact, Singleton):
|
||||||
item = self.create_file_transfer_item(tm)
|
item = self.create_file_transfer_item(tm)
|
||||||
friend.append_message(tm)
|
friend.append_message(tm)
|
||||||
st.set_state_changed_handler(item.update)
|
st.set_state_changed_handler(item.update)
|
||||||
|
self._messages.scrollToBottom()
|
||||||
|
|
||||||
def send_file(self, path):
|
def send_file(self, path):
|
||||||
"""
|
"""
|
||||||
|
@ -886,6 +895,7 @@ class Profile(Contact, Singleton):
|
||||||
item = self.create_file_transfer_item(tm)
|
item = self.create_file_transfer_item(tm)
|
||||||
st.set_state_changed_handler(item.update)
|
st.set_state_changed_handler(item.update)
|
||||||
self._friends[self._active_friend].append_message(tm)
|
self._friends[self._active_friend].append_message(tm)
|
||||||
|
self._messages.scrollToBottom()
|
||||||
|
|
||||||
def incoming_chunk(self, friend_number, file_number, position, data):
|
def incoming_chunk(self, friend_number, file_number, position, data):
|
||||||
if (friend_number, file_number) in self._file_transfers:
|
if (friend_number, file_number) in self._file_transfers:
|
||||||
|
|
Loading…
Reference in a new issue