|
Packit Service |
1d8f1c |
# vim:set et sts=4 sw=4:
|
|
Packit Service |
1d8f1c |
# -*- coding: utf-8 -*-
|
|
Packit Service |
1d8f1c |
#
|
|
Packit Service |
1d8f1c |
# ibus - The Input Bus
|
|
Packit Service |
1d8f1c |
#
|
|
Packit Service |
1d8f1c |
# Copyright (c) 2007-2016 Peng Huang <shawn.p.huang@gmail.com>
|
|
Packit Service |
1d8f1c |
# Copyright (c) 2010-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
|
|
Packit Service |
1d8f1c |
# Copyright (c) 2007-2016 Red Hat, Inc.
|
|
Packit Service |
1d8f1c |
#
|
|
Packit Service |
1d8f1c |
# This library is free software; you can redistribute it and/or
|
|
Packit Service |
1d8f1c |
# modify it under the terms of the GNU Lesser General Public
|
|
Packit Service |
1d8f1c |
# License as published by the Free Software Foundation; either
|
|
Packit Service |
1d8f1c |
# version 2.1 of the License, or (at your option) any later version.
|
|
Packit Service |
1d8f1c |
#
|
|
Packit Service |
1d8f1c |
# This library is distributed in the hope that it will be useful,
|
|
Packit Service |
1d8f1c |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
1d8f1c |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
1d8f1c |
# Lesser General Public License for more details.
|
|
Packit Service |
1d8f1c |
#
|
|
Packit Service |
1d8f1c |
# You should have received a copy of the GNU Lesser General Public
|
|
Packit Service |
1d8f1c |
# License along with this library; if not, write to the Free Software
|
|
Packit Service |
1d8f1c |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
|
|
Packit Service |
1d8f1c |
# USA
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# for python2
|
|
Packit Service |
1d8f1c |
from __future__ import print_function
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
import os
|
|
Packit Service |
1d8f1c |
import signal
|
|
Packit Service |
1d8f1c |
import sys
|
|
Packit Service |
1d8f1c |
import time
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
from gi import require_version as gi_require_version
|
|
Packit Service |
1d8f1c |
gi_require_version('GLib', '2.0')
|
|
Packit Service |
1d8f1c |
gi_require_version('GdkX11', '3.0')
|
|
Packit Service |
1d8f1c |
gi_require_version('Gio', '2.0')
|
|
Packit Service |
1d8f1c |
gi_require_version('Gtk', '3.0')
|
|
Packit Service |
1d8f1c |
gi_require_version('IBus', '1.0')
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
from gi.repository import GLib
|
|
Packit Service |
1d8f1c |
# set_prgname before importing other modules to show the name in warning
|
|
Packit Service |
1d8f1c |
# messages when import modules are failed.
|
|
Packit Service |
1d8f1c |
GLib.set_prgname('ibus-setup')
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
from gi.repository import GdkX11
|
|
Packit Service |
1d8f1c |
from gi.repository import Gio
|
|
Packit Service |
1d8f1c |
from gi.repository import Gtk
|
|
Packit Service |
1d8f1c |
from gi.repository import IBus
|
|
Packit Service |
1d8f1c |
from os import path
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
import i18n
|
|
Packit Service |
1d8f1c |
import keyboardshortcut
|
|
Packit Service |
1d8f1c |
import locale
|
|
Packit Service |
1d8f1c |
from emojilang import EmojiLangButton
|
|
Packit Service |
1d8f1c |
from enginecombobox import EngineComboBox
|
|
Packit Service |
1d8f1c |
from enginedialog import EngineDialog
|
|
Packit Service |
1d8f1c |
from enginetreeview import EngineTreeView
|
|
Packit Service |
1d8f1c |
from engineabout import EngineAbout
|
|
Packit Service |
1d8f1c |
from i18n import DOMAINNAME, _, N_
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
(
|
|
Packit Service |
1d8f1c |
COLUMN_NAME,
|
|
Packit Service |
1d8f1c |
COLUMN_ENABLE,
|
|
Packit Service |
1d8f1c |
COLUMN_PRELOAD,
|
|
Packit Service |
1d8f1c |
COLUMN_VISIBLE,
|
|
Packit Service |
1d8f1c |
COLUMN_ICON,
|
|
Packit Service |
1d8f1c |
COLUMN_DATA,
|
|
Packit Service |
1d8f1c |
) = list(range(6))
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
(
|
|
Packit Service |
1d8f1c |
DATA_NAME,
|
|
Packit Service |
1d8f1c |
DATA_LOCAL_NAME,
|
|
Packit Service |
1d8f1c |
DATA_LANG,
|
|
Packit Service |
1d8f1c |
DATA_ICON,
|
|
Packit Service |
1d8f1c |
DATA_AUTHOR,
|
|
Packit Service |
1d8f1c |
DATA_CREDITS,
|
|
Packit Service |
1d8f1c |
DATA_EXEC,
|
|
Packit Service |
1d8f1c |
DATA_STARTED,
|
|
Packit Service |
1d8f1c |
DATA_PRELOAD
|
|
Packit Service |
1d8f1c |
) = list(range(9))
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
class Setup(object):
|
|
Packit Service |
1d8f1c |
def __flush_gtk_events(self):
|
|
Packit Service |
1d8f1c |
while Gtk.events_pending():
|
|
Packit Service |
1d8f1c |
Gtk.main_iteration()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __init__(self):
|
|
Packit Service |
1d8f1c |
super(Setup, self).__init__()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
self.__settings_general = Gio.Settings(
|
|
Packit Service |
1d8f1c |
schema = "org.freedesktop.ibus.general");
|
|
Packit Service |
1d8f1c |
self.__settings_hotkey = Gio.Settings(
|
|
Packit Service |
1d8f1c |
schema = "org.freedesktop.ibus.general.hotkey");
|
|
Packit Service |
1d8f1c |
self.__settings_panel = Gio.Settings(
|
|
Packit Service |
1d8f1c |
schema = "org.freedesktop.ibus.panel");
|
|
Packit Service |
1d8f1c |
self.__settings_emoji = Gio.Settings(
|
|
Packit Service |
1d8f1c |
schema = "org.freedesktop.ibus.panel.emoji");
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# IBus.Bus() calls ibus_bus_new().
|
|
Packit Service |
1d8f1c |
# Gtk.Builder().add_from_file() also calls ibus_bus_new_async()
|
|
Packit Service |
1d8f1c |
# via ibus_im_context_new().
|
|
Packit Service |
1d8f1c |
# Then if IBus.Bus() is called after Gtk.Builder().add_from_file(),
|
|
Packit Service |
1d8f1c |
# the connection delay would be happened without an async
|
|
Packit Service |
1d8f1c |
# finish function.
|
|
Packit Service |
1d8f1c |
self.__bus = None
|
|
Packit Service |
1d8f1c |
self.__init_bus()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# Gtk.ListBox has been available since gtk 3.10
|
|
Packit Service |
1d8f1c |
self.__has_list_box = hasattr(Gtk, 'ListBox')
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
gtk_builder_file = path.join(path.dirname(__file__), "./setup.ui")
|
|
Packit Service |
1d8f1c |
self.__builder = Gtk.Builder()
|
|
Packit Service |
1d8f1c |
self.__builder.set_translation_domain(DOMAINNAME)
|
|
Packit Service |
1d8f1c |
self.__builder.add_from_file(gtk_builder_file);
|
|
Packit Service |
1d8f1c |
self.__init_ui()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __init_hotkeys(self):
|
|
Packit Service |
1d8f1c |
name = 'triggers'
|
|
Packit Service |
1d8f1c |
label = 'switch_engine'
|
|
Packit Service |
1d8f1c |
comment = \
|
|
Packit Service |
1d8f1c |
_("Use shortcut with shift to switch to the previous input method")
|
|
Packit Service |
1d8f1c |
self.__init_hotkey(name, label, comment)
|
|
Packit Service |
1d8f1c |
name = 'emoji'
|
|
Packit Service |
1d8f1c |
label = 'emoji_dialog'
|
|
Packit Service |
1d8f1c |
self.__init_hotkey(name, label)
|
|
Packit Service |
1d8f1c |
name = 'unicode'
|
|
Packit Service |
1d8f1c |
label = 'unicode_dialog'
|
|
Packit Service |
1d8f1c |
self.__init_hotkey(name, label)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __init_hotkey(self, name, label, comment=None):
|
|
Packit Service |
1d8f1c |
if name == 'emoji':
|
|
Packit Service |
1d8f1c |
shortcuts = self.__settings_emoji.get_strv('hotkey')
|
|
Packit Service |
1d8f1c |
elif name == 'unicode':
|
|
Packit Service |
1d8f1c |
shortcuts = self.__settings_emoji.get_strv('unicode-hotkey')
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
shortcuts = self.__settings_hotkey.get_strv(name)
|
|
Packit Service |
1d8f1c |
button = self.__builder.get_object("button_%s" % label)
|
|
Packit Service |
1d8f1c |
entry = self.__builder.get_object("entry_%s" % label)
|
|
Packit Service |
1d8f1c |
entry.set_text("; ".join(shortcuts))
|
|
Packit Service |
1d8f1c |
tooltip = "\n".join(shortcuts)
|
|
Packit Service |
1d8f1c |
if comment != None:
|
|
Packit Service |
1d8f1c |
tooltip += "\n" + comment
|
|
Packit Service |
1d8f1c |
entry.set_tooltip_text(tooltip)
|
|
Packit Service |
1d8f1c |
if name == 'emoji':
|
|
Packit Service |
1d8f1c |
button.connect("clicked", self.__shortcut_button_clicked_cb,
|
|
Packit Service |
1d8f1c |
'hotkey', 'panel/' + name, label, entry)
|
|
Packit Service |
1d8f1c |
elif name == 'unicode':
|
|
Packit Service |
1d8f1c |
button.connect("clicked", self.__shortcut_button_clicked_cb,
|
|
Packit Service |
1d8f1c |
'unicode-hotkey', 'panel/emoji', label, entry)
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
button.connect("clicked", self.__shortcut_button_clicked_cb,
|
|
Packit Service |
1d8f1c |
name, "general/hotkey", label, entry)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __init_panel(self):
|
|
Packit Service |
1d8f1c |
# lookup table orientation
|
|
Packit Service |
1d8f1c |
self.__combobox_lookup_table_orientation = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"combobox_lookup_table_orientation")
|
|
Packit Service |
1d8f1c |
self.__settings_panel.bind('lookup-table-orientation',
|
|
Packit Service |
1d8f1c |
self.__combobox_lookup_table_orientation,
|
|
Packit Service |
1d8f1c |
'active',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# auto hide
|
|
Packit Service |
1d8f1c |
self.__combobox_panel_show = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"combobox_panel_show")
|
|
Packit Service |
1d8f1c |
self.__settings_panel.bind('show',
|
|
Packit Service |
1d8f1c |
self.__combobox_panel_show,
|
|
Packit Service |
1d8f1c |
'active',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# panel position
|
|
Packit Service |
1d8f1c |
self.__combobox_panel_position = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"combobox_panel_position")
|
|
Packit Service |
1d8f1c |
self.__combobox_panel_position.set_active(3)
|
|
Packit Service |
1d8f1c |
#self.__settings_panel.bind('position',
|
|
Packit Service |
1d8f1c |
# self.__combobox_panel_position,
|
|
Packit Service |
1d8f1c |
# 'active',
|
|
Packit Service |
1d8f1c |
# Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# custom font
|
|
Packit Service |
1d8f1c |
self.__checkbutton_custom_font = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"checkbutton_custom_font")
|
|
Packit Service |
1d8f1c |
self.__settings_panel.bind('use-custom-font',
|
|
Packit Service |
1d8f1c |
self.__checkbutton_custom_font,
|
|
Packit Service |
1d8f1c |
'active',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
self.__fontbutton_custom_font = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"fontbutton_custom_font")
|
|
Packit Service |
1d8f1c |
self.__settings_panel.bind('custom-font',
|
|
Packit Service |
1d8f1c |
self.__fontbutton_custom_font,
|
|
Packit Service |
1d8f1c |
'font-name',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
self.__settings_panel.bind('use-custom-font',
|
|
Packit Service |
1d8f1c |
self.__fontbutton_custom_font,
|
|
Packit Service |
1d8f1c |
'sensitive',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.GET)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# show icon on system tray
|
|
Packit Service |
1d8f1c |
self.__checkbutton_show_icon_on_systray = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"checkbutton_show_icon_on_systray")
|
|
Packit Service |
1d8f1c |
self.__settings_panel.bind('show-icon-on-systray',
|
|
Packit Service |
1d8f1c |
self.__checkbutton_show_icon_on_systray,
|
|
Packit Service |
1d8f1c |
'active',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# show ime name
|
|
Packit Service |
1d8f1c |
self.__checkbutton_show_im_name = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"checkbutton_show_im_name")
|
|
Packit Service |
1d8f1c |
self.__settings_panel.bind('show-im-name',
|
|
Packit Service |
1d8f1c |
self.__checkbutton_show_im_name,
|
|
Packit Service |
1d8f1c |
'active',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __init_general(self):
|
|
Packit Service |
1d8f1c |
# embed preedit text
|
|
Packit Service |
1d8f1c |
self.__checkbutton_embed_preedit_text = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"checkbutton_embed_preedit_text")
|
|
Packit Service |
1d8f1c |
self.__settings_general.bind('embed-preedit-text',
|
|
Packit Service |
1d8f1c |
self.__checkbutton_embed_preedit_text,
|
|
Packit Service |
1d8f1c |
'active',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# use system keyboard layout setting
|
|
Packit Service |
1d8f1c |
self.__checkbutton_use_sys_layout = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"checkbutton_use_sys_layout")
|
|
Packit Service |
1d8f1c |
self.__settings_general.bind('use-system-keyboard-layout',
|
|
Packit Service |
1d8f1c |
self.__checkbutton_use_sys_layout,
|
|
Packit Service |
1d8f1c |
'active',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# use global ime setting
|
|
Packit Service |
1d8f1c |
self.__checkbutton_use_global_engine = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"checkbutton_use_global_engine")
|
|
Packit Service |
1d8f1c |
self.__settings_general.bind('use-global-engine',
|
|
Packit Service |
1d8f1c |
self.__checkbutton_use_global_engine,
|
|
Packit Service |
1d8f1c |
'active',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# init engine page
|
|
Packit Service |
1d8f1c |
self.__engines = self.__bus.list_engines()
|
|
Packit Service |
1d8f1c |
self.__combobox = self.__builder.get_object("combobox_engines")
|
|
Packit Service |
1d8f1c |
if self.__has_list_box:
|
|
Packit Service |
1d8f1c |
self.__combobox.set_no_show_all(True)
|
|
Packit Service |
1d8f1c |
self.__combobox.hide()
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
self.__combobox.set_engines(self.__engines)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
tmp_dict = {}
|
|
Packit Service |
1d8f1c |
for e in self.__engines:
|
|
Packit Service |
1d8f1c |
tmp_dict[e.get_name()] = e
|
|
Packit Service |
1d8f1c |
engine_names = self.__settings_general.get_strv('preload-engines')
|
|
Packit Service |
1d8f1c |
engines = [tmp_dict[name] for name in engine_names if name in tmp_dict]
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
self.__treeview = self.__builder.get_object("treeview_engines")
|
|
Packit Service |
1d8f1c |
self.__treeview.set_engines(engines)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
button = self.__builder.get_object("button_engine_add")
|
|
Packit Service |
1d8f1c |
if self.__has_list_box:
|
|
Packit Service |
1d8f1c |
button.set_sensitive(True)
|
|
Packit Service |
1d8f1c |
button.connect("clicked", self.__button_engine_add_cb)
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
button.connect("clicked", self.__button_engine_add_cb_deprecate)
|
|
Packit Service |
1d8f1c |
button = self.__builder.get_object("button_engine_remove")
|
|
Packit Service |
1d8f1c |
button.connect("clicked", lambda *args:self.__treeview.remove_engine())
|
|
Packit Service |
1d8f1c |
button = self.__builder.get_object("button_engine_up")
|
|
Packit Service |
1d8f1c |
button.connect("clicked", lambda *args:self.__treeview.move_up_engine())
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
button = self.__builder.get_object("button_engine_down")
|
|
Packit Service |
1d8f1c |
button.connect("clicked",
|
|
Packit Service |
1d8f1c |
lambda *args:self.__treeview.move_down_engine())
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
button = self.__builder.get_object("button_engine_about")
|
|
Packit Service |
1d8f1c |
button.connect("clicked", self.__button_engine_about_cb)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
self.__engine_setup_exec_list = {}
|
|
Packit Service |
1d8f1c |
button = self.__builder.get_object("button_engine_preferences")
|
|
Packit Service |
1d8f1c |
button.connect("clicked", self.__button_engine_preferences_cb)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
self.__combobox.connect("notify::active-engine",
|
|
Packit Service |
1d8f1c |
self.__combobox_notify_active_engine_cb)
|
|
Packit Service |
1d8f1c |
self.__treeview.connect("notify::active-engine", self.__treeview_notify_cb)
|
|
Packit Service |
1d8f1c |
self.__treeview.connect("notify::engines", self.__treeview_notify_cb)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __init_emoji(self):
|
|
Packit Service |
1d8f1c |
self.__fontbutton_emoji_font = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
'fontbutton_emoji_font')
|
|
Packit Service |
1d8f1c |
self.__fontbutton_emoji_font.set_preview_text('🙂🍎🚃💓📧⚽🐳');
|
|
Packit Service |
1d8f1c |
self.__settings_emoji.bind('font',
|
|
Packit Service |
1d8f1c |
self.__fontbutton_emoji_font,
|
|
Packit Service |
1d8f1c |
'font-name',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
self.__button_emoji_lang = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
'button_emoji_lang')
|
|
Packit Service |
1d8f1c |
self.__settings_emoji.bind('lang',
|
|
Packit Service |
1d8f1c |
self.__button_emoji_lang,
|
|
Packit Service |
1d8f1c |
'lang',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
self.__checkbutton_emoji_partial_match = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
'checkbutton_emoji_partial_match')
|
|
Packit Service |
1d8f1c |
checkbutton_label = self.__checkbutton_emoji_partial_match.get_child()
|
|
Packit Service |
1d8f1c |
if type(checkbutton_label) == Gtk.Label:
|
|
Packit Service |
1d8f1c |
checkbutton_label.set_property('wrap', True)
|
|
Packit Service |
1d8f1c |
checkbutton_label.set_property('max-width-chars', 74)
|
|
Packit Service |
1d8f1c |
self.__spinbutton_emoji_partial_match = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
'spinbutton_emoji_partial_match')
|
|
Packit Service |
1d8f1c |
self.__settings_emoji.bind('has-partial-match',
|
|
Packit Service |
1d8f1c |
self.__checkbutton_emoji_partial_match,
|
|
Packit Service |
1d8f1c |
'active',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.DEFAULT)
|
|
Packit Service |
1d8f1c |
self.__settings_emoji.bind('has-partial-match',
|
|
Packit Service |
1d8f1c |
self.__spinbutton_emoji_partial_match,
|
|
Packit Service |
1d8f1c |
'sensitive',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.GET)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def adjustment_value_changed_cb(obj):
|
|
Packit Service |
1d8f1c |
key = 'partial-match-length'
|
|
Packit Service |
1d8f1c |
value = int(adjustment.get_value())
|
|
Packit Service |
1d8f1c |
if value == self.__settings_emoji.get_int(key):
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
self.__settings_emoji.set_int(key, value)
|
|
Packit Service |
1d8f1c |
def settings_emoji_partial_match_length_cb(settings, key):
|
|
Packit Service |
1d8f1c |
value = self.__settings_emoji.get_int(key)
|
|
Packit Service |
1d8f1c |
old_value = int(self.__spinbutton_emoji_partial_match.get_value())
|
|
Packit Service |
1d8f1c |
if value == old_value:
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
self.__spinbutton_emoji_partial_match.set_value(value)
|
|
Packit Service |
1d8f1c |
settings_emoji_partial_match_length_cb(None, 'partial-match-length')
|
|
Packit Service |
1d8f1c |
adjustment = self.__spinbutton_emoji_partial_match.get_adjustment()
|
|
Packit Service |
1d8f1c |
adjustment.connect('value-changed', adjustment_value_changed_cb)
|
|
Packit Service |
1d8f1c |
self.__settings_emoji.connect('changed::partial-match-length',
|
|
Packit Service |
1d8f1c |
settings_emoji_partial_match_length_cb)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
self.__hbox_emoji_partial_match = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
'hbox_emoji_partial_match')
|
|
Packit Service |
1d8f1c |
self.__settings_emoji.bind('has-partial-match',
|
|
Packit Service |
1d8f1c |
self.__hbox_emoji_partial_match,
|
|
Packit Service |
1d8f1c |
'sensitive',
|
|
Packit Service |
1d8f1c |
Gio.SettingsBindFlags.GET)
|
|
Packit Service |
1d8f1c |
self.__radiobutton_emoji_prefix_match = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
'radiobutton_emoji_prefix_match')
|
|
Packit Service |
1d8f1c |
self.__radiobutton_emoji_suffix_match = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
'radiobutton_emoji_suffix_match')
|
|
Packit Service |
1d8f1c |
self.__radiobutton_emoji_contain_match = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
'radiobutton_emoji_contain_match')
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def radiobuton_emoji_partial_match_cb(obj):
|
|
Packit Service |
1d8f1c |
key = 'partial-match-condition'
|
|
Packit Service |
1d8f1c |
condition = 0
|
|
Packit Service |
1d8f1c |
if not obj.get_active():
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
if obj == self.__radiobutton_emoji_prefix_match:
|
|
Packit Service |
1d8f1c |
condition = 0
|
|
Packit Service |
1d8f1c |
elif obj == self.__radiobutton_emoji_suffix_match:
|
|
Packit Service |
1d8f1c |
condition = 1
|
|
Packit Service |
1d8f1c |
elif obj == self.__radiobutton_emoji_contain_match:
|
|
Packit Service |
1d8f1c |
condition = 2
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
print('Wrong emoji partial match object')
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
self.__settings_emoji.set_int(key, condition)
|
|
Packit Service |
1d8f1c |
def settings_emoji_partial_match_condition_cb(settings, key):
|
|
Packit Service |
1d8f1c |
value = self.__settings_emoji.get_int(key)
|
|
Packit Service |
1d8f1c |
obj = None
|
|
Packit Service |
1d8f1c |
if value == 0:
|
|
Packit Service |
1d8f1c |
obj = self.__radiobutton_emoji_prefix_match
|
|
Packit Service |
1d8f1c |
elif value == 1:
|
|
Packit Service |
1d8f1c |
obj = self.__radiobutton_emoji_suffix_match
|
|
Packit Service |
1d8f1c |
elif value == 2:
|
|
Packit Service |
1d8f1c |
obj = self.__radiobutton_emoji_contain_match
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
print('Wrong emoji partial match condition')
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
if obj.get_active():
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
obj.set_active(True)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
settings_emoji_partial_match_condition_cb(None,
|
|
Packit Service |
1d8f1c |
'partial-match-condition')
|
|
Packit Service |
1d8f1c |
self.__radiobutton_emoji_prefix_match.connect(
|
|
Packit Service |
1d8f1c |
'toggled',
|
|
Packit Service |
1d8f1c |
radiobuton_emoji_partial_match_cb)
|
|
Packit Service |
1d8f1c |
self.__radiobutton_emoji_suffix_match.connect(
|
|
Packit Service |
1d8f1c |
'toggled',
|
|
Packit Service |
1d8f1c |
radiobuton_emoji_partial_match_cb)
|
|
Packit Service |
1d8f1c |
self.__radiobutton_emoji_contain_match.connect(
|
|
Packit Service |
1d8f1c |
'toggled',
|
|
Packit Service |
1d8f1c |
radiobuton_emoji_partial_match_cb)
|
|
Packit Service |
1d8f1c |
self.__settings_emoji.connect('changed::partial-match-condition',
|
|
Packit Service |
1d8f1c |
settings_emoji_partial_match_condition_cb)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __init_ui(self):
|
|
Packit Service |
1d8f1c |
# add icon search path
|
|
Packit Service |
1d8f1c |
self.__window = self.__builder.get_object("window_preferences")
|
|
Packit Service |
1d8f1c |
self.__window.connect("delete-event", Gtk.main_quit)
|
|
Packit Service |
1d8f1c |
self.__window.connect("notify::window", self.__gdk_window_set_cb)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
self.__button_close = self.__builder.get_object("button_close")
|
|
Packit Service |
1d8f1c |
self.__button_close.connect("clicked", Gtk.main_quit)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# auto start ibus
|
|
Packit Service |
1d8f1c |
self.__checkbutton_auto_start = self.__builder.get_object(
|
|
Packit Service |
1d8f1c |
"checkbutton_auto_start")
|
|
Packit Service |
1d8f1c |
self.__checkbutton_auto_start.set_active(self.__is_auto_start())
|
|
Packit Service |
1d8f1c |
self.__checkbutton_auto_start.connect("toggled",
|
|
Packit Service |
1d8f1c |
self.__checkbutton_auto_start_toggled_cb)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
self.__init_hotkeys()
|
|
Packit Service |
1d8f1c |
self.__init_panel()
|
|
Packit Service |
1d8f1c |
self.__init_general()
|
|
Packit Service |
1d8f1c |
self.__init_emoji()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __gdk_window_set_cb(self, object, pspec):
|
|
Packit Service |
1d8f1c |
window = object.get_window()
|
|
Packit Service |
1d8f1c |
if type(window) != GdkX11.X11Window:
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
s = '%u' % GdkX11.X11Window.get_xid(window)
|
|
Packit Service |
1d8f1c |
GLib.setenv('IBUS_SETUP_XID', s, True)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __combobox_notify_active_engine_cb(self, combobox, property):
|
|
Packit Service |
1d8f1c |
engine = self.__combobox.get_active_engine()
|
|
Packit Service |
1d8f1c |
button = self.__builder.get_object("button_engine_add")
|
|
Packit Service |
1d8f1c |
button.set_sensitive(
|
|
Packit Service |
1d8f1c |
engine != None and engine not in self.__treeview.get_engines())
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __get_engine_setup_exec_args(self, engine):
|
|
Packit Service |
1d8f1c |
args = []
|
|
Packit Service |
1d8f1c |
if engine == None:
|
|
Packit Service |
1d8f1c |
return args
|
|
Packit Service |
1d8f1c |
setup = str(engine.get_setup())
|
|
Packit Service |
1d8f1c |
if len(setup) != 0:
|
|
Packit Service |
1d8f1c |
args = setup.split()
|
|
Packit Service |
1d8f1c |
args.insert(1, path.basename(args[0]))
|
|
Packit Service |
1d8f1c |
return args
|
|
Packit Service |
1d8f1c |
name = str(engine.get_name())
|
|
Packit Service |
1d8f1c |
libexecdir = os.environ['IBUS_LIBEXECDIR']
|
|
Packit Service |
1d8f1c |
setup_path = (libexecdir + '/' + 'ibus-setup-' if libexecdir != None \
|
|
Packit Service |
1d8f1c |
else 'ibus-setup-') + name.split(':')[0]
|
|
Packit Service |
1d8f1c |
if path.exists(setup_path):
|
|
Packit Service |
1d8f1c |
args.append(setup_path)
|
|
Packit Service |
1d8f1c |
args.append(path.basename(setup_path))
|
|
Packit Service |
1d8f1c |
return args
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __treeview_notify_cb(self, treeview, prop):
|
|
Packit Service |
1d8f1c |
if prop.name not in ("active-engine", "engines"):
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
engines = self.__treeview.get_sorted_engines()
|
|
Packit Service |
1d8f1c |
engine = self.__treeview.get_active_engine()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
self.__builder.get_object("button_engine_remove").set_sensitive(engine != None)
|
|
Packit Service |
1d8f1c |
self.__builder.get_object("button_engine_about").set_sensitive(engine != None)
|
|
Packit Service |
1d8f1c |
self.__builder.get_object("button_engine_up").set_sensitive(engine not in engines[:1])
|
|
Packit Service |
1d8f1c |
self.__builder.get_object("button_engine_down").set_sensitive(engine not in engines[-1:])
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
obj = self.__builder.get_object("button_engine_preferences")
|
|
Packit Service |
1d8f1c |
if len(self.__get_engine_setup_exec_args(engine)) != 0:
|
|
Packit Service |
1d8f1c |
obj.set_sensitive(True)
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
obj.set_sensitive(False)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
if prop.name == "engines":
|
|
Packit Service |
1d8f1c |
engines = self.__treeview.get_engines()
|
|
Packit Service |
1d8f1c |
engine_names = [e.get_name() for e in engines]
|
|
Packit Service |
1d8f1c |
self.__settings_general.set_strv('preload-engines', engine_names)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __button_engine_add_cb(self, button):
|
|
Packit Service |
1d8f1c |
dialog = EngineDialog(transient_for = self.__window)
|
|
Packit Service |
1d8f1c |
dialog.set_engines(self.__engines)
|
|
Packit Service |
1d8f1c |
id = dialog.run()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
if id != Gtk.ResponseType.APPLY:
|
|
Packit Service |
1d8f1c |
dialog.destroy()
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
engine = dialog.get_selected_engine()
|
|
Packit Service |
1d8f1c |
dialog.destroy()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
self.__treeview.append_engine(engine)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __button_engine_add_cb_deprecate(self, button):
|
|
Packit Service |
1d8f1c |
engine = self.__combobox.get_active_engine()
|
|
Packit Service |
1d8f1c |
self.__treeview.append_engine(engine)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __button_engine_about_cb(self, button):
|
|
Packit Service |
1d8f1c |
engine = self.__treeview.get_active_engine()
|
|
Packit Service |
1d8f1c |
if engine:
|
|
Packit Service |
1d8f1c |
about = EngineAbout(engine = engine, transient_for = self.__window)
|
|
Packit Service |
1d8f1c |
about.run()
|
|
Packit Service |
1d8f1c |
about.destroy()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __button_engine_preferences_cb(self, button):
|
|
Packit Service |
1d8f1c |
engine = self.__treeview.get_active_engine()
|
|
Packit Service |
1d8f1c |
args = self.__get_engine_setup_exec_args(engine)
|
|
Packit Service |
1d8f1c |
if len(args) == 0:
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
name = engine.get_name()
|
|
Packit Service |
1d8f1c |
if name in list(self.__engine_setup_exec_list.keys()):
|
|
Packit Service |
1d8f1c |
try:
|
|
Packit Service |
1d8f1c |
wpid, sts = os.waitpid(self.__engine_setup_exec_list[name],
|
|
Packit Service |
1d8f1c |
os.WNOHANG)
|
|
Packit Service |
1d8f1c |
# the setup is still running.
|
|
Packit Service |
1d8f1c |
if wpid == 0:
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
except OSError:
|
|
Packit Service |
1d8f1c |
pass
|
|
Packit Service |
1d8f1c |
del self.__engine_setup_exec_list[name]
|
|
Packit Service |
1d8f1c |
self.__engine_setup_exec_list[name] = os.spawnl(os.P_NOWAIT, *args)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __init_bus(self):
|
|
Packit Service |
1d8f1c |
self.__bus = IBus.Bus()
|
|
Packit Service |
1d8f1c |
if self.__bus.is_connected():
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
message = _("The IBus daemon is not running. Do you wish to start it?")
|
|
Packit Service |
1d8f1c |
dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.QUESTION,
|
|
Packit Service |
1d8f1c |
buttons = Gtk.ButtonsType.YES_NO,
|
|
Packit Service |
1d8f1c |
text = message)
|
|
Packit Service |
1d8f1c |
id = dlg.run()
|
|
Packit Service |
1d8f1c |
dlg.destroy()
|
|
Packit Service |
1d8f1c |
self.__flush_gtk_events()
|
|
Packit Service |
1d8f1c |
if id != Gtk.ResponseType.YES:
|
|
Packit Service |
1d8f1c |
sys.exit(0)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
main_loop = GLib.MainLoop()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
timeout = 5
|
|
Packit Service |
1d8f1c |
GLib.timeout_add_seconds(timeout, lambda *args: main_loop.quit())
|
|
Packit Service |
1d8f1c |
self.__bus.connect("connected", lambda *args: main_loop.quit())
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
os.spawnlp(os.P_NOWAIT, "ibus-daemon", "ibus-daemon", "--xim")
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
main_loop.run()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
if self.__bus.is_connected():
|
|
Packit Service |
1d8f1c |
message = _("IBus has been started! "
|
|
Packit Service |
1d8f1c |
"If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n"
|
|
Packit Service |
1d8f1c |
" export GTK_IM_MODULE=ibus\n"
|
|
Packit Service |
1d8f1c |
" export XMODIFIERS=@im=ibus\n"
|
|
Packit Service |
1d8f1c |
" export QT_IM_MODULE=ibus"
|
|
Packit Service |
1d8f1c |
)
|
|
Packit Service |
1d8f1c |
dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.INFO,
|
|
Packit Service |
1d8f1c |
buttons = Gtk.ButtonsType.OK,
|
|
Packit Service |
1d8f1c |
text = message)
|
|
Packit Service |
1d8f1c |
id = dlg.run()
|
|
Packit Service |
1d8f1c |
dlg.destroy()
|
|
Packit Service |
1d8f1c |
self.__flush_gtk_events()
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
# Translators: %d == 5 currently
|
|
Packit Service |
1d8f1c |
message = _("IBus daemon could not be started in %d seconds")
|
|
Packit Service |
1d8f1c |
dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.INFO,
|
|
Packit Service |
1d8f1c |
buttons = Gtk.ButtonsType.OK,
|
|
Packit Service |
1d8f1c |
text = message % timeout)
|
|
Packit Service |
1d8f1c |
id = dlg.run()
|
|
Packit Service |
1d8f1c |
dlg.destroy()
|
|
Packit Service |
1d8f1c |
self.__flush_gtk_events()
|
|
Packit Service |
1d8f1c |
sys.exit(0)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __shortcut_button_clicked_cb(self, button, name, section, _name, entry):
|
|
Packit Service |
1d8f1c |
buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL,
|
|
Packit Service |
1d8f1c |
_("_OK"), Gtk.ResponseType.OK)
|
|
Packit Service |
1d8f1c |
title1 = _("Select keyboard shortcut for %s")
|
|
Packit Service |
1d8f1c |
# Translators: Title of the window
|
|
Packit Service |
1d8f1c |
title2 = _("switching input methods")
|
|
Packit Service |
1d8f1c |
title = title1 % title2
|
|
Packit Service |
1d8f1c |
dialog = keyboardshortcut.KeyboardShortcutSelectionDialog(
|
|
Packit Service |
1d8f1c |
title = title, transient_for = self.__window)
|
|
Packit Service |
1d8f1c |
dialog.add_buttons(*buttons)
|
|
Packit Service |
1d8f1c |
text = entry.get_text()
|
|
Packit Service |
1d8f1c |
if text:
|
|
Packit Service |
1d8f1c |
shortcuts = text.split("; ")
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
shortcuts = None
|
|
Packit Service |
1d8f1c |
dialog.set_shortcuts(shortcuts)
|
|
Packit Service |
1d8f1c |
id = dialog.run()
|
|
Packit Service |
1d8f1c |
shortcuts = dialog.get_shortcuts()
|
|
Packit Service |
1d8f1c |
dialog.destroy()
|
|
Packit Service |
1d8f1c |
if id != Gtk.ResponseType.OK:
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
if section == 'panel/emoji':
|
|
Packit Service |
1d8f1c |
self.__settings_emoji.set_strv(name, shortcuts)
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
self.__settings_hotkey.set_strv(name, shortcuts)
|
|
Packit Service |
1d8f1c |
text = "; ".join(shortcuts)
|
|
Packit Service |
1d8f1c |
entry.set_text(text)
|
|
Packit Service |
1d8f1c |
tooltip = "\n".join(shortcuts)
|
|
Packit Service |
1d8f1c |
tooltip += "\n" + \
|
|
Packit Service |
1d8f1c |
_("Use shortcut with shift to switch to the previous input method")
|
|
Packit Service |
1d8f1c |
entry.set_tooltip_text(tooltip)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __item_started_column_toggled_cb(self, cell, path_str, model):
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# get toggled iter
|
|
Packit Service |
1d8f1c |
iter = model.get_iter_from_string(path_str)
|
|
Packit Service |
1d8f1c |
data = model.get_value(iter, COLUMN_DATA)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# do something with the value
|
|
Packit Service |
1d8f1c |
if data[DATA_STARTED] == False:
|
|
Packit Service |
1d8f1c |
try:
|
|
Packit Service |
1d8f1c |
self.__bus.register_start_engine(data[DATA_LANG], data[DATA_NAME])
|
|
Packit Service |
1d8f1c |
except Exception as e:
|
|
Packit Service |
1d8f1c |
dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.ERROR,
|
|
Packit Service |
1d8f1c |
transient_for = self.__window,
|
|
Packit Service |
1d8f1c |
buttons = Gtk.ButtonsType.CLOSE,
|
|
Packit Service |
1d8f1c |
text = str(e))
|
|
Packit Service |
1d8f1c |
dlg.run()
|
|
Packit Service |
1d8f1c |
dlg.destroy()
|
|
Packit Service |
1d8f1c |
self.__flush_gtk_events()
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
try:
|
|
Packit Service |
1d8f1c |
self.__bus.register_stop_engine(data[DATA_LANG], data[DATA_NAME])
|
|
Packit Service |
1d8f1c |
except Exception as e:
|
|
Packit Service |
1d8f1c |
dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.ERROR,
|
|
Packit Service |
1d8f1c |
transient_for = self.__window,
|
|
Packit Service |
1d8f1c |
buttons = Gtk.ButtonsType.CLOSE,
|
|
Packit Service |
1d8f1c |
text = str(e))
|
|
Packit Service |
1d8f1c |
dlg.run()
|
|
Packit Service |
1d8f1c |
dlg.destroy()
|
|
Packit Service |
1d8f1c |
self.__flush_gtk_events()
|
|
Packit Service |
1d8f1c |
return
|
|
Packit Service |
1d8f1c |
data[DATA_STARTED] = not data[DATA_STARTED]
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# set new value
|
|
Packit Service |
1d8f1c |
model.set(iter, COLUMN_ENABLE, data[DATA_STARTED])
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __item_preload_column_toggled_cb(self, cell, path_str, model):
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# get toggled iter
|
|
Packit Service |
1d8f1c |
iter = model.get_iter_from_string(path_str)
|
|
Packit Service |
1d8f1c |
data = model.get_value(iter, COLUMN_DATA)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
data[DATA_PRELOAD] = not data[DATA_PRELOAD]
|
|
Packit Service |
1d8f1c |
engine = "%s:%s" % (data[DATA_LANG], data[DATA_NAME])
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
if data[DATA_PRELOAD]:
|
|
Packit Service |
1d8f1c |
if engine not in self.__preload_engines:
|
|
Packit Service |
1d8f1c |
self.__preload_engines.add(engine)
|
|
Packit Service |
1d8f1c |
self.__settings_general.set_strv('preload-engines',
|
|
Packit Service |
1d8f1c |
list(self.__preload_engines))
|
|
Packit Service |
1d8f1c |
else:
|
|
Packit Service |
1d8f1c |
if engine in self.__preload_engines:
|
|
Packit Service |
1d8f1c |
self.__preload_engines.remove(engine)
|
|
Packit Service |
1d8f1c |
self.__settings_general.set_strv('preload-engines',
|
|
Packit Service |
1d8f1c |
list(self.__preload_engines))
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
# set new value
|
|
Packit Service |
1d8f1c |
model.set(iter, COLUMN_PRELOAD, data[DATA_PRELOAD])
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __is_auto_start(self):
|
|
Packit Service |
1d8f1c |
link_file = path.join(GLib.get_user_config_dir(),
|
|
Packit Service |
1d8f1c |
"autostart/ibus.desktop")
|
|
Packit Service |
1d8f1c |
ibus_desktop = path.join(os.getenv("IBUS_PREFIX"),
|
|
Packit Service |
1d8f1c |
"share/applications/ibus.desktop")
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
if not path.exists(link_file):
|
|
Packit Service |
1d8f1c |
return False
|
|
Packit Service |
1d8f1c |
if not path.islink(link_file):
|
|
Packit Service |
1d8f1c |
return False
|
|
Packit Service |
1d8f1c |
if path.realpath(link_file) != ibus_desktop:
|
|
Packit Service |
1d8f1c |
return False
|
|
Packit Service |
1d8f1c |
return True
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __checkbutton_auto_start_toggled_cb(self, button):
|
|
Packit Service |
1d8f1c |
auto_start_dir = path.join(GLib.get_user_config_dir(), "autostart")
|
|
Packit Service |
1d8f1c |
if not path.isdir(auto_start_dir):
|
|
Packit Service |
1d8f1c |
os.makedirs(auto_start_dir)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
link_file = path.join(GLib.get_user_config_dir(),
|
|
Packit Service |
1d8f1c |
"autostart/ibus.desktop")
|
|
Packit Service |
1d8f1c |
ibus_desktop = path.join(os.getenv("IBUS_PREFIX"),
|
|
Packit Service |
1d8f1c |
"share/applications/ibus.desktop")
|
|
Packit Service |
1d8f1c |
# unlink file
|
|
Packit Service |
1d8f1c |
try:
|
|
Packit Service |
1d8f1c |
os.unlink(link_file)
|
|
Packit Service |
1d8f1c |
except:
|
|
Packit Service |
1d8f1c |
pass
|
|
Packit Service |
1d8f1c |
if self.__checkbutton_auto_start.get_active():
|
|
Packit Service |
1d8f1c |
os.symlink(ibus_desktop, link_file)
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def __sigusr1_cb(self, *args):
|
|
Packit Service |
1d8f1c |
self.__window.present()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
def run(self):
|
|
Packit Service |
1d8f1c |
self.__window.show_all()
|
|
Packit Service |
1d8f1c |
signal.signal(signal.SIGUSR1, self.__sigusr1_cb)
|
|
Packit Service |
1d8f1c |
Gtk.main()
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
if __name__ == "__main__":
|
|
Packit Service |
1d8f1c |
try:
|
|
Packit Service |
1d8f1c |
locale.setlocale(locale.LC_ALL, '')
|
|
Packit Service |
1d8f1c |
except locale.Error:
|
|
Packit Service |
1d8f1c |
print("Using the fallback 'C' locale", file=sys.stderr)
|
|
Packit Service |
1d8f1c |
locale.setlocale(locale.LC_ALL, 'C')
|
|
Packit Service |
1d8f1c |
|
|
Packit Service |
1d8f1c |
i18n.init_textdomain(DOMAINNAME)
|
|
Packit Service |
1d8f1c |
i18n.init_textdomain('xkeyboard-config')
|
|
Packit Service |
1d8f1c |
setup = Setup()
|
|
Packit Service |
1d8f1c |
setup.run()
|