⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scim_tomoe_prefs_widget.cpp

📁 手写输入
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- *//* *  Copyright (C) 2005 Takuro Ashie * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2, or (at your option) *  any later version. * *  This program 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 General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#ifdef HAVE_CONFIG_H  #include <config.h>#endif#include <glib/gi18n-lib.h>#include "scim_tomoe_prefs_widget.h"#include "scim_tomoe_prefs.h"#include <tomoe-gtk.h>enum {    HOGE_SIGNAL,    LAST_SIGNAL,};#define OBJECT_DATA_CONFIG_KEY        "ScimTomoePrefsWidget::ConfigKey"#define OBJECT_DATA_CONFIG_VALUE      "ScimTomoePrefsWidget::ConfigValue"G_DEFINE_TYPE (ScimTomoePrefsWidget, scim_tomoe_prefs_widget, GTK_TYPE_VBOX)static void scim_tomoe_prefs_widget_class_init  (ScimTomoePrefsWidgetClass *klass);static void scim_tomoe_prefs_widget_init        (ScimTomoePrefsWidget      *prefs_widget);static void scim_tomoe_prefs_widget_dispose     (GObject                *object);static GtkWidget *create_window_page            (ScimTomoePrefsWidget *prefs_widget);static GtkWidget *create_handwriting_page       (ScimTomoePrefsWidget *prefs_widget);#ifdef TOMOE_GTK_HAS_GUCHARMAPstatic GtkWidget *create_unicode_table_page     (ScimTomoePrefsWidget *prefs_widget);#endif /* TOMOE_GTK_HAS_GUCHARMAP */static void       load_config                   (ScimTomoePrefsWidget      *prefs_widget);static void       apply_config                  (ScimTomoePrefsWidget      *prefs_widget);static void       on_default_toggle_button_toggled                                                (GtkToggleButton        *togglebutton,                                                 gpointer                user_data);static void       on_default_toggle_button_set_sensitive                                                (GtkToggleButton        *togglebutton,                                                 gpointer                user_data);static void       on_default_spin_button_changed(GtkSpinButton          *spinbutton,                                                 gpointer                user_data);static void       on_default_font_button_changed(GtkFontButton          *button,                                                 gpointer                user_data);//static guint prefs_widget_signals[LAST_SIGNAL] = { 0 };static voidscim_tomoe_prefs_widget_class_init (ScimTomoePrefsWidgetClass *klass){    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);    gobject_class->dispose = scim_tomoe_prefs_widget_dispose;}static voidscim_tomoe_prefs_widget_init (ScimTomoePrefsWidget *prefs){    GtkWidget *main_vbox = GTK_WIDGET (prefs);    GtkWidget *notebook = gtk_notebook_new ();    gtk_container_set_border_width (GTK_CONTAINER (notebook), 8);    gtk_box_pack_start (GTK_BOX (main_vbox), notebook, TRUE, TRUE, 0);    gtk_widget_show (notebook);    /* "Window" page */    GtkWidget *label  = gtk_label_new (_("Window"));    GtkWidget *widget = create_window_page (prefs);    gtk_notebook_append_page (GTK_NOTEBOOK (notebook), widget, label);    gtk_widget_show (label);    gtk_widget_show (widget);    /* "Handwriting recognition" page  */    label  = gtk_label_new (_("Handwriting recognition"));    widget = create_handwriting_page (prefs);    gtk_notebook_append_page (GTK_NOTEBOOK (notebook), widget, label);    gtk_widget_show (label);    gtk_widget_show (widget);#ifdef TOMOE_GTK_HAS_GUCHARMAP    /* "Unicode table" page */    label  = gtk_label_new (_("Unicode table"));    widget = create_unicode_table_page (prefs);    gtk_notebook_append_page (GTK_NOTEBOOK (notebook), widget, label);    gtk_widget_show (label);    gtk_widget_show (widget);#endif /* TOMOE_GTK_HAS_GUCHARMAP */}static voidscim_tomoe_prefs_widget_dispose (GObject *object){    ScimTomoePrefsWidget *prefs = SCIM_TOMOE_PREFS_WIDGET (object);    if (prefs->config)        prefs->config->flush ();    prefs->config = NULL;    if (G_OBJECT_CLASS(scim_tomoe_prefs_widget_parent_class)->dispose)        G_OBJECT_CLASS(scim_tomoe_prefs_widget_parent_class)->dispose(object);}GtkWidget *scim_tomoe_prefs_widget_new (TomoeWindow *window, const ConfigPointer &config){    GtkWidget *widget = GTK_WIDGET(g_object_new (SCIM_TOMOE_TYPE_PREFS_WIDGET,                                                 NULL));    ScimTomoePrefsWidget *prefs = SCIM_TOMOE_PREFS_WIDGET (widget);    prefs->config = config;    prefs->parent = GTK_WIDGET (window);    load_config (SCIM_TOMOE_PREFS_WIDGET(widget));    return widget;}static GtkWidget *create_check_button (ScimTomoePrefsWidget *prefs,                     const gchar *label_text,                     const gchar *key,                     bool value){    GtkWidget *check = gtk_check_button_new_with_mnemonic (label_text);    g_object_set_data (G_OBJECT (check),                       OBJECT_DATA_CONFIG_KEY, (gpointer) key);    g_object_set_data (G_OBJECT (check),                       OBJECT_DATA_CONFIG_VALUE, GINT_TO_POINTER (value));    g_signal_connect (G_OBJECT (check), "toggled",                      G_CALLBACK (on_default_toggle_button_toggled),                      prefs);    prefs->widget_list = g_list_append (prefs->widget_list, check);    return check;}static GtkWidget *create_spin_button (ScimTomoePrefsWidget *prefs,                    const gchar *label_text,                    const gchar *unit_text,                    const gchar *key,                    gint value,                    gint min, gint max, gint step, gint page_size){    GtkWidget *table = gtk_table_new (4, 4, FALSE);    GtkWidget *label = gtk_label_new_with_mnemonic (label_text);    gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2,                      (GtkAttachOptions) (GTK_FILL),                      (GtkAttachOptions) (GTK_FILL),                      4, 4);    gtk_widget_show (label);    GtkObject *adj = gtk_adjustment_new (value, min, max, step,                                         page_size, page_size);    GtkWidget *spin = gtk_spin_button_new (GTK_ADJUSTMENT (adj), 0.0, 0);    g_object_set_data (G_OBJECT (spin),                       OBJECT_DATA_CONFIG_KEY, (gpointer) key);    g_object_set_data (G_OBJECT (spin),                       OBJECT_DATA_CONFIG_VALUE, GINT_TO_POINTER (value));    gtk_table_attach (GTK_TABLE (table), spin, 1, 2, 1, 2,                      (GtkAttachOptions) (GTK_FILL),                      (GtkAttachOptions) (GTK_FILL),                      4, 4);    g_signal_connect (G_OBJECT (spin), "value-changed",                      G_CALLBACK (on_default_spin_button_changed),                      prefs);    gtk_widget_show (spin);    gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin);    if (unit_text) {        label = gtk_label_new (unit_text);        gtk_table_attach (GTK_TABLE (table), label, 2, 3, 1, 2,                          (GtkAttachOptions) (GTK_FILL),                          (GtkAttachOptions) (GTK_FILL),                          4, 4);        gtk_widget_show (label);    }    prefs->widget_list = g_list_append (prefs->widget_list, spin);    return table;}static GtkWidget *create_font_button (ScimTomoePrefsWidget *prefs,                    const gchar *label_text,                    const gchar *key,                    const gchar *value){    GtkWidget *hbox = gtk_hbox_new (FALSE, 0);    gtk_widget_show (hbox);    GtkWidget *label = gtk_label_new (label_text);    gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);    gtk_widget_show (label);    GtkWidget *button = gtk_font_button_new ();    gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 4);    gtk_widget_show (button);    g_object_set_data (G_OBJECT (button),                       OBJECT_DATA_CONFIG_KEY, (gpointer) key);    g_object_set_data (G_OBJECT (button),                       OBJECT_DATA_CONFIG_VALUE, (gpointer) value);    g_signal_connect (G_OBJECT (button), "font-set",                      G_CALLBACK (on_default_font_button_changed),                      prefs);    prefs->widget_list = g_list_append (prefs->widget_list, button);    return hbox;}static voidset_default_font (ScimTomoePrefsWidget *prefs,                  const gchar *key,                  GtkWidget *widget){    GList *node;    for (node = prefs->widget_list; node; node = g_list_next (node)) {        GtkWidget *w = (GtkWidget *) node->data;        const gchar *k;        gchar *str;        if (!GTK_IS_FONT_BUTTON (w)) continue;        k = (const gchar *) g_object_get_data (G_OBJECT (w),                                               OBJECT_DATA_CONFIG_KEY);        if (strcmp (k, key)) continue;        str = pango_font_description_to_string (widget->style->font_desc);        gtk_font_button_set_font_name (GTK_FONT_BUTTON (w), str);        g_free (str);        break;    }}static GtkWidget *create_window_page (ScimTomoePrefsWidget *prefs){    GtkWidget *vbox = gtk_vbox_new (FALSE, 0);    gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);    // show on top of other windows.    GtkWidget *widget;    widget = create_check_button (prefs, _("Show on _top of other windows"),                                  SCIM_TOMOE_CONFIG_WINDOW_ALWAYS_TOP,                                  SCIM_TOMOE_CONFIG_WINDOW_ALWAYS_TOP_DEFAULT);    gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 4);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -