Blame src/ibuspanelservice.h

Packit Service 1d8f1c
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
Packit Service 1d8f1c
/* vim:set et sts=4: */
Packit Service 1d8f1c
/* ibus - The Input Bus
Packit Service 1d8f1c
 * Copyright (c) 2009-2014 Google Inc. All rights reserved.
Packit Service 1d8f1c
 * Copyright (c) 2017-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
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
Packit Service 1d8f1c
#if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION)
Packit Service 1d8f1c
#error "Only <ibus.h> can be included directly"
Packit Service 1d8f1c
#endif
Packit Service 1d8f1c
Packit Service 1d8f1c
#ifndef __IBUS_PANEL_SERVICE_H_
Packit Service 1d8f1c
#define __IBUS_PANEL_SERVICE_H_
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * SECTION: ibuspanelservice
Packit Service 1d8f1c
 * @short_description: Panel service back-end.
Packit Service 1d8f1c
 * @stability: Stable
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * An IBusPanelService is a base class for UI services.
Packit Service 1d8f1c
 * Developers can "extend" this class for panel UI development.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
#include "ibuslookuptable.h"
Packit Service 1d8f1c
#include "ibusservice.h"
Packit Service 1d8f1c
#include "ibusproplist.h"
Packit Service 1d8f1c
#include "ibusxevent.h"
Packit Service 1d8f1c
Packit Service 1d8f1c
/*
Packit Service 1d8f1c
 * Type macros.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
Packit Service 1d8f1c
/* define GOBJECT macros */
Packit Service 1d8f1c
#define IBUS_TYPE_PANEL_SERVICE                \
Packit Service 1d8f1c
    (ibus_panel_service_get_type ())
Packit Service 1d8f1c
#define IBUS_PANEL_SERVICE(obj)                        \
Packit Service 1d8f1c
    (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_PANEL_SERVICE, IBusPanelService))
Packit Service 1d8f1c
#define IBUS_PANEL_SERVICE_CLASS(klass)        \
Packit Service 1d8f1c
    (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_PANEL_SERVICE, IBusPanelServiceClass))
Packit Service 1d8f1c
#define IBUS_IS_PANEL_SERVICE(obj)                     \
Packit Service 1d8f1c
    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PANEL_SERVICE))
Packit Service 1d8f1c
#define IBUS_IS_PANEL_SERVICE_CLASS(klass)             \
Packit Service 1d8f1c
    (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_PANEL_SERVICE))
Packit Service 1d8f1c
#define IBUS_PANEL_SERVICE_GET_CLASS(obj)      \
Packit Service 1d8f1c
    (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PANEL_SERVICE, IBusPanelServiceClass))
