setfs.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 535 行 · 第 1/2 页
C
535 行
FTSAddBoolean( dlg_dataArray[ i ].IgnoreTagCase, "ignoretagcase" );
FTSAddBoolean( dlg_dataArray[ i ].TagPrompt, "tagprompt" );
FTSAddBoolean( dlg_dataArray[ i ].CMode, "cmode" );
FTSAddBoolean( dlg_dataArray[ i ].ShowMatch, "showmatch" );
FTSAddBoolean( dlg_dataArray[ i ].PPKeywordOnly, "ppkeywordonly" );
if( !dlg_dataArray[ i ].LanguageBool ) {
FTSAddInt( 0, "language" );
} else {
FTSAddInt( dlg_dataArray[ i ].Language, "language" );
}
FTSAddInt( dlg_dataArray[ i ].TabAmount, "tabamount" );
FTSAddInt( dlg_dataArray[ i ].HardTab, "hardtab" );
FTSAddInt( dlg_dataArray[ i ].ShiftWidth, "shiftwidth" );
FTSAddStr( dlg_dataArray[ i ].TagFileName, "tagfilename" );
FTSAddStr( dlg_dataArray[ i ].GrepDefault, "grepdefault" );
}
void writeSettings( HWND hwndDlg )
{
// dump our little structure back into source line for fts
HWND hwndCB;
int nTemplates, i;
char *template;
int len;
FTSFini();
FTSInit();
hwndCB = GetDlgItem( hwndDlg, SETFS_FILETYPE );
nTemplates = SendMessage( hwndCB, CB_GETCOUNT, 0, 0L );
for( i = 0; i < nTemplates; i++ ) {
// put back in order we got them
len = SendMessage( hwndCB, CB_GETLBTEXTLEN, i, 0L );
template = MemAlloc( len + 1 );
SendMessage( hwndCB, CB_GETLBTEXT, i, (LONG)template );
FTSStart( template );
dumpCommands( i );
FTSEnd();
MemFree( template );
}
if( CurrentFile ) {
FTSRunCmds( CurrentFile->name );
}
}
long deleteSelectedFT( HWND hwndDlg )
{
HWND hwndCB;
int i, len, rc;
char *template;
hwndCB = GetDlgItem( hwndDlg, SETFS_FILETYPE );
i = SendMessage( hwndCB, CB_GETCURSEL, 0, 0L );
if( i == CB_ERR ) {
MessageBox( hwndDlg, "No item selected",
"", MB_ICONINFORMATION | MB_OK );
return( 1L );
}
// get template in string form
len = SendMessage( hwndCB, CB_GETLBTEXTLEN, i, 0L );
template = MemAlloc( len + 1 );
SendMessage( hwndCB, CB_GETLBTEXT, i, (LONG)template );
// can't delete *.* entry
rc = IDYES;
if( !strcmp( template, "*.*" ) ) {
MessageBox( hwndDlg, "Cannot delete catch-all item",
"", MB_ICONINFORMATION | MB_OK );
rc = IDNO;
}
if( rc == IDYES ) {
// remove from our internal list
memmove( dlg_dataArray + i, dlg_dataArray + i + 1,
sizeof( dlg_data ) * ( MAX_FT_ENTRIES - i - 1 ) );
// remove from Windows combo box
SendMessage( hwndCB, CB_DELETESTRING, i, 0l );
// reset selection
if( i > 0 ) {
i--;
}
SendMessage( hwndCB, CB_SETCURSEL, i, 0L );
// update other dialog settings
updateDialogSettings( GetParent( hwndCB ), TRUE );
}
MemFree( template );
return( 1L );
}
long insertFT( HWND hwndDlg )
{
HWND hwndCB;
char *text;
int len, i;
int nTemplates;
hwndCB = GetDlgItem( hwndDlg, SETFS_FILETYPE );
// get new template
len = GetWindowTextLength( hwndCB );
text = MemAlloc( len + 1 );
GetWindowText( hwndCB, text, len + 1 );
nTemplates = SendMessage( hwndCB, CB_GETCOUNT, 0, 0L );
// attempt to insert at current position
i = SendMessage( hwndCB, CB_FINDSTRING, -1, (LONG)text );
if( i != CB_ERR &&
SendMessage( hwndCB, CB_GETLBTEXTLEN, i, 0L ) == strlen( text ) ) {
MessageBox( hwndDlg, "Template already defined",
"", MB_ICONINFORMATION | MB_OK );
return( 0L );
}
if( nTemplates == MAX_FT_ENTRIES ) {
MessageBox( hwndDlg, "Cannot hold any more templates",
"", MB_ICONINFORMATION | MB_OK );
return( 0L );
}
// for now, always insert at top of list
i = 0;
memmove( dlg_dataArray + i + 1, dlg_dataArray + i,
sizeof( dlg_data ) * ( MAX_FT_ENTRIES - i - 1 ) );
dlg_dataDefault( &dlg_dataArray[ i ] );
SendMessage( hwndCB, CB_INSERTSTRING, i, (LONG)text );
SendMessage( hwndCB, CB_SETCURSEL, i, 0L );
updateDialogSettings( hwndDlg, TRUE );
return( 1L );
}
BOOL WINEXP EnumChildProc( HWND hwndChild, DWORD lParam )
{
char szClass[ 5 ];
lParam = lParam;
GetClassName( hwndChild, szClass, 5 );
if( !strcmp( szClass, "Edit" ) ) {
//hwndEdit = hwndChild;
return( FALSE );
}
return( TRUE );
}
static void cancelSettings( void )
{
LangInit( cancelData.Language );
EditFlags.PPKeywordOnly = cancelData.PPKeywordOnly;
EditFlags.CMode = cancelData.CMode;
EditFlags.ReadEntireFile = cancelData.ReadEntireFile;
EditFlags.ReadOnlyCheck = cancelData.ReadOnlyCheck;
EditFlags.IgnoreCtrlZ = cancelData.IgnoreCtrlZ;
EditFlags.CRLFAutoDetect = cancelData.CRLFAutoDetect;
EditFlags.WriteCRLF = cancelData.WriteCRLF;
EditFlags.EightBits = cancelData.EightBits;
EditFlags.RealTabs = cancelData.RealTabs;
EditFlags.AutoIndent = cancelData.AutoIndent;
EditFlags.IgnoreTagCase = cancelData.IgnoreTagCase;
EditFlags.TagPrompt = cancelData.TagPrompt;
EditFlags.ShowMatch = cancelData.ShowMatch;
TabAmount = cancelData.TabAmount;
HardTab = cancelData.HardTab;
ShiftWidth = cancelData.ShiftWidth;
// strncpy( cancelData->TagFileName, TagFileName, TAGFILENAMEWIDTH - 1 );
// GrepDefault = cancelData->GrepDefault[ GREPDEFAULTWIDTH - 1 ] = '\0';
}
/*
* SetFSProc - processes messages for the Data Control Dialog
*/
BOOL WINEXP SetFSProc( HWND hwndDlg, unsigned msg,
UINT wParam, LONG lParam )
{
dlg_data oldData; // junk
int rc;
int index;
HWND ctlhwnd;
WORD cmd;
switch( msg ) {
case WM_INITDIALOG:
EditFlags.Quiet = TRUE;
globalTodlg_data( &cancelData, CurrentInfo );
CenterWindowInRoot( hwndDlg );
fillFileType( hwndDlg );
updateDialogSettings( hwndDlg, TRUE );
return( TRUE );
case WM_COMMAND:
switch( LOWORD( wParam ) ) {
case SETFS_FILETYPE:
cmd = GET_WM_COMMAND_CMD( wParam, lParam );
if( cmd == CBN_SELCHANGE ) {
rc = ctl_dlg_done( GET_HINSTANCE( hwndDlg ),
hwndDlg, &oldData, &Ctl_setfs );
assert( rc != 0 );
updateDialogSettings( hwndDlg, TRUE );
} else if( cmd == CBN_SETFOCUS ) {
// if we are getting the focus, something probably changed
ctlhwnd = GET_WM_COMMAND_HWND( wParam, lParam );
index = SendMessage( ctlhwnd, CB_GETCURSEL, 0, 0L );
// this may bump focus back to a bad field
if( ctl_dlg_done( GET_HINSTANCE( hwndDlg ),
hwndDlg, &( dlg_dataArray[ index ] ), &Ctl_setfs ) ) {
updateDialogSettings( hwndDlg, FALSE );
}
}
break;
case SETFS_DELETE:
deleteSelectedFT( hwndDlg );
return( TRUE );
case SETFS_INSERT:
insertFT( hwndDlg );
return( TRUE );
case IDOK:
index = SendMessage( GetDlgItem( hwndDlg, SETFS_FILETYPE ),
CB_GETCURSEL, 0, 0L );
if( !ctl_dlg_done( GET_HINSTANCE( hwndDlg ),
hwndDlg, &( dlg_dataArray[ index ] ),
&Ctl_setfs ) ) {
return( TRUE );
}
writeSettings( hwndDlg );
EndDialog( hwndDlg, TRUE );
EditFlags.Quiet = FALSE;
return( TRUE );
case IDCANCEL:
if( CurrentInfo ) {
cancelSettings();
}
EndDialog( hwndDlg, TRUE );
EditFlags.Quiet = FALSE;
return( TRUE );
}
ctl_dlg_process( &Ctl_setfs, wParam, lParam );
dyn_tpl_process( &Dyn_setfs, hwndDlg, wParam, lParam );
}
return( FALSE );
}
/*
* GetSetFSDialog - create dialog box & get result
*/
bool GetSetFSDialog( void )
{
DLGPROC proc;
bool rc;
proc = (DLGPROC) MakeProcInstance( (FARPROC) SetFSProc, InstanceHandle );
rc = DialogBox( InstanceHandle, "SETFS", Root, proc );
FreeProcInstance( (FARPROC) proc );
// redisplay all files to ensure screen completely correct
ReDisplayBuffers( TRUE );
return( rc );
} /* GetSetFSDialog */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?