;******************************************************************************** ; 为了总结 Ministatus 的核心编程思想,写了这个 Hello World 。 ; 程序很简单,较为完整的实现了 Ministatus 面板跟 SPB 交互的过程, ; 希望这段程序能够把 Ministatus 的核心编程思想表达清楚,欢迎高手拍砖。 ; 不过为了突出重点省去了 axlMiniStatusLoad 的回调函数,这点跟 form 是一致的, ; 熟悉 form 的朋友应当不在话下, 这个 skill 仅仅用来实现高亮的“插件效果”。 ; 可以用来改写类似排列元件的功能,希望对大家有所帮助。 ; 缺点:没有找到在系统级实现类似 move 那样支持 undo/redo 的方法,跟真正的系统级插件还有距离。还望高手赐招。 ; 测试平台:spb15.5.1 ; 作者:gfe2004 2006.05.29 发表于 WWW.PCBBBS.COM ;********************************************************************************defun( gfe_HelloWorld () prog( () mark = axlDBTransactionStart() axlControlRaise('options) HelloWorld_form_file = "./HelloWorld.form" _createForm_HelloWorld() HelloWorld_Form = axlMiniStatusLoad( (gensym) HelloWorld_form_file nil t) ;axlFormTest(HelloWorld_form_file) if(isFile(HelloWorld_form_file) deleteFile(HelloWorld_form_file) );endif mypopup = axlUIPopupDefine( axlUIGetUserData()->popupId (list (list "gfe_Done" 'gfe_FinishEnterFun) (list "gfe_Cancel" 'gfe_CancelEnterFun))) axlUIPopupSet(mypopup) axlSetFindFilter( ?enabled (list "symbols" ) ?onButtons (list "symbols" )) while( axlSelect() axlHighlightObject(axlGetSelSet())) ; while( axlSelect() axlDeleteObject(axlGetSelSet())) (case axlUIGetUserData()->doneState (done axlDBTransactionCommit(mark) axlUIWPrint(nil "done !!!") ); end info (cancel axlUIWPrint(nil "cancel !!!") ); end close ); end case axlUIWPrint(nil "ending !!!") ); end prog ); end defun ;******************************************************************************** ;; gfe_done defun( gfe_FinishEnterFun () axlUIWPrint(nil "gfe_Done!!!") ; axlFinishEnterFun() ) ;; gfe_cancel defun( gfe_CancelEnterFun () axlUIWPrint(nil "gfe_Cancel!!!") ; axlCancelEnterFun() ) ;******************************************************************************** ;; .form defun( _createForm_HelloWorld () prog( () HelloWorld_form = outfile(HelloWorld_form_file "w") fprintf(HelloWorld_form "FILE_TYPE=FORM_DEFN VERSION=2\n") fprintf(HelloWorld_form "FORM \n") fprintf(HelloWorld_form "FIXED\n") fprintf(HelloWorld_form "PORT 36 19\n") fprintf(HelloWorld_form "HEADER \"gfe2004\"\n") fprintf(HelloWorld_form "\n") fprintf(HelloWorld_form "TILE\n") fprintf(HelloWorld_form "TEXT \"Hello World!\" \n") fprintf(HelloWorld_form "TLOC 2 6\n") fprintf(HelloWorld_form "ENDTEXT\n") fprintf(HelloWorld_form "\n") fprintf(HelloWorld_form "ENDTILE\n") fprintf(HelloWorld_form "\n") fprintf(HelloWorld_form "ENDFORM\n") close(HelloWorld_form) ); end prog ); end defun ;********************************************************************************
|