Packit Service 1d8f1c
Packit Service 1d8f1c
G_BEGIN_DECLS
Packit Service 1d8f1c
Packit Service 1d8f1c
typedef struct _IBusPanelService IBusPanelService;
Packit Service 1d8f1c
typedef struct _IBusPanelServiceClass IBusPanelServiceClass;
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * IBusPanelService:
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * An opaque data type representing an IBusPanelService.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
struct _IBusPanelService {
Packit Service 1d8f1c
    IBusService parent;
Packit Service 1d8f1c
    /* instance members */
Packit Service 1d8f1c
};
Packit Service 1d8f1c
Packit Service 1d8f1c
struct _IBusPanelServiceClass {
Packit Service 1d8f1c
    IBusServiceClass parent;
Packit Service 1d8f1c
Packit Service 1d8f1c
    /* class members */
Packit Service 1d8f1c
    void     (* focus_in)                  (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            const gchar
Packit Service 1d8f1c
                                                   *input_context_path);
Packit Service 1d8f1c
    void     (* focus_out)                 (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            const gchar
Packit Service 1d8f1c
                                                   *input_context_path);
Packit Service 1d8f1c
    void     (* register_properties)       (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            IBusPropList           *prop_list);
Packit Service 1d8f1c
    void     (* set_cursor_location)       (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            gint                    x,
Packit Service 1d8f1c
                                            gint                    y,
Packit Service 1d8f1c
                                            gint                    w,
Packit Service 1d8f1c
                                            gint                    h);
Packit Service 1d8f1c
    void     (* update_auxiliary_text)     (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            IBusText               *text,
Packit Service 1d8f1c
                                            gboolean                visible);
Packit Service 1d8f1c
    void     (* update_lookup_table)       (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            IBusLookupTable        *lookup_table,
Packit Service 1d8f1c
                                            gboolean                visible);
Packit Service 1d8f1c
    void     (* update_preedit_text)       (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            IBusText               *text,
Packit Service 1d8f1c
                                            guint                  cursor_pos,
Packit Service 1d8f1c
                                            gboolean               visible);
Packit Service 1d8f1c
    void     (* update_property)           (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            IBusProperty           *prop);
Packit Service 1d8f1c
    void     (* cursor_down_lookup_table)  (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* cursor_up_lookup_table)    (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* hide_auxiliary_text)       (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* hide_language_bar)         (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* hide_lookup_table)         (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* hide_preedit_text)         (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* page_down_lookup_table)    (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* page_up_lookup_table)      (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* reset)                     (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* show_auxiliary_text)       (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* show_language_bar)         (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* show_lookup_table)         (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* show_preedit_text)         (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* start_setup)               (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* state_changed)             (IBusPanelService       *panel);
Packit Service 1d8f1c
    void     (* destroy_context)           (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            const gchar
Packit Service 1d8f1c
                                                   *input_context_path);
Packit Service 1d8f1c
    void     (* set_content_type)          (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            guint                   purpose,
Packit Service 1d8f1c
                                            guint                   hints);
Packit Service 1d8f1c
    void     (* set_cursor_location_relative)
Packit Service 1d8f1c
                                           (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            gint                    x,
Packit Service 1d8f1c
                                            gint                    y,
Packit Service 1d8f1c
                                            gint                    w,
Packit Service 1d8f1c
                                            gint                    h);
Packit Service 1d8f1c
    void     (* panel_extension_received)
Packit Service 1d8f1c
                                           (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            IBusExtensionEvent     *event);
Packit Service 1d8f1c
    gboolean (* process_key_event)
Packit Service 1d8f1c
                                           (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            guint                   keyval,
Packit Service 1d8f1c
                                            guint                   keycode,
Packit Service 1d8f1c
                                            guint                   state);
Packit Service 1d8f1c
    void     (* commit_text_received)
Packit Service 1d8f1c
                                           (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            IBusText               *text);
Packit Service 1d8f1c
    void     (* candidate_clicked_lookup_table)
Packit Service 1d8f1c
                                           (IBusPanelService       *panel,
Packit Service 1d8f1c
                                            guint                   index,
Packit Service 1d8f1c
                                            guint                   button,
Packit Service 1d8f1c
                                            guint                   state);
Packit Service 1d8f1c
Packit Service 1d8f1c
    /*< private >*/
Packit Service 1d8f1c
    /* padding */
Packit Service 1d8f1c
    gpointer pdummy[2];  // We can add 8 pointers without breaking the ABI.
Packit Service 1d8f1c
};
Packit Service 1d8f1c
Packit Service 1d8f1c
GType            ibus_panel_service_get_type  (void);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_new:
Packit Service 1d8f1c
 * @connection: An GDBusConnection.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Creates a new #IBusPanelService from an #GDBusConnection.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: A newly allocated #IBusPanelService.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusPanelService *ibus_panel_service_new (GDBusConnection    *connection);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_candidate_clicked:
Packit Service 1d8f1c
 * @panel: An IBusPanelService
Packit Service 1d8f1c
 * @index: Index in the Lookup table
Packit Service 1d8f1c
 * @button: GdkEventButton::button (1: left button, etc.)
