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