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

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

?? memopad_edit.c

?? uclinux 下的一個記事本程序,可以供大家參考
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <string.h>#include "glib.h"#include "mwtypes.h"#include "emtk.h"#ifndef FILEMODE#include "date_chooser.h"#include "pivotal_gmtime_r.h"#endif#include "memopad.h"#include "memopad_record.h"#ifdef LAUNCHER_SUPPORT#include "deskmsg.h"#endif#ifdef  FONT_TABLE#include "font_table.h"#else    #define lookupFont(a, b)    (FONT1)#endif#include "laf/laf.h"#ifdef FILEMODE#undef ENABLE_ZOOM#endif#if !defined(FILEMODE) && !defined(NOGDBM)#include "db.h"#endif#include "i18n.h"//#define EDITOR_BUFFER_SIZE 0x40000  /* 256k byte buffer */#define EDITOR_BUFFER_SIZE 0x10000  /* 64k byte buffer */typedef enum { SHORTCUT_SMALL_FONT, SHORTCUT_MEDIUM_FONT, SHORTCUT_LARGE_FONT, SHORTCUT_IME, SHORTCUT_IME_ENG, SHORTCUT_IME_THAI } ShortcutAction;enum { NEW_MEMO, DELETE_MEMO, ACTION_SMALL_FONT, ACTION_MEDIUM_FONT, ACTION_LARGE_FONT };static int memo_edit_window, text_id, done_id, client_window;#ifndef FILEMODEstatic int delete_id, dialog_id;#endifstatic Memo *current_memo;static int database;static MemopadCallBack *callbacks;static WindowRect clientWindowRect;#ifndef FILEMODEstatic int large_shortcut, medium_shortcut, small_shortcut, ime_shortcut, eng_shortcut, thai_shortcut;static int calendar_btn;static int date_entry, title_entry;static int lastShortcutButton;static int toolbar;static int ime_state = 0;static int ime_heights[3] = { 60, 55, 75 };#endif/* Points to LC_ALL environment variable */extern char *lc_all;static int current_font;static void memo_ime_activate (int flag){/* For Noahtech only */#ifdef __uClinux__    DESKTOP_CHANNEL channel;    MSG msg;    int msgLen;    printf("***** Launching IME = %d\n", flag);        msgLen = msg_command_input_control(        (flag) ?         MSG_COMMAND_INPUT_ACTIVATE :        MSG_COMMAND_INPUT_DEACTIVATE,         &msg);        desktop_channel_connect_specified_channel_name(&channel, "/tmp/ime");    desktop_channel_send(&channel, &msg, msgLen);    desktop_channel_disconnect(&channel);#endif}static void memoModified(int text, void *data, void *userData) {    current_memo->dirty = TRUE;}static void close_editor(int window, void *data) {    int *feedback = (int *) data;#ifndef FILEMODE    char *buf;    DESKTOP_CHANNEL channel;    MSG msg;    int msgLen;        desktop_channel_connect(&channel);    msgLen = msg_command_input(0, &msg);    desktop_channel_send(&channel, &msg, msgLen);    desktop_channel_disconnect(&channel);        if (current_memo) {                buf = g_new0(char, EDITOR_BUFFER_SIZE);                emtk_text_get_value(text_id, buf, EDITOR_BUFFER_SIZE);                if (current_memo->content)            g_free(current_memo->content);        current_memo->content = g_strdup(buf);                emtk_entry_get_value(title_entry, current_memo->title, 40);                g_free(buf);                if (current_memo->dirty) { // only save when it is modified            if (!current_memo->new) {                memopad_record_save(database, current_memo);                callbacks->modified(current_memo->memo_id, current_memo);            } else {                if (strlen(current_memo->content) != 0) {                    memopad_record_save(database, current_memo);                    callbacks->new(current_memo->memo_id, current_memo);                }            }        }                if (current_memo) {            memopad_record_destroy(current_memo);        }    }        *feedback = EMTK_APP_WINDOW_DESTROY_ONLY;#else    *feedback = EMTK_APP_WINDOW_DESTROY_WITH_EMTK_CLOSE;#endif    emtk_object_remove(text_id);    text_id = 0;    #ifndef FILEMODE    ime_state = 0;    *feedback = EMTK_APP_WINDOW_DESTROY_ONLY;#else    *feedback = EMTK_APP_WINDOW_DESTROY_WITH_EMTK_CLOSE;#endif    	//memo_ime_activate (FALSE);}static void done_handler(int bid, void *data) {	memo_ime_activate (FALSE);    emtk_app_close_window(memo_edit_window);}#ifndef FILEMODEstatic void deleteMemo() {    memopad_record_delete(database, current_memo);        callbacks->deleted(current_memo->memo_id);        if (current_memo->content)        g_free(current_memo->content);        g_free(current_memo);        current_memo = NULL;        emtk_app_close_window(memo_edit_window);}static void confirm_response(int dialog, int response) {    switch(response) {        case EMTK_DIALOG_OK:            deleteMemo();            break;        case EMTK_DIALOG_CANCEL:            break; // do nothing    }}static void draw_confirm(int win, WindowRect *clientRect) {    emtk_window_add_object(win, emtk_label_new(win, 10, 20, FONT2, FALSE, _("Delete current memo?")));}static void show_confirm_dialog(int id, void *data) {    WindowRect rect = { APP_WINDOW_X, APP_WINDOW_Y+APP_WINDOW_H-116, APP_WINDOW_W, 100};        dialog_id = emtk_app_dialog_new(_("Delete Memo"), FONT2, FONT1, draw_confirm, EMTK_DIALOG_OK | EMTK_DIALOG_CANCEL, &rect,        confirm_response, NULL);}#endif/* content NULL assumes text exists in current text widget */static void editorSetFont(int window, int font, WindowRect *clientRect, char *content, int content_len) {        int ascent, descent, row_height;    int nrp;    row_height = emtk_get_font_height(font, &ascent, &descent);    #ifndef FILEMODE    if (ime_state) {        /* TODO: modify index */        switch(ime_state & INPUT_LANG_MASK) {        case INPUT_ENGLISH:            nrp = (clientRect->h - ime_heights[0]) / row_height;            break;        case INPUT_CHINESE:            nrp = (clientRect->h - ime_heights[1]) / row_height;            break;        case INPUT_THAI:            nrp = (clientRect->h - ime_heights[2]) / row_height;            break;        }    } else {        nrp = (clientRect->h - 20 - 40) / row_height;    }#else    nrp = (clientRect->h - 20) / row_height;#endif    if (text_id == 0) {#ifndef FILEMODE    	text_id = emtk_text_new(window, 0, 40, clientRect->w - SCROLLBAR_WIDTH,                 row_height, nrp, KEY_TYPE_ANY, EDITOR_BUFFER_SIZE, font);#else    	text_id = emtk_text_new(window, 0, 0, clientRect->w - SCROLLBAR_WIDTH,                 row_height, nrp, KEY_TYPE_ANY, content_len, font);#endif	emtk_text_set_value(text_id, content, content_len);    	emtk_text_set_border_width(text_id, 0);    	emtk_text_set_value_change_callback(text_id, memoModified, NULL);    	emtk_window_add_object(window, text_id);    	emtk_text_add_vscrollbar_new(text_id, SCROLLBAR_WIDTH, VSCROLLBAR_ALIGN_RIGHT);    }    else {	    emtk_text_set_height_info (text_id, row_height, nrp);	    emtk_text_set_font (text_id, font);    }    emtk_text_show(text_id);}#ifndef FILEMODEstatic void launchIME(int code) {    DESKTOP_CHANNEL channel;    MSG msg;    int msgLen;        msgLen = msg_command_input(code, &msg);    desktop_channel_connect(&channel);    desktop_channel_send(&channel, &msg, msgLen);    desktop_channel_disconnect(&channel);}static void toolbar_handler(int shortcut_button, int action, void *data) {        int font = FONT1;        if (shortcut_button != ime_shortcut && shortcut_button != eng_shortcut && shortcut_button != thai_shortcut) {        if (lastShortcutButton)            emtk_app_set_shortcut_button_toggle_state(lastShortcutButton, FALSE);                emtk_app_set_shortcut_button_toggle_state(shortcut_button, TRUE);        lastShortcutButton = shortcut_button;    }        switch (action) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩久久免费av| 亚洲第一激情av| 亚洲天堂中文字幕| 麻豆成人av在线| 色爱区综合激月婷婷| 久久一区二区三区四区| 亚洲精品国产第一综合99久久| 美女精品自拍一二三四| 在线观看亚洲精品视频| 国产精品美女久久久久久久网站| 日韩精品成人一区二区三区| 色综合久久久久综合99| 国产婷婷色一区二区三区在线| 日韩精品免费专区| 91丨porny丨国产| 欧美国产成人在线| 国产精品亚洲第一| wwww国产精品欧美| 久热成人在线视频| 欧美精选一区二区| 亚洲一区二区成人在线观看| 91免费看片在线观看| 国产精品免费视频网站| 懂色av噜噜一区二区三区av| 精品免费视频一区二区| 久久99国产乱子伦精品免费| 日韩午夜精品电影| 久久国产精品色婷婷| 日韩片之四级片| 琪琪一区二区三区| 日韩欧美一区在线| 久久se这里有精品| 久久色在线视频| 国产黄色91视频| 中文字幕精品在线不卡| 国产不卡免费视频| 中文字幕亚洲电影| 91免费版pro下载短视频| 亚洲女爱视频在线| 欧美三级欧美一级| 免费精品99久久国产综合精品| 欧美一二三在线| 国产主播一区二区三区| 欧美激情在线一区二区| 91影视在线播放| 亚洲va国产va欧美va观看| 日韩一区二区三区免费看 | 成人黄色一级视频| 国产精品久99| 欧美无砖专区一中文字| 视频在线观看91| 精品国产精品一区二区夜夜嗨| 国精产品一区一区三区mba桃花 | 7777女厕盗摄久久久| 久久精品国产99| 国产精品网站在线| 欧美无乱码久久久免费午夜一区| 日韩精品亚洲一区| 欧美国产激情二区三区 | 舔着乳尖日韩一区| 久久久久久久网| 色综合天天狠狠| 全国精品久久少妇| 国产精品久久久久久久久图文区| 欧美在线一区二区| 国产中文一区二区三区| 亚洲五月六月丁香激情| 精品女同一区二区| 欧美吞精做爰啪啪高潮| 国产精品 日产精品 欧美精品| 亚洲人吸女人奶水| 精品噜噜噜噜久久久久久久久试看 | 久久精品亚洲精品国产欧美 | 国产伦精品一区二区三区免费迷 | 亚洲一区二区高清| 久久久www成人免费无遮挡大片| 色综合亚洲欧洲| 国产一区二区视频在线播放| 亚洲自拍偷拍网站| 中文字幕国产一区| 日韩精品专区在线影院重磅| 一本大道久久a久久精二百| 久久99九九99精品| 亚洲一区二区成人在线观看| 中文在线资源观看网站视频免费不卡| 欧美电影在线免费观看| 91欧美一区二区| 国产成a人亚洲精品| 免费av网站大全久久| 一区二区三区欧美亚洲| 国产精品天天看| 亚洲精品一区二区三区福利| 欧美午夜精品一区二区三区| 99在线精品免费| 国产suv精品一区二区883| 激情六月婷婷综合| 青青草国产精品亚洲专区无| 亚洲va韩国va欧美va精品| 一区二区三区在线观看欧美| 中文字幕欧美激情一区| 国产亚洲短视频| 精品国产乱子伦一区| 69精品人人人人| 欧美日韩久久久| 91极品美女在线| av午夜精品一区二区三区| 国产高清不卡二三区| 国产真实乱对白精彩久久| 天天操天天色综合| 视频在线观看91| 免费人成在线不卡| 久久疯狂做爰流白浆xx| 久久电影网站中文字幕| 精品一区二区三区在线观看| 青青草原综合久久大伊人精品优势| 日韩电影在线观看电影| 日本午夜精品视频在线观看| 天天综合色天天综合色h| 蜜桃精品视频在线观看| 麻豆国产精品官网| 国内精品不卡在线| 国产福利精品一区二区| 成人免费毛片高清视频| 99久久99久久免费精品蜜臀| 91在线你懂得| 欧美在线小视频| 欧美日韩二区三区| 日韩一区二区精品| 久久综合久久综合久久综合| 国产欧美一区二区三区鸳鸯浴| 国产日韩在线不卡| 亚洲精选视频免费看| 天天色 色综合| 激情小说亚洲一区| hitomi一区二区三区精品| 色婷婷亚洲一区二区三区| 欧美日韩激情一区二区三区| 精品免费国产二区三区| 国产精品欧美精品| 亚洲理论在线观看| 欧美a级理论片| 国产乱人伦精品一区二区在线观看 | 亚洲欧美在线观看| 亚洲国产成人精品视频| 久久超碰97中文字幕| 99视频在线观看一区三区| 欧美人狂配大交3d怪物一区| 91精品国产色综合久久不卡蜜臀 | 波多野结衣亚洲| 在线电影院国产精品| 国产日韩欧美综合一区| 亚洲精品成人悠悠色影视| 日韩精品高清不卡| 9l国产精品久久久久麻豆| 欧美日韩一卡二卡三卡 | 亚洲一区二区三区中文字幕| 久久国产麻豆精品| 在线观看成人小视频| 欧美va亚洲va国产综合| 亚洲摸摸操操av| 国产精品一区二区x88av| 欧美曰成人黄网| 国产天堂亚洲国产碰碰| 婷婷综合五月天| 99国产欧美另类久久久精品| 欧美一级理论片| 一区二区成人在线| 成熟亚洲日本毛茸茸凸凹| 91精品麻豆日日躁夜夜躁| 亚洲三级在线看| 激情综合色播激情啊| 欧美丰满少妇xxxbbb| 一区二区久久久| 成人av片在线观看| 久久综合五月天婷婷伊人| 日本特黄久久久高潮| 欧美三级韩国三级日本三斤| 中文天堂在线一区| 国产一区二区免费在线| 欧美一区二区性放荡片| 亚洲福利一区二区三区| 成a人片亚洲日本久久| 久久香蕉国产线看观看99| 亚洲国产欧美一区二区三区丁香婷| 成人一区在线观看| 国产亚洲成av人在线观看导航| 久久精品国产久精国产| 91超碰这里只有精品国产| 亚洲国产cao| 欧美日精品一区视频| 一区二区三区中文字幕电影 | 日韩午夜在线播放| 粉嫩绯色av一区二区在线观看| 欧美一区二区三区在线| 爽好多水快深点欧美视频| 欧美日韩一区二区三区不卡| 亚洲一区二区三区四区在线观看 | 中文字幕色av一区二区三区| 成人免费精品视频| 日韩一区在线看|