OSDN Git Service

Fix bugs of text encoding routines.
[ffftp/ffftp.git] / toolmenu.c
index 2cc48a7..5949215 100644 (file)
@@ -90,6 +90,9 @@ static int TmpTransMode;
 static int TmpHostKanjiCode;\r
 static int TmpHostKanaCnv;\r
 \r
+// TODO: \83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\82ðShift_JIS\88È\8aO\82É\82à\91Î\89\9e\r
+static int TmpLocalKanjiCode;\r
+\r
 static int TmpLocalFileSort;\r
 static int TmpLocalDirSort;\r
 static int TmpRemoteFileSort;\r
@@ -133,8 +136,15 @@ static TBBUTTON TbarDataMain[] = {
        { 8,  MENU_BINARY, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
        { 17, MENU_AUTO, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
        { 0,  0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 },\r
+       { 27, MENU_L_KNJ_SJIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
+       { 20, MENU_L_KNJ_EUC, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
+       { 21, MENU_L_KNJ_JIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
+       { 28, MENU_L_KNJ_UTF8N, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
+       { 0,  0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 },\r
+       { 27, MENU_KNJ_SJIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
        { 20, MENU_KNJ_EUC, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
        { 21, MENU_KNJ_JIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
+       { 28, MENU_KNJ_UTF8N, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
        { 22, MENU_KNJ_NONE, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 },\r
        { 0,  0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0 },\r
        { 23, MENU_KANACNV, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0 },\r
@@ -185,7 +195,8 @@ static const int HideMenus[] = {
        MENU_HELP,                      MENU_HELP_TROUBLE,      MENU_ABOUT,\r
        MENU_REGINIT,\r
        MENU_TEXT,                      MENU_BINARY,            MENU_AUTO,\r
-       MENU_KNJ_EUC,           MENU_KNJ_JIS,           MENU_KNJ_NONE,\r
+       MENU_KNJ_SJIS,          MENU_KNJ_EUC,           MENU_KNJ_JIS,           MENU_KNJ_UTF8N,         MENU_KNJ_NONE,\r
+       MENU_L_KNJ_SJIS,        MENU_L_KNJ_EUC,         MENU_L_KNJ_JIS,         MENU_L_KNJ_UTF8N,\r
        MENU_KANACNV,\r
        MENU_LOCAL_UPDIR,       MENU_LOCAL_CHDIR,\r
        MENU_REMOTE_UPDIR,      MENU_REMOTE_CHDIR,\r
@@ -780,6 +791,10 @@ void EnableUserOpe(void)
                EnableWindow(hWndDirLocal, TRUE);\r
                EnableWindow(hWndDirRemote, TRUE);\r
 \r
+               // \91I\91ð\95s\89Â\82È\8a¿\8e\9a\83R\81[\83h\82Ì\83{\83^\83\93\82ª\95\\8e¦\82³\82ê\82é\83o\83O\82ð\8fC\90³\r
+               HideHostKanjiButton();\r
+               HideLocalKanjiButton();\r
+\r
                HideUI = NO;\r
 \r
                MakeButtonsFocus();\r
@@ -821,6 +836,7 @@ void SetTransferTypeImm(int Mode)
 {\r
        TmpTransMode = Mode;\r
        HideHostKanjiButton();\r
+       HideLocalKanjiButton();\r
        return;\r
 }\r
 \r
@@ -851,6 +867,7 @@ void SetTransferType(int Type)
                        break;\r
        }\r
        HideHostKanjiButton();\r
+       HideLocalKanjiButton();\r
        return;\r
 }\r
 \r
@@ -992,6 +1009,11 @@ void SetHostKanjiCode(int Type)
 {\r
        switch(Type)\r
        {\r
+               // UTF-8\91Î\89\9e\r
+               case MENU_KNJ_SJIS :\r
+                       TmpHostKanjiCode = KANJI_SJIS;\r
+                       break;\r
+\r
                case MENU_KNJ_EUC :\r
                        TmpHostKanjiCode = KANJI_EUC;\r
                        break;\r
@@ -1000,6 +1022,10 @@ void SetHostKanjiCode(int Type)
                        TmpHostKanjiCode = KANJI_JIS;\r
                        break;\r
 \r
+               case MENU_KNJ_UTF8N :\r
+                       TmpHostKanjiCode = KANJI_UTF8N;\r
+                       break;\r
+\r
                default :\r
                        TmpHostKanjiCode = KANJI_NOCNV;\r
                        break;\r
@@ -1023,6 +1049,11 @@ void DispHostKanjiCode(void)
 {\r
        switch(TmpHostKanjiCode)\r
        {\r
+               // UTF-8\91Î\89\9e\r
+               case KANJI_SJIS :\r
+                       SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_SJIS, MAKELONG(TRUE, 0));\r
+                       break;\r
+\r
                case KANJI_EUC :\r
                        SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_EUC, MAKELONG(TRUE, 0));\r
                        break;\r
@@ -1031,6 +1062,10 @@ void DispHostKanjiCode(void)
                        SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_JIS, MAKELONG(TRUE, 0));\r
                        break;\r
 \r
+               case KANJI_UTF8N :\r
+                       SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0));\r
+                       break;\r
+\r
                default :\r
                        SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0));\r
                        break;\r
@@ -1067,21 +1102,150 @@ void HideHostKanjiButton(void)
 {\r
        switch(TmpTransMode)\r
        {\r
+               // UTF-8\91Î\89\9e\r
                case TYPE_I : \r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_SJIS, MAKELONG(FALSE, 0));\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(FALSE, 0));\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(FALSE, 0));\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(FALSE, 0));\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(FALSE, 0));\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
                        break;\r
 \r
                default :\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_SJIS, MAKELONG(TRUE, 0));\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(TRUE, 0));\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(TRUE, 0));\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0));\r
                        SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0));\r
