Esempio n. 1
0
File: ui.py Progetto: hcit/pyqt
	def projectListCallback( self, projectList ):
		QHelper.log( '::CONNECT:QProjectList:projectList', projectList )
		projectList = [( k, v.get('title','') ) for k,v in projectList.items()]
		for project, title in projectList:
			if not project in self.radioList.keys():
				self.radioList[project] = QProject( project, title, self )
				self.layout.addWidget( self.radioList[project] )
Esempio n. 2
0
	def getPresence( cls, session, presence ):
		#print '::ROSTER:STATUS_FOR', presence.getFrom(), str( presence.getFrom() ).split('/')[0]
		#print '::ROSTER:STATUS', cls._roster.getStatus( presence.getFrom().getStripped() )
		contact = str( presence.getFrom() ).split('@')[0]
		status = presence.getType() or presence.getShow() or 'online'
		message = presence.getStatus() or ''
		presence_status = {
			'getFrom':presence.getFrom(),
			'getFrom.getStripped':presence.getFrom().getStripped(),
			'getType':presence.getType(),
			'getShow':presence.getShow(),
			'getStatus':presence.getStatus()
		}
		QHelper.log( '::TRANSPORT:PRESENCE', contact, status, message, LEVEL=QHelper.LOG_LEVEL_DEBUG )
		"""
		print '::PRESENCE:STATUS', {
			'getFrom':presence.getFrom(),
			'getFrom.getStripped':presence.getFrom().getStripped(),
			'getType':presence.getType(),
			'getShow':presence.getShow(),
			'getStatus':presence.getStatus()
		}
		"""
		cls._contactList[contact] = ( status, message )
		if cls.listener and hasattr( cls.listener, 'presenceCallbackHook' ):
			cls.listener.presenceCallbackHook( contact, status, message )
		cls.presenceCallback( contact, status, message )
Esempio n. 3
0
File: ui.py Progetto: hcit/pyqt
	def __init__( self, parent ):
		super( self.__class__, self ).__init__( parent )
		self.textCursor = QtGui.QTextCursor( self.document() )
		self.setReadOnly( 1 )
		self.project = None
		self.connect( QHelper.master(), QtCore.SIGNAL( 'pickedProject' ), self.pickedProjectCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'projectData' ), self.projectDataCallback )
Esempio n. 4
0
File: ui.py Progetto: hcit/pyqt
	def __init__( self, parent ):
		super( self.__class__, self ).__init__( '', parent )
		self.parent = parent
		self.contact = None
		self.__sendMessageOnReturn = True
		self.connect( QHelper.master(), QtCore.SIGNAL( 'pickedContact' ), self.pickedContactCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'sendMessage' ), self.sendMessageCallback )
Esempio n. 5
0
File: ui.py Progetto: hcit/pyqt
	def __init__( self ):
		QForm.__init__( self )
		self.setWindowTitle( 'Report' + ' - ' + DBConf.get( 'appname' ) )
		self.setWindowTitle( 'Preferences' + ' - ' + DBConf.get( 'appname' ) )
		self.resize( 450, 250 )
		self.move( 350, 350 )
		
		grid = QtGui.QGridLayout()
		n = 0
		for key, value in DBConf.list():
			grid.addWidget( QtGui.QLabel( key ), n, 0 )
			grid.addWidget( self.lineEditField( key, str( value ) ), n, 1 )
			n += 1
		
		self.submit = QtGui.QPushButton( 'Save', self )
		self.submit.clicked.connect( lambda: QHelper.master().emit( QtCore.SIGNAL( 'preferencesSubmit' ) ) )
		
		self.cancel = QtGui.QPushButton( 'Cancel', self )
		self.cancel.clicked.connect( lambda: QHelper.master().emit( QtCore.SIGNAL( 'preferencesCancel' ) ) )
		
		hbox = QtGui.QHBoxLayout()
		hbox.addStretch( 1 )
		hbox.addWidget( self.submit )
		hbox.addWidget( self.cancel )
		
		buttons = QtGui.QWidget()
		buttons.setLayout( hbox )
		
		grid.addWidget( buttons, n, 0, 1 ,2 )
			
		self.setLayout( grid )
		
		self.connect( QHelper.master(), QtCore.SIGNAL( 'preferencesSubmit' ), self.preferencesSubmitCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'preferencesCancel' ), self.preferencesCancelCallback )
Esempio n. 6
0
File: ui.py Progetto: hcit/pyqt
	def pickedContactCallback( self, contact ):
		QHelper.log( '::CONNECT:QContact:pickedContact', contact )
		if self.name == contact:
			self.selected = True
			self.update()
		else:
			pass
