亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? window.c

?? Linux環境下手寫輸入程序。手寫輸入
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*cellwriter -- a character recognition input methodCopyright (C) 2007 Michael Levin <risujin@risujin.org>This program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.*/#include "config.h"#include "common.h"#include "keys.h"#include <memory.h>#include <X11/Xatom.h>#include <X11/Xlib.h>#include <gdk/gdkx.h>/* options.c */void options_dialog_open(void);/* recognize.c */void update_enabled_samples(void);/* cellwidget.c */extern int training, cell_width, cell_height, cell_cols_pref;GtkWidget *cell_widget_new(void);void cell_widget_clear(void);void cell_widget_render(void);int cell_widget_insert(void);void cell_widget_train(void);void cell_widget_pack(void);int cell_widget_update_colors(void);void cell_widget_show_buffer(GtkWidget *button);int cell_widget_scrollbar_width(void);int cell_widget_get_height(void);/* statusicon.c */int status_icon_create(void);int status_icon_embedded(void);/* main.c */extern int keyboard_only;/* keywidget.c */void key_widget_resize(KeyWidget *key_widget);/*        Main window*/GtkWidget *window;GtkTooltips *tooltips;int window_force_x = -1, window_force_y = -1, training_block = 0,    window_docked = WINDOW_UNDOCKED, window_force_docked = -1,    window_button_labels = TRUE, window_force_show = FALSE,    window_force_hide = FALSE, style_colors = TRUE, window_embedded = FALSE,    window_struts = FALSE;/* Tab XPM image */static char *tab_xpm[] ={        "7 4 2 1",        " 	c None",        ".	c #000000",        ".......",        " ..... ",        "  ...  ",        "   .   "};static KeyWidget *key_widget;static GtkWidget *train_label_box, *train_label_frame, *train_label = NULL,                 *bottom_box, *blocks_combo, *cell_widget,                 *setup_button, *keys_button, *insert_button,                 *clear_button, *train_button, *buffer_button;static GdkRectangle window_frame = {-1, -1, 0, 0}, window_frame_saved;static int screen_width = -1, screen_height = -1,           window_shown = TRUE, history_valid = FALSE, keys_on = FALSE;static void toggle_button_labels(int on){        static int labels_off;        if (labels_off && on) {                gtk_button_set_label(GTK_BUTTON(train_button), "Train");                gtk_button_set_label(GTK_BUTTON(setup_button), "Setup");                gtk_button_set_label(GTK_BUTTON(clear_button), "Clear");                gtk_button_set_label(GTK_BUTTON(insert_button), "Insert");                gtk_button_set_label(GTK_BUTTON(keys_button), "Keys");        } else if (!labels_off && !on) {                gtk_button_set_label(GTK_BUTTON(train_button), "");                gtk_button_set_label(GTK_BUTTON(setup_button), "");                gtk_button_set_label(GTK_BUTTON(keys_button), "");                gtk_button_set_label(GTK_BUTTON(clear_button), "");                gtk_button_set_label(GTK_BUTTON(insert_button), "");                gtk_button_set_label(GTK_BUTTON(keys_button), "");        }        labels_off = !on;}void window_pack(void){        cell_widget_pack();        toggle_button_labels(window_button_labels);        if (training)                gtk_widget_show(train_label_frame);        key_widget_resize(key_widget);}void window_update_colors(void){        int keys_changed;        keys_changed = key_widget_update_colors();        if (cell_widget_update_colors() || keys_changed)                cell_widget_render();        if (keys_changed)                key_widget_render(key_widget);}static void update_struts(void)/* Reserves screen space for the docked window.   FIXME In Metacity it causes the window to be shoved outside of its own         struts, which is especially devastating for top docking because this         causes an infinite loop of events causing the struts to repeatedly         scan down from the top of the screen. GOK and other applications         somehow get around this but I can't figure out how. */{	static guint32 struts[12];	guint32 new2 = 0, new3 = 0, new9 = 0, new11 = 0;	GdkAtom atom_strut, atom_strut_partial, cardinal;	if (!window || !window->window || !window_struts)	        return;	if (window_docked == WINDOW_DOCKED_TOP) {	        new2 = window_frame.y + window_frame.height;	        new9 = window_frame.width;        } else if (window_docked == WINDOW_DOCKED_BOTTOM) {                new3 = window_frame.height;                new11 = window_frame.width;        }        if (new2 == struts[2] && new3 == struts[3] &&            new9 == struts[9] && new11 == struts[11])                return;        trace("top=%d (%d) bottom=%d (%d)", new2, new9, new3, new11);        struts[2] = new2;        struts[3] = new3;        struts[9] = new9;        struts[11] = new11;	atom_strut = gdk_atom_intern("_NET_WM_STRUT", FALSE),	atom_strut_partial = gdk_atom_intern("_NET_WM_STRUT_PARTIAL", FALSE);	cardinal = gdk_atom_intern("CARDINAL", FALSE);	gdk_property_change(GDK_WINDOW(window->window), atom_strut, cardinal,        	            32, GDK_PROP_MODE_REPLACE, (guchar*)&struts, 4);	gdk_property_change(GDK_WINDOW(window->window), atom_strut_partial,	                    cardinal, 32, GDK_PROP_MODE_REPLACE,	                    (guchar*)&struts, 12);}static void set_geometry_hints(void){        GdkGeometry geometry;        geometry.min_width = -1;        geometry.min_height = -1;        geometry.max_width = -1;        geometry.max_height = -1;        /* Use window geometry to force the window to be as large as the           screen */        if (window_docked)                geometry.max_width = geometry.min_width = screen_width;        gtk_window_set_geometry_hints(GTK_WINDOW(window), window, &geometry,                                      GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE);        trace("%dx%d", geometry.min_width, geometry.min_height);        /* In some bright and sunny alternate universe when specifications are           actually implemented as inteded, this function alone would cause the           window frame to expand upwards without having to perform the ugly           hack in window_configure(). XFWM4 does not respect this hint and           setting this hint will further mess up the window_configure()           movement code. */        /*geometry.win_gravity = window_docked == WINDOW_DOCKED_TOP ?                                 GDK_GRAVITY_NORTH_WEST :                                 GDK_GRAVITY_SOUTH_WEST;        gtk_window_set_geometry_hints(GTK_WINDOW(window), window, &geometry,                                      GDK_HINT_WIN_GRAVITY);*/}static void docked_move_resize(void){        GdkScreen *screen;        int y = 0;        if (!window_docked)                return;        screen = gtk_window_get_screen(GTK_WINDOW(window));        if (window_docked == WINDOW_DOCKED_BOTTOM)                y = gdk_screen_get_height(screen) - window_frame.height;        set_geometry_hints();        gtk_window_move(GTK_WINDOW(window), 0, y);        cell_widget_pack();        key_widget_resize(key_widget);        trace("y=%d", y);}static gboolean window_configure(GtkWidget *widget, GdkEventConfigure *event)/* Intelligently grow the window up and/or left if we are in the bottom or   right corners of the screen respectively */{        GdkRectangle new_frame = {0, 0, 0, 0};        GdkScreen *screen;        GdkDisplay *display;        int screen_w, screen_h, height_change, label_w;        if (!window || !window->window)                return FALSE;        display = gtk_widget_get_display(window);        /* Get screen and window information */        screen = gtk_window_get_screen(GTK_WINDOW(window));        screen_w = gdk_screen_get_width(screen);        screen_h = gdk_screen_get_height(screen);        gdk_window_get_frame_extents(window->window, &new_frame);        /* We need to resize wrapped labels manually */        label_w = window->allocation.width - 16;        if (train_label && train_label->requisition.width != label_w)                gtk_widget_set_size_request(train_label, label_w, -1);        /* Docked windows have special placing requirements */        height_change = new_frame.height - window_frame.height;        if (window_docked) {                window_frame = new_frame;                if (screen_w != screen_width || screen_h != screen_height ||                    (height_change && window_docked == WINDOW_DOCKED_BOTTOM)) {                        screen_width = screen_w;                        screen_height = screen_h;                        trace("move-sizing bottom-docked window");                        docked_move_resize();                }                update_struts();                return FALSE;        }        screen_width = screen_w;        screen_height = screen_h;        /* Do nothing on the first configure */        if (window_frame.height <= 1) {                window_frame = new_frame;                return FALSE;        }        /* Keep the window aligned to the bottom border */        if (height_change && window_frame.y + window_frame.height / 2 >                             gdk_screen_get_height(screen) / 2)                window_frame.y -= height_change;        else                height_change = 0;        /* Do not allow the window to go off-screen */        if (window_frame.x + new_frame.width > screen_w)                window_frame.x = screen_w - new_frame.width;        if (window_frame.y + new_frame.height > screen_h)                window_frame.y = screen_h - new_frame.height;        if (window_frame.x < 0)                window_frame.x = 0;        if (window_frame.y < 0)                window_frame.y = 0;        /* Some window managers (Metacity) do not allow windows to resize           larger than the screen and will move the window back within the           screen bounds when this happens. We don't like this because it           screws with our own correcting offset. Fortunately, both the move           and the resize are bundled in one configure event so we can work           around this by using our old x/y coordinates when the dimensions           change. */        if (height_change && (new_frame.x != window_frame.x ||                              new_frame.y != window_frame.y)) {                gtk_window_move(GTK_WINDOW(window),                                window_frame.x, window_frame.y);                window_frame.width = new_frame.width;                window_frame.height = new_frame.height;                trace("moving to (%d, %d)", window_frame.x, window_frame.y);        } else                window_frame = new_frame;        return FALSE;}void window_set_docked(int mode){        if (mode < WINDOW_UNDOCKED)                mode = WINDOW_UNDOCKED;        if (mode >= WINDOW_DOCKED_BOTTOM)                mode = WINDOW_DOCKED_BOTTOM;        if (mode && !window_docked)                window_frame_saved = window_frame;        window_docked = mode;        gtk_window_set_decorated(GTK_WINDOW(window), !mode);        set_geometry_hints();        cell_widget_pack();        key_widget_resize(key_widget);        /* Restore the old window position */        if (!mode) {                update_struts();                window_frame = window_frame_saved;                gtk_window_move(GTK_WINDOW(window), window_frame.x,                                window_frame.y);                trace("moving to (%d, %d)", window_frame.x, window_frame.y);        }        /* Move the window into docked position */        else                docked_move_resize();}void train_button_toggled(void){        if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(train_button))) {                cell_widget_train();                gtk_widget_hide(clear_button);                gtk_widget_hide(keys_button);                gtk_widget_hide(insert_button);                gtk_widget_hide(buffer_button);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性大战久久久| 欧美www视频| 一区二区三国产精华液| 成人av网址在线观看| 久久亚洲免费视频| 久久不见久久见中文字幕免费| 欧美一级一区二区| 成人在线综合网| 久久久www免费人成精品| 裸体一区二区三区| 欧美大片顶级少妇| 另类小说综合欧美亚洲| 精品日韩一区二区| 国内精品伊人久久久久av影院| 精品久久久久久久久久久久久久久久久 | 在线观看国产91| 依依成人综合视频| 精品视频免费看| 午夜精品福利视频网站| 91麻豆精品国产91久久久久久| 日本v片在线高清不卡在线观看| 日韩一卡二卡三卡国产欧美| 蜜臀久久久久久久| 日韩美女视频一区二区在线观看| 日韩国产欧美三级| 精品国产一区二区精华| 国产一区二区在线看| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美经典三级视频一区二区三区| 风流少妇一区二区| 亚洲视频狠狠干| 欧美亚洲国产一区在线观看网站| 亚洲a一区二区| 欧美一级片在线看| 国产精品一区二区你懂的| 久久久精品一品道一区| 不卡一区在线观看| 一区二区欧美在线观看| 欧美久久久久中文字幕| 久久精品99国产精品| 久久精品免视看| 91小宝寻花一区二区三区| 一区二区成人在线| 欧美一区二区大片| 国产盗摄女厕一区二区三区| 亚洲欧美日韩成人高清在线一区| 欧美日韩成人在线| 久久国产视频网| 中文成人av在线| 欧美色欧美亚洲另类二区| 美洲天堂一区二卡三卡四卡视频| 国产人久久人人人人爽| 色婷婷精品大视频在线蜜桃视频| 天天影视色香欲综合网老头| 精品成人a区在线观看| 成人动漫av在线| 亚洲国产aⅴ成人精品无吗| 日韩色在线观看| 成熟亚洲日本毛茸茸凸凹| 一区二区三国产精华液| 欧美videos中文字幕| 99re热视频这里只精品| 青青草一区二区三区| 国产精品免费人成网站| 精品视频123区在线观看| 精品一区二区三区在线播放| 国产精品久久久久四虎| 在线综合亚洲欧美在线视频| 成人在线视频一区二区| 亚洲va欧美va人人爽| 日本一区二区免费在线观看视频| 在线精品视频免费播放| 韩国av一区二区| 亚洲一区在线视频观看| 久久亚洲一级片| 欧美日韩第一区日日骚| 国产99久久久国产精品| 五月综合激情婷婷六月色窝| 国产日产精品一区| 欧美一区二区三区免费| 成人免费毛片片v| 丝袜亚洲精品中文字幕一区| 国产精品丝袜黑色高跟| 日韩一区二区麻豆国产| 91麻豆福利精品推荐| 国产一区二区0| 日韩成人dvd| 亚洲蜜臀av乱码久久精品蜜桃| 26uuu另类欧美| 欧美日韩二区三区| 91网站黄www| 国产美女久久久久| 视频一区在线播放| 亚洲免费观看在线观看| 久久精品一区二区三区不卡| 欧美三级日韩三级| aaa欧美大片| 国产精品 欧美精品| 麻豆国产精品777777在线| 一区二区三区四区在线| 国产精品午夜春色av| 欧美mv和日韩mv国产网站| 91福利在线免费观看| 成人激情校园春色| 国产精品中文欧美| 精一区二区三区| 午夜影视日本亚洲欧洲精品| 日韩理论电影院| 欧美国产日韩精品免费观看| xfplay精品久久| 91麻豆精品国产自产在线| 欧美在线免费观看视频| 色综合久久中文综合久久97| 成人性色生活片| 国产一区二区伦理片| 麻豆中文一区二区| 蜜桃视频在线观看一区| 丝袜诱惑亚洲看片| 亚洲123区在线观看| 亚洲国产你懂的| 亚洲一区二区三区视频在线| 亚洲另类春色国产| 亚洲精品免费一二三区| 亚洲色图20p| 亚洲欧美aⅴ...| 亚洲激情男女视频| 一区二区三区在线观看欧美| 一区二区三区日韩欧美精品 | 中文字幕乱码一区二区免费| 久久精品人人爽人人爽| 久久视频一区二区| www国产精品av| 国产偷v国产偷v亚洲高清| 久久亚洲二区三区| 久久久精品tv| 中文字幕成人av| 国产精品成人一区二区艾草| 中文字幕一区免费在线观看| 国产精品另类一区| 国产精品初高中害羞小美女文| 中文字幕一区二区三区色视频| 国产精品久久久久久久久晋中 | 丰满少妇久久久久久久| 粉嫩嫩av羞羞动漫久久久 | gogo大胆日本视频一区| eeuss影院一区二区三区| 91美女蜜桃在线| 欧美网站一区二区| 欧美一级免费观看| 久久综合成人精品亚洲另类欧美 | 精品一区二区在线免费观看| 国产精品91一区二区| 豆国产96在线|亚洲| 97精品国产露脸对白| 欧美综合亚洲图片综合区| 91精品国产综合久久蜜臀| 欧美mv日韩mv| 国产精品每日更新| 亚洲精品视频免费观看| 日韩在线观看一区二区| 久久精品国产99国产| 国产精品亚洲视频| 91在线视频免费观看| 欧美日韩国产免费| 精品国产一区二区三区av性色| 中文字幕av一区二区三区高| 伊人婷婷欧美激情| 美女免费视频一区| 国产69精品久久久久777| 日本乱人伦一区| 日韩欧美一级片| 中文字幕欧美激情| 亚洲高清在线视频| 国产精品一区一区| 色婷婷综合视频在线观看| 欧美久久久久久蜜桃| 久久伊人中文字幕| 亚洲欧美日本韩国| 日本欧美一区二区在线观看| 国产成人丝袜美腿| 欧美日韩三级在线| 亚洲精品在线观看视频| 亚洲日本在线看| 亚洲风情在线资源站| 国内精品伊人久久久久影院对白| 色婷婷综合五月| 欧美一级片在线看| 亚洲视频一区二区在线观看| 免费一区二区视频| 国产69精品久久久久777| 欧美日韩国产美女| 久久久久久久网| 亚洲一区二区高清| 国产成人精品影视| 欧美中文字幕一区| 欧美国产成人精品| 亚洲高清免费一级二级三级| 国产电影一区在线| 91精品国产一区二区三区| 欧美国产欧美亚州国产日韩mv天天看完整|