Cooperation/ChatWidget.py

Wed, 31 Mar 2010 11:59:53 +0000

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 31 Mar 2010 11:59:53 +0000
changeset 162
28f235c426c4
parent 161
bb3cc98f4104
child 163
8f0630371845
permissions
-rw-r--r--

Added functionality to cut/copy/... the chat and to interactively accept/reject connections.

149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2010 Detlev Offenbach <detlev@die-offenbachs.de>
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the chat dialog.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
160
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
10 from PyQt4.QtCore import Qt, pyqtSlot, pyqtSignal, QDateTime, QPoint, QFileInfo
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
11 from PyQt4.QtGui import QWidget, QColor, QListWidgetItem, QMenu, QFileDialog, \
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
12 QMessageBox, QApplication
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
158
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
14 from E5Gui.E5Application import e5App
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
15
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
16 from Globals import recentNameHosts
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
17
158
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
18 from QScintilla.Editor import Editor
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
19
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from .CooperationClient import CooperationClient
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 from .Ui_ChatWidget import Ui_ChatWidget
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 import Preferences
160
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
25 import Utilities
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 import UI.PixmapCache
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 class ChatWidget(QWidget, Ui_ChatWidget):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Class implementing the chat dialog.
158
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
31
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
32 @signal connected(connected) emitted to signal a change of the connected
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
33 state (boole)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
34 @signal editorCommand(hash, filename, message) emitted when an editor command
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
35 has been received (string, string, string)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
36 @signal shareEditor(share) emitted to signal a share is requested (bool)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
37 @signal startEdit() emitted to start a shared edit session
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
38 @signal sendEdit() emitted to send a shared edit session
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
39 @signal cancelEdit() emitted to cancel a shared edit session
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
158
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
41 connected = pyqtSignal(bool)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
42 editorCommand = pyqtSignal(str, str, str)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
43
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
44 shareEditor = pyqtSignal(bool)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
45 startEdit = pyqtSignal()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
46 sendEdit = pyqtSignal()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
47 cancelEdit = pyqtSignal()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
48
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 def __init__(self, port = -1, parent = None):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 Constructor
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 @param port port to be used for the cooperation server (integer)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 @param parent reference to the parent widget (QWidget)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 QWidget.__init__(self, parent)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.setupUi(self)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
158
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
59 self.shareButton.setIcon(
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
60 UI.PixmapCache.getIcon("sharedEditDisconnected.png"))
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
61 self.startEditButton.setIcon(
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
62 UI.PixmapCache.getIcon("sharedEditStart.png"))
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
63 self.sendEditButton.setIcon(
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
64 UI.PixmapCache.getIcon("sharedEditSend.png"))
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
65 self.cancelEditButton.setIcon(
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
66 UI.PixmapCache.getIcon("sharedEditCancel.png"))
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
67 self.clearMessageButton.setIcon(
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
68 UI.PixmapCache.getIcon("clearLeft.png"))
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
69 self.clearHostButton.setIcon(
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
70 UI.PixmapCache.getIcon("clearLeft.png"))
158
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
71
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
72 self.__client = CooperationClient(self)
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.__myNickName = self.__client.nickName()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
160
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
75 self.__chatMenu = QMenu(self)
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
76 self.__cutChatAct = \
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
77 self.__chatMenu.addAction(
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
78 UI.PixmapCache.getIcon("editCut.png"),
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
79 self.trUtf8("Cut"), self.__cutChat)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
80 self.__copyChatAct = \
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
81 self.__chatMenu.addAction(
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
82 UI.PixmapCache.getIcon("editCopy.png"),
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
83 self.trUtf8("Copy"), self.__copyChat)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
84 self.__chatMenu.addSeparator()
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
85 self.__cutAllChatAct = \
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
86 self.__chatMenu.addAction(
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
87 UI.PixmapCache.getIcon("editCut.png"),
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
88 self.trUtf8("Cut all"), self.__cutAllChat)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
89 self.__copyAllChatAct = \
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
90 self.__chatMenu.addAction(
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
91 UI.PixmapCache.getIcon("editCopy.png"),
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
92 self.trUtf8("Copy all"), self.__copyAllChat)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
93 self.__chatMenu.addSeparator()
160
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
94 self.__clearChatAct = \
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
95 self.__chatMenu.addAction(
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
96 UI.PixmapCache.getIcon("editDelete.png"),
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
97 self.trUtf8("Clear"), self.__clearChat)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
98 self.__chatMenu.addSeparator()
160
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
99 self.__saveChatAct = \
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
100 self.__chatMenu.addAction(
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
101 UI.PixmapCache.getIcon("fileSave.png"),
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
102 self.trUtf8("Save"), self.__saveChat)
160
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
103
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.messageEdit.returnPressed.connect(self.__handleMessage)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.sendButton.clicked.connect(self.__handleMessage)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.__client.newMessage.connect(self.appendMessage)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 self.__client.newParticipant.connect(self.__newParticipant)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self.__client.participantLeft.connect(self.__participantLeft)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 self.__client.connectionError.connect(self.__showErrorMessage)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.__client.cannotConnect.connect(self.__initialConnectionRefused)
158
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
111 self.__client.editorCommand.connect(self.__editorCommandMessage)
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.serverButton.setText(self.trUtf8("Start Server"))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.serverLed.setColor(QColor(Qt.red))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 if port == -1:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 port = Preferences.getCooperation("ServerPort")
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
118 ## self.portSpin.setValue(port)
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 self.serverPortSpin.setValue(port)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 self.__setConnected(False)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 if Preferences.getCooperation("AutoStartServer"):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 self.on_serverButton_clicked()
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
125
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
126 self.recent = []
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
127 self.__loadHostsHistory()
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
128
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
129 def __loadHostsHistory(self):
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
130 """
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
131 Private method to load the recently connected hosts.
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
132 """
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
133 self.__recent = []
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
134 Preferences.Prefs.rsettings.sync()
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
135 rh = Preferences.Prefs.rsettings.value(recentNameHosts)
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
136 if rh is not None:
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
137 self.__recent = rh[:20]
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
138 self.hostEdit.clear()
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
139 self.hostEdit.addItems(self.__recent)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
140 self.hostEdit.clearEditText()
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
141
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
142 def __saveHostsHistory(self):
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
143 """
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
144 Private method to save the list of recently connected hosts.
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
145 """
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
146 Preferences.Prefs.rsettings.setValue(recentNameHosts, self.__recent)
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
147 Preferences.Prefs.rsettings.sync()
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
148
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
149 def __setHostsHistory(self, host):
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
150 """
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
151 Private method to remember the given host as the most recent entry.
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
152
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
153 @param host host entry to remember (string)
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
154 """
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
155 if host in self.__recent:
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
156 self.__recent.remove(host)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
157 self.__recent.insert(0, host)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
158 self.__saveHostsHistory()
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
159
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
160 def __clearHostsHistory(self):
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
161 """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
162 Private slot to clear the hosts history.
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
163 """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
164 self.__recent = []
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
165 self.__saveHostsHistory()
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 def __handleMessage(self):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 Private slot handling the Return key pressed in the message edit.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 text = self.messageEdit.text()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 if text == "":
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 return
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 if text.startswith("/"):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 self.__showErrorMessage(
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 self.trUtf8("! Unknown command: {0}\n").format(text.split()[0]))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 else:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 self.__client.sendMessage(text)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.appendMessage(self.__myNickName, text)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 self.messageEdit.clear()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 def __newParticipant(self, nick):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 Private slot handling a new participant joining.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 @param nick nick name of the new participant (string)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 if nick == "":
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 return
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 color = self.chatEdit.textColor()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 self.chatEdit.setTextColor(Qt.gray)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 self.chatEdit.append(
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 QDateTime.currentDateTime().toString(Qt.SystemLocaleLongDate) + ":")
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 self.chatEdit.append(self.trUtf8("* {0} has joined.\n").format(nick))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 self.chatEdit.setTextColor(color)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 QListWidgetItem(
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 UI.PixmapCache.getIcon(
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 "chatUser{0}.png".format(1 + self.usersList.count() % 6)),
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 nick, self.usersList)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 if not self.__connected:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 self.__setConnected(True)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 def __participantLeft(self, nick):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 Private slot handling a participant leaving the session.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 @param nick nick name of the participant (string)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 if nick == "":
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 return
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 items = self.usersList.findItems(nick, Qt.MatchExactly)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 for item in items:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self.usersList.takeItem(self.usersList.row(item))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 del item
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 color = self.chatEdit.textColor()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 self.chatEdit.setTextColor(Qt.gray)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 self.chatEdit.append(
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 QDateTime.currentDateTime().toString(Qt.SystemLocaleLongDate) + ":")
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 self.chatEdit.append(self.trUtf8("* {0} has left.\n").format(nick))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 self.chatEdit.setTextColor(color)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 if not self.__client.hasConnections():
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 self.__setConnected(False)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 def appendMessage(self, from_, message):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 Public slot to append a message to the display.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 @param from_ originator of the message (string)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 @param message message to be appended (string)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 if from_ == "" or message == "":
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 return
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 self.chatEdit.append(
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 QDateTime.currentDateTime().toString(Qt.SystemLocaleLongDate) + \
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 " <" + from_ + ">:")
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 self.chatEdit.append(message + "\n")
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 bar = self.chatEdit.verticalScrollBar()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 bar.setValue(bar.maximum())
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 @pyqtSlot(str)
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
250 def on_hostEdit_editTextChanged(self, host):
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 Private slot handling the entry of a host to connect to.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 @param host host to connect to (string)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 if not self.__connected:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 self.connectButton.setEnabled(host != "")
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
259 ## @pyqtSlot(int)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
260 ## def on_hostEdit_currentIndexChanged(self, index):
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
261 ## """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
262 ## Private slot to handle the selection of a host.
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
263 ##
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
264 ## @param index index of the selected entry (integer)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
265 ## """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
266 ## port = self.hostEdit.itemData(index)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
267 ## if port is not None:
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
268 ## if port == -1:
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
269 ## self.portSpin.setValue(Preferences.getCooperation("ServerPort"))
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
270 ## else:
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
271 ## self.portSpin.setValue(port)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
272 def __getConnectionParameters(self):
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
273 """
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
274 Private method to determine the connection parameters.
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
275
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
276 @return tuple with hostname and port (string, integer)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
277 """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
278 hostEntry = self.hostEdit.currentText()
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
279 if ":" in hostEntry:
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
280 host, port = hostEntry.split(":")
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
281 try:
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
282 port = int(port)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
283 except ValueError:
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
284 port = Preferences.getCooperation("ServerPort")
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
285 self.hostEdit.setEditText("{0}:{1}".format(host, port))
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
286 else:
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
287 host = hostEntry
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
288 port = Preferences.getCooperation("ServerPort")
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
289 self.hostEdit.setEditText("{0}:{1}".format(host, port))
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
290 return host, port
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
291
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 @pyqtSlot()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 def on_connectButton_clicked(self):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 Private slot initiating the connection.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 if not self.__connected:
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
298 self.__setHostsHistory(self.hostEdit.currentText())
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 if not self.__client.server().isListening():
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 self.on_serverButton_clicked()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 if self.__client.server().isListening():
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
302 self.__client.connectToHost(*self.__getConnectionParameters())
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 self.__setConnected(True)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 else:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 self.__client.disconnectConnections()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 self.__setConnected(False)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 @pyqtSlot()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 def on_serverButton_clicked(self):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 Private slot to start the server.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 if self.__client.server().isListening():
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 self.__client.server().close()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 self.serverButton.setText(self.trUtf8("Start Server"))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 self.serverPortSpin.setEnabled(True)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 if self.serverPortSpin.value() != Preferences.getCooperation("ServerPort"):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 self.serverPortSpin.setValue(Preferences.getCooperation("ServerPort"))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 self.serverLed.setColor(QColor(Qt.red))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 else:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 res, port = self.__client.server().startListening(self.serverPortSpin.value())
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 if res:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 self.serverButton.setText(self.trUtf8("Stop Server"))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 self.serverPortSpin.setValue(port)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 self.serverPortSpin.setEnabled(False)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 self.serverLed.setColor(QColor(Qt.green))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 else:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 self.__showErrorMessage(
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 self.trUtf8("! Server Error: {0}\n").format(
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 self.__client.server().errorString())
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 )
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 def __setConnected(self, connected):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 Private slot to set the connected state.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 @param connected new connected state (boolean)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 if connected:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 self.connectButton.setText(self.trUtf8("Disconnect"))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 self.connectButton.setEnabled(True)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 self.connectionLed.setColor(QColor(Qt.green))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 else:
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 self.connectButton.setText(self.trUtf8("Connect"))
161
bb3cc98f4104 Added code to remember the 20 most recently connected hosts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 160
diff changeset
345 self.connectButton.setEnabled(self.hostEdit.currentText() != "")
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 self.connectionLed.setColor(QColor(Qt.red))
158
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
347 self.cancelEditButton.click()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
348 self.shareButton.click()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
349 self.__connected = connected
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
350 self.hostEdit.setEnabled(not connected)
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
351 ## self.portSpin.setEnabled(not connected)
158
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
352 self.serverButton.setEnabled(not connected)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
353 self.sharingGroup.setEnabled(connected)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
354
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
355 if connected:
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
356 vm = e5App().getObject("ViewManager")
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
357 aw = vm.activeWindow()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
358 if aw:
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
359 self.checkEditorActions(aw)
149
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 def __showErrorMessage(self, message):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 Private slot to show an error message.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 @param message error message to show (string)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 color = self.chatEdit.textColor()
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 self.chatEdit.setTextColor(Qt.red)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 self.chatEdit.append(
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 QDateTime.currentDateTime().toString(Qt.SystemLocaleLongDate) + ":")
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 self.chatEdit.append(message)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 self.chatEdit.setTextColor(color)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 def __initialConnectionRefused(self):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 Private slot to handle the refusal of the initial connection.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 self.__setConnected(False)
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 def preferencesChanged(self):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 Public slot to handle a change of preferences.
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 """
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 if not self.__client.server().isListening():
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 self.serverPortSpin.setValue(Preferences.getCooperation("ServerPort"))
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 if Preferences.getCooperation("AutoStartServer"):
a134031209be Added stage 1 of the cooperation functions (chat system).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 self.on_serverButton_clicked()
155
375e3c884874 Added code to transmit selections to remote editors.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 149
diff changeset
388
375e3c884874 Added code to transmit selections to remote editors.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 149
diff changeset
389 def getClient(self):
375e3c884874 Added code to transmit selections to remote editors.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 149
diff changeset
390 """
375e3c884874 Added code to transmit selections to remote editors.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 149
diff changeset
391 Public method to get a reference to the cooperation client.
375e3c884874 Added code to transmit selections to remote editors.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 149
diff changeset
392 """
375e3c884874 Added code to transmit selections to remote editors.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 149
diff changeset
393 return self.__client
158
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
394
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
395 def __editorCommandMessage(self, hash, fileName, message):
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
396 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
397 Private slot to handle editor command messages from the client.
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
398
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
399 @param hash hash of the project (string)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
400 @param fileName project relative file name of the editor (string)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
401 @param message command message (string)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
402 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
403 self.editorCommand.emit(hash, fileName, message)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
404
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
405 if message.startswith(Editor.StartEditToken + Editor.Separator) or \
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
406 message.startswith(Editor.EndEditToken + Editor.Separator):
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
407 vm = e5App().getObject("ViewManager")
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
408 aw = vm.activeWindow()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
409 if aw:
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
410 self.checkEditorActions(aw)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
411
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
412 @pyqtSlot(bool)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
413 def on_shareButton_clicked(self, checked):
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
414 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
415 Private slot to share the current editor.
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
416
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
417 @param checked flag indicating the button state (boolean)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
418 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
419 if checked:
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
420 self.shareButton.setIcon(
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
421 UI.PixmapCache.getIcon("sharedEditConnected.png"))
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
422 else:
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
423 self.shareButton.setIcon(
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
424 UI.PixmapCache.getIcon("sharedEditDisconnected.png"))
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
425 self.startEditButton.setEnabled(checked)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
426
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
427 self.shareEditor.emit(checked)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
428
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
429 @pyqtSlot(bool)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
430 def on_startEditButton_clicked(self, checked):
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
431 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
432 Private slot to start a shared edit session.
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
433
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
434 @param checked flag indicating the button state (boolean)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
435 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
436 if checked:
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
437 self.sendEditButton.setEnabled(True)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
438 self.cancelEditButton.setEnabled(True)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
439 self.shareButton.setEnabled(False)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
440 self.startEditButton.setEnabled(False)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
441
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
442 self.startEdit.emit()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
443
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
444 @pyqtSlot()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
445 def on_sendEditButton_clicked(self):
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
446 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
447 Private slot to end a shared edit session and send the changes.
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
448 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
449 self.sendEditButton.setEnabled(False)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
450 self.cancelEditButton.setEnabled(False)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
451 self.shareButton.setEnabled(True)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
452 self.startEditButton.setEnabled(True)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
453 self.startEditButton.setChecked(False)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
454
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
455 self.sendEdit.emit()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
456
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
457 @pyqtSlot()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
458 def on_cancelEditButton_clicked(self):
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
459 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
460 Private slot to cancel a shared edit session.
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
461 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
462 self.sendEditButton.setEnabled(False)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
463 self.cancelEditButton.setEnabled(False)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
464 self.shareButton.setEnabled(True)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
465 self.startEditButton.setEnabled(True)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
466 self.startEditButton.setChecked(False)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
467
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
468 self.cancelEdit.emit()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
469
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
470 def checkEditorActions(self, editor):
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
471 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
472 Public slot to set action according to an editor's state.
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
473
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
474 @param editor reference to the editor (Editor)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
475 """
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
476 shareable, sharing, editing, remoteEditing = editor.getSharingStatus()
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
477
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
478 self.shareButton.setChecked(sharing)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
479 if sharing:
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
480 self.shareButton.setIcon(
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
481 UI.PixmapCache.getIcon("sharedEditConnected.png"))
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
482 else:
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
483 self.shareButton.setIcon(
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
484 UI.PixmapCache.getIcon("sharedEditDisconnected.png"))
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
485 self.startEditButton.setChecked(editing)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
486
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
487 self.shareButton.setEnabled(shareable and not editing)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
488 self.startEditButton.setEnabled(sharing and not editing and not remoteEditing)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
489 self.sendEditButton.setEnabled(editing)
6a561f87bc07 Added shared editor functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 155
diff changeset
490 self.cancelEditButton.setEnabled(editing)
160
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
491
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
492 @pyqtSlot(bool)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
493 def on_chatEdit_copyAvailable(self, yes):
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
494 """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
495 Private slot to react to text selection/deselection of the chat edit.
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
496
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
497 @param yes flag signaling the availability of selected text (boolean)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
498 """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
499 self.__copyChatAct.setEnabled(yes)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
500 self.__cutChatAct.setEnabled(yes)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
501
160
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
502 @pyqtSlot(QPoint)
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
503 def on_chatEdit_customContextMenuRequested(self, pos):
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
504 """
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
505 Private slot to show the context menu for the chat.
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
506
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
507 @param pos the position of the mouse pointer (QPoint)
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
508 """
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
509 enable = self.chatEdit.toPlainText() != ""
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
510 self.__saveChatAct.setEnabled(enable)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
511 self.__copyAllChatAct.setEnabled(enable)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
512 self.__cutAllChatAct.setEnabled(enable)
160
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
513 self.__chatMenu.popup(self.chatEdit.mapToGlobal(pos))
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
514
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
515 def __clearChat(self):
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
516 """
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
517 Private slot to clear the contents of the chat display.
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
518 """
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
519 self.chatEdit.clear()
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
520
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
521 def __saveChat(self):
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
522 """
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
523 Private slot to save the contents of the chat display.
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
524 """
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
525 txt = self.chatEdit.toPlainText()
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
526 if txt:
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
527 fname, selectedFilter = QFileDialog.getSaveFileNameAndFilter(\
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
528 self,
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
529 self.trUtf8("Save Chat"),
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
530 "",
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
531 self.trUtf8("Text Files (*.txt);;All Files (*)"),
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
532 None,
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
533 QFileDialog.Options(QFileDialog.DontConfirmOverwrite))
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
534 if fname:
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
535 ext = QFileInfo(fname).suffix()
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
536 if not ext:
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
537 ex = selectedFilter.split("(*")[1].split(")")[0]
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
538 if ex:
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
539 fname += ex
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
540 if QFileInfo(fname).exists():
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
541 res = QMessageBox.warning(self,
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
542 self.trUtf8("Save Chat"),
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
543 self.trUtf8("<p>The file <b>{0}</b> already exists.</p>")
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
544 .format(fname),
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
545 QMessageBox.StandardButtons(\
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
546 QMessageBox.Abort | \
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
547 QMessageBox.Save),
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
548 QMessageBox.Abort)
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
549 if res != QMessageBox.Save:
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
550 return
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
551 fname = Utilities.toNativeSeparators(fname)
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
552
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
553 try:
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
554 f = open(fname, "w", encoding = "utf-8")
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
555 f.write(txt)
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
556 f.close()
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
557 except IOError as err:
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
558 QMessageBox.critical(self,
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
559 self.trUtf8("Error saving Chat"),
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
560 self.trUtf8("""<p>The chat contents could not be written"""
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
561 """ to <b>{0}</b></p><p>Reason: {1}</p>""")\
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
562 .format(fname, str(err)))
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
563
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
564 def __copyChat(self):
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
565 """
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
566 Private slot to copy the contents of the chat display to the clipboard.
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
567 """
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
568 self.chatEdit.copy()
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
569
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
570 def __cutChat(self):
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
571 """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
572 Private slot to cut the contents of the chat display to the clipboard.
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
573 """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
574 self.chatEdit.cut()
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
575
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
576 def __copyAllChat(self):
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
577 """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
578 Private slot to copy the contents of the chat display to the clipboard.
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
579 """
160
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
580 txt = self.chatEdit.toPlainText()
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
581 if txt:
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
582 cb = QApplication.clipboard()
32cc58d56d4d Added a context menu to the chat widget to clear the chat, to save it or to copy it to the clipboard.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 158
diff changeset
583 cb.setText(txt)
162
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
584
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
585 def __cutAllChat(self):
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
586 """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
587 Private slot to cut the contents of the chat display to the clipboard.
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
588 """
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
589 txt = self.chatEdit.toPlainText()
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
590 if txt:
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
591 cb = QApplication.clipboard()
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
592 cb.setText(txt)
28f235c426c4 Added functionality to cut/copy/... the chat and to interactively accept/reject connections.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 161
diff changeset
593 self.chatEdit.clear()

eric ide

mercurial