В IBusFactory:
"connection" IBusConnection* : Read / Write / Construct Only
В документации написано "Construct Only"
. Сейчас это подлежит интерпретации, но для меня это означает, что это, вероятно, частный или защищенный ученик. Тем не менее, конструктор определяется как:
IBusFactory * ibus_factory_new (IBusConnection *connection);
Эта переменная соединения есть в конструкторе. Обратите внимание, что когда вы предоставляете его именно таким образом, ваше приложение работает нормально.
const IBus = imports.gi.IBus;
//get the ibus bus
var bus = new IBus.Bus();
if(bus.is_connected()){
var factory = new IBus.Factory(bus.get_connection());
}
Теперь, что касается factory.add_engine()
, определение здесь:
void ibus_factory_add_engine (IBusFactory *factory,
const gchar *engine_name,
GType engine_type);
Это означает, что вы должны будете указать engine_name
и engine_type
в качестве параметров функции. Это работает:
factory.add_engine('ibus-engine-name', some-engine-type);
См. http://ibus.googlecode.com/svn/docs/ibus/ch03.html для идей двигателя. Этот код не имеет ошибки, но он также не работает. Указывает правильный синтаксис вплоть до второго параметра add_engine()
.
#!/usr/bin/env gjs
const IBus = imports.gi.IBus;
//get the ibus bus
var bus = new IBus.Bus();
if(bus.is_connected()){
var factory = new IBus.Factory(bus.get_connection());
factory.add_engine("ibus-sarim", typeof(this));
}