|
|
|
@@ -1,15 +1,17 @@
|
|
|
|
|
//
|
|
|
|
|
// CannaLooper.cpp
|
|
|
|
|
// CannaIM looper object
|
|
|
|
|
/*
|
|
|
|
|
* Copyright 2007-2009 Haiku Inc. All rights reserved.
|
|
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
|
*
|
|
|
|
|
* Copyright 1999 M.Kawamura
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// This is a part of...
|
|
|
|
|
// CannaIM
|
|
|
|
|
// version 1.0
|
|
|
|
|
// (c) 1999 M.Kawamura
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "CannaLooper.h"
|
|
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
|
|
#include <Debug.h>
|
|
|
|
|
|
|
|
|
|
#include <Alert.h>
|
|
|
|
|
#include <FindDirectory.h>
|
|
|
|
|
#include <Input.h>
|
|
|
|
@@ -19,96 +21,75 @@
|
|
|
|
|
#include <Path.h>
|
|
|
|
|
#include <Screen.h>
|
|
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
# include <Debug.h>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#include "CannaCommon.h"
|
|
|
|
|
#include "CannaLooper.h"
|
|
|
|
|
#include "CannaMethod.h"
|
|
|
|
|
#include "KouhoWindow.h"
|
|
|
|
|
#include "PaletteWindow.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CannaLooper::CannaLooper(CannaMethod* method)
|
|
|
|
|
: BLooper("Canna Looper")
|
|
|
|
|
: BLooper("Canna Looper"),
|
|
|
|
|
fOwner(method),
|
|
|
|
|
fCanna(NULL),
|
|
|
|
|
fKouhoWindow(NULL),
|
|
|
|
|
fPaletteWindow(NULL)
|
|
|
|
|
{
|
|
|
|
|
owner = method;
|
|
|
|
|
canna = 0;
|
|
|
|
|
theKouhoWindow = 0;
|
|
|
|
|
thePalette = 0;
|
|
|
|
|
self = BMessenger( NULL, this );
|
|
|
|
|
fMenu = new BMenu(B_EMPTY_STRING);
|
|
|
|
|
fMenu->SetFont(be_plain_font);
|
|
|
|
|
fMenu->AddItem(new BMenuItem("About CannaIM" B_UTF8_ELLIPSIS,
|
|
|
|
|
new BMessage( B_ABOUT_REQUESTED)));
|
|
|
|
|
fMenu->AddSeparatorItem();
|
|
|
|
|
fMenu->AddItem(new BMenuItem("Convert arrow keys",
|
|
|
|
|
new BMessage(ARROW_KEYS_FLIPPED)));
|
|
|
|
|
fMenu->AddItem(new BMenuItem("Reload Init file",
|
|
|
|
|
new BMessage(RELOAD_INIT_FILE)));
|
|
|
|
|
|
|
|
|
|
theMenu = new BMenu( B_EMPTY_STRING );
|
|
|
|
|
theMenu->SetFont( be_plain_font );
|
|
|
|
|
theMenu->AddItem( new BMenuItem( "About CannaIM" B_UTF8_ELLIPSIS, new BMessage( B_ABOUT_REQUESTED )));
|
|
|
|
|
theMenu->AddSeparatorItem();
|
|
|
|
|
theMenu->AddItem( new BMenuItem( "Convert arrow keys", new BMessage( ARROW_KEYS_FLIPPED )));
|
|
|
|
|
theMenu->AddItem( new BMenuItem( "Reload Init file", new BMessage( RELOAD_INIT_FILE )));
|
|
|
|
|
|
|
|
|
|
if ( gSettings.convert_arrowkey )
|
|
|
|
|
{
|
|
|
|
|
BMenuItem *item = theMenu->FindItem( ARROW_KEYS_FLIPPED );
|
|
|
|
|
item->SetMarked( true );
|
|
|
|
|
if (gSettings.convert_arrowkey) {
|
|
|
|
|
BMenuItem* item = fMenu->FindItem(ARROW_KEYS_FLIPPED);
|
|
|
|
|
item->SetMarked(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Run();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
status_t
|
|
|
|
|
CannaLooper::InitCheck()
|
|
|
|
|
CannaLooper::Init()
|
|
|
|
|
{
|
|
|
|
|
status_t err;
|
|
|
|
|
char basepath[ B_PATH_NAME_LENGTH + 1 ];
|
|
|
|
|
err = ReadSettings( basepath );
|
|
|
|
|
if ( err != B_NO_ERROR )
|
|
|
|
|
char basePath[B_PATH_NAME_LENGTH + 1];
|
|
|
|
|
status_t err = ReadSettings(basePath);
|
|
|
|
|
if (err != B_NO_ERROR)
|
|
|
|
|
return err;
|
|
|
|
|
|
|
|
|
|
canna = new CannaInterface( basepath );
|
|
|
|
|
err = canna->InitCheck();
|
|
|
|
|
if ( err != B_NO_ERROR )
|
|
|
|
|
return err;
|
|
|
|
|
|
|
|
|
|
// theKouhoWindow = new KouhoWindow( &kouhoFont );
|
|
|
|
|
|
|
|
|
|
return B_NO_ERROR;
|
|
|
|
|
fCanna = new CannaInterface(basePath);
|
|
|
|
|
|
|
|
|
|
return fCanna->InitCheck();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
CannaLooper::Quit()
|
|
|
|
|
{
|
|
|
|
|
// delete palette here
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: destructor called.\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
if ( canna )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: Deleting canna...\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
delete canna;
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: destructor called.\n"));
|
|
|
|
|
delete fCanna;
|
|
|
|
|
|
|
|
|
|
if (fKouhoWindow != NULL) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: Sending QUIT to kouho window...\n"));
|
|
|
|
|
|
|
|
|
|
fKouhoWindow->Lock();
|
|
|
|
|
fKouhoWindow->Quit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( theKouhoWindow )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: Sending QUIT to kouho window...\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
theKouhoWindow->Lock();
|
|
|
|
|
theKouhoWindow->Quit();
|
|
|
|
|
|
|
|
|
|
if (fPaletteWindow) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: Sending QUIT to palette...\n"));
|
|
|
|
|
|
|
|
|
|
fPaletteWindow->Lock();
|
|
|
|
|
fPaletteWindow->Quit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( thePalette )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: Sending QUIT to palette...\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
thePalette->Lock();
|
|
|
|
|
thePalette->Quit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
owner->SetMenu( NULL, BMessenger() );
|
|
|
|
|
delete theMenu;
|
|
|
|
|
|
|
|
|
|
fOwner->SetMenu(NULL, BMessenger());
|
|
|
|
|
delete fMenu;
|
|
|
|
|
BLooper::Quit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -121,431 +102,390 @@ CannaLooper::ReadSettings(char* basePath)
|
|
|
|
|
if (status != B_OK)
|
|
|
|
|
return status;
|
|
|
|
|
|
|
|
|
|
path.Append("KanBe");
|
|
|
|
|
path.Append("Canna");
|
|
|
|
|
|
|
|
|
|
strcpy(basePath, path.Path());
|
|
|
|
|
strlcpy(basePath, path.Path(), B_PATH_NAME_LENGTH);
|
|
|
|
|
strlcat(basePath, "/", B_PATH_NAME_LENGTH);
|
|
|
|
|
|
|
|
|
|
font_family family;
|
|
|
|
|
font_style style;
|
|
|
|
|
strcpy(family, "Haru");
|
|
|
|
|
strcpy(style, "Regular");
|
|
|
|
|
|
|
|
|
|
kouhoFont.SetFamilyAndStyle(family, style);
|
|
|
|
|
kouhoFont.SetSize(12);
|
|
|
|
|
fKouhoFont.SetFamilyAndStyle(family, style);
|
|
|
|
|
fKouhoFont.SetSize(12);
|
|
|
|
|
|
|
|
|
|
return B_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
CannaLooper::EnqueueMessage( BMessage *msg )
|
|
|
|
|
CannaLooper::EnqueueMessage(BMessage* msg)
|
|
|
|
|
{
|
|
|
|
|
owner->EnqueueMessage( msg );
|
|
|
|
|
fOwner->EnqueueMessage(msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
CannaLooper::MessageReceived( BMessage *msg )
|
|
|
|
|
CannaLooper::MessageReceived(BMessage* msg)
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: Entering MessageReceived() what=%x\n", msg->what ));
|
|
|
|
|
#endif
|
|
|
|
|
switch ( msg->what )
|
|
|
|
|
{
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: Entering MessageReceived() what=%.4s\n",
|
|
|
|
|
(char*)&msg->what));
|
|
|
|
|
|
|
|
|
|
switch (msg->what) {
|
|
|
|
|
case B_KEY_DOWN:
|
|
|
|
|
case NUM_SELECTED_FROM_KOUHO_WIN:
|
|
|
|
|
HandleKeyDown( msg );
|
|
|
|
|
_HandleKeyDown(msg);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case B_INPUT_METHOD_EVENT:
|
|
|
|
|
uint32 opcode, result;
|
|
|
|
|
opcode = 0;
|
|
|
|
|
msg->FindInt32( "be:opcode", (int32 *)&opcode );
|
|
|
|
|
switch ( opcode )
|
|
|
|
|
{
|
|
|
|
|
msg->FindInt32("be:opcode", (int32*)&opcode);
|
|
|
|
|
|
|
|
|
|
switch (opcode) {
|
|
|
|
|
case B_INPUT_METHOD_LOCATION_REQUEST:
|
|
|
|
|
HandleLocationReply( msg );
|
|
|
|
|
_HandleLocationReply(msg);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case B_INPUT_METHOD_STOPPED:
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: B_INPUT_METHOD_STOPPED received\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
ForceKakutei();
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: B_INPUT_METHOD_STOPPED "
|
|
|
|
|
"received\n"));
|
|
|
|
|
_ForceKakutei();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case CANNA_METHOD_ACTIVATED:
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: CANNA_METHOD_ACTIVATED received\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
HandleMethodActivated( msg->HasBool( "active" ) );
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: CANNA_METHOD_ACTIVATED received\n"));
|
|
|
|
|
_HandleMethodActivated(msg->HasBool("active"));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case MODE_CHANGED_FROM_PALETTE:
|
|
|
|
|
ForceKakutei();
|
|
|
|
|
_ForceKakutei();
|
|
|
|
|
int32 mode;
|
|
|
|
|
msg->FindInt32( "mode", &mode );
|
|
|
|
|
result = canna->ChangeMode( mode );
|
|
|
|
|
ProcessResult( result );
|
|
|
|
|
msg->FindInt32("mode", &mode);
|
|
|
|
|
result = fCanna->ChangeMode(mode);
|
|
|
|
|
_ProcessResult(result);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case B_ABOUT_REQUESTED:
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: B_ABOUT_REQUESTED received\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
BAlert *panel;
|
|
|
|
|
panel = new BAlert( "", "CannaIM Version 1.02\n"
|
|
|
|
|
" by Masao Kawamura 1999\n\n"
|
|
|
|
|
"Canna\n Copyright 1992 NEC Corporation, Tokyo, Japan\n"
|
|
|
|
|
" Special thanks to T.Murai for porting\n"
|
|
|
|
|
" BeOS Version 1.02",
|
|
|
|
|
"OK" );
|
|
|
|
|
{
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: B_ABOUT_REQUESTED received\n"));
|
|
|
|
|
|
|
|
|
|
BAlert* panel = new BAlert( "", "Canna Input Method\n"
|
|
|
|
|
" by Masao Kawamura 1999\n\n"
|
|
|
|
|
"Canna\n"
|
|
|
|
|
" Copyright 1992 NEC Corporation, Tokyo, Japan\n"
|
|
|
|
|
" Special thanks to T.Murai for porting\n",
|
|
|
|
|
"OK");
|
|
|
|
|
panel->Go();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case RELOAD_INIT_FILE:
|
|
|
|
|
ForceKakutei();
|
|
|
|
|
canna->Reset();
|
|
|
|
|
_ForceKakutei();
|
|
|
|
|
fCanna->Reset();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ARROW_KEYS_FLIPPED:
|
|
|
|
|
{
|
|
|
|
|
BMenuItem *item = theMenu->FindItem( ARROW_KEYS_FLIPPED );
|
|
|
|
|
gSettings.convert_arrowkey = !gSettings.convert_arrowkey;
|
|
|
|
|
item->SetMarked( gSettings.convert_arrowkey );
|
|
|
|
|
canna->SetConvertArrowKey( gSettings.convert_arrowkey );
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
BLooper::MessageReceived( msg );
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CannaLooper::HandleKeyDown( BMessage *msg )
|
|
|
|
|
{
|
|
|
|
|
uint32 result;
|
|
|
|
|
uint32 modifier;
|
|
|
|
|
// int32 rawchar;
|
|
|
|
|
int32 key;
|
|
|
|
|
char theChar;
|
|
|
|
|
|
|
|
|
|
msg->FindInt32( "modifiers", (int32 *)&modifier );
|
|
|
|
|
msg->FindInt32( "key", &key );
|
|
|
|
|
// msg->FindInt32( "raw_char", &rawchar );
|
|
|
|
|
|
|
|
|
|
if ( ( modifier & B_COMMAND_KEY ) != 0 )
|
|
|
|
|
{
|
|
|
|
|
EnqueueMessage( DetachCurrentMessage() );
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
msg->FindInt8( "byte", (int8 *)&theChar );
|
|
|
|
|
|
|
|
|
|
// The if clause below is to avoid processing key input which char code is 0x80 or more.
|
|
|
|
|
// if mikakutei string exists, dispose current message.
|
|
|
|
|
// Otherwise, send it to application as usual B_KEY_DOWN message.
|
|
|
|
|
// This is a bug fix for version 1.0 beta 2
|
|
|
|
|
|
|
|
|
|
if ( theChar & 0x80 )
|
|
|
|
|
{
|
|
|
|
|
if ( canna->MikakuteiLength() != 0 )
|
|
|
|
|
{
|
|
|
|
|
BMessage *blackhole = DetachCurrentMessage();
|
|
|
|
|
delete blackhole;
|
|
|
|
|
BMenuItem* item = fMenu->FindItem(ARROW_KEYS_FLIPPED);
|
|
|
|
|
gSettings.convert_arrowkey = !gSettings.convert_arrowkey;
|
|
|
|
|
item->SetMarked(gSettings.convert_arrowkey);
|
|
|
|
|
fCanna->SetConvertArrowKey(gSettings.convert_arrowkey);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
EnqueueMessage( DetachCurrentMessage() );
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
default:
|
|
|
|
|
BLooper::MessageReceived(msg);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// end of bug fix
|
|
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: HandleKeyDown() calling CannaInterface::KeyIn()...\n", result ));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
result = canna->KeyIn( theChar, modifier, key );
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: HandleKeyDown() received result = %d from CannaInterface.\n", result ));
|
|
|
|
|
#endif
|
|
|
|
|
ProcessResult( result );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
CannaLooper::ProcessResult( uint32 result )
|
|
|
|
|
CannaLooper::_HandleKeyDown(BMessage* msg)
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ProcessResult() processing result = %d\n", result ));
|
|
|
|
|
#endif
|
|
|
|
|
if ( result & GUIDELINE_APPEARED )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ProcessResult() processing GUIDELINE_APPEARED\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
if ( canna->MikakuteiLength() != 0 ) // usual guideline i.e. kouho
|
|
|
|
|
{
|
|
|
|
|
BMessage *msg = new BMessage( B_INPUT_METHOD_EVENT );
|
|
|
|
|
msg->AddInt32( "be:opcode", B_INPUT_METHOD_LOCATION_REQUEST );
|
|
|
|
|
owner->EnqueueMessage( msg );
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: B_INPUT_METHOD_LOCATION_REQUEST has been sent\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
uint32 modifier;
|
|
|
|
|
int32 key;
|
|
|
|
|
msg->FindInt32("modifiers", (int32*)&modifier);
|
|
|
|
|
msg->FindInt32("key", &key);
|
|
|
|
|
|
|
|
|
|
if ((modifier & B_COMMAND_KEY) != 0) {
|
|
|
|
|
EnqueueMessage(DetachCurrentMessage());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char character;
|
|
|
|
|
msg->FindInt8("byte", (int8*)&character);
|
|
|
|
|
|
|
|
|
|
// The if clause below is to avoid processing key input which char code
|
|
|
|
|
// is 0x80 or more.
|
|
|
|
|
// if mikakutei string exists, dispose current message.
|
|
|
|
|
// Otherwise, send it to application as usual B_KEY_DOWN message.
|
|
|
|
|
if ((character & 0x80) != 0) {
|
|
|
|
|
if (fCanna->MikakuteiLength() != 0)
|
|
|
|
|
delete DetachCurrentMessage();
|
|
|
|
|
else
|
|
|
|
|
EnqueueMessage(DetachCurrentMessage());
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: HandleKeyDown() calling "
|
|
|
|
|
"CannaInterface::KeyIn()...\n", result));
|
|
|
|
|
|
|
|
|
|
uint32 result = fCanna->KeyIn(character, modifier, key);
|
|
|
|
|
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: HandleKeyDown() received result = %d from "
|
|
|
|
|
"CannaInterface.\n", result));
|
|
|
|
|
|
|
|
|
|
_ProcessResult(result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
CannaLooper::_ProcessResult(uint32 result)
|
|
|
|
|
{
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: _ProcessResult() processing result = %d\n",
|
|
|
|
|
result));
|
|
|
|
|
|
|
|
|
|
if ((result & GUIDELINE_APPEARED) != 0) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: _ProcessResult() processing "
|
|
|
|
|
"GUIDELINE_APPEARED\n"));
|
|
|
|
|
|
|
|
|
|
if (fCanna->MikakuteiLength() != 0) {
|
|
|
|
|
// usual guideline i.e. kouho
|
|
|
|
|
|
|
|
|
|
BMessage* msg = new BMessage(B_INPUT_METHOD_EVENT);
|
|
|
|
|
msg->AddInt32("be:opcode", B_INPUT_METHOD_LOCATION_REQUEST);
|
|
|
|
|
fOwner->EnqueueMessage(msg);
|
|
|
|
|
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: B_INPUT_METHOD_LOCATION_REQUEST has "
|
|
|
|
|
"been sent\n"));
|
|
|
|
|
} else {
|
|
|
|
|
// guideline exists, but no mikakutei string - means extend mode
|
|
|
|
|
// and such.
|
|
|
|
|
SERIAL_PRINT((" GUIDELINE_APPEARED: calling "
|
|
|
|
|
"GenerateKouho()...\n"));
|
|
|
|
|
|
|
|
|
|
fKouhoWindow->PostMessage(fCanna->GenerateKouhoString());
|
|
|
|
|
SERIAL_PRINT((" GUIDELINE_APPEARED: posting KouhoMsg to "
|
|
|
|
|
"KouhoWindow %x...\n", fKouhoWindow));
|
|
|
|
|
|
|
|
|
|
fKouhoWindow->PostMessage(KOUHO_WINDOW_SHOW_ALONE);
|
|
|
|
|
}
|
|
|
|
|
else // guideline exists, but no mikakutei string - means extend mode and such.
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( " GUIDELINE_APPEARED: calling GenerateKouho()...\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
theKouhoWindow->PostMessage( canna->GenerateKouhoString() );
|
|
|
|
|
BMessage m( KOUHO_WINDOW_SHOW_ALONE );
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( " GUIDELINE_APPEARED: posting KouhoMsg to KouhoWindow %x...\n", theKouhoWindow ));
|
|
|
|
|
#endif
|
|
|
|
|
theKouhoWindow->PostMessage( &m );
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: KOUHO_WINDOW_SHOW_ALONE has been sent\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// if ( result == MIKAKUTEI_NO_CHANGE )
|
|
|
|
|
// return;
|
|
|
|
|
|
|
|
|
|
if ( result & GUIDELINE_DISAPPEARED )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ProcessResult() processing GUIDELINE_DISAPPEARED\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
theKouhoWindow->PostMessage( KOUHO_WINDOW_HIDE );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( result & MODE_CHANGED )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ProcessResult() processing MODE_CHANGED\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
int32 mode;
|
|
|
|
|
mode = canna->GetMode();
|
|
|
|
|
BMessage m( PALETTE_WINDOW_BUTTON_UPDATE );
|
|
|
|
|
m.AddInt32( "mode", mode );
|
|
|
|
|
thePalette->PostMessage( &m );
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: PALETTE_BUTTON_UPDATE has been sent. mode = %d\n", mode ));
|
|
|
|
|
#endif
|
|
|
|
|
if ((result & GUIDELINE_DISAPPEARED) != 0) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: _ProcessResult() processing "
|
|
|
|
|
"GUIDELINE_DISAPPEARED\n"));
|
|
|
|
|
fKouhoWindow->PostMessage(KOUHO_WINDOW_HIDE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( result & GUIDELINE_CHANGED )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ProcessResult() processing GUIDELINE_CHANGED\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
theKouhoWindow->PostMessage( canna->GenerateKouhoString() );
|
|
|
|
|
if ((result & MODE_CHANGED) != 0) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: _ProcessResult() processing "
|
|
|
|
|
"MODE_CHANGED\n"));
|
|
|
|
|
|
|
|
|
|
BMessage message(PALETTE_WINDOW_BUTTON_UPDATE);
|
|
|
|
|
message.AddInt32("mode", fCanna->GetMode());
|
|
|
|
|
fPaletteWindow->PostMessage(&message);
|
|
|
|
|
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: PALETTE_BUTTON_UPDATE has been sent. "
|
|
|
|
|
"mode = %d\n", fCanna->GetMode()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( result & THROUGH_INPUT )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ProcessResult() processing THROUGH_INPUT\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
EnqueueMessage( DetachCurrentMessage() );
|
|
|
|
|
if ((result & GUIDELINE_CHANGED) != 0) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: _ProcessResult() processing "
|
|
|
|
|
"GUIDELINE_CHANGED\n"));
|
|
|
|
|
fKouhoWindow->PostMessage(fCanna->GenerateKouhoString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( result & NEW_INPUT_STARTED )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ProcessResult() processing NEW_INPUT_STARTED\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
if ((result & THROUGH_INPUT) != 0) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: _ProcessResult() processing "
|
|
|
|
|
"THROUGH_INPUT\n"));
|
|
|
|
|
EnqueueMessage(DetachCurrentMessage());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((result & NEW_INPUT_STARTED) != 0) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: _ProcessResult() processing "
|
|
|
|
|
"NEW_INPUT_STARTED\n"));
|
|
|
|
|
SendInputStarted();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( result & KAKUTEI_EXISTS )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ProcessResult() processing KAKUTEI_EXISTS\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
BMessage *msg = new BMessage( B_INPUT_METHOD_EVENT );
|
|
|
|
|
msg->AddInt32( "be:opcode", B_INPUT_METHOD_CHANGED );
|
|
|
|
|
|
|
|
|
|
msg->AddString("be:string", canna->GetKakuteiStr() );
|
|
|
|
|
if ((result & KAKUTEI_EXISTS) != 0) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: _ProcessResult() processing "
|
|
|
|
|
"KAKUTEI_EXISTS\n"));
|
|
|
|
|
|
|
|
|
|
BMessage* msg = new BMessage(B_INPUT_METHOD_EVENT);
|
|
|
|
|
msg->AddInt32("be:opcode", B_INPUT_METHOD_CHANGED);
|
|
|
|
|
|
|
|
|
|
msg->AddString("be:string", fCanna->GetKakuteiStr());
|
|
|
|
|
msg->AddInt32("be:clause_start", 0);
|
|
|
|
|
msg->AddInt32("be:clause_end", canna->KakuteiLength() );
|
|
|
|
|
msg->AddInt32("be:selection", canna->KakuteiLength() );
|
|
|
|
|
msg->AddInt32("be:selection", canna->KakuteiLength() );
|
|
|
|
|
msg->AddBool( "be:confirmed", true );
|
|
|
|
|
owner->EnqueueMessage( msg );
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: B_INPUT_METHOD_CHANGED (confired) has been sent\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
if ( !(result & MIKAKUTEI_EXISTS) ) //if both kakutei and mikakutei exist, do not send B_INPUT_STOPPED
|
|
|
|
|
msg->AddInt32("be:clause_end", fCanna->KakuteiLength());
|
|
|
|
|
msg->AddInt32("be:selection", fCanna->KakuteiLength());
|
|
|
|
|
msg->AddInt32("be:selection", fCanna->KakuteiLength());
|
|
|
|
|
msg->AddBool("be:confirmed", true);
|
|
|
|
|
fOwner->EnqueueMessage(msg);
|
|
|
|
|
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: B_INPUT_METHOD_CHANGED (confired) has "
|
|
|
|
|
"been sent\n"));
|
|
|
|
|
|
|
|
|
|
// if both kakutei and mikakutei exist, do not send B_INPUT_STOPPED
|
|
|
|
|
if (!(result & MIKAKUTEI_EXISTS))
|
|
|
|
|
SendInputStopped();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( result & MIKAKUTEI_EXISTS )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ProcessResult() processing MIKAKUTEI_EXISTS\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if ((result & MIKAKUTEI_EXISTS) != 0) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: _ProcessResult() processing "
|
|
|
|
|
"MIKAKUTEI_EXISTS\n" ));
|
|
|
|
|
|
|
|
|
|
int32 start, finish;
|
|
|
|
|
BMessage *msg = new BMessage( B_INPUT_METHOD_EVENT );
|
|
|
|
|
msg->AddInt32( "be:opcode", B_INPUT_METHOD_CHANGED );
|
|
|
|
|
|
|
|
|
|
msg->AddString("be:string", canna->GetMikakuteiStr() );
|
|
|
|
|
if ( canna->HasRev() )
|
|
|
|
|
{
|
|
|
|
|
canna->GetRevPosition( &start, &finish );
|
|
|
|
|
BMessage* msg = new BMessage(B_INPUT_METHOD_EVENT);
|
|
|
|
|
msg->AddInt32("be:opcode", B_INPUT_METHOD_CHANGED);
|
|
|
|
|
msg->AddString("be:string", fCanna->GetMikakuteiStr());
|
|
|
|
|
|
|
|
|
|
if (fCanna->HasRev()) {
|
|
|
|
|
fCanna->GetRevPosition( &start, &finish);
|
|
|
|
|
msg->AddInt32("be:clause_start", 0);
|
|
|
|
|
msg->AddInt32("be:clause_end", start );
|
|
|
|
|
msg->AddInt32("be:clause_start", start );
|
|
|
|
|
msg->AddInt32("be:clause_end", finish );
|
|
|
|
|
msg->AddInt32("be:clause_start", finish );
|
|
|
|
|
msg->AddInt32("be:clause_end", canna->MikakuteiLength() );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
start = finish = canna->MikakuteiLength();
|
|
|
|
|
msg->AddInt32("be:clause_end", start);
|
|
|
|
|
msg->AddInt32("be:clause_start", start);
|
|
|
|
|
msg->AddInt32("be:clause_end", finish);
|
|
|
|
|
msg->AddInt32("be:clause_start", finish);
|
|
|
|
|
msg->AddInt32("be:clause_end", fCanna->MikakuteiLength());
|
|
|
|
|
} else {
|
|
|
|
|
start = finish = fCanna->MikakuteiLength();
|
|
|
|
|
msg->AddInt32("be:clause_start", 0);
|
|
|
|
|
msg->AddInt32("be:clause_end", canna->MikakuteiLength() );
|
|
|
|
|
msg->AddInt32("be:clause_end", fCanna->MikakuteiLength());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
msg->AddInt32("be:selection", start );
|
|
|
|
|
msg->AddInt32("be:selection", finish );
|
|
|
|
|
//msg->AddBool( "be:confirmed", false );
|
|
|
|
|
owner->EnqueueMessage( msg );
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: B_INPUT_METHOD_CHANGED (non-confirmed) has been sent\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
msg->AddInt32("be:selection", start);
|
|
|
|
|
msg->AddInt32("be:selection", finish);
|
|
|
|
|
//msg->AddBool("be:confirmed", false);
|
|
|
|
|
fOwner->EnqueueMessage(msg);
|
|
|
|
|
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: B_INPUT_METHOD_CHANGED (non-confirmed) "
|
|
|
|
|
"has been sent\n"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( result & MIKAKUTEI_BECOME_EMPTY )
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ProcessResult() processing MIKAKUTEI_BECOME_EMPTY\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
BMessage *msg = new BMessage( B_INPUT_METHOD_EVENT );
|
|
|
|
|
msg->AddInt32( "be:opcode", B_INPUT_METHOD_CHANGED );
|
|
|
|
|
|
|
|
|
|
msg->AddString("be:string", B_EMPTY_STRING );
|
|
|
|
|
|
|
|
|
|
if ((result & MIKAKUTEI_BECOME_EMPTY) != 0) {
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: _ProcessResult() processing "
|
|
|
|
|
"MIKAKUTEI_BECOME_EMPTY\n" ));
|
|
|
|
|
BMessage* msg = new BMessage(B_INPUT_METHOD_EVENT);
|
|
|
|
|
msg->AddInt32("be:opcode", B_INPUT_METHOD_CHANGED);
|
|
|
|
|
|
|
|
|
|
msg->AddString("be:string", B_EMPTY_STRING);
|
|
|
|
|
msg->AddInt32("be:clause_start", 0);
|
|
|
|
|
msg->AddInt32("be:clause_end", 0 );
|
|
|
|
|
msg->AddInt32("be:selection", 0 );
|
|
|
|
|
msg->AddInt32("be:selection", 0 );
|
|
|
|
|
msg->AddBool( "be:confirmed", true );
|
|
|
|
|
owner->EnqueueMessage( msg );
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: B_INPUT_METHOD_CHANGED (NULL, confired) has been sent\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
msg->AddInt32("be:clause_end", 0);
|
|
|
|
|
msg->AddInt32("be:selection", 0);
|
|
|
|
|
msg->AddInt32("be:selection", 0);
|
|
|
|
|
msg->AddBool( "be:confirmed", true);
|
|
|
|
|
fOwner->EnqueueMessage(msg);
|
|
|
|
|
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: B_INPUT_METHOD_CHANGED (NULL, confired) "
|
|
|
|
|
"has been sent\n"));
|
|
|
|
|
|
|
|
|
|
SendInputStopped();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
CannaLooper::HandleLocationReply( BMessage *msg )
|
|
|
|
|
CannaLooper::_HandleLocationReply(BMessage* msg)
|
|
|
|
|
{
|
|
|
|
|
BPoint where = B_ORIGIN;
|
|
|
|
|
float height = 0.0;
|
|
|
|
|
int32 start;
|
|
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: B_INPUT_METHOD_LOCATION_REQUEST received\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: B_INPUT_METHOD_LOCATION_REQUEST received\n"));
|
|
|
|
|
|
|
|
|
|
start = fCanna->GetRevStartPositionInChar();
|
|
|
|
|
|
|
|
|
|
start = canna->GetRevStartPositionInChar();
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
type_code type;
|
|
|
|
|
int32 count;
|
|
|
|
|
msg->GetInfo( "be:location_reply", &type, &count );
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: LOCATION_REPLY has %d locations.\n", count ));
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: RevStartPosition is %d.\n", start ));
|
|
|
|
|
msg->GetInfo("be:location_reply", &type, &count);
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: LOCATION_REPLY has %d locations.\n", count));
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: RevStartPosition is %d.\n", start));
|
|
|
|
|
#endif
|
|
|
|
|
msg->FindPoint( "be:location_reply", start, &where );
|
|
|
|
|
msg->FindFloat( "be:height_reply", start, &height );
|
|
|
|
|
BMessage m( KOUHO_WINDOW_SHOWAT );
|
|
|
|
|
m.AddPoint( "position", where );
|
|
|
|
|
m.AddFloat( "height", height );
|
|
|
|
|
|
|
|
|
|
msg->FindPoint("be:location_reply", start, &where);
|
|
|
|
|
msg->FindFloat("be:height_reply", start, &height);
|
|
|
|
|
BMessage m(KOUHO_WINDOW_SHOWAT);
|
|
|
|
|
m.AddPoint("position", where);
|
|
|
|
|
m.AddFloat("height", height);
|
|
|
|
|
|
|
|
|
|
theKouhoWindow->PostMessage( canna->GenerateKouhoString() );
|
|
|
|
|
theKouhoWindow->PostMessage( &m );
|
|
|
|
|
fKouhoWindow->PostMessage(fCanna->GenerateKouhoString());
|
|
|
|
|
fKouhoWindow->PostMessage(&m);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
CannaLooper::HandleMethodActivated( bool active )
|
|
|
|
|
CannaLooper::_HandleMethodActivated(bool active)
|
|
|
|
|
{
|
|
|
|
|
if ( active )
|
|
|
|
|
{
|
|
|
|
|
if ( !thePalette ) //first time input method activated
|
|
|
|
|
{
|
|
|
|
|
if (active) {
|
|
|
|
|
if (!fPaletteWindow) {
|
|
|
|
|
// first time input method activated
|
|
|
|
|
float x = gSettings.palette_loc.x;
|
|
|
|
|
float y = gSettings.palette_loc.y;
|
|
|
|
|
BRect frame( x, y, x + 114, y + 44 );
|
|
|
|
|
thePalette = new PaletteWindow( frame, this );
|
|
|
|
|
thePalette->Show();
|
|
|
|
|
theKouhoWindow = new KouhoWindow( &kouhoFont, this );
|
|
|
|
|
theKouhoWindow->Run();
|
|
|
|
|
BRect frame(x, y, x + 114, y + 44);
|
|
|
|
|
fPaletteWindow = new PaletteWindow(frame, this);
|
|
|
|
|
fPaletteWindow->Show();
|
|
|
|
|
fKouhoWindow = new KouhoWindow(&fKouhoFont, this);
|
|
|
|
|
fKouhoWindow->Run();
|
|
|
|
|
}
|
|
|
|
|
thePalette->PostMessage( PALETTE_WINDOW_SHOW );
|
|
|
|
|
owner->SetMenu( theMenu, self );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
ForceKakutei();
|
|
|
|
|
canna->ChangeMode( CANNA_MODE_HenkanMode );
|
|
|
|
|
BMessage m( PALETTE_WINDOW_BUTTON_UPDATE );
|
|
|
|
|
m.AddInt32( "mode", CANNA_MODE_HenkanMode );
|
|
|
|
|
thePalette->PostMessage( &m );
|
|
|
|
|
thePalette->PostMessage( PALETTE_WINDOW_HIDE );
|
|
|
|
|
theKouhoWindow->PostMessage( KOUHO_WINDOW_HIDE );
|
|
|
|
|
owner->SetMenu( NULL, self );
|
|
|
|
|
|
|
|
|
|
fPaletteWindow->PostMessage(PALETTE_WINDOW_SHOW);
|
|
|
|
|
fOwner->SetMenu(fMenu, this);
|
|
|
|
|
} else {
|
|
|
|
|
_ForceKakutei();
|
|
|
|
|
fCanna->ChangeMode(CANNA_MODE_HenkanMode);
|
|
|
|
|
BMessage m(PALETTE_WINDOW_BUTTON_UPDATE);
|
|
|
|
|
m.AddInt32("mode", CANNA_MODE_HenkanMode);
|
|
|
|
|
fPaletteWindow->PostMessage(&m);
|
|
|
|
|
fPaletteWindow->PostMessage(PALETTE_WINDOW_HIDE);
|
|
|
|
|
fKouhoWindow->PostMessage(KOUHO_WINDOW_HIDE);
|
|
|
|
|
fOwner->SetMenu(NULL, this);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
CannaLooper::ForceKakutei()
|
|
|
|
|
CannaLooper::_ForceKakutei()
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: ForceKakutei() called\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
uint32 result = canna->Kakutei();
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: returned from Kakutei(). result = %d\n", result ));
|
|
|
|
|
#endif
|
|
|
|
|
if ( result != NOTHING_TO_KAKUTEI )
|
|
|
|
|
ProcessResult( result );
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: _ForceKakutei() called\n" ));
|
|
|
|
|
|
|
|
|
|
uint32 result = fCanna->Kakutei();
|
|
|
|
|
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: returned from Kakutei(). result = %d\n",
|
|
|
|
|
result));
|
|
|
|
|
|
|
|
|
|
if (result != NOTHING_TO_KAKUTEI)
|
|
|
|
|
_ProcessResult(result);
|
|
|
|
|
else
|
|
|
|
|
SendInputStopped();
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
CannaLooper::SendInputStopped()
|
|
|
|
|
{
|
|
|
|
|
BMessage *msg = new BMessage( B_INPUT_METHOD_EVENT );
|
|
|
|
|
msg->AddInt32( "be:opcode", B_INPUT_METHOD_STOPPED );
|
|
|
|
|
EnqueueMessage( msg );
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: B_INPUT_METHOD_STOPPED has been sent\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
BMessage* msg = new BMessage(B_INPUT_METHOD_EVENT);
|
|
|
|
|
msg->AddInt32("be:opcode", B_INPUT_METHOD_STOPPED);
|
|
|
|
|
EnqueueMessage(msg);
|
|
|
|
|
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: B_INPUT_METHOD_STOPPED has been sent\n"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
CannaLooper::SendInputStarted()
|
|
|
|
|
{
|
|
|
|
|
BMessage *msg = new BMessage( B_INPUT_METHOD_EVENT );
|
|
|
|
|
msg->AddInt32( "be:opcode", B_INPUT_METHOD_STARTED );
|
|
|
|
|
msg->AddMessenger( "be:reply_to", BMessenger( NULL, this ) );
|
|
|
|
|
EnqueueMessage( msg );
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
SERIAL_PRINT(( "CannaLooper: B_INPUT_METHOD_STARTED has been sent\n" ));
|
|
|
|
|
#endif
|
|
|
|
|
BMessage* msg = new BMessage(B_INPUT_METHOD_EVENT);
|
|
|
|
|
msg->AddInt32("be:opcode", B_INPUT_METHOD_STARTED);
|
|
|
|
|
msg->AddMessenger("be:reply_to", BMessenger(NULL, this));
|
|
|
|
|
EnqueueMessage(msg);
|
|
|
|
|
|
|
|
|
|
SERIAL_PRINT(("CannaLooper: B_INPUT_METHOD_STARTED has been sent\n"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|