| Server IP : 77.68.64.21 / Your IP : 216.73.216.219 Web Server : Apache System : Linux hp3-wp-1011378.hostingp3.local 3.10.0-1160.144.1.el7.tuxcare.els9.x86_64 #1 SMP Fri Jul 10 17:06:31 UTC 2026 x86_64 User : csh2668128 ( 2112425) PHP Version : 8.1.34 Disable Function : shell_exec,exec,system,popen,set_time_limit MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/jabberpy-0.5/examples/ |
Upload File : |
#!/usr/bin/python2
import sys
import string
from qt import *
import StringIO
import jabber
import time
from threading import *
from xml.sax import saxutils
from xml.sax import make_parser
def sendMessage (con, to, msg):
msg = jabber.Message(to, msg)
msg.setType('chat')
print 'send ->', msg
con.send(msg)
class DocumentList( QWidget ):
def __init__( self, *args ):
apply( QWidget.__init__, (self, ) + args )
# 1 x 1
self.mainGrid = QGridLayout( self, 1, 1, 5, 5 )
self.listView = QListView( self )
self.listView.addColumn('Document')
self.listView.setSelectionMode( QListView.Extended )
self.connect( self.listView, SIGNAL( 'clicked( QListViewItem* )' ), self.itemSelected )
self.mainGrid.addWidget(self.listView, 1, 0)
self.listView.setAllColumnsShowFocus( 1 )
def itemSelected( self, item ):
if item:
item.setSelected( 1 )
item.repaint()
print item.text(0)
def addDocument (self, docName):
item = QListViewItem(self.listView)
item.setText(0, docName)
class RosterList( QWidget ):
def __init__( self, *args ):
apply(QWidget.__init__, (self, ) + args )
self.users = {}
self.chatWindows = {}
# 1 x 1
self.mainGrid = QGridLayout( self, 1, 1, 5, 5 )
self.listView = QListView( self )
self.listView.addColumn('Handle')
self.listView.addColumn('Status')
self.listView.addColumn('Unread')
self.listView.setSelectionMode( QListView.Extended )
self.connect(self.listView, SIGNAL('clicked( QListViewItem* )' ), self.itemSelected )
self.connect(self.listView, SIGNAL('rightButtonClicked (QListViewItem *, const QPoint &, int)'), self.rightClick)
self.mainGrid.addWidget( self.listView, 1, 0 )
self.listView.setAllColumnsShowFocus( 1 )
self.rosterMenu = QPopupMenu(self)
self.rosterMenu.insertItem('Add', self.queryAddUser)
self.rosterMenu.insertItem('Remove', self.queryRemoveUser)
def rightClick (self, item, point, i):
self.rosterMenu.exec_loop(point, 0)
def queryAddUser(self, userName):
newUser = QInputDialog.getText('Add to roster',
'Please enter handle of user to add', 'new user')
if newUser and newUser[1]:
if con:
con.send(jabber.Presence(str(newUser[0]), 'subscribe'))
def addUser (self, userName, status):
if not self.users.has_key(userName):
item = QListViewItem(self.listView)
item.setText(0, userName)
item.setText(1, status)
item.setText(2, '0')
self.users[userName] = item
def queryRemoveUser (self, userName):
pass
def itemSelected( self, item ):
if item:
item.setSelected(1)
item.repaint()
to = str(item.text(0))
cw = 0
if self.chatWindows.has_key(to):
cw = self.chatWindows[to]
else:
cw = ChatWindow()
cw.peer = to
cw.con = self.con
self.tabWidget.addTab(cw, to)
self.chatWindows[to] = cw
self.users[to].setText(2, '0')
if cw:
self.tabWidget.showPage(cw)
class ChatWindow (QWidget):
def __init__ (self, *args):
apply(QWidget.__init__, (self, ) + args )
self.widget = QWidget(self)
self.mainGrid = QGridLayout(self.widget, 4, 2, 5, 5 )
self.msgField = QLineEdit('', self.widget, 'MsgField')
self.sendButton = QPushButton('&Send', self.widget, 'SendButton')
self.clearButton = QPushButton('&Clear', self.widget, 'ClearButton')
self.listView = QListView( self.widget )
self.listView.setSelectionMode( QListView.Extended )
self.listView.addColumn('Time')
self.listView.addColumn('From')
self.listView.addColumn('Message')
self.label = QLabel('List of Messages', self.widget)
self.mainGrid.addWidget(self.label, 0, 0)
self.mainGrid.addMultiCellWidget(self.listView, 1, 1, 0, 1)
self.mainGrid.addMultiCellWidget(self.msgField, 2, 2, 0, 1)
self.mainGrid.addWidget(self.sendButton, 3, 0)
self.mainGrid.addWidget(self.clearButton, 3, 1)
self.listView.setAllColumnsShowFocus( 1 )
self.connect(self.sendButton, SIGNAL('clicked( )' ), self.sendNewMessage )
self.connect(self.clearButton, SIGNAL('clicked( )' ), self.clear )
self.connect(self.msgField, SIGNAL('returnPressed( )' ), self.sendNewMessage )
self.grid = QGridLayout(self, 1, 1, 5, 5)
self.grid.addWidget(self.widget, 0, 0)
def clear (self):
if self.listView:
self.listView.clear()
if self.msgField:
self.msgField.setText('')
def addMsg (self, source, msg):
item = QListViewItem(self.listView)
item.setText(0, time.strftime('%X', time.localtime(time.time())))
item.setText(1, source)
item.setText(2, msg)
def sendNewMessage (self):
if self.con and self.msgField.text() and self.peer:
self.sendMessage(self.con, self.peer, str(self.msgField.text()));
self.addMsg('me', self.msgField.text())
self.msgField.setText('')
def sendMessage (self, con, to, msg):
msg = jabber.Message(to, msg)
msg.setType('chat')
print 'send ->', msg
con.send(msg)
class AgentEditDialog (QTabWidget):
def __init__ (self, parent, name, con, agentData):
QTabWidget.__init__(self, parent, name)
self.con = con
self.agentData = agentData
self.listView = QListView( self )
self.listView.addColumn('Name')
self.listView.addColumn('Value')
print self.agentData
for key in self.agentData.keys():
item = QListViewItem(self.listView)
item.setText(0, key)
item.setText(1, self.agentData[key])
name = 'noname'
if self.agentData.has_key('name'):
name = self.agentData['name']
self.addTab(self.listView, name)
class AgentDialog (QTabDialog):
def __init__ (self, parent, con):
QTabDialog.__init__(self, parent, 'agents' )
self.con = con
self.listView = QListView( self )
self.listView.addColumn('Agent')
self.regInfo = con.requestRegInfo()
#print con.getRegInfo()
self.agents = con.requestAgents()
for key in self.agents.keys():
item = QListViewItem(self.listView)
item.setText(0, key)
self.addTab(self.listView, '&Agents')
self.connect(self.listView, SIGNAL( 'clicked( QListViewItem* )' ), self.itemSelected )
self.editWindows = {}
def itemSelected( self, item ):
key = str(item.text(0));
if not self.editWindows.has_key(key):
aed = AgentEditDialog(self, None, self.con, self.agents[str(item.text(0))])
self.editWindows[key] = aed
self.addTab(aed, key)
self.showPage(self.editWindows[key])
class DocumentWindow (QMainWindow):
def __init__ (self, con):
QMainWindow.__init__( self, None, 'jyqt' )
self.con = con
self.initMenuBar()
self.initWidgets()
if self.con:
self.con.registerHandler('presence',self.presenceCB)
self.con.registerHandler('message',self.messageCB)
self.statusBar().message('Connected')
self.timer = QTimer(self)
self.connect(self.timer, SIGNAL('timeout()'), self.timeout)
self.timer.start(1000)
def presenceCB(self, con, prs):
who = str(prs.getFrom())
i = string.find(who, '/')
status = str(prs.getStatus())
if i > 0:
self.rosterList.addUser(who[:i], status)
else:
self.rosterList.addUser(who, status)
who = str(prs.getFrom())
type = prs.getType()
if type == None:
type = 'available'
if type == 'subscribe':
con.send(jabber.Presence(to=who, type='subscribed'))
con.send(jabber.Presence(to=who, type='subscribe'))
elif type == 'unsubscribe':
con.send(jabber.Presence(to=who, type='unsubscribed'))
con.send(jabber.Presence(to=who, type='unsubscribe'))
def messageCB(self, con, msg):
sender = str(msg.getFrom())
i = string.find(sender, '/')
if i > 0:
sender = sender[:i]
cw = 0
if self.rosterList.chatWindows.has_key(sender):
cw = self.rosterList.chatWindows[sender]
else:
cw = ChatWindow()
cw.peer = sender
cw.con = self.con
self.tabWidget.addTab(cw, sender)
self.rosterList.chatWindows[sender] = cw
if cw:
source = str(msg.getFrom())
i = string.find(source, '/')
if i:
source = source[i+1:]
cw.addMsg(source, str(msg.getBody()))
#self.tabWidget.showPage(cw)
tabBar = self.tabWidget.tabBar()
tab = tabBar.tab(2)
if self.rosterList.users and self.rosterList.users.has_key(sender):
item = self.rosterList.users[sender]
last = 0
if item.text(2):
s = str(item.text(2))
if s:
last = int(s)
item.setText(2, str(last + 1))
def timeout(self):
if self.con:
self.con.process(0)
def initMenuBar (self):
self.fileMenu = QPopupMenu(self)
self.menuBar().insertItem('&File', self.fileMenu)
self.fileMenu.insertItem( '&About', self.about, Qt.Key_F1)
self.fileMenu.insertItem( 'Quit', qApp, SLOT( 'quit()' ), Qt.CTRL + Qt.Key_Q )
self.agentMenu = QPopupMenu(self)
self.menuBar().insertItem('&Agents', self.agentMenu)
self.agentMenu.insertItem( '&Edit', self.editAgents)
def editAgents (self):
if self.con:
ad = AgentDialog(self, self.con)
ad.show()
def about(self):
QMessageBox.about(self,'JYQT', 'JYQT 0.01 by www.elevenprospect.com')
def initWidgets (self):
self.tabWidget = QTabWidget(self)
self.documentList = DocumentList(self)
self.rosterList= RosterList(self)
self.rosterList.con = con
self.rosterList.tabWidget = self.tabWidget
self.tabWidget.addTab(self.rosterList, '&Roster')
self.tabWidget.addTab(self.documentList, '&Documents')
self.setCentralWidget(self.tabWidget)
def addDocument (self, docName):
self.documentList.addDocument(docName)
userName = ''
password = ''
hostname = 'jabber.org'
for x in xrange(1, len(sys.argv)):
if sys.argv[x] == '-u':
userName = sys.argv[x + 1]
if sys.argv[x] == '-p':
password = sys.argv[x + 1]
if sys.argv[x] == '-h':
hostname = sys.argv[x + 1]
# jabber
con = None
if hostname:
con = jabber.Client(host=hostname)
if con:
try:
con.connect()
except IOError, e:
print e
if con and userName and password and con.auth(userName, password, 'default'):
print 'connected'
else:
con = None
print 'not connected'
if con:
con.requestRoster()
con.sendInitPresence()
else:
print 'not connected'
# setup QT
a = QApplication(sys.argv)
dw = DocumentWindow(con)
a.setMainWidget(dw)
# Start QT Window
dw.resize(500, 300)
dw.show()
a.exec_loop()
# disconnect
if con:
con.disconnect()