Packit Service 1d8f1c
 * @state: GdkEventButton::state (key modifier flags)
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that a candidate is clicked
Packit Service 1d8f1c
 * by sending a "CandidateClicked" to IBus service.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_candidate_clicked (IBusPanelService *panel,
Packit Service 1d8f1c
                                           guint             index,
Packit Service 1d8f1c
                                           guint             button,
Packit Service 1d8f1c
                                           guint             state);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_cursor_down:
Packit Service 1d8f1c
 * @panel: An IBusPanelService
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that the cursor is down
Packit Service 1d8f1c
 * by sending a "CursorDown" to IBus service.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_cursor_down       (IBusPanelService *panel);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_cursor_up:
Packit Service 1d8f1c
 * @panel: An IBusPanelService
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that the cursor is up
Packit Service 1d8f1c
 * by sending a "CursorUp" to IBus service.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_cursor_up         (IBusPanelService *panel);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_page_down:
Packit Service 1d8f1c
 * @panel: An IBusPanelService
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that the page is down
Packit Service 1d8f1c
 * by sending a "PageDown" to IBus service.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_page_down         (IBusPanelService *panel);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_page_up:
Packit Service 1d8f1c
 * @panel: An IBusPanelService
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that the page is up
Packit Service 1d8f1c
 * by sending a "PageUp" to IBus service.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_page_up           (IBusPanelService *panel);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_property_activate:
Packit Service 1d8f1c
 * @panel: An IBusPanelService
Packit Service 1d8f1c
 * @prop_name: A property name
Packit Service 1d8f1c
 * @prop_state: State of the property
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that a property is active
Packit Service 1d8f1c
 * by sending a "PropertyActivate" message to IBus service.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_property_activate (IBusPanelService *panel,
Packit Service 1d8f1c
                                           const gchar      *prop_name,
Packit Service 1d8f1c
                                           guint             prop_state);
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_property_show:
Packit Service 1d8f1c
 * @panel: An IBusPanelService
Packit Service 1d8f1c
 * @prop_name: A property name
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that a property is shown
Packit Service 1d8f1c
 * by sending a "ValueChanged" message to IBus service.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_property_show     (IBusPanelService *panel,
Packit Service 1d8f1c
                                           const gchar      *prop_name);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_property_hide:
Packit Service 1d8f1c
 * @panel: An IBusPanelService
Packit Service 1d8f1c
 * @prop_name: A property name
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that a property is hidden
Packit Service 1d8f1c
 * by sending a "ValueChanged" message to IBus service.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_property_hide     (IBusPanelService *panel,
Packit Service 1d8f1c
                                           const gchar      *prop_name);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_commit_text:
Packit Service 1d8f1c
 * @panel: An #IBusPanelService
Packit Service 1d8f1c
 * @text: An #IBusText
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that a text is sent
Packit Service 1d8f1c
 * by sending a "CommitText" message to IBus service.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_commit_text       (IBusPanelService *panel,
Packit Service 1d8f1c
                                           IBusText         *text);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_panel_extension:
Packit Service 1d8f1c
 * @panel: An #IBusPanelService
Packit Service 1d8f1c
 * @event: (transfer full): A #PanelExtensionEvent which is sent to a
Packit Service 1d8f1c
 *                          panel extension. 
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Enable or disable a panel extension with #IBusExtensionEvent.
Packit Service 1d8f1c
 * Notify that a data is sent
Packit Service 1d8f1c
 * by sending a "PanelExtension" message to IBus panel extension service.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_panel_extension   (IBusPanelService   *panel,
Packit Service 1d8f1c
                                           IBusExtensionEvent *event);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_panel_extension_register_keys:
Packit Service 1d8f1c
 * @panel: An #IBusPanelService
Packit Service 1d8f1c
 * @first_property_name: the first name of the shortcut keys. This is %NULL
Packit Service 1d8f1c
 " terminated.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Register shortcut keys to enable panel extensions with #IBusExtensionEvent.
