Exemple #1
0
UINT PyWeaselHandler::AddSession(LPWSTR buffer)
{
	UINT id = 0;
	try
	{
		id = python::extract<UINT>(m_service.attr("create_session")());
		if (!id)
		{
			return 0;
		}
		python::object session = m_service.attr("get_session")(id);
		if (session.is_none())
		{
			return 0;
		}
		wstring resp = python::extract<wstring>(session.attr("get_response")());
		_Respond(buffer, resp);

	}
	catch (python::error_already_set e)
	{
		return 0;
	}

	return id;
}
Exemple #2
0
int
respond(void *v)
{
	int *msgvec = v;

	if (value("Replyall") == NULL)
		return(_respond(msgvec));
	else
		return(_Respond(msgvec));
}
Exemple #3
0
BOOL RimeWithWeaselHandler::ProcessKeyEvent(weasel::KeyEvent keyEvent, UINT session_id, LPWSTR buffer)
{
	DLOG(INFO) << "Process key event: keycode = " << keyEvent.keycode << ", mask = " << keyEvent.mask
		 << ", session_id = " << session_id;
	if (m_disabled) return FALSE;
	Bool handled = RimeProcessKey(session_id, keyEvent.keycode, expand_ibus_modifier(keyEvent.mask));
	_Respond(session_id, buffer);
	_UpdateUI(session_id);
	m_active_session = session_id;
	return (BOOL)handled;
}
Exemple #4
0
UINT RimeWithWeaselHandler::AddSession(LPWSTR buffer, EatLine eat)
{
	if (m_disabled)
	{
		DLOG(INFO) << "Trying to resume service.";
		EndMaintenance();
		if (m_disabled) return 0;
	}
	UINT session_id = RimeCreateSession();
	DLOG(INFO) << "Add session: created session_id = " << session_id;
	_ReadClientInfo(session_id, buffer);
	// show session's welcome message :-) if any
	if (eat) {
		_Respond(session_id, eat);
	}
	_UpdateUI(session_id);
	m_active_session = session_id;
	return session_id;
}
Exemple #5
0
BOOL PyWeaselHandler::ProcessKeyEvent(weasel::KeyEvent keyEvent, UINT session_id, LPWSTR buffer)
{
	bool taken = false;
	try
	{
		python::object session = m_service.attr("get_session")(session_id);
		if (session.is_none())
		{
			return FALSE;
		}
		
		taken = python::extract<bool>(session.attr("process_key_event")(keyEvent.keycode, keyEvent.mask));
		wstring resp = python::extract<wstring>(session.attr("get_response")());
		_Respond(buffer, resp);
	}
	catch (python::error_already_set e)
	{
		return FALSE;
	}
	
	return (BOOL)taken;
}