回精華區
作者tsaikd.bbs@bbs.cs.nchu.edu.tw (千人斬) 看板: plan
標題[新增功能] edit.c 符號輸入工具視窗版
時間中興資科 (2004/10/02 Sat 21:03:49) Updated: 2004/10/02
: maple/edit.c : 重寫input_tools()

#ifdef INPUT_TOOLS

#ifdef HAVE_POPUPMENU
static void
input_tools()   /* tsaikd.041002: 符號輸入工具視窗版 */
{
  int ch, ch2, ch3;             /* 總共要選三次 */

  char *menu[] = {"1Q",
      "1 括符方塊", "2 線條表框", "3 數學符號",
      "4 圖案數字", "5 希臘字母", "6 注音標點",
      "Q 取消", NULL};

  char *ansi1[] = {"1Q",       /* 1 括符方塊 */
      "1 ▁▂▃▄▅▆▇█◢◣",
      "2 ▏▎▍▌▋▊▉◥◤□",
      "3 (){}〔〕【】《》",
      "4 〈〉「」『』︻︼︽︾",
      "5 ︵︶︷︸︹︺﹁﹂﹃﹄",
      "Q 取消", NULL};

  char *ansi2[] = {"1Q",       /* 2 線條表框 */
      "1 ╓╥╖╙╨╜─│═∥",
      "2 ┌┬┐├┼┤└┴┘╳",
      "3 ╔╦╗╠╬╣╚╩╝﹏\",
      "4 ╒╕╞╡╘╛╭╮╰╯",
      "5 ▁▔▏▕╱╲←→↑↓",
      "Q 取消", NULL};

  char *ansi3[] = {"1Q",       /* 3 數學符號 */
      "1 +-×÷±=<>≦≧",
      "2 ≠≡~∵∴∩∪∞π√",
      "3 ΣΠ∫∮∠⊥∟⊿Δ°",
      "4 #&*※@$¥¢£%",
      "5 ℃℉㎜㎝㎞㎡㎎㎏㏄§",
      "Q 取消", NULL};

  char *ansi4[] = {"1Q",       /* 4 圖案數字 */
      "1 ○●△▲◎☆◇◆□■",
      "2 ▽▼㊣⊕⊙十卄卅♂♀",
      "3 0123456789",
      "4 ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ",
      "5 けげこごさざしじすず",
      "Q 取消", NULL};

  char *ansi5[] = {"1Q",       /* 5 希臘字母 */
      "1 ΑΒΓΔΕΖΗΘΙΚ",
      "2 ΛΜΝΞΟΠΡΣΤΥ",
      "3 ΦΧΨΩα\βγδεζ",
      "4 ηθικλμνξοπ",
      "5 ρστυφχψω∕﹨",
      "Q 取消", NULL};

  char *ansi6[] = {"1Q",       /* 6 注音標點 */
      "1 ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎ",
      "2 ㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘ",
      "3 ㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢ",
      "4 ㄣㄤㄥㄦㄧㄨㄩˊˇˋ",
      "5 ˙,。、!?:;「」",
      "Q 取消", NULL};

  char **menu_ansi[] = {ansi1, ansi2, ansi3, ansi4, ansi5, ansi6};

  char buf[10][5] = {0};

  char *tmp_menu[] = {"0Q",
    buf[0], buf[1], buf[2], buf[3], buf[4],
    buf[5], buf[6], buf[7], buf[8], buf[9],
    "Q 取消",NULL};

  char *str;
  int i;

  /* 選分類 */
  ch = pans(5, 25, "符號輸入工具", menu);
  if (ch == 'q')       /* 取消就直接跳回編輯畫面 */
    return;

  ch2 = pans(5, 19, &menu[ch - '0'][2], menu_ansi[ch - '1']);
  if (ch2 == 'q')      /* 取消就直接跳回編輯畫面 */
    return;

  str = &menu_ansi[ch - '1'][ch2 - '0'][2];

  /* 第三層是依第二層所選擇的來填入 */
  for (i = 0; i < 10; i++)    /* 每個中文字是 2 char */
    sprintf(buf[i], "%d %2.2s", i, str + i * 2);

  ch3 = pans(5, 28, "輸入符號", tmp_menu);
  if (ch3 == 'q')      /* 取消就直接跳回編輯畫面 */
    return;
  str = &tmp_menu[ch3 - '0' + 1][2];

  ve_char(*str);            /* 印出二個 char 中文字 */
  ve_char(*++str);
}

+ #else           /* HAVE_POPUPMENU */

static void
input_tools()   /* itoc.000319: 符號輸入工具 */
{

...
...

}
+ #endif /* HAVE_POPUPMENU */

#endif

--
  Author:  中興資科˙中興資科 e資獨秀  csNCHU.twbbs.org 
  Origin: tsaikd 140.116.104.202 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