Packit Service 1d8f1c
 * Notify that a data is sent
Packit Service 1d8f1c
 * by sending a "PanelExtensionRegisterKeys" message to IBus panel extension
Packit Service 1d8f1c
 * service. Seems Vala does not support uint[][3] and use
Packit Service 1d8f1c
 * IBusProcessKeyEventData[]. E.g.
Packit Service 1d8f1c
 * IBusProcessKeyEventData[] keys = {{
Packit Service 1d8f1c
 *         IBUS_KEY_e, 0, IBUS_SHIFT_MASK | IBUS_SUPER_MASK }};
Packit Service 1d8f1c
 * ibus_panel_service_panel_extension_register_keys(panel, "emoji", keys, NULL);
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_panel_extension_register_keys
Packit Service 1d8f1c
                                           (IBusPanelService  *panel,
Packit Service 1d8f1c
                                            const gchar       *first_property_name,
Packit Service 1d8f1c
                                            ...);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_update_preedit_text_received:
Packit Service 1d8f1c
 * @panel: An #IBusPanelService
Packit Service 1d8f1c
 * @text: Update content.
Packit Service 1d8f1c
 * @cursor_pos: Current position of cursor
Packit Service 1d8f1c
 * @visible: Whether the pre-edit buffer is visible.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that the preedit is updated by the panel extension
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * (Note: The table object will be released, if it is floating.
Packit Service 1d8f1c
 *  If caller want to keep the object, caller should make the object
Packit Service 1d8f1c
 *  sink by g_object_ref_sink.)
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_update_preedit_text_received
Packit Service 1d8f1c
                                          (IBusPanelService *panel,
Packit Service 1d8f1c
                                           IBusText         *text,
Packit Service 1d8f1c
                                           guint             cursor_pos,
Packit Service 1d8f1c
                                           gboolean          visible);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_show_preedit_text_received:
Packit Service 1d8f1c
 * @panel: An IBusPanelService
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that the preedit is shown by the panel extension
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_show_preedit_text_received
Packit Service 1d8f1c
                                          (IBusPanelService *panel);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_hide_preedit_text_received:
Packit Service 1d8f1c
 * @panel: An IBusPanelService
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that the preedit is hidden by the panel extension
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_hide_preedit_text_received
Packit Service 1d8f1c
                                          (IBusPanelService *panel);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_update_auxiliary_text_received:
Packit Service 1d8f1c
 * @panel: An #IBusPanelService
Packit Service 1d8f1c
 * @text: An #IBusText
Packit Service 1d8f1c
 * @visible: Whether the auxilirary text is visible.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that the auxilirary is updated by the panel extension.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * (Note: The table object will be released, if it is floating.
Packit Service 1d8f1c
 *  If caller want to keep the object, caller should make the object
Packit Service 1d8f1c
 *  sink by g_object_ref_sink.)
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_update_auxiliary_text_received
Packit Service 1d8f1c
                                          (IBusPanelService *panel,
Packit Service 1d8f1c
                                           IBusText         *text,
Packit Service 1d8f1c
                                           gboolean          visible);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_panel_service_update_lookup_table_received:
Packit Service 1d8f1c
 * @panel: An #IBusPanelService
Packit Service 1d8f1c
 * @table: An #IBusLookupTable
Packit Service 1d8f1c
 * @visible: Whether the lookup table is visible.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Notify that the lookup table is updated by the panel extension.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * (Note: The table object will be released, if it is floating.
Packit Service 1d8f1c
 *  If caller want to keep the object, caller should make the object
Packit Service 1d8f1c
 *  sink by g_object_ref_sink.)
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void ibus_panel_service_update_lookup_table_received
Packit Service 1d8f1c
                                          (IBusPanelService *panel,
Packit Service 1d8f1c
                                           IBusLookupTable  *table,
Packit Service 1d8f1c
                                           gboolean          visible);
Packit Service 1d8f1c
G_END_DECLS
Packit Service 1d8f1c
#endif