Esempio n. 7
0
File: ui.py Progetto: hcit/pyqt
	def __init__( self ):
		QForm.__init__( self )
		self.setWindowTitle( 'Report' + ' - ' + DBConf.get( 'appname' ) )
		self.resize( 200, 200 )
		self.move( 350, 350 )
		
		grid = QtGui.QGridLayout()
		
		self.status = QtGui.QLabel( 'Report' )
		grid.addWidget( self.status, 0, 0, 2, 2 )
		
		grid.addWidget( QtGui.QLabel( 'Project' ), 2, 0 )
		grid.addWidget( self.comboBoxField( 'project' ), 2, 1 )
		
		grid.addWidget( self.lineEditField( 'h', '', 'hours' ), 3, 0 )
		grid.addWidget( self.lineEditField( 'm', '', 'minutes' ), 3, 1 )
		
		grid.addWidget( QtGui.QLabel( 'Summary' ), 4, 0, 1, 2 )
		grid.addWidget( self.textEditField( 'summary' ), 5, 0, 1, 2 )
		
		self.submit = QtGui.QPushButton( 'Send', self )
		self.submit.clicked.connect( lambda: QHelper.master().emit( QtCore.SIGNAL( 'reportSubmit' ) ) )
		grid.addWidget( self.submit, 6, 0 )
		
		self.cancel = QtGui.QPushButton( 'Cancel', self )
		self.cancel.clicked.connect( lambda: QHelper.master().emit( QtCore.SIGNAL( 'reportCancel' ) ) )
		grid.addWidget( self.cancel, 6, 1 )
		
		self.setLayout( grid )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'projectList' ), self.projectListCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'reportSubmit' ), self.reportSubmitCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'reportCancel' ), self.reportCancelCallback )
Esempio n. 8
0
File: ui.py Progetto: hcit/pyqt
	def addContactCallback( self, contact, group ):
		QHelper.log( '::CONNECT:QContact:addContact', contact )
		if self.name == contact:
			self.group = group
			group_id = DB.execute( "SELECT `id` FROM `contact_group` WHERE `name`=?", self.group )[0]['id']
			if not DB.execute( "INSERT OR IGNORE INTO `contact` ( `name`, `contact_group_id` ) VALUES ( ?, ? )", self.name, group_id ):
				DB.execute( "UPDATE `contact` SET `contact_group_id`=? WHERE `name`=? )", group_id, self.name )
			self.update()
Esempio n. 9
0
File: async.py Progetto: hcit/pyqt
	def getMessageCallbackHook( self, sender, message ):
		QHelper.log( '::ASYNC:CALLBACK:getMessage' )
		if self.messageCallbackHandler is not None:
			self.messageCallbackHandler( sender, message )
			self.messageCallbackHandler = None
			return
		elif message:
			self.master.emit( QtCore.SIGNAL( 'receiveMessage' ), sender, message )
Esempio n. 10
0
	def _process( cls, arg=1 ):
		while 1:
			try:
				cls._get_client().Process( arg )
			except ValueError as e:
				QHelper.log( '::TRANSPORT:PROCESS:VALUEERROR', e, LEVEL=QHelper.LOG_LEVEL_ERROR )
				cls.serverError( e )
			"""
Esempio n. 11
0
File: ui.py Progetto: hcit/pyqt
	def keyPressEvent( self, event ):
		if event.key() == QtCore.Qt.Key_Shift:
			self.__sendMessageOnReturn = False
		elif event.key() == QtCore.Qt.Key_Return:
			if self.__sendMessageOnReturn:
				if len( self.toPlainText() ):
					QHelper.master().emit( QtCore.SIGNAL( 'sendMessage' ), self.contact, self.toPlainText() )
					return
		QtGui.QTextEdit.keyPressEvent( self, event )
Esempio n. 12
0
File: ui.py Progetto: hcit/pyqt
	def sendMessageCallback( self, contact, message ):
		QHelper.log( '::CONNECT:QChatDialog:sendMessage', contact, message )
		if not self.messagesTime.get( contact, None ): self.messagesTime[contact] = []
		if not self.messagesList.get( contact, None ): self.messagesList[contact] = {}
		DBHistory.set( DBConf.get( 'username' ), contact, message )
		ts = time.time()
		self.messagesTime[contact].append( str( ts ) )
		self.messagesList[contact][str( ts )] = { 'ts':str( ts ), 'sender':DBConf.get( 'username' ), 'recipient':contact, 'message':message }
		self.message( str( ts ), DBConf.get( 'username' ), message )
Esempio n. 13
0
File: ui.py Progetto: hcit/pyqt
	def pickedContactCallback( self, contact ):
		QHelper.log( '::CONNECT:QChatDialog:pickedContact', contact )
		if not self.messagesTime.get( contact, None ): self.messagesTime[contact] = []
		if not self.messagesList.get( contact, None ): self.messagesList[contact] = {}
		self.parent.setWindowTitle( contact + ' - ' + DBConf.get( 'appname' ) )
		self.contact = contact
		self.clear()
		for message in self.messages( contact ):
			self.message( message['ts'], message['sender'], message['message'] )
Esempio n. 14
0
File: ui.py Progetto: hcit/pyqt
	def __init__( self, parent ):
		super( self.__class__, self ).__init__( parent )
		self.radioList = {}
		self.projectListItems = {}
		self.layout = QtGui.QVBoxLayout()
		self.setLayout( self.layout )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'projectList' ), self.projectListCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'pickedProject' ), self.pickedProjectCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'projectData' ), self.projectDataCallback )
Esempio n. 15
0
File: ui.py Progetto: hcit/pyqt
	def __init__( self, name, title, parent ):
		super( self.__class__, self ).__init__( name + '['+title+']' )
		self.parent = parent
		self.name = name
		self.title = title
		self.connect( QHelper.master(), QtCore.SIGNAL( 'projectList' ), self.projectListCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'pickedProject' ), self.pickedProjectCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'projectData' ), self.projectDataCallback )
		self.clicked.connect( lambda: QHelper.master().emit( QtCore.SIGNAL( 'pickedProject' ), self.name ) )
Esempio n. 16
0
File: ui.py Progetto: hcit/pyqt
	def __init__( self, parent ):
		super( self.__class__, self ).__init__( parent )
		self.messagesTime = {}
		self.messagesList = {}
		self.parent = parent
		self.contact = None
		self.textCursor = QtGui.QTextCursor( self.document() )
		self.setReadOnly( 1 )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'pickedContact' ), self.pickedContactCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'sendMessage' ), self.sendMessageCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'receiveMessage' ), self.receiveMessageCallback )
Esempio n. 17
0
File: dbs.py Progetto: hcit/pyqt
	def set( cls, sender, recipient, message, ts=None ):
		cls.setPath( sender, recipient )
		if not ts:
			ts = time.time()
		cls.handle()[str( ts )] = {
			'ts':str( int( ts ) ),
			'sender':QHelper.str( sender ),
			'recipient':QHelper.str( recipient ),
			'message':QHelper.str( message )
		}
		cls.handle().sync()
Esempio n. 18
0
File: ui.py Progetto: hcit/pyqt
	def __init__( self, name, status, statusMessage, parent ):
		#super( self.__class__, self ).__init__( '' )
		QtGui.QWidget.__init__( self, parent )
		self.setObjectName( 'QContact' )
		self.name = name
		self.parent = parent
		self.messagesNew = {}
		self.status = status
		self.statusMessage = statusMessage
		self.selected = False
		self.group = None
		self.setStyleSheet( 'QWidget#QContact { background:#ddd; color:#333; }' )
		self.buttons = QtGui.QWidget( self )
		
		self.nameLabel = QtGui.QLabel( self.name )
		self.statusLabel = QtGui.QLabel( self.status )
		self.statusLabel.setStyleSheet( 'QLabel { color:#999; }' )
		self.messagesLabel = QtGui.QLabel( '' )
		self.messagesLabel.setStyleSheet( 'QLabel { color:#000; font-weight:bold; }' )
		
		self.buttons.chatButton = QtGui.QPushButton( 'chat' )
		self.buttons.chatButton.clicked.connect( lambda: QHelper.master().emit( QtCore.SIGNAL( 'pickedContact' ), self.name ) )
		self.buttons.addButton = QtGui.QPushButton( 'Add to List' )
		self.buttons.addButton.clicked.connect( lambda: QHelper.master().emit( QtCore.SIGNAL( 'addContact' ), self.name, 'general' ) )
		self.buttons.removeButton = QtGui.QPushButton( 'Remove from List' )
		self.buttons.removeButton.clicked.connect( lambda: QHelper.master().emit( QtCore.SIGNAL( 'removeContact' ), self.name ) )
		
		layout = QtGui.QHBoxLayout( self.buttons )
		layout.addStretch( 1 )
		layout.addWidget( self.buttons.chatButton )
		layout.addWidget( self.buttons.addButton )
		layout.addWidget( self.buttons.removeButton )
		
		grid = QtGui.QGridLayout( self )
		grid.addWidget( self.nameLabel, 0, 0 )
		grid.addWidget( self.messagesLabel, 0, 1 )
		grid.addWidget( self.statusLabel, 2, 0, 1, 2 )
		grid.addWidget( self.buttons, 3, 1 )
		self.buttons.hide()
		
		self.connect( QHelper.master(), QtCore.SIGNAL( 'sendMessage' ), self.sendMessageCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'receiveMessage' ), self.receiveMessageCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'contactStatus' ), self.contactStatusCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'clickedContact' ), self.clickedContactCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'pickedContact' ), self.pickedContactCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'addContact' ), self.addContactCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'removeContact' ), self.removeContactCallback )
		#self.clicked.connect( lambda: QHelper.master().emit( QtCore.SIGNAL( 'pickedContact' ), self.name ) )
		self.update()
Esempio n. 19
0
File: ui.py Progetto: hcit/pyqt
	def clickedContactCallback( self, contact ):
		QHelper.log( '::CONNECT:QContact:clickedContact', contact )
		ts = time.time()
		if hasattr( self, 'lastClick' ):
			lastClick = ts - self.lastClick
		else:
			lastClick = 999
		if lastClick >= 0.5:
			self.lastClick = ts
			if ( self.name == contact ) and not self.buttons.isVisible():
				self.setStyleSheet( 'QWidget#QContact { background:#fff; color:#333; }' )
				self.buttons.show()
			else:
				self.buttons.hide()
				self.setStyleSheet( 'QWidget#QContact { background:#ddd; color:#333; }' )
Esempio n. 20
0
File: ui.py Progetto: hcit/pyqt
	def __init__( self, parent ):
		super( self.__class__, self ).__init__( parent )
		self.radioList = {}
		self.contactListItems = {}
		self.layout = QtGui.QVBoxLayout()
		self.layout.addStretch( 1 )
		#self.layout.setAlignment( QtCore.Qt.AlignTop )
		self.setLayout( self.layout )
		self.contact = None
		#self.master.View.contactItem( contact, status )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'receiveMessage' ), self.receiveMessageCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'contactStatus' ), self.contactStatusCallback )
		self.connect( QHelper.master(), QtCore.SIGNAL( 'pickedContact' ), self.pickedContactCallback )
		for row in DB.execute( "SELECT `contact`.*, `contact_group`.`name` FROM `contact`, `contact_group` WHERE `contact`.`contact_group_id`=`contact_group`.`id`" ):
			self.radioList[row['name']] = QContact( row['name'], 'offline', '', self )
			self.layout.addWidget( self.radioList[row['name']] )
Esempio n. 21
0
File: ui.py Progetto: hcit/pyqt
	def reportSubmitCallback( self ):
		QHelper.log( '::CONNECT:QReportView:reportSubmit' )
		data = self.values()
		reportData = 'report %sh %sm on %s %s' % (
			QHelper.str( data.get( 'h', '0' ) ),
			QHelper.str( data.get( 'm', '0' ) ),
			QHelper.str( data.get( 'project', '' ) ),
			QHelper.str( data.get( 'summary', '' ) ),
		)
		print '::REPORT:MESSAGE', reportData
		QHelper.master().emit( QtCore.SIGNAL( 'transportSignal' ), 'sendMessage', DBConf.get( 'bot' ), reportData )
		self.hide()
Esempio n. 22
0
File: ui.py Progetto: hcit/pyqt
	def projectDataCallback( self, projectData ):
		print '::QProjctData', projectData.items()
		QHelper.log( '::CONNECT:QProjectData:projectData', projectData )
		self.clear()
		data = '<table width="100%" cellspacing="4" cellpadding="0">'
		n=0
		for k, v in projectData.items():
			print k,v
			if QHelper.str( k ) in ['_id', '_rev']:
				continue
			n+=1
			data += '<tr>'
			data += '<th style="background:'+(n%2 and '#f6f6f6' or '#fcfcfc')+';">' + str( k ) + '</th>'
			data += '<td style="">' + self.plain( v ) + '</td>'
			data += '</tr>'
		data += '</table>'
		text =  '<span style="font-weight:bold; color:#66f;">[%s]</span><br />%s<br />' % (
				self.project,
				data
			)
		self.write( text )
		print '::WROTE'
Esempio n. 23
0
	def _connect( cls, username=None, passwd=None, conf={} ):
		if username:
			cls.conf['username'] = username
		if passwd:
			cls.conf['passwd'] = passwd
		if conf.get( 'server', None ):
			cls.conf['server'] = conf['server']
		if conf.get( 'port', None ):
			cls.conf['port'] = conf['port']
		if conf.get( 'nickname', None ):
			cls.conf['nickname'] = conf['nickname']
		QHelper.log( '::TRANSPORT-CONNECT', cls.conf )
		"""Set up a connection to xmpp server. Authenticate"""
		#cls._client = xmpp.Client( cls.conf['server'] )
		cls._client = xmpp.Client( cls.conf['server'], debug=[] )
		cls._client.connect( server=( cls.conf['server'], cls.conf['port'] ) )
		cls._status = cls._client.auth( cls.conf['username'], cls.conf['passwd'], cls.conf['nickname'] ) and True
		if cls._status is None:
			cls._client = None
			
			if cls.listener and hasattr( cls.listener, 'connectErrorCallbackHook' ):
				cls.listener.connectErrorCallbackHook()
			cls.connectErrorCallback()
			
			return None
		cls._client.RegisterHandler( 'message', cls.getMessage )
		cls._client.RegisterHandler( 'presence', cls.getPresence )
		# http://stackoverflow.com/questions/2381597/xmpp-chat-accessing-contacts-status-messages-with-xmpppys-roster
		cls._client.sendInitPresence( requestRoster=1 )
		cls._set_process()
		cls._get_roster()
		
		if cls.listener and hasattr( cls.listener, 'connectSuccessCallbackHook' ):
			cls.listener.connectSuccessCallbackHook()
		cls.connectSuccessCallback()
		
		return True
Esempio n. 24
0
	def _get_roster( cls ):
		return
		if cls._client and not cls._roster:
			QHelper.log( '::TRANSPORT:GET_ROSTER' )
			try:
				cls._roster = cls._get_client().getRoster()
				QHelper.log( '::TRANSPORT:GET_ROSTER:OK', cls._roster )
			except Exception as e:
				QHelper.log( '::TRANSPORT:GET_ROSTER:EXCEPTION', e )
		return cls._roster
Esempio n. 25
0
File: dbs.py Progetto: hcit/pyqt
	def execute( cls, queryString, *arg ):
		QHelper.log( '::DB:execute', queryString, arg )
		cls.cur().execute( queryString, arg )
		
		if queryString.strip().lower().startswith( 'select' ):
			# SELECT: return result
			result = cls.cur().fetchall()
			QHelper.log( '::DB:select:fetchall', result )
			return result
		else:
			# write-query: commit after execution 
			cls.conn().commit()
			
			rowcount = cls.cur().rowcount
			lastrowid = cls.cur().lastrowid
			
			if queryString.strip().lower().startswith( 'insert' ):
				# INSERT: return last inserted id
				QHelper.log( '::DB:insert:rowcount', rowcount )
				QHelper.log( '::DB:insert:lastrowid', lastrowid )
				return lastrowid
			else:
				QHelper.log( '::DB:update:rowcount', rowcount )
				QHelper.log( '::DB:update:lastrowid', lastrowid )
				return rowcount
Esempio n. 26
0
File: async.py Progetto: hcit/pyqt
	def sendMessageCallbackHook( self, recipient, message ):
		QHelper.log( '::ASYNC:CALLBACK:sendMessage' )
Esempio n. 27
0
File: async.py Progetto: hcit/pyqt
	def serverErrorCallbackHook( self, e ):
		QHelper.log( '::ASYNC:CALLBACK:serverError' )
		self.master.emit( QtCore.SIGNAL( 'serverError' ), str( e ) )
Esempio n. 28
0
File: async.py Progetto: hcit/pyqt
	def connectErrorCallbackHook( self ):
		QHelper.log( '::ASYNC:CALLBACK:connectError' )
		self.master.emit( QtCore.SIGNAL( 'loginError' ), 'Bad login' )
Esempio n. 29
0
File: async.py Progetto: hcit/pyqt
	def connectSuccessCallbackHook( self ):
		QHelper.log( '::ASYNC:CALLBACK:connectSuccess' )
		self.master.emit( QtCore.SIGNAL( 'loginSuccess' ) )
Esempio n. 30
0
File: async.py Progetto: hcit/pyqt
	def dbJob( self, callback, *arg ):
		QHelper.log( '::ASYNC:CONNECT:DB:' + callback, *arg )
		assert callback != 'queue'
		DBRemote.queue( callback, *arg )