-                       if(TmpHostKanjiCode != KANJI_NOCNV)\r
-                               SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));\r
-                       else\r
-                               SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
+//                     if(TmpHostKanjiCode != KANJI_NOCNV)\r
+//                             SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));\r
+//                     else\r
+//                             SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
+//                     break;\r
+                       // \8c»\8dÝ\83J\83i\95Ï\8a·\82ÍShift_JIS\81AJIS\81AEUC\8aÔ\82Å\82Ì\82Ý\8b@\94\\82·\82é\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
+                       switch(TmpHostKanjiCode)\r
+                       {\r
+                       case KANJI_SJIS:\r
+                       case KANJI_JIS:\r
+                       case KANJI_EUC:\r
+                               switch(TmpLocalKanjiCode)\r
+                               {\r
+                               case KANJI_SJIS:\r
+                               case KANJI_JIS:\r
+                               case KANJI_EUC:\r
+                                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));\r
+                                       break;\r
+                               }\r
+                               break;\r
+                       }\r
+       }\r
+       return;\r
+}\r
+\r
+\r
+// \83\8d\81[\83J\83\8b\82Ì\8a¿\8e\9a\83R\81[\83h\r
+// \83e\83L\83X\83g\83\82\81[\83h\93]\91\97\8e\9e\82É\8eg\97p\r
+// \83z\83X\83g\91¤\82ª\96³\95Ï\8a·\82Ì\8e\9e\82Í\83\8d\81[\83J\83\8b\82à\96³\95Ï\8a·\r
+\r
+void SetLocalKanjiCodeImm(int Mode)\r
+{\r
+       TmpLocalKanjiCode = Mode;\r
+       DispLocalKanjiCode();\r
+       HideLocalKanjiButton();\r
+       return;\r
+}\r
+\r
+void SetLocalKanjiCode(int Type)\r
+{\r
+       switch(Type)\r
+       {\r
+               // UTF-8\91Î\89\9e\r
+               case MENU_L_KNJ_SJIS :\r
+                       TmpLocalKanjiCode = KANJI_SJIS;\r
+                       break;\r
+\r
+               case MENU_L_KNJ_EUC :\r
+                       TmpLocalKanjiCode = KANJI_EUC;\r
+                       break;\r
+\r
+               case MENU_L_KNJ_JIS :\r
+                       TmpLocalKanjiCode = KANJI_JIS;\r
+                       break;\r
+\r
+               case MENU_L_KNJ_UTF8N :\r
+                       TmpLocalKanjiCode = KANJI_UTF8N;\r
+                       break;\r
+       }\r
+       DispLocalKanjiCode();\r
+       HideLocalKanjiButton();\r
+       return;\r
+}\r
+\r
+void DispLocalKanjiCode(void)\r
+{\r
+       switch(TmpLocalKanjiCode)\r
+       {\r
+               // UTF-8\91Î\89\9e\r
+               case KANJI_SJIS :\r
+                       SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_SJIS, MAKELONG(TRUE, 0));\r
+                       break;\r
+\r
+               case KANJI_EUC :\r
+                       SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));\r
+                       break;\r
+\r
+               case KANJI_JIS :\r
+                       SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));\r
+                       break;\r
+\r
+               case KANJI_UTF8N :\r
+                       SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0));\r
+                       break;\r
+       }\r
+       return;\r
+}\r
+\r
+int AskLocalKanjiCode(void)\r
+{\r
+       return(TmpLocalKanjiCode);\r
+}\r
+\r
+void HideLocalKanjiButton(void)\r
+{\r
+       switch(TmpTransMode)\r
+       {\r
+               // UTF-8\91Î\89\9e\r
+               case TYPE_I : \r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_SJIS, MAKELONG(FALSE, 0));\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(FALSE, 0));\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(FALSE, 0));\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(FALSE, 0));\r
+                       break;\r
+\r
+               default :\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_SJIS, MAKELONG(TRUE, 0));\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0));\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0));\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0));\r
+                       // \8c»\8dÝ\83J\83i\95Ï\8a·\82ÍShift_JIS\81AJIS\81AEUC\8aÔ\82Å\82Ì\82Ý\8b@\94\\82·\82é\r
+                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0));\r
+                       switch(TmpHostKanjiCode)\r
+                       {\r
+                       case KANJI_SJIS:\r
+                       case KANJI_JIS:\r
+                       case KANJI_EUC:\r
+                               switch(TmpLocalKanjiCode)\r
+                               {\r
+                               case KANJI_SJIS:\r
+                               case KANJI_JIS:\r
+                               case KANJI_EUC:\r
+                                       SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0));\r
+                                       break;\r
+                               }\r
+                               break;\r
+                       }\r
                        break;\r
        }\r
        return;\r