3.4.2菜单文件
在\SAMPLES\NO7\Servers\DemoText目录下,我们可以找到一个文件DEMOTEXT.RCS,如果您仔细一些,您可以在Protel的安装目录如D:\Program Files\Design Explorer 99 SE\System(我的机器)下,发现有很多扩展名称为INS和RCS的文件,如ADVPCB.INS和advpcb.rcs,Advsch.ins和Advsch.rcs等等,每一个服务器都有INS文件和其对应的RCS文件。这些RCS文件就是服务器的菜单,即当某种服务器在当前被激活时,如当前设计原理图,则Protel系统显示设计原理图所用的菜单,如果当前设计印制板,则Protel系统显示设计印制板所用的菜单,因此,只要是一个独立功能的服务器,一般都会提供INS文件和RCS文件,在Protel中设计中,当这种服务器被激活时,就把此RCS文件中的内容作为菜单显示出来。我们把此服务器作为一个文本编辑器服务器,因此,Demo Text Editor也不例外,也有RCS文件,那就是DEMOTEXT.RCS。
下面,让我们来看一看DEMOTEXT.RCS的内容。
Menu DemoTextMenu //EditorLongMenu所定义的菜单名称
Begin
Popup '&File'
Begin
MenuItem '&New'Client:CreateNewDocument
MenuItem '&Open...'Client:OpenDocument
MenuItem '&Close'Client:CloseDocument
MenuItem SEPARATOR
MenuItem '&Save'Client:SaveDocument
MenuItem 'Save &As...'Client:SaveDocumentAs
MenuItem 'Save A&ll'Client:SaveAllDocuments
MenuItem SEPARATOR
MenuItem 'Setup P&rinter...'DemoText:SetupPrinter
MenuItem '&Print'DemoText:PrintDocument
MenuItem SEPARATOR
MenuItem 'Send...'Client:SendDocumentByMail
MenuItem 'Send All...'Client:SendAllDocumentsByMail
MenuItem SEPARATOR
MenuItem 'E&xit'Client:QuitFromEDAClient
End
Popup '&Edit'
Begin
MenuItem '&Undo\tAlt+BkSp'DemoText:Undo
MenuItem '&Redo\tCtrl+BkSp'DemoText:Redo
MenuItem SEPARATOR
MenuItem 'Cu&t\tShift+
MenuItem '&Copy\tCtrl+Ins'DemoText:Copy
MenuItem '&Paste\tShift+Ins'DemoText:Paste
MenuItem 'C&lear\tCtrl+
End
Popup '&View'
Begin
MenuItem 'Pro&ject Manager'Client:ToggleDocumentManager
MenuItem 'Pane&l'Client:TogglePanel
MenuItem '&Status Bar'Client:ToggleClientStatusBar
MenuItem 'Co&mmand Status'Client:ToggleProcessStatusBar
MenuItem '&EDA Editor Tabs''Client:ConfigureEDAEditorTabs(Show=Toggle)'
MenuItem '&Main Toolbar''Client:CustomizeResources(ToggleToolbar=TextTools)'
End
Popup '&Options'
Begin
MenuItem '&Preferences...'DemoText:SetupPreferences
End
Popup '&Window'
Begin
MenuItem '&Tile\tShift+F5'Client:TileAllOpenDocuments
MenuItem '&Cascade\tShift+F4'Client:CascadeAllOpenDocuments
MenuItem 'Arrange &Icons'Client:WindowArrangeIcons
MenuItem 'Close &All'Client:CloseAllOpenDocuments
End
Popup '&Help'
Begin
MenuItem '&Contents''Client:RunHelpTopic(FileName=Protel.hlp|Topic=contents)'
MenuItem 'Using &Help''Client:RunApplication(Application=Winhelp.exe | Parameters=Winhelp.hlp)'
MenuItem SEPARATOR
MenuItem '&Search for Help on...'Client:RunHelpTopic
MenuItem '&Reference''Client:RunHelpTopic(FileName=Protel.hlp|Topic=reference_pop)'
MenuItem '&Macros''Client:RunHelpTopic(FileName=macroref.hlp|Topic=contents)'
MenuItem SEPARATOR
MenuItem '&About...'Client:HelpAbout
End
End
HotKeyTableDemoTextHotKeyTable //EditorHotKeyTable所定义的快捷键菜单项名称
Begin
Key DemoText:RedoBackspaceCtrlEndKey
Key DemoText:UndoBackspaceAltEndKey
Key DemoText:PasteInsertShiftEndKey
Key DemoText:CopyInsertCtrlEndKey
Key DemoText:CutDeleteShiftEndKey
Key DemoText:ClearDeleteCtrlEndKey
Key Client:RunHelpTopicF1EndKey
Key Client:TileAllOpenDocumentsF4ShiftEndKey
Key Client:CascadeAllOpenDocumentsF5ShiftEndKey
End
Toolbar DemoTextToolBar 'Fixed Top' 1 1 //EditorToolbar所定义的工具条名称
Begin
Button 'PROJMAN.BMP'Client:ToggleDocumentManager
Button 'SCHPANEL.BMP' Client:TogglePanel
Separator
Button 'FILEOPEN.BMP' Client:OpenDocument
Button 'FILESAVE.BMP' Client:SaveDocument
Button 'PRINT.BMP'DemoText:SetupPrinter
Separator
Button 'CUT.BMP'DemoText:Cut
Button 'PASTE.BMP'DemoText:Paste
Separator
Button 'UNDO.BMP'DemoText:Undo
Button 'REDO.BMP'DemoText:Redo
Button 'HELP.BMP'Client:RunHelpTopic
Separator
Button 'SIMPROBE.BMP' Client:CrossProbe
End
在此RCS中,我们可以找到INS中所定义的三项内容,及EditorLongMenu所定义的菜单名称、EditorHotKeyTable所定义的快捷键菜单项名称和EditorToolbar所定义的工具条名称。
RCS中定义了“File”、“Edit”、“View”、“Options”、“Window”、“Help” 六个菜单项,每个菜单中分别再定义一些子菜单项,有一些菜单项功能是由Client服务器进程提供的,如“File”菜单项下“New”子菜单项就是由Client服务器CreateNewDocument进程提供的,有一些菜单项是由Demo Text服务器提供的,如“File”菜单项下“'Setup P&rinter...”子菜单项就是由服务器DemoText提供的SetupPrinter进程提供的。
此至,我们把Demo Text服务器分析完成,希望您能举一反三,设计出更多更好的服务器。(e-works)