summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-23 17:13:36 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-23 17:13:36 -0500
commitd3f7a9d6f1b8f6e24fb49aaa8caeaa7623ae48b5 (patch)
treebaeeba639393f46abab749f4700a250091c3cc16 /tqtinterface/qt4/plugins/src/inputmethods/imsw-multi
parentd7be1694839bacae31e500ea9e36b3c13257ce28 (diff)
downloadexperimental-d3f7a9d6f1b8f6e24fb49aaa8caeaa7623ae48b5.tar.gz
experimental-d3f7a9d6f1b8f6e24fb49aaa8caeaa7623ae48b5.zip
Apply all Qt3.3.8d patches
NOTE: This will *likely* break compilation of TQt4 Please wait a few days for fixes to be committed as needed!
Diffstat (limited to 'tqtinterface/qt4/plugins/src/inputmethods/imsw-multi')
-rw-r--r--tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/imsw-multi.pro14
-rw-r--r--tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontext.cpp379
-rw-r--r--tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontext.h124
-rw-r--r--tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontextplugin.cpp88
-rw-r--r--tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontextplugin.h63
5 files changed, 668 insertions, 0 deletions
diff --git a/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/imsw-multi.pro b/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/imsw-multi.pro
new file mode 100644
index 0000000..a333916
--- /dev/null
+++ b/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/imsw-multi.pro
@@ -0,0 +1,14 @@
+TEMPLATE = lib
+TARGET = qimsw-multi
+DESTDIR = ../../../inputmethods
+
+INCLUDEPATH += .
+CONFIG += qt warn_on debug plugin
+target.path += $$plugins.path/inputmethods
+INSTALLS += target
+
+# Input
+HEADERS += qmultiinputcontext.h \
+ qmultiinputcontextplugin.h
+SOURCES += qmultiinputcontext.cpp \
+ qmultiinputcontextplugin.cpp
diff --git a/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontext.cpp b/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontext.cpp
new file mode 100644
index 0000000..a3caede
--- /dev/null
+++ b/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontext.cpp
@@ -0,0 +1,379 @@
+/****************************************************************************
+** $Id$
+**
+** Implementation of TQMultiInputContext class
+**
+** Copyright (C) 2004 immodule for TQt Project. All rights reserved.
+**
+** This file is written to contribute to Trolltech AS under their own
+** licence. You may use this file under your TQt license. Following
+** description is copied from their original file headers. Contact
+** immodule-qt@freedesktop.org if any conditions of this licensing are
+** not clear to you.
+**
+**
+** This file is part of the input method module of the TQt GUI Toolkit.
+**
+** This file may be distributed under the terms of the Q Public License
+** as defined by Trolltech AS of Norway and appearing in the file
+** LICENSE.TQPL included in the packaging of this file.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition
+** licenses may use this file in accordance with the TQt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
+** information about TQt Commercial License Agreements.
+** See http://www.trolltech.com/qpl/ for TQPL licensing information.
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef TQT_NO_IM
+#include "tqmultiinputcontext.h"
+#include <tqinputcontextfactory.h>
+#include <tqstringlist.h>
+#include <tqpopupmenu.h>
+#ifndef TQT_NO_IM_EXTENSIONS
+#include <tqsettings.h>
+#endif
+
+#include <cstdlib>
+
+#define TQT_NO_IM_TQMULTIINPUTCONTEXT_IMINDEX
+
+TQMultiInputContext::TQMultiInputContext()
+ : TQInputContext(), _slave( 0 ), imIndex( 0 ), cachedFocus( FALSE ),
+ cachedFocusWidget( 0 ), cachedHolderWidget( 0 ),
+ beIndirectlyConnected( FALSE ), popup( NULL ), currentIMKey( TQString() )
+{
+ keyDict.setAutoDelete( true );
+ keyDict.clear();
+
+ if ( getenv( "TQT_IM_MODULE" ) ) {
+ currentIMKey = getenv( "TQT_IM_MODULE" );
+ } else {
+#ifndef TQT_NO_IM_EXTENSIONS
+ TQSettings settings;
+ currentIMKey = settings.readEntry( "/qt/DefaultInputMethod", "xim" );
+#else
+ currentIMKey = "xim";
+#endif
+ }
+}
+
+TQMultiInputContext::~TQMultiInputContext()
+{
+ keyDict.clear();
+}
+
+
+TQString TQMultiInputContext::identifierName()
+{
+ return ( slave() ) ? slave()->identifierName() : "";
+}
+
+TQString TQMultiInputContext::language()
+{
+ return ( slave() ) ? slave()->language() : "";
+}
+
+
+#if defined(TQ_WS_X11)
+bool TQMultiInputContext::x11FilterEvent( TQWidget *keywidget, XEvent *event )
+{
+ return ( slave() ) ? slave()->x11FilterEvent( keywidget, event ) : FALSE;
+}
+#endif // TQ_WS_X11
+
+
+bool TQMultiInputContext::filterEvent( const TQEvent *event )
+{
+#if !defined(TQT_NO_IM_TQMULTIINPUTCONTEXT_IMINDEX)
+ if ( event->type() == TQEvent::KeyPress ) {
+ TQKeyEvent *keyevent = (TQKeyEvent *)event;
+
+ // filter selection key
+ // Control+Alt+Key_Down: change to next input method
+ // Control+Alt+Key_Up: change to previous input method
+ if ( ( keyevent->state() & TQt::ControlButton ) &&
+ ( keyevent->state() & TQt::AltButton ) ) {
+ if ( keyevent->key() == TQt::Key_Up ) {
+ changeInputMethod( --imIndex );
+ return TRUE;
+ } else if ( keyevent->key() == TQt::Key_Down ) {
+ changeInputMethod( ++imIndex );
+ return TRUE;
+ }
+ }
+ }
+#endif
+
+ return ( slave() ) ? slave()->filterEvent( event ) : FALSE;
+}
+
+void TQMultiInputContext::reset()
+{
+ if ( slave() )
+ slave()->reset();
+}
+
+
+void TQMultiInputContext::setFocus()
+{
+ cachedFocus = TRUE;
+ if ( slave() )
+ slave()->setFocus();
+}
+
+void TQMultiInputContext::unsetFocus()
+{
+ cachedFocus = FALSE;
+ if ( slave() )
+ slave()->unsetFocus();
+}
+
+void TQMultiInputContext::setMicroFocus( int x, int y, int w, int h, TQFont *f )
+{
+ if ( slave() )
+ slave()->setMicroFocus( x, y, w, h, f );
+}
+
+void TQMultiInputContext::mouseHandler( int x, TQEvent::Type type,
+ TQt::ButtonState button,
+ TQt::ButtonState state )
+{
+ if ( slave() )
+ slave()->mouseHandler( x, type, button, state );
+}
+
+TQFont TQMultiInputContext::font() const
+{
+ return ( slave() ) ? slave()->font() : TQInputContext::font();
+}
+
+void TQMultiInputContext::destroyInputContext()
+{
+ if ( _slave ) {
+ // _slave->reset() may not properly work in the case, so we
+ // manually resets the composing state of text widget
+ if ( _slave->tqfocusWidget() ) {
+ TQIMEvent *terminator = new TQIMEvent( TQEvent::IMEnd, TQString(), -1 );
+ emit imEventGenerated( _slave->tqfocusWidget(), terminator );
+ }
+ _slave->deleteLater();
+ _slave = 0;
+ }
+}
+
+
+/*!
+ This function is a placeholder for future experiment or extension
+ such as commit string snooping. set beIndirectlyConnected = TRUE
+ to activate this virtual function.
+*/
+void TQMultiInputContext::postIMEvent( TQObject *receiver, TQIMEvent *event )
+{
+ emit imEventGenerated( receiver, event );
+}
+
+
+#if defined(TQ_WS_X11)
+TQWidget *TQMultiInputContext::tqfocusWidget() const
+{
+ return ( slave() ) ? slave()->tqfocusWidget() : 0;
+}
+
+TQWidget *TQMultiInputContext::holderWidget() const
+{
+ return ( slave() ) ? slave()->holderWidget() : 0;
+}
+
+
+void TQMultiInputContext::setFocusWidget( TQWidget *w )
+{
+ cachedFocusWidget = w;
+ if ( slave() )
+ slave()->setFocusWidget( w );
+}
+
+void TQMultiInputContext::setHolderWidget( TQWidget *w )
+{
+ cachedHolderWidget = w;
+ if ( slave() )
+ slave()->setHolderWidget( w );
+}
+
+void TQMultiInputContext::releaseComposingWidget( TQWidget *w )
+{
+ if ( slave() )
+ slave()->releaseComposingWidget( w );
+}
+
+#endif
+
+bool TQMultiInputContext::isComposing() const
+{
+ return ( slave() ) ? slave()->isComposing() : FALSE;
+}
+
+bool TQMultiInputContext::isPreeditRelocationEnabled()
+{
+ return ( slave() ) ? slave()->isPreeditRelocationEnabled() : FALSE;
+}
+
+TQInputContext *TQMultiInputContext::slave()
+{
+ if ( ! _slave ) {
+#if !defined(TQT_NO_IM_TQMULTIINPUTCONTEXT_IMINDEX)
+ changeInputMethod( imIndex );
+#else
+ changeInputMethod( currentIMKey );
+#endif
+ }
+
+ return _slave;
+}
+
+const TQInputContext *TQMultiInputContext::slave() const
+{
+ return _slave;
+}
+
+void TQMultiInputContext::changeInputMethod( int newIndex )
+{
+#if !defined(TQT_NO_IM_TQMULTIINPUTCONTEXT_IMINDEX)
+ TQStringList keys = TQInputContextFactory::keys();
+ if ( keys.size() == 0 )
+ return;
+
+ if ( newIndex >= (int)keys.size() ) {
+ imIndex = 0;
+ } else if ( newIndex < 0 ) {
+ imIndex = keys.size() - 1;
+ } else {
+ imIndex = newIndex;
+ }
+
+ changeInputMethod( keys[imIndex] );
+#endif
+}
+
+void TQMultiInputContext::changeInputMethod( TQString key )
+{
+ TQStringList keys = TQInputContextFactory::keys();
+ if ( keys.size() == 0 )
+ return;
+
+ if ( key.isEmpty() )
+ key = keys[0];
+
+ if ( _slave ) {
+ _slave->reset();
+ delete _slave;
+ }
+
+ _slave = TQInputContextFactory::create( key, cachedHolderWidget );
+ if ( _slave ) {
+ insertChild( _slave );
+
+ const char *method;
+ if ( beIndirectlyConnected ) {
+ method = TQT_SLOT(imEventReceived(TQObject *,TQIMEvent *));
+ } else {
+ method = TQT_SIGNAL(imEventGenerated(TQObject *,TQIMEvent *));
+ }
+ connect( _slave, TQT_SIGNAL(imEventGenerated(TQObject *,TQIMEvent *)),
+ this, method );
+ connect( _slave, TQT_SIGNAL(deletionRequested()),
+ this, TQT_SLOT(destroyInputContext()) );
+
+ if ( cachedFocus ) {
+ _slave->setFocus();
+ _slave->setFocusWidget( cachedFocusWidget );
+ }
+
+ currentIMKey = key;
+
+ //qDebug( "TQMultiInputContext::changeInputMethod(): index=%d, slave=%s",
+ // imIndex, (const char *)_slave->identifierName() );
+ }
+}
+
+TQPtrList<TQInputContextMenu> *TQMultiInputContext::menus()
+{
+ TQInputContextMenu *imSelMenu = new TQInputContextMenu;
+ imSelMenu->title = tr( "Select Input &Method" );
+ imSelMenu->popup = createImSelPopup();
+
+ TQPtrList<TQInputContextMenu> *result = new TQPtrList<TQInputContextMenu>;
+ result->append( imSelMenu );
+
+ TQPtrList<TQInputContextMenu> *slaveMenus = ( slave() ) ? slave()->menus() : 0;
+ if ( slaveMenus ) {
+ for ( TQPtrList<TQInputContextMenu>::Iterator it = slaveMenus->begin();
+ it != slaveMenus->end();
+ ++it ) {
+ TQInputContextMenu *slaveMenu = *it;
+ result->append( slaveMenu );
+ }
+ delete slaveMenus;
+ }
+
+ return result;
+}
+
+TQPopupMenu *TQMultiInputContext::createImSelPopup()
+{
+ if ( popup )
+ delete popup;
+
+ popup = new TQPopupMenu();
+ keyDict.clear();
+
+ TQStringList keys = TQInputContextFactory::keys();
+ for ( uint i=0; i < keys.size(); i++ ) {
+ TQString idName = keys[i];
+ bool isIMSwitcher = idName.startsWith( "imsw-" );
+
+ if ( ! isIMSwitcher ) {
+ TQString dispName = TQInputContextFactory::displayName( idName );
+ if ( dispName.isEmpty() )
+ dispName = idName;
+
+ int id = popup->insertItem( dispName );
+ keyDict.insert( (long)id, new TQString( idName ) );
+
+ if ( idName == currentIMKey )
+ popup->setItemChecked( id, true );
+
+ TQString descriptionStr = TQInputContextFactory::description( idName );
+ if ( ! descriptionStr.isEmpty() )
+ popup->setWhatsThis( id, descriptionStr );
+ }
+ }
+
+ TQObject::connect( popup, TQT_SIGNAL(activated(int)),
+ this, TQT_SLOT(changeInputMethodWithMenuId(int)) );
+
+ return popup;
+}
+
+void TQMultiInputContext::changeInputMethodWithMenuId( int menuid )
+{
+ TQString *key = keyDict.tqfind( (long)menuid );
+ changeInputMethod( (*key) );
+}
+
+#endif
diff --git a/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontext.h b/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontext.h
new file mode 100644
index 0000000..c18a2c7
--- /dev/null
+++ b/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontext.h
@@ -0,0 +1,124 @@
+/****************************************************************************
+** $Id$
+**
+** Definition of TQMultiInputContext class
+**
+** Copyright (C) 2004 immodule for TQt Project. All rights reserved.
+**
+** This file is written to contribute to Trolltech AS under their own
+** licence. You may use this file under your TQt license. Following
+** description is copied from their original file headers. Contact
+** immodule-qt@freedesktop.org if any conditions of this licensing are
+** not clear to you.
+**
+**
+** This file is part of the input method module of the TQt GUI Toolkit.
+**
+** This file may be distributed under the terms of the Q Public License
+** as defined by Trolltech AS of Norway and appearing in the file
+** LICENSE.TQPL included in the packaging of this file.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition
+** licenses may use this file in accordance with the TQt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
+** information about TQt Commercial License Agreements.
+** See http://www.trolltech.com/qpl/ for TQPL licensing information.
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef TQMULTIINPUTCONTEXT_H
+#define TQMULTIINPUTCONTEXT_H
+
+#ifndef TQT_NO_IM
+
+#include <tqnamespace.h>
+#include <tqwidget.h>
+#include <tqinputcontext.h>
+#include <tqguardedptr.h>
+#include <tqintdict.h>
+
+class TQPopupMenu;
+
+class TQMultiInputContext : public TQInputContext
+{
+ TQ_OBJECT
+public:
+ TQMultiInputContext();
+ ~TQMultiInputContext();
+
+ TQString identifierName();
+ TQString language();
+
+#if defined(TQ_WS_X11)
+ bool x11FilterEvent( TQWidget *keywidget, XEvent *event );
+#endif // TQ_WS_X11
+ bool filterEvent( const TQEvent *event );
+ void reset();
+
+ void setFocus();
+ void unsetFocus();
+ void setMicroFocus( int x, int y, int w, int h, TQFont *f = 0 );
+ void mouseHandler( int x, TQEvent::Type type,
+ TQt::ButtonState button, TQt::ButtonState state );
+ TQFont font() const;
+ bool isComposing() const;
+ bool isPreeditRelocationEnabled();
+
+#if ([[[TQT_VERSION IS DEPRECATED]]]-0 >= 0x040000)
+ TQPtrList<TQMenu> *qt4menus();
+#endif
+ TQPtrList<TQInputContextMenu> *menus();
+ TQPopupMenu *createImSelPopup();
+
+#if defined(TQ_WS_X11)
+ TQWidget *tqfocusWidget() const;
+ TQWidget *holderWidget() const;
+
+ void setFocusWidget( TQWidget *w );
+ void setHolderWidget( TQWidget *w );
+ void releaseComposingWidget( TQWidget *w );
+#endif
+
+public slots:
+ virtual void destroyInputContext();
+ virtual void postIMEvent( TQObject *receiver, TQIMEvent *event );
+
+protected slots:
+ void changeInputMethodWithMenuId( int menuid );
+
+protected:
+ TQInputContext *slave();
+ const TQInputContext *slave() const;
+
+ void changeInputMethod( int newIndex );
+ void changeInputMethod( TQString name );
+
+ TQInputContext *_slave;
+ int imIndex;
+ bool cachedFocus;
+ TQWidget *cachedFocusWidget;
+ TQWidget *cachedHolderWidget;
+ bool beIndirectlyConnected;
+
+ TQIntDict<TQString> keyDict;
+ TQGuardedPtr<TQPopupMenu> popup;
+ TQString currentIMKey;
+};
+
+#endif //TQ_NO_IM
+
+#endif // TQMULTIINPUTCONTEXT_H
diff --git a/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontextplugin.cpp b/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontextplugin.cpp
new file mode 100644
index 0000000..1a64459
--- /dev/null
+++ b/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontextplugin.cpp
@@ -0,0 +1,88 @@
+/****************************************************************************
+** $Id$
+**
+** Implementation of TQMultiInputContextPlugin class
+**
+** Copyright (C) 2004 immodule for TQt Project. All rights reserved.
+**
+** This file is written to contribute to Trolltech AS under their own
+** licence. You may use this file under your TQt license. Following
+** description is copied from their original file headers. Contact
+** immodule-qt@freedesktop.org if any conditions of this licensing are
+** not clear to you.
+**
+**
+** This file is part of the input method module of the TQt GUI Toolkit.
+**
+** This file may be distributed under the terms of the Q Public License
+** as defined by Trolltech AS of Norway and appearing in the file
+** LICENSE.TQPL included in the packaging of this file.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition
+** licenses may use this file in accordance with the TQt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
+** information about TQt Commercial License Agreements.
+** See http://www.trolltech.com/qpl/ for TQPL licensing information.
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef TQT_NO_IM
+#include "tqmultiinputcontext.h"
+#include "tqmultiinputcontextplugin.h"
+#include <tqinputcontextplugin.h>
+#include <tqstringlist.h>
+
+
+TQMultiInputContextPlugin::TQMultiInputContextPlugin()
+{
+}
+
+TQMultiInputContextPlugin::~TQMultiInputContextPlugin()
+{
+}
+
+TQStringList TQMultiInputContextPlugin::keys() const
+{
+ // input method switcher should named with "imsw-" prefix to
+ // prevent to be listed in ordinary input method list.
+ return TQStringList( "imsw-multi" );
+}
+
+TQInputContext *TQMultiInputContextPlugin::create( const TQString &key )
+{
+ return new TQMultiInputContext;
+}
+
+TQStringList TQMultiInputContextPlugin::languages( const TQString &key )
+{
+ return TQStringList( "" );
+}
+
+TQString TQMultiInputContextPlugin::displayName( const TQString &key )
+{
+ return tr( "Multiple Input Method Switcher" );
+}
+
+TQString TQMultiInputContextPlugin::description( const TQString &key )
+{
+ return tr( "Multiple input method switcher that uses the context menu of the text widgets" );
+}
+
+
+TQ_EXPORT_PLUGIN( TQMultiInputContextPlugin )
+
+#endif
diff --git a/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontextplugin.h b/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontextplugin.h
new file mode 100644
index 0000000..5c5d09f
--- /dev/null
+++ b/tqtinterface/qt4/plugins/src/inputmethods/imsw-multi/tqmultiinputcontextplugin.h
@@ -0,0 +1,63 @@
+/****************************************************************************
+** $Id$
+**
+** Definition of TQMultiInputContextPlugin class
+**
+** Copyright (C) 2004 immodule for TQt Project. All rights reserved.
+**
+** This file is written to contribute to Trolltech AS under their own
+** licence. You may use this file under your TQt license. Following
+** description is copied from their original file headers. Contact
+** immodule-qt@freedesktop.org if any conditions of this licensing are
+** not clear to you.
+**
+**
+** This file is part of the input method module of the TQt GUI Toolkit.
+**
+** This file may be distributed under the terms of the Q Public License
+** as defined by Trolltech AS of Norway and appearing in the file
+** LICENSE.TQPL included in the packaging of this file.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition
+** licenses may use this file in accordance with the TQt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
+** information about TQt Commercial License Agreements.
+** See http://www.trolltech.com/qpl/ for TQPL licensing information.
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef TQT_NO_IM
+#include "tqmultiinputcontext.h"
+#include <tqinputcontextplugin.h>
+#include <tqstringlist.h>
+
+
+class TQMultiInputContextPlugin : public TQInputContextPlugin
+{
+ TQ_OBJECT
+public:
+ TQMultiInputContextPlugin();
+ ~TQMultiInputContextPlugin();
+
+ TQStringList keys() const;
+ TQInputContext *create( const TQString &key );
+ TQStringList languages( const TQString &key );
+ TQString displayName( const TQString &key );
+ TQString description( const TQString &key );
+};
+
+#endif