📄 mappings.cpp
字号:
break;
case IDC_REPLACE:
{
/*
** Verify fields are valid
*/
if ( !Internal_verifyFields( hDlg, szBuf, BUF_SIZE ) )
{ break; };
/*
** Get selected item index
*/
int iCurSel = SendMessage( hWndList, LB_GETCURSEL, 0,
0 );
assert( iCurSel>=0 );
/*
** Get text to add and add it to internal lists only
*/
int i, j;
*szBuf = '\0';
SendMessage( hWndType, WM_GETTEXT, BUF_SIZE,
(LPARAM)szBuf );
for( i=0; i<BUF_SIZE && szBuf[i]!='\t' && szBuf[i];
i++ );
if ( szBuf[i] ) { szBuf[i] = '\0'; };
lTypes.Append( (DblList::type)PI_NEW(
PIString( szBuf ) ) );
szBuf[i++] = '\t';
SendMessage( hWndFrom, WM_GETTEXT, BUF_SIZE-i,
(LPARAM)&(szBuf[i]) );
for( j=i; i<BUF_SIZE && szBuf[i] && szBuf[i]!='\t';
i++ );
if ( szBuf[i] ) { szBuf[i] = '\0'; };
lFroms.Append( (DblList::type)PI_NEW(
PIString( &(szBuf[j]) ) ) );
szBuf[i++] = '\t';
SendMessage( hWndTo, WM_GETTEXT, BUF_SIZE-i,
(LPARAM)&(szBuf[i]) );
for( j=i; i<BUF_SIZE && szBuf[i] && szBuf[i]!='\t';
i++ );
if ( szBuf[i] ) { szBuf[i] = '\0'; };
lTos.Append( (DblList::type)PI_NEW( PIString(
&(szBuf[j]) ) ) );
szBuf[i++] = '\t';
szBuf[i] = '\0';
SendMessage( hWndRealm, WM_GETTEXT, BUF_SIZE-i,
(LPARAM)&(szBuf[i]) );
if ( szBuf[i]=='\0' )
{ strncpy( &(szBuf[i]), "(none)", BUF_SIZE-i ); };
lRealms.Append( (DblList::type)PI_NEW( PIString(
&(szBuf[i]) ) ) );
/*
** Delete the item from the list and internal lists
*/
SendMessage( hWndList, LB_DELETESTRING, iCurSel, 0 );
PI_DELETE( (PIString *)lTypes.Detach( iCurSel) );
PI_DELETE( (PIString *)lFroms.Detach( iCurSel) );
PI_DELETE( (PIString *)lTos.Detach( iCurSel) );
PI_DELETE( (PIString *)lRealms.Detach( iCurSel) );
/*
** Add new item to listbox
*/
SendMessage( hWndList, LB_ADDSTRING, 0, (LPARAM)szBuf );
/*
** Clear edit fields, focus to list
*/
SendMessage( hWndType, CB_SETCURSEL, (WPARAM)-1, 0 );
SendMessage( hWndFrom, WM_SETTEXT, 0, (LPARAM)"" );
SendMessage( hWndTo, WM_SETTEXT, 0, (LPARAM)"" );
SendMessage( hWndRealm, CB_SETCURSEL, (WPARAM)-1, 0 );
SetFocus( hWndList );
Changed( hDlg );
};
break;
case IDC_DELETE:
{
int iCurSel = SendMessage( hWndList, LB_GETCURSEL,
0, 0 );
SendMessage( hWndList, LB_DELETESTRING, iCurSel, 0 );
PI_DELETE( (PIString *)lTypes.Detach( iCurSel ) );
PI_DELETE( (PIString *)lFroms.Detach( iCurSel ) );
PI_DELETE( (PIString *)lTos.Detach( iCurSel ) );
PI_DELETE( (PIString *)lRealms.Detach( iCurSel ) );
/*
** Clear edit fields, focus to list
*/
SendMessage( hWndType, CB_SETCURSEL, (WPARAM)-1, 0 );
SendMessage( hWndFrom, WM_SETTEXT, 0, (LPARAM)"" );
SendMessage( hWndTo, WM_SETTEXT, 0, (LPARAM)"" );
SendMessage( hWndRealm, CB_SETCURSEL, (WPARAM)-1, 0 );
SetFocus( hWndList );
Changed( hDlg );
};
break;
case IDC_TYPE:
if ( GET_WM_COMMAND_CMD(wParam, lParam)!=CBN_SELCHANGE )
{ break; };
*szBuf = '\0';
SendMessage( hWndFrom, WM_GETTEXT, BUF_SIZE,
(LPARAM)szBuf );
Internal_updateButtons( wParam, lParam, szBuf );
break;
case IDC_FROM:
if ( GET_WM_COMMAND_CMD(wParam, lParam)!=EN_CHANGE )
{ break; };
*szBuf = '\0';
SendMessage( hWndFrom, WM_GETTEXT, BUF_SIZE,
(LPARAM)szBuf );
Internal_updateButtons( wParam, lParam, szBuf );
break;
case IDC_TO:
if ( GET_WM_COMMAND_CMD(wParam, lParam)!=EN_CHANGE )
{ break; };
*szBuf = '\0';
SendMessage( hWndFrom, WM_GETTEXT, BUF_SIZE,
(LPARAM)szBuf );
Internal_updateButtons( wParam, lParam, szBuf );
break;
case IDC_REALM:
if ( GET_WM_COMMAND_CMD(wParam, lParam)!=CBN_SELCHANGE )
{ break; };
*szBuf = '\0';
SendMessage( hWndFrom, WM_GETTEXT, BUF_SIZE,
(LPARAM)szBuf );
Internal_updateButtons( wParam, lParam, szBuf );
break;
case IDC_LIST:
if ( GET_WM_COMMAND_CMD(wParam, lParam)==LBN_SELCHANGE )
{
int iSel = SendMessage( hWndList, LB_GETCURSEL,
0, 0 );
if ( iSel!=LB_ERR )
{
assert( iSel>=0 && iSel<lFroms.Size() );
EnableWindow( hWndDelete, TRUE );
int iIndex = SendMessage( hWndType,
CB_FINDSTRINGEXACT,
(WPARAM)-1,
(LPARAM)(const char *)*((PIString *)
lTypes[iSel]) );
assert( iIndex>=0 );
SendMessage( hWndType, CB_SETCURSEL, (WPARAM)
(iIndex==CB_ERR ? -1 : iIndex), 0 );
SendMessage( hWndFrom, WM_SETTEXT, 0,
(LPARAM)(const char *)*((PIString *)
lFroms[iSel]) );
SendMessage( hWndTo, WM_SETTEXT, 0,
(LPARAM)(const char *)*((PIString *)
lTos[iSel]) );
iIndex = SendMessage( hWndRealm,
CB_FINDSTRINGEXACT,
(WPARAM)-1,
(LPARAM)(const char *)*((PIString *)
lRealms[iSel]) );
assert( iIndex>=0 );
SendMessage( hWndRealm, CB_SETCURSEL, (WPARAM)
(iIndex==CB_ERR ? -1 : iIndex), -1 );
};
};
break;
default:;
}
break;
case WM_NOTIFY:
{
switch( ((NMHDR *)lParam)->code )
{
case PSN_SETACTIVE:
{
int iCurSel = ::SendMessage( hWndRealm, CB_GETCURSEL,
0, 0 );
::SendMessage( hWndRealm, CB_RESETCONTENT, 0, 0 );
int iTmp = 0;
for(;; iTmp++ )
{
const char *pTmp = M_LookupValueEx( pConfig,
"Realms", "Basic", iTmp );
if ( !pTmp ) { break; };
::SendMessage( hWndRealm, CB_ADDSTRING, 0,
(LPARAM)pTmp );
};
for(iTmp = 0;; iTmp++ )
{
const char *pTmp = M_LookupValueEx( pConfig,
"Realms", "Digest", iTmp );
if ( !pTmp ) { break; };
::SendMessage( hWndRealm, CB_ADDSTRING, 0,
(LPARAM)pTmp );
};
for(iTmp = 0;; iTmp++ )
{
const char *pTmp = M_LookupValueEx( pConfig,
"Realms", "Ntlm", iTmp );
if ( !pTmp ) { break; };
::SendMessage( hWndRealm, CB_ADDSTRING, 0,
(LPARAM)pTmp );
};
::SendMessage( hWndRealm, CB_ADDSTRING, 0,
(LPARAM)"(none)" );
::SendMessage( hWndRealm, CB_SETCURSEL, iCurSel, 0 );
};
break;
case PSN_QUERYCANCEL:
return SHEET->Cancel(pInterface, hDlg);
case PSN_KILLACTIVE:
{
int i = 0;
int iCurSel = ::SendMessage( hWndList, LB_GETCURSEL,
0, 0 );
int iCount = ::SendMessage( hWndList, LB_GETCOUNT,
0, 0 );
/* --- remove old ones first --- */
M_DeleteValue( pConfig, "Mappings", "Mapping" );
/*
** Save all mappings
*/
Internal_saveValues( hDlg );
/*
** Delete values
*/
DblListIterator x( lTypes );
DblListIterator y( lFroms );
DblListIterator z( lTos );
DblListIterator w( lRealms );
for( ; !x.BadIndex(); x++, y++, z++, w++ )
{
assert( !x.BadIndex() && !y.BadIndex() &&
!z.BadIndex() && !w.BadIndex() );
PI_DELETE( (PIString *)x.Current() );
PI_DELETE( (PIString *)y.Current() );
PI_DELETE( (PIString *)z.Current() );
PI_DELETE( (PIString *)w.Current() );
};
lTypes.Clear();
lFroms.Clear();
lTos.Clear();
lRealms.Clear();
/*
** Load all mappings
*/
int iTmp = 0;
const char *pTmp;
for(;; iTmp++ )
{
pTmp = M_LookupValueEx( pConfig, "Mappings",
"Mapping", iTmp );
if ( !pTmp )
{ break; };
if ( SendMessage( hWndList, LB_ADDSTRING, 0,
(LPARAM)pTmp )>=0 )
{
Internal_addLine( pTmp );
}
else
{ break; /* error */; };
};
::SendMessage( hWndList, LB_SETCURSEL, iCurSel, 0 );
};
SetWindowLong( hDlg, DWL_MSGRESULT, FALSE );
break;
default:
return (FALSE);
};
};
break;
default:
return (FALSE);
};
return (TRUE);
};
};
/*____________________________________________________________________________*\
*
Function:
Synopsis:
Description:
\*____________________________________________________________________________*/
static BOOL CALLBACK fnDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam,
LPARAM lParam)
{
if ( uMsg==WM_INITDIALOG )
{
::SetWindowLong( hDlg, DWL_USER, ((LPPROPSHEETPAGE)lParam)->lParam );
};
MappingsPage *pPage = (MappingsPage *)::GetWindowLong( hDlg, DWL_USER );
return pPage ? pPage->DialogProc( hDlg, uMsg, wParam, lParam ) : FALSE;
}
/*____________________________________________________________________________*\
*
Function:
Synopsis:
Description:
\*____________________________________________________________________________*/
PUBLIC_PIAPI int MappingsPage_constructor( PIObject *pObj,
int iArgc, const char *ppArgv[] )
{
return IFaceBase_constructor( pObj, PI_NEW( MappingsPage( pObj,
iArgc, ppArgv ) ) );
}
#if 0
/*___+++CNF_BEGIN+++___*/
<Class>
Name MappingsPageClass
Type LogicExtension
Library IntrFace
OnClassLoad IFaceBase_onClassLoad
Constructor MappingsPage_constructor
CopyConstructor IFaceBase_copyConstructor
Destructor IFaceBase_destructor
Execute IFaceBase_execute
</Class>
<Object>
Name MappingsPage
Class MappingsPageClass
</Object>
/*___+++CNF_END+++___*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -