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 pickedContactCallback( self, contact ):
		QHelper.log( '::CONNECT:QContact:pickedContact', contact )
		if self.name == contact:
			self.selected = True
			self.update()
		else:
			pass
Esempio n. 4
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. 5
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. 6
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. 7
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. 8
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. 9
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. 10
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. 11
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. 12
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. 13
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. 14
0
File: ui.py Progetto: hcit/pyqt
	def projectListCallback( self, projectList ):
		QHelper.log( '::CONNECT:QReportView:projectList', projectList )
		projectList = [( k, v.get('title','') ) for k,v in projectList.items()]
		for project, title in projectList:
			self.fields['project'].addItem( project )
Esempio n. 15
0
File: ui.py Progetto: hcit/pyqt
	def reportCancelCallback( self ):
		QHelper.log( '::CONNECT:QReportView:reportCancel' )
		self.hide()
Esempio n. 16
0
File: ui.py Progetto: hcit/pyqt
	def preferencesCancelCallback( self ):
		QHelper.log( '::CONNECT:QPreferencesView:preferencesCancel' )
		self.hide()
Esempio n. 17
0
File: async.py Progetto: hcit/pyqt
	def presenceCallbackHook( self, contact, status, message ):
		QHelper.log( '::ASYNC:CALLBACK:presence' )
		self.master.emit( QtCore.SIGNAL( 'contactStatus' ), contact, status, message )
Esempio n. 18
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. 19
0
File: async.py Progetto: hcit/pyqt
	def connectSuccessCallbackHook( self ):
		QHelper.log( '::ASYNC:CALLBACK:connectSuccess' )
		self.master.emit( QtCore.SIGNAL( 'loginSuccess' ) )
Esempio n. 20
0
File: async.py Progetto: hcit/pyqt
	def transportJob( self, callback, *arg ):
		QHelper.log( '::ASYNC:CONNECT:TRANSPORT:' + callback, *arg )
		assert callback != 'execute'
		Transport.execute( callback, *arg )
Esempio n. 21
0
File: async.py Progetto: hcit/pyqt
	def docQueryCallbackHook( self, result, emit ):
		QHelper.log( '::ASYNC:CALLBACK:docQuery', result, emit, LEVEL=QHelper.LOG_LEVEL_ERROR )
		if emit:
			self.master.emit( QtCore.SIGNAL( emit ), result )
Esempio n. 22
0
File: ui.py Progetto: hcit/pyqt
	def loginSuccessCallback( self ):
		QHelper.log( '::CONNECT:QLoginView:loginSuccess' )
		DBConf.set( 'username', QHelper.getValue( self.fields['username'] ) )
		DBConf.set( 'passwd', QHelper.getValue( self.fields['passwd'] ) )
		self.hide()
		self.status.setText( '' )
Esempio n. 23
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 )
Esempio n. 24
0
File: ui.py Progetto: hcit/pyqt
	def loginErrorCallback( self, e ):
		QHelper.log( '::CONNECT:QLoginView:loginError', e )
		self.status.setText( str( e ) )
		self.status.setStyleSheet( 'QLabel { color : red; }' )
Esempio n. 25
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. 26
0
File: ui.py Progetto: hcit/pyqt
	def loginCancelCallback( self ):
		QHelper.log( '::CONNECT:QLoginView:loginCancel' )
		QtGui.qApp.quit()
Esempio n. 27
0
File: async.py Progetto: hcit/pyqt
	def sendMessageCallbackHook( self, recipient, message ):
		QHelper.log( '::ASYNC:CALLBACK:sendMessage' )
Esempio n. 28
0
File: ui.py Progetto: hcit/pyqt
	def preferencesCancelCallback( self ):
		QHelper.log( '::CONNECT:QLoginView:preferencesCancel' )
		if not QHelper.master().isVisible() and not self.isVisible():
			self.show()
Esempio n. 29
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. 30
0
File: ui.py Progetto: hcit/pyqt
	def preferencesSubmitCallback( self ):
		QHelper.log( '::CONNECT:QPreferencesView:preferencesSubmit' )
		for k, v in self.values().items():
			DBConf.set( k, type( DBConf.get( k ) )( v ) )
		self.hide()