X-Git-Url: http://git.sourceforge.jp/view?p=ffftp%2Fffftp.git;a=blobdiff_plain;f=toolmenu.c;h=7fcc205b458e04f42c2a86113f217063fea3e197;hp=a9d56f1178c4f4099bfafc168b342d570c4af1f4;hb=948f80c440c0251ec470882c68da56346d0d89c1;hpb=f93da12f0a0b0271fdaf25d02772972a79d86bf2 diff --git a/toolmenu.c b/toolmenu.c index a9d56f1..7fcc205 100644 --- a/toolmenu.c +++ b/toolmenu.c @@ -28,6 +28,8 @@ /============================================================================*/ #define STRICT +// IPv6対応 +#include #include #include #include @@ -37,7 +39,8 @@ #include #include #include -#include +// IPv6対応 +//#include #include "common.h" #include "resource.h" @@ -100,7 +103,9 @@ static int TmpRemoteDirSort; static int SyncMove = NO; -static int HideUI = NO; +// デッドロック対策 +//static int HideUI = NO; +static int HideUI = 0; /* 2007/09/21 sunasunamix ここから *********************/ @@ -140,11 +145,13 @@ static TBBUTTON TbarDataMain[] = { { 20, MENU_L_KNJ_EUC, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 21, MENU_L_KNJ_JIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 28, MENU_L_KNJ_UTF8N, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, + { 29, MENU_L_KNJ_UTF8BOM, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 }, { 27, MENU_KNJ_SJIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 20, MENU_KNJ_EUC, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 21, MENU_KNJ_JIS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 28, MENU_KNJ_UTF8N, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, + { 29, MENU_KNJ_UTF8BOM, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 22, MENU_KNJ_NONE, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0 }, { 0, 0, TBSTATE_ENABLED, BTNS_SEP, 0, 0 }, { 23, MENU_KANACNV, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0 }, @@ -195,8 +202,8 @@ static const int HideMenus[] = { MENU_HELP, MENU_HELP_TROUBLE, MENU_ABOUT, MENU_REGINIT, MENU_TEXT, MENU_BINARY, MENU_AUTO, - MENU_KNJ_SJIS, MENU_KNJ_EUC, MENU_KNJ_JIS, MENU_KNJ_UTF8N, MENU_KNJ_NONE, - MENU_L_KNJ_SJIS, MENU_L_KNJ_EUC, MENU_L_KNJ_JIS, MENU_L_KNJ_UTF8N, + MENU_KNJ_SJIS, MENU_KNJ_EUC, MENU_KNJ_JIS, MENU_KNJ_UTF8N, MENU_KNJ_UTF8BOM, MENU_KNJ_NONE, + MENU_L_KNJ_SJIS, MENU_L_KNJ_EUC, MENU_L_KNJ_JIS, MENU_L_KNJ_UTF8N, MENU_L_KNJ_UTF8BOM, MENU_KANACNV, MENU_LOCAL_UPDIR, MENU_LOCAL_CHDIR, MENU_REMOTE_UPDIR, MENU_REMOTE_CHDIR, @@ -247,7 +254,9 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst) if(hWndTbarMain != NULL) { /* 2007/09/21 sunasunamix ここから *********************/ - pOldTbarMainProc = (WNDPROC)SetWindowLong(hWndTbarMain, GWL_WNDPROC, (DWORD)CountermeasureTbarMainProc); + // 64ビット対応 +// pOldTbarMainProc = (WNDPROC)SetWindowLong(hWndTbarMain, GWL_WNDPROC, (DWORD)CountermeasureTbarMainProc); + pOldTbarMainProc = (WNDPROC)SetWindowLongPtr(hWndTbarMain, GWLP_WNDPROC, (LONG_PTR)CountermeasureTbarMainProc); /********************************************* ここまで */ GetClientRect(hWnd, &Rect1); @@ -272,7 +281,9 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst) if(hWndTbarLocal != NULL) { /* 2007/09/21 sunasunamix ここから *********************/ - pOldTbarLocalProc = (WNDPROC)SetWindowLong(hWndTbarLocal, GWL_WNDPROC, (DWORD)CountermeasureTbarLocalProc); + // 64ビット対応 +// pOldTbarLocalProc = (WNDPROC)SetWindowLong(hWndTbarLocal, GWL_WNDPROC, (DWORD)CountermeasureTbarLocalProc); + pOldTbarLocalProc = (WNDPROC)SetWindowLongPtr(hWndTbarLocal, GWLP_WNDPROC, (LONG_PTR)CountermeasureTbarLocalProc); /********************************************* ここまで */ MoveWindow(hWndTbarLocal, 0, TOOLWIN_HEIGHT, LocalWidth, TOOLWIN_HEIGHT, FALSE); @@ -280,7 +291,7 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst) /*===== ローカルのディレクトリ名ウインドウ =====*/ SendMessage(hWndTbarLocal, TB_GETITEMRECT, 3, (LPARAM)&Rect1); -#ifndef ENGLISH +#ifndef FFFTP_ENGLISH DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254); #else DlgFont = CreateFont(Rect1.bottom-Rect1.top-8, 0, 0, 0, 0, FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,MSGJPN254); @@ -297,14 +308,16 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst) /* エディットコントロールを探す */ hWndDirLocalEdit = GetWindow(hWndDirLocal, GW_CHILD); if(hWndDirLocalEdit != NULL) - HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirLocalEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc); + // 64ビット対応 +// HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirLocalEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc); + HistEditBoxProcPtr = (WNDPROC)SetWindowLongPtr(hWndDirLocalEdit, GWLP_WNDPROC, (LONG_PTR)HistEditBoxWndProc); SendMessage(hWndDirLocal, WM_SETFONT, (WPARAM)DlgFont, MAKELPARAM(TRUE, 0)); SendMessage(hWndDirLocal, CB_LIMITTEXT, FMAX_PATH, 0); /* ドライブ名をセットしておく */ GetLogicalDriveStrings(FMAX_PATH, Tmp); - NoDrives = LoadHideDriveListRegistory(); + NoDrives = LoadHideDriveListRegistry(); Pos = Tmp; while(*Pos != NUL) { @@ -335,7 +348,9 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst) if(hWndTbarRemote != NULL) { /* 2007/09/21 sunasunamix ここから *********************/ - pOldTbarRemoteProc = (WNDPROC)SetWindowLong(hWndTbarRemote, GWL_WNDPROC, (DWORD)CountermeasureTbarRemoteProc); + // 64ビット対応 +// pOldTbarRemoteProc = (WNDPROC)SetWindowLong(hWndTbarRemote, GWL_WNDPROC, (DWORD)CountermeasureTbarRemoteProc); + pOldTbarRemoteProc = (WNDPROC)SetWindowLongPtr(hWndTbarRemote, GWLP_WNDPROC, (LONG_PTR)CountermeasureTbarRemoteProc); /********************************************* ここまで */ MoveWindow(hWndTbarRemote, LocalWidth + SepaWidth, TOOLWIN_HEIGHT, RemoteWidth, TOOLWIN_HEIGHT, FALSE); @@ -354,7 +369,9 @@ int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst) /* エディットコントロールを探す */ hWndDirRemoteEdit = GetWindow(hWndDirRemote, GW_CHILD); if(hWndDirRemoteEdit != NULL) - HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirRemoteEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc); + // 64ビット対応 +// HistEditBoxProcPtr = (WNDPROC)SetWindowLong(hWndDirRemoteEdit, GWL_WNDPROC, (LONG)HistEditBoxWndProc); + HistEditBoxProcPtr = (WNDPROC)SetWindowLongPtr(hWndDirRemoteEdit, GWLP_WNDPROC, (LONG_PTR)HistEditBoxWndProc); SendMessage(hWndDirRemote, WM_SETFONT, (WPARAM)DlgFont, MAKELPARAM(TRUE, 0)); SendMessage(hWndDirRemote, CB_LIMITTEXT, FMAX_PATH, 0); @@ -573,7 +590,9 @@ HWND GetRemoteTbarWnd(void) int GetHideUI(void) { - return(HideUI); + // デッドロック対策 +// return(HideUI); + return (HideUI > 0 ? YES : NO); } @@ -593,7 +612,9 @@ void MakeButtonsFocus(void) int Count; int Win; - if(HideUI == NO) + // デッドロック対策 +// if(HideUI == NO) + if(HideUI == 0) { hWndMain = GetMainHwnd(); hWndFocus = GetFocus(); @@ -751,7 +772,9 @@ void DisableUserOpe(void) { int i; - HideUI = YES; + // デッドロック対策 +// HideUI = YES; + HideUI++; for(i = 0; i < sizeof(HideMenus) / sizeof(int); i++) { @@ -781,7 +804,11 @@ void EnableUserOpe(void) { int i; - if(HideUI == YES) + // デッドロック対策 +// if(HideUI == YES) + if(HideUI > 0) + HideUI--; + if(HideUI == 0) { for(i = 0; i < sizeof(HideMenus) / sizeof(int); i++) { @@ -797,7 +824,8 @@ void EnableUserOpe(void) HideHostKanjiButton(); HideLocalKanjiButton(); - HideUI = NO; + // バグ修正 +// HideUI = NO; MakeButtonsFocus(); } @@ -817,7 +845,9 @@ void EnableUserOpe(void) int AskUserOpeDisabled(void) { - return(HideUI); + // デッドロック対策 +// return(HideUI); + return (HideUI > 0 ? YES : NO); } @@ -1028,6 +1058,10 @@ void SetHostKanjiCode(int Type) TmpHostKanjiCode = KANJI_UTF8N; break; + case MENU_KNJ_UTF8BOM : + TmpHostKanjiCode = KANJI_UTF8BOM; + break; + default : TmpHostKanjiCode = KANJI_NOCNV; break; @@ -1068,6 +1102,10 @@ void DispHostKanjiCode(void) SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0)); break; + case KANJI_UTF8BOM : + SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_UTF8BOM, MAKELONG(TRUE, 0)); + break; + default : SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0)); break; @@ -1110,6 +1148,7 @@ void HideHostKanjiButton(void) SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(FALSE, 0)); + SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8BOM, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0)); break; @@ -1119,6 +1158,7 @@ void HideHostKanjiButton(void) SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_EUC, MAKELONG(TRUE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_JIS, MAKELONG(TRUE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8N, MAKELONG(TRUE, 0)); + SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_UTF8BOM, MAKELONG(TRUE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KNJ_NONE, MAKELONG(TRUE, 0)); // if(TmpHostKanjiCode != KANJI_NOCNV) // SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(TRUE, 0)); @@ -1179,6 +1219,10 @@ void SetLocalKanjiCode(int Type) case MENU_L_KNJ_UTF8N : TmpLocalKanjiCode = KANJI_UTF8N; break; + + case MENU_L_KNJ_UTF8BOM : + TmpLocalKanjiCode = KANJI_UTF8BOM; + break; } DispLocalKanjiCode(); HideLocalKanjiButton(); @@ -1205,6 +1249,10 @@ void DispLocalKanjiCode(void) case KANJI_UTF8N : SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0)); break; + + case KANJI_UTF8BOM : + SendMessage(hWndTbarMain, TB_CHECKBUTTON, MENU_L_KNJ_UTF8BOM, MAKELONG(TRUE, 0)); + break; } return; } @@ -1224,6 +1272,7 @@ void HideLocalKanjiButton(void) SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(FALSE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(FALSE, 0)); + SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8BOM, MAKELONG(FALSE, 0)); break; default : @@ -1231,6 +1280,7 @@ void HideLocalKanjiButton(void) SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_EUC, MAKELONG(TRUE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_JIS, MAKELONG(TRUE, 0)); SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8N, MAKELONG(TRUE, 0)); + SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_L_KNJ_UTF8BOM, MAKELONG(TRUE, 0)); // 現在カナ変換はShift_JIS、JIS、EUC間でのみ機能する SendMessage(hWndTbarMain, TB_ENABLEBUTTON, MENU_KANACNV, MAKELONG(FALSE, 0)); switch(TmpHostKanjiCode) @@ -1723,7 +1773,9 @@ void LocalRbuttonMenu(int Pos) UINT Flg3; int Count; - if(HideUI == NO) + // デッドロック対策 +// if(HideUI == NO) + if(HideUI == 0) { Flg1 = 0; if(AskConnecting() == NO) @@ -1788,7 +1840,9 @@ void RemoteRbuttonMenu(int Pos) UINT Flg3; int Count; - if(HideUI == NO) + // デッドロック対策 +// if(HideUI == NO) + if(HideUI == 0) { Flg1 = 0; if(AskConnecting() == NO) @@ -1811,9 +1865,18 @@ void RemoteRbuttonMenu(int Pos) AppendMenu(hMenu, MF_STRING | Flg1, MENU_DOWNLOAD_ALL, MSGJPN266); AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_DELETE, MSGJPN267); AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_RENAME, MSGJPN268); +#if defined(HAVE_TANDEM) + /* HP NonStop Server では CHMOD の仕様が異なるため使用不可 */ + if (AskRealHostType() != HTYPE_TANDEM) +#endif AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_CHMOD, MSGJPN269); AppendMenu(hMenu, MF_STRING | Flg1, MENU_MKDIR, MSGJPN270); AppendMenu(hMenu, MF_STRING | Flg1 | Flg2, MENU_URL_COPY, MSGJPN271); +#if defined(HAVE_TANDEM) + /* OSS モードのときに表示されるように AskRealHostType() を使用する */ + if (AskRealHostType() == HTYPE_TANDEM) + AppendMenu(hMenu, MF_STRING | Flg1, MENU_SWITCH_OSS, MSGJPN2001); +#endif AppendMenu(hMenu, MF_SEPARATOR, 0, NULL); AppendMenu(hMenu, MF_STRING | Flg1, MENU_FILESIZE, MSGJPN272); AppendMenu(hMenu, MF_SEPARATOR, 0, NULL); @@ -1852,7 +1915,9 @@ static void AddOpenMenu(HMENU hMenu, UINT Flg) char Tmp[FMAX_PATH+1]; int i; - AppendMenu(hMenu, MF_STRING | Flg, MENU_DCLICK, MSGJPN274); + // ローカルフォルダを開く +// AppendMenu(hMenu, MF_STRING | Flg, MENU_DCLICK, MSGJPN274); + AppendMenu(hMenu, MF_STRING | Flg, MENU_OPEN, MSGJPN274); for(i = 0; i < VIEWERS; i++) { if(strlen(ViewerName[i]) != 0) @@ -1874,7 +1939,9 @@ static LRESULT CALLBACK CountermeasureTbarMainProc(HWND hWnd,UINT uMessage,WPARA { switch (uMessage) { case WM_DESTROY : - SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarMainProc); + // 64ビット対応 +// SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarMainProc); + SetWindowLongPtr(hWnd,GWLP_WNDPROC,(LONG_PTR)pOldTbarMainProc); break; case WM_RBUTTONDBLCLK : case WM_RBUTTONDOWN : @@ -1891,7 +1958,9 @@ static LRESULT CALLBACK CountermeasureTbarLocalProc(HWND hWnd,UINT uMessage,WPAR { switch (uMessage) { case WM_DESTROY : - SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarLocalProc); + // 64ビット対応 +// SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarLocalProc); + SetWindowLongPtr(hWnd,GWLP_WNDPROC,(LONG_PTR)pOldTbarLocalProc); break; case WM_RBUTTONDBLCLK : case WM_RBUTTONDOWN : @@ -1908,7 +1977,9 @@ static LRESULT CALLBACK CountermeasureTbarRemoteProc(HWND hWnd,UINT uMessage,WPA { switch (uMessage) { case WM_DESTROY : - SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarRemoteProc); + // 64ビット対応 +// SetWindowLong(hWnd,GWL_WNDPROC,(DWORD)pOldTbarRemoteProc); + SetWindowLongPtr(hWnd,GWLP_WNDPROC,(LONG_PTR)pOldTbarRemoteProc); break; case WM_RBUTTONDBLCLK : case WM_RBUTTONDOWN :