📄 menu.c
字号:
DialogBox(hInst,"List_Manager", hMain, lpProc); FreeProcInstance(lpProc); break; }#endif#if DEFFACTS_CONSTRUCT case IDM_BROWSE_FACTS: { FARPROC lpProc; lpProc = MakeProcInstance(DefFactManager, hInst); DialogBox(hInst,"List_Manager", hMain, lpProc); FreeProcInstance(lpProc); break; }#endif#if DEFFUNCTION_CONSTRUCT case IDM_BROWSE_FUNCTION: { FARPROC lpProc; lpProc = MakeProcInstance(DefFunctionManager, hInst); DialogBox(hInst,"List_Manager", hMain, lpProc); FreeProcInstance(lpProc); break; }#endif#if DEFGENERIC_CONSTRUCT case IDM_BROWSE_GENERIC: { FARPROC lpProc; lpProc = MakeProcInstance(DefGenericManager, hInst); DialogBox(hInst,"List_Manager", hMain, lpProc); FreeProcInstance(lpProc); break; }#endif#if OBJECT_SYSTEM case IDM_BROWSE_CLASS: { FARPROC lpProc; lpProc = MakeProcInstance(DefClassManager, hInst); DialogBox(hInst,"List_Manager", hMain, lpProc); FreeProcInstance(lpProc); break; } case IDM_BROWSE_INSTANCES: { FARPROC lpProc; lpProc = MakeProcInstance(DefInstanceManager, hInst); DialogBox(hInst,"List_Manager", hMain, lpProc); FreeProcInstance(lpProc); break; }#endif }}/**************************************************** DoFileChoice: Process all menu options from* the FILE menu.****************************************************/VOID DoFileChoice ( hMain, wParam ) HWND hMain; WORD wParam;{ extern HANDLE hInst; switch (wParam) { /*----------------------------+ | Startup Editor DDEML Client | +----------------------------*/ case IDM_FILE_EDITOR: { UINT wReturn; char szMsg[80]; {#if WIN_32 wReturn = WinExec("clpedt32.exe", SW_SHOW);#else wReturn = WinExec("clpedt16.exe", SW_SHOW);#endif if (wReturn < 32) { switch (wReturn) { case 0: sprintf (szMsg, "Not Enough Memory."); break; case 1: case 2: sprintf (szMsg, "%s %s","File not Found.", "Make sure the CLIPS directory is in your DOS Path."); break; case 8: sprintf (szMsg, "Not Enough Memory."); break; case 16: { HWND hWnd = FindWindow("ClipsEditWClass", NULL); SetFocus (hWnd); break; } default: sprintf(szMsg, "WinExec failed; error code = %d", wReturn); break; } if ( wReturn != 16 ) MessageBox (NULL, szMsg, "Load Error", MB_ICONHAND | MB_OK ); } } break; } /*------------------------+ | Open/Close Dribble File | +------------------------*/ case IDM_FILE_DRIBBLE: { OpenDribbleFile ( hMain, wParam ); break; } /*-------------------------+ | Save File as Binary File | +-------------------------*/ case IDM_FILE_SBINARY: { SaveBinaryFile ( hMain, wParam ); break; } /*-----------------------------------+ | Load a file (CLP, Binary or Batch) | +-----------------------------------*/ case IDM_FILE_LOAD: case IDM_FILE_LBATCH: case IDM_FILE_LBINARY: { DoLoad ( hMain, wParam ); break; } /*---------------+ | Start Shutdown | +---------------*/ case IDM_FILE_QUIT: { extern SCREEN WinFact, WinGlobal, WinInst, WinAgenda, WinDialog; HWND hEditor = FindWindow("ClipsEditWClass", NULL); if ( hEditor != NULL ) PostMessage ( hEditor, WM_COMMAND, wParam, NULL ); WinHelp ( WinDialog.hWnd, "CLIPS6.HLP", HELP_QUIT, NULL); PrintCLIPS ("wclips","(exit)\n"); DestroyWindow ( hMain ); DestroyWindow ( WinFact.hWnd ); DestroyWindow ( WinGlobal.hWnd); DestroyWindow ( WinInst.hWnd ); DestroyWindow ( WinAgenda.hWnd ); QuitDDE ( ); SetCommandString("(exit)\n"); ExitCLIPS(0); } /*---------------+ | Start Shutdown | +---------------*/ case IDM_EDIT_PASTE: { extern SCREEN WinDialog; HANDLE hData; LPSTR pData; int x; OpenClipboard ( WinDialog.hWnd ); hData = GetClipboardData (CF_TEXT ); pData = GlobalLock ( hData ); for (x=0; x < strlen ( pData ); x++ ) if ( pData[x] == '\r' ) pData[x] = ' '; SetCommandString(pData); PrintCLIPS ("stdout", pData); GlobalUnlock ( hData ); CloseClipboard ( ); break; } }}/*************************************************** DoHelpChoice: Process all menu options from* the FILE menu.**************************************************/VOID DoHelpChoice ( hMain, wParam ) HWND hMain; WORD wParam;{ switch (wParam) { /*------------------+ | Show About WinDialog | +------------------*/ case IDM_HELP_ABOUT: { extern HANDLE hInst; FARPROC lpProc; lpProc = MakeProcInstance(AboutDlg, hInst); DialogBox(hInst,"AboutBox", hMain, lpProc); FreeProcInstance(lpProc); break; } case IDM_HELP_CLIPS: { extern SCREEN WinDialog; WinHelp ( WinDialog.hWnd, "CLIPS6.HLP", HELP_INDEX, NULL); break; } /*---------------------------+ | Do Command Complete Dialog | +---------------------------*/ case IDM_HELP_COMPLETE: { char *buffer; int length; extern char CompleteString[255]; buffer = GetCommandString(); if ( buffer == NULL) { MessageBeep(0); break; } length = strlen (buffer); buffer = GetCommandCompletionString ( buffer, length ); if ( buffer == NULL) { MessageBeep(0); break; } length = strlen ( buffer ); if ( DoCommandCompletion ( buffer, 1)) { AppendCommandString (&(CompleteString[length])); AppendCommandString (" "); PrintCLIPS ("wclips",(&(CompleteString[length]))); PrintCLIPS ("wclips"," "); } } }}/******************************************************************** DoModuleChoice: Sets the current module based on the* menu item input.*******************************************************************/VOID DoModuleChoice ( hMenu, wParam ) HMENU hMenu; WORD wParam;{ char moduleName[255]; GetMenuString ( hMenu, wParam, (LPSTR)&moduleName, 255, MF_BYCOMMAND); SetCurrentModule (FindDefmodule((char *)moduleName));}/************************************************************************ DoModuleChoice: Will create the all popup menu items for Module Menu.***********************************************************************/VOID UpdateModuleMenu ( ModuleMenu ) HMENU ModuleMenu;{ char moduleTitle[255]; int position; struct defmodule *theModule; int value = GetMenuItemCount ( ModuleMenu ); /*-----------------------------------------------+ | Delete all Menu Items in the Module Popup Menu | +-----------------------------------------------*/ while ( value ) { DeleteMenu (ModuleMenu, 0, MF_BYPOSITION); value = GetMenuItemCount ( ModuleMenu ); } /*-----------------------------------------------+ | Create a new menu item for each defined module | +-----------------------------------------------*/ for ( theModule = GetNextDefmodule(NULL), position = IDM_MODULE_ONE ; theModule != NULL; theModule = GetNextDefmodule(theModule), position ++) { strncpy ((char *)moduleTitle,GetDefmoduleName(theModule),255); moduleTitle[255] = '\0'; InsertMenu (ModuleMenu, -1, MF_BYPOSITION|MF_STRING, position, moduleTitle); if (theModule == GetCurrentModule()) CheckMenuItem (ModuleMenu, position, MF_BYCOMMAND|MF_CHECKED); }}/************************************************************* UpdateMenu: Function which will enable/disable interface* menu items based on rule execution and other factors. ************************************************************/VOID UpdateMenu ( VOID ){ extern SCREEN WinDialog; HMENU hMenu = GetMenu(WinDialog.hWnd ); extern int ShiftKeyDown; /*----------------------------------+ | Value - Flag used to execute code | | once for each wait/active state. | +----------------------------------*/ static int value = 0; if (EvaluatingTopLevelCommand || BatchActive() ) { if ( value ) { value = 0; /*---------------------------------+ | Gray File, Execute & Browse Menu | | items when a rule is being fired | +---------------------------------*/ EnableMenuItem(hMenu,IDM_FILE_LOAD, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_FILE_LBINARY,MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_FILE_SBINARY,MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_FILE_LBATCH, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_FILE_QUIT, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_EDIT_PASTE, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_HELP_COMPLETE, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_WIN_CLEAR, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_EXE_RESET, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_EXE_STEP, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_EXE_CLEAR, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_BROWSE_RULE, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_BROWSE_FACTS, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_BROWSE_TEMPLATE, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_BROWSE_FUNCTION, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_BROWSE_GENERIC, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_BROWSE_GLOBAL, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_BROWSE_CLASS, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_BROWSE_INSTANCES,MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hMenu,IDM_BROWSE_AGENDA, MF_BYCOMMAND|MF_GRAYED); if (DeleteMenu(hMenu,IDM_EXE_RUN, MF_BYCOMMAND )) InsertMenu (hMenu,IDM_EXE_STEP,MF_BYCOMMAND,IDM_EXE_HALT,"&Halt \tCtrl+C"); DrawMenuBar (WinDialog.hWnd); StartWaitCursor(); } else { /*--------------------------------+ | Update Halt and Halt Now menu | | items based on shift key status.| +--------------------------------*/ if ( ShiftKeyDown ) { if (DeleteMenu(hMenu,IDM_EXE_HALT, MF_BYCOMMAND )) { InsertMenu (hMenu,IDM_EXE_STEP,MF_BYCOMMAND,IDM_EXE_HALT_NOW,"&Halt Now!!\tCtrl+Shift+C"); DrawMenuBar (WinDialog.hWnd); } } else { if (DeleteMenu(hMenu,IDM_EXE_HALT_NOW, MF_BYCOMMAND )) { InsertMenu (hMenu,IDM_EXE_STEP,MF_BYCOMMAND,IDM_EXE_HALT,"&Halt"); DrawMenuBar (WinDialog.hWnd); } } } } else { if (!value) { value = 1; UpdateCursor ( ARROW_CURSOR ); /*-------------------------------------+ | Enable File, Execute & Browse Menu | | items when a rule is not being fired.| +-------------------------------------*/ EnableMenuItem(hMenu,IDM_FILE_LOAD, MF_BYCOMMAND|MF_ENABLED); EnableMenuItem(hMenu,IDM_FILE_LBINARY,MF_BYCOMMAND|MF_ENABLED); EnableMenuItem(hMenu,IDM_FILE_SBINARY,MF_BYCOMMAND|MF_ENABLED); EnableMenuItem(hMenu,IDM_FILE_LBATCH, MF_BYCOMMAND|MF_ENABLED); EnableMenuItem(hMenu,IDM_FILE_QUIT, MF_BYCOMMAND|MF_ENABLED); EnableMenuItem(hMenu,IDM_HELP_COMPLETE, MF_BYCOMMAND|MF_ENABLED); EnableMenuItem(hMenu,IDM_EXE_RESET, MF_BYCOMMAND|MF_ENABLED); EnableMenuItem(hMenu,IDM_EXE_STEP, MF_BYCOMMAND|MF_ENABLED); EnableMenuItem(hMenu,IDM_EXE_CLEAR, MF_BYCOMMAND|MF_ENABLED); EnableMenuItem(hMenu,IDM_WIN_CLEAR, MF_BYCOMMAND|MF_ENABLED); if (DeleteMenu(hMenu,IDM_EXE_HALT, MF_BYCOMMAND )) InsertMenu (hMenu, IDM_EXE_STEP, MF_BYCOMMAND, IDM_EXE_RUN, "&Run\tCtrl+R" ); else if (DeleteMenu(hMenu,IDM_EXE_HALT_NOW, MF_BYCOMMAND )) InsertMenu (hMenu, IDM_EXE_STEP, MF_BYCOMMAND, IDM_EXE_RUN, "&Run\tCtrl+R" ); DrawMenuBar (WinDialog.hWnd); StopWaitCursor (); } /*-----------------------------------+ | Update Browse Menu Items if needed | +-----------------------------------*/ /*----------------+ | PASTE Menu Item | +----------------*/ if ( IsClipboardFormatAvailable (CF_TEXT)) EnableMenuItem(hMenu,IDM_EDIT_PASTE, MF_BYCOMMAND|MF_ENABLED); else EnableMenuItem(hMenu,IDM_EDIT_PASTE, MF_BYCOMMAND|MF_GRAYED); /*-----------------+ | AGENDA Menu Item | +-----------------*/ if (GetNextActivation(NULL) != NULL ) EnableMenuItem(hMenu,IDM_BROWSE_AGENDA,MF_BYCOMMAND|MF_ENABLED); else EnableMenuItem(hMenu,IDM_BROWSE_AGENDA,MF_BYCOMMAND|MF_GRAYED);#if DEFGLOBAL_CONSTRUCT /*------------------+ | DEFFACT Menu Item | +------------------*/ if ( GetNextDefglobal (NULL) != NULL) EnableMenuItem(hMenu,IDM_BROWSE_GLOBAL,MF_BYCOMMAND|MF_ENABLED); else EnableMenuItem(hMenu,IDM_BROWSE_GLOBAL,MF_BYCOMMAND|MF_GRAYED);#endif#if DEFFACTS_CONSTRUCT /*------------------+ | DEFFACT Menu Item | +------------------*/ if ( GetNextDeffacts (NULL) != NULL) EnableMenuItem(hMenu,IDM_BROWSE_FACTS,MF_BYCOMMAND|MF_ENABLED); else EnableMenuItem(hMenu,IDM_BROWSE_FACTS,MF_BYCOMMAND|MF_GRAYED);#endif#if DEFRULE_CONSTRUCT /*------------------+ | DEFRULE Menu Item | +------------------*/ if (GetNextDefrule(NULL)!=NULL) EnableMenuItem(hMenu,IDM_BROWSE_RULE,MF_BYCOMMAND|MF_ENABLED); else EnableMenuItem(hMenu,IDM_BROWSE_RULE,MF_BYCOMMAND|MF_GRAYED);#endif#if DEFTEMPLATE_CONSTRUCT /*----------------------+ | DEFTEMPLATE Menu Item | +----------------------*/ if (GetNextDeftemplate(NULL) != NULL) EnableMenuItem(hMenu,IDM_BROWSE_TEMPLATE, MF_BYCOMMAND|MF_ENABLED); else EnableMenuItem(hMenu,IDM_BROWSE_TEMPLATE, MF_BYCOMMAND|MF_GRAYED);#endif#if DEFFUNCTION_CONSTRUCT /*----------------------+ | DEFFUNCTION Menu Item | +----------------------*/ if (GetNextDeffunction(NULL) != NULL) EnableMenuItem(hMenu,IDM_BROWSE_FUNCTION, MF_BYCOMMAND|MF_ENABLED); else EnableMenuItem(hMenu,IDM_BROWSE_FUNCTION, MF_BYCOMMAND|MF_GRAYED);#endif#if DEFGENERIC_CONSTRUCT /*---------------------+ | DEFGENERIC Menu Item | +---------------------*/ if ( GetNextDefgeneric(NULL)!= NULL) EnableMenuItem(hMenu,IDM_BROWSE_GENERIC, MF_BYCOMMAND|MF_ENABLED); else EnableMenuItem(hMenu,IDM_BROWSE_GENERIC, MF_BYCOMMAND|MF_GRAYED);#endif#if OBJECT_SYSTEM#if DEFINSTANCES_CONSTRUCT /*----------------------+ | DEFINSTANCE Menu Item | +----------------------*/ if (GetNextDefinstances (NULL) != NULL ) EnableMenuItem(hMenu,IDM_BROWSE_INSTANCES,MF_BYCOMMAND|MF_ENABLED); else EnableMenuItem(hMenu,IDM_BROWSE_INSTANCES,MF_BYCOMMAND|MF_GRAYED);#endif /*-------------------+ | DEFCLASS Menu Item | +-------------------*/ if ( GetNextDefclass(NULL) != NULL ) EnableMenuItem(hMenu,IDM_BROWSE_CLASS, MF_BYCOMMAND|MF_ENABLED); else EnableMenuItem(hMenu,IDM_BROWSE_CLASS, MF_BYCOMMAND|MF_GRAYED);#endif }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -