Blame setup/engineabout.py

Packit Service 1d8f1c
# vim:set et sts=4 sw=4:
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# ibus - The Input Bus
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# Copyright (c) 2007-2015 Peng Huang <shawn.p.huang@gmail.com>
Packit Service 1d8f1c
# Copyright (c) 2007-2015 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
from gi.repository import IBus
Packit Service 1d8f1c
from gi.repository import Gdk
Packit Service 1d8f1c
from gi.repository import GdkPixbuf
Packit Service 1d8f1c
from gi.repository import Gtk
Packit Service 1d8f1c
from gi.repository import Pango
Packit Service 1d8f1c
Packit Service 1d8f1c
import i18n
Packit Service 1d8f1c
Packit Service 1d8f1c
from i18n import _, N_
Packit Service 1d8f1c
Packit Service 1d8f1c
class EngineAbout(Gtk.Dialog):
Packit Service 1d8f1c
    def __init__(self, engine, transient_for = None):
Packit Service 1d8f1c
        self.__engine_desc = engine
Packit Service 1d8f1c
        super(EngineAbout, self).__init__(
Packit Service 1d8f1c
                title = _("About"),
Packit Service 1d8f1c
                transient_for = transient_for)
Packit Service 1d8f1c
Packit Service 1d8f1c
        buttons = (_("_Close"), Gtk.ResponseType.CLOSE)
Packit Service 1d8f1c
        self.add_buttons(*buttons)
Packit Service 1d8f1c
        self.__init_ui()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def __init_ui(self):
Packit Service 1d8f1c
        # set_icon_name() cannot fallback any stock ids to the real files.
Packit Service 1d8f1c
        self.set_icon_name('help-about')
Packit Service 1d8f1c
        sw = Gtk.ScrolledWindow()
Packit Service 1d8f1c
        sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
Packit Service 1d8f1c
        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
Packit Service 1d8f1c
        sw.set_size_request(400, 400)
Packit Service 1d8f1c
        self.__text_view = Gtk.TextView()
Packit Service 1d8f1c
        self.__text_view.set_editable(False)
Packit Service 1d8f1c
        sw.add(self.__text_view)
Packit Service 1d8f1c
        sw.show_all()
Packit Service 1d8f1c
        self.vbox.pack_start(sw, True, True, 0)
Packit Service 1d8f1c
Packit Service 1d8f1c
        self.__fill_text_view()
Packit Service 1d8f1c
Packit Service 1d8f1c
    def __fill_text_view(self):
Packit Service 1d8f1c
        text_buffer = self.__text_view.get_buffer()
Packit Service 1d8f1c
        self.__create_tags(text_buffer)
Packit Service 1d8f1c
Packit Service 1d8f1c
        iter = text_buffer.get_iter_at_offset(0)
Packit Service 1d8f1c
        text_buffer.insert_with_tags_by_name(iter, "\n ",
Packit Service 1d8f1c
                                             "left_margin_16")
Packit Service 1d8f1c
        text_buffer.insert_pixbuf(iter,
Packit Service 1d8f1c
                self.__load_icon(self.__engine_desc.get_icon()))
Packit Service 1d8f1c
        text_buffer.insert_with_tags_by_name(iter,
Packit Service 1d8f1c
                "\n%s\n" % i18n.gettext_engine_longname(self.__engine_desc),
Packit Service 1d8f1c
                "heading", "left_margin_16")
Packit Service 1d8f1c
        text_buffer.insert_with_tags_by_name(iter,
Packit Service 1d8f1c
                _("Language: %s\n") % IBus.get_language_name(self.__engine_desc.get_language()),
Packit Service 1d8f1c
                "small", "bold", "left_margin_16")
Packit Service 1d8f1c
        text_buffer.insert_with_tags_by_name(iter,
Packit Service 1d8f1c
                _("Keyboard layout: %s\n") % self.__engine_desc.get_layout(),
Packit Service 1d8f1c
                "small", "bold", "left_margin_16")
Packit Service 1d8f1c
        text_buffer.insert_with_tags_by_name(iter,
Packit Service 1d8f1c
                _("Author: %s\n") % self.__engine_desc.get_author(),
Packit Service 1d8f1c
                "small", "bold", "left_margin_16")
Packit Service 1d8f1c
        text_buffer.insert_with_tags_by_name(iter,
Packit Service 1d8f1c
                _("Description:\n"), "small", "bold", "left_margin_16")
Packit Service 1d8f1c
        text_buffer.insert_with_tags_by_name(iter,
Packit Service 1d8f1c
                i18n.gettext_engine_description(self.__engine_desc),
Packit Service 1d8f1c
                "wrap_text", "left_margin_32")
Packit Service 1d8f1c
Packit Service 1d8f1c
Packit Service 1d8f1c
    def __create_tags(self, text_buffer):
Packit Service 1d8f1c
        text_buffer.create_tag("heading",
Packit Service 1d8f1c
                        weight=Pango.Weight.BOLD,
Packit Service 1d8f1c
                        size = 16 * Pango.SCALE)
Packit Service 1d8f1c
        text_buffer.create_tag("bold",
Packit Service 1d8f1c
                        weight=Pango.Weight.BOLD)
Packit Service 1d8f1c
        text_buffer.create_tag("italic",
Packit Service 1d8f1c
                        style=Pango.Style.ITALIC)
Packit Service 1d8f1c
        text_buffer.create_tag("small",
Packit Service 1d8f1c
                        scale=0.833333333333) # Pango.SCALE_SMALL ?
Packit Service 1d8f1c
        text_buffer.create_tag("gray_foreground",
Packit Service 1d8f1c
                        foreground="dark gray")
Packit Service 1d8f1c
        text_buffer.create_tag("wrap_text",
Packit Service 1d8f1c
                        wrap_mode=Gtk.WrapMode.WORD)
Packit Service 1d8f1c
        text_buffer.create_tag("left_margin_16",
Packit Service 1d8f1c
                        left_margin=16)
Packit Service 1d8f1c
        text_buffer.create_tag("left_margin_32",
Packit Service 1d8f1c
                        left_margin=32)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def __load_icon(self, icon_name):
Packit Service 1d8f1c
        try:
Packit Service 1d8f1c
            pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(icon_name,
Packit Service 1d8f1c
                                                             48,
Packit Service 1d8f1c
                                                             48,
Packit Service 1d8f1c
                                                             True)
Packit Service 1d8f1c
        except:
Packit Service 1d8f1c
            theme = Gtk.IconTheme.get_default()
Packit Service 1d8f1c
            icon = theme.lookup_icon(icon_name, 48, 0)
Packit Service 1d8f1c
            if icon == None:
Packit Service 1d8f1c
                icon = theme.lookup_icon("ibus-engine", 48, 0)
Packit Service 1d8f1c
            if icon == None:
Packit Service 1d8f1c
                icon = theme.lookup_icon("image-missing", 48, 0)
Packit Service 1d8f1c
            pixbuf = icon.load_icon()
Packit Service 1d8f1c
        return pixbuf
Packit Service 1d8f1c
Packit Service 1d8f1c
if __name__ == "__main__":
Packit Service 1d8f1c
    desc = IBus.EngineDesc()
Packit Service 1d8f1c
    EngineAbout(desc).run()