237 lines
8.2 KiB
Python
237 lines
8.2 KiB
Python
# vim:set et sts=4 sw=4:
|
|
#
|
|
# ibus - The Input Bus
|
|
#
|
|
# Copyright (c) 2012 Daiki Ueno <ueno@unixuser.org>
|
|
# Copyright (c) 2011 Peng Huang <shawn.p.huang@gmail.com>
|
|
#
|
|
# This library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2.1 of the License, or (at your option) any later version.
|
|
#
|
|
# This library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this library; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
|
|
# USA
|
|
|
|
from gi.repository import GObject
|
|
|
|
from ..overrides import override
|
|
|
|
# for newer pygobject: https://bugzilla.gnome.org/show_bug.cgi?id=686828
|
|
# from ..module import get_introspection_module
|
|
# IBus = get_introspection_module('IBus')
|
|
from ..importer import modules
|
|
IBus = modules['IBus']._introspection_module
|
|
|
|
__all__ = []
|
|
|
|
class Attribute(IBus.Attribute):
|
|
def __new__(cls, type=0, value=0, start_index=0, end_index=0):
|
|
return IBus.Attribute.new(type, value, start_index, end_index)
|
|
|
|
Attribute = override(Attribute)
|
|
__all__.append('Attribute')
|
|
|
|
class Component(IBus.Component):
|
|
# Backward compatibility: allow non-keyword arguments
|
|
def __init__(self,
|
|
name='',
|
|
description='',
|
|
version='',
|
|
license='',
|
|
author='',
|
|
homepage='',
|
|
command_line='',
|
|
textdomain='',
|
|
**kwargs):
|
|
super(Component, self).__init__(name=name,
|
|
description=description,
|
|
version=version,
|
|
license=license,
|
|
author=author,
|
|
homepage=homepage,
|
|
command_line=command_line,
|
|
textdomain=textdomain,
|
|
**kwargs)
|
|
|
|
# Backward compatibility: allow keyword arguments
|
|
def add_engine(self, engine=None, **kwargs):
|
|
if engine is None:
|
|
engine = EngineDesc(**kwargs)
|
|
super(Component, self).add_engine(engine)
|
|
|
|
Component = override(Component)
|
|
__all__.append('Component')
|
|
|
|
class Config(IBus.Config):
|
|
# Backward compatibility: accept default arg
|
|
def get_value(self, section, name, default=None):
|
|
value = super(Config, self).get_value(section, name)
|
|
if value is None:
|
|
return default
|
|
return value
|
|
|
|
# Backward compatibility: unset value if value is None
|
|
# Note that we don't call GLib.Variant.unpack here
|
|
def set_value(self, section, name, value):
|
|
if value is None:
|
|
self.unset(section, name)
|
|
else:
|
|
super(Config, self).set_value(section, name, value)
|
|
|
|
Config = override(Config)
|
|
__all__.append('Config')
|
|
|
|
class EngineDesc(IBus.EngineDesc):
|
|
# Backward compatibility: allow non-keyword arguments
|
|
def __init__(self,
|
|
name='',
|
|
longname='',
|
|
description='',
|
|
language='',
|
|
license='',
|
|
author='',
|
|
icon='',
|
|
layout='us',
|
|
hotkeys='',
|
|
rank=0,
|
|
symbol='',
|
|
setup='',
|
|
layout_variant='',
|
|
layout_option='',
|
|
version='',
|
|
textdomain='',
|
|
**kwargs):
|
|
super(EngineDesc, self).__init__(name=name,
|
|
longname=longname,
|
|
description=description,
|
|
language=language,
|
|
license=license,
|
|
author=author,
|
|
icon=icon,
|
|
layout=layout,
|
|
hotkeys=hotkeys,
|
|
rank=rank,
|
|
symbol=symbol,
|
|
setup=setup,
|
|
layout_variant=layout_variant,
|
|
layout_option=layout_option,
|
|
version=version,
|
|
textdomain=textdomain,
|
|
**kwargs)
|
|
|
|
EngineDesc = override(EngineDesc)
|
|
__all__.append('EngineDesc')
|
|
|
|
class Factory(IBus.Factory):
|
|
# Backward compatibility: allow non-keyword arguments
|
|
def __init__(self, bus=None, **kwargs):
|
|
if bus is not None:
|
|
kwargs.setdefault('connection', bus.get_connection())
|
|
kwargs.setdefault('object_path', IBus.PATH_FACTORY)
|
|
super(Factory, self).__init__(**kwargs)
|
|
|
|
Factory = override(Factory)
|
|
__all__.append('Factory')
|
|
|
|
class Keymap(IBus.Keymap):
|
|
# Backward compatibility: allow non-keyword arguments
|
|
def __new__(cls, name):
|
|
return IBus.Keymap.new(name)
|
|
|
|
def __init__(*args, **kwargs):
|
|
pass
|
|
|
|
Keymap = override(Keymap)
|
|
__all__.append('Keymap')
|
|
|
|
class LookupTable(IBus.LookupTable):
|
|
# Backward compatibility: allow non-keyword arguments
|
|
def __new__(cls,
|
|
page_size=5,
|
|
cursor_pos=0,
|
|
cursor_visible=True,
|
|
round=False,
|
|
orientation=IBus.Orientation.SYSTEM,
|
|
candidates=[],
|
|
labels=[]):
|
|
table = IBus.LookupTable.new(page_size,
|
|
cursor_pos,
|
|
cursor_visible,
|
|
round)
|
|
table.set_orientation(orientation)
|
|
for candidate in candidates:
|
|
table.append_candidate(candidate)
|
|
for index, label in enumerate(labels):
|
|
table.set_label(index, label)
|
|
return table
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
pass
|
|
|
|
# Backward compatibility: rename
|
|
def show_cursor(self, visible):
|
|
self.set_cursor_visible(visible)
|
|
|
|
# Backward compatibility: rename
|
|
def clean(self):
|
|
self.clear()
|
|
|
|
LookupTable = override(LookupTable)
|
|
__all__.append('LookupTable')
|
|
|
|
class Property(IBus.Property):
|
|
# Backward compatibility: allow non-keyword arguments
|
|
def __init__(self,
|
|
key='',
|
|
type=IBus.PropType.NORMAL,
|
|
label='',
|
|
icon='',
|
|
tooltip='',
|
|
sensitive=True,
|
|
visible=True,
|
|
state=IBus.PropState.UNCHECKED,
|
|
symbol='',
|
|
**kwargs):
|
|
prop_type = kwargs.pop('prop_type', type)
|
|
if label != None and not isinstance(label, IBus.Text):
|
|
label = Text(label)
|
|
if tooltip != None and not isinstance(tooltip, IBus.Text):
|
|
tooltip = Text(tooltip)
|
|
if symbol != None and not isinstance(symbol, IBus.Text):
|
|
symbol = Text(symbol)
|
|
super(Property, self).__init__(key=key,
|
|
prop_type=prop_type,
|
|
label=label,
|
|
icon=icon,
|
|
tooltip=tooltip,
|
|
sensitive=sensitive,
|
|
visible=visible,
|
|
state=state,
|
|
symbol=symbol,
|
|
**kwargs)
|
|
|
|
Property = override(Property)
|
|
__all__.append('Property')
|
|
|
|
class Text(IBus.Text):
|
|
# Backward compatibility: allow non-keyword arguments
|
|
def __new__(cls, string='', attrs=None):
|
|
text = IBus.Text.new_from_string(string)
|
|
if attrs is not None:
|
|
text.set_attributes(attrs)
|
|
return text
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
pass
|
|
|
|
Text = override(Text)
|
|
__all__.append('Text')
|