EDBEE是基於QT的編輯器組件。它支持多層,文本範圍/語法和突出顯示支持。
Edbee的基類是Qwidget,它是從頭開始寫的,不是基於QT默認編輯器組件。
EDBEE的主要網站位於http://edbee.net/您可以在http://docs.edbee.net/上找到生成的文檔。
該存儲庫是對以前的Edbee單片存儲庫的干淨提取。該庫不包含任何數據文件。使用它應該變得像以下示例一樣容易:
# include " edbee/edbee.h "
edbee::TextEditorWidget* widget = new edbee::TextEditorWidget();不幸的是,我們目前還沒有。當前,如果不加載默認的KeyMap文件,EDBEE庫將無法運行。
使用組件非常容易。首先,您必須設置Edbee環境。需要此過程才能使庫知道設置文件的位置:
# include " edbee/edbee.h "
// get the edbee instance
edbee::Edbee* tm = edbee::Edbee::instance();
// configure your paths
tm -> setKeyMapPath ( " location/of/your/keymap/ " );
tm -> setGrammarPath ( " location/of/your/syntaxfiles/ " );
tm -> setThemePath ( " location/of/your/themes/ " );
// initialize the library
tm -> init ();
// by registering a shutdown function on application exit you don't have to destroy the edbee
// resources yourself. It will result in a clean shutdown
tm -> autoShutDownOnAppExit ();之後,您準備出發了。您可以創建一個小部件:
edbee::TextEditorWidget* widget = new edbee::TextEditorWidget();當然,最好將編輯器填充文件。您可以使用隨附的序列化器為此。
# include " edbee/io/textdocumentserializer.h "
# include " edbee/texteditorwidget.h "
edbee::TextEditorWidget* widget = new edbee::TextEditorWidget();
edbee::TextDocumentSerializer serializer ( widget-> textDocument () );
QFile file ( QStringLiteral( " your-filename.rb " ) );
if ( !serializer.load( &file ) ) {
QMessageBox::warning ( this , tr ( " Error opening file " ), tr ( " Error opening file! n %1 " ). arg (serializer. errorString ()) );
}
加載文本文件後,可以檢測該文件的語法/語言。 EDBEE庫使用基於擴展的文件類型檢測。當然,您也可以自己插入。
# include " edbee/edbee.h "
# include " edbee/models/textdocument.h "
# include " edbee/models/textgrammar.h "
# include " edbee/texteditorwidget.h "
TextGrammarManager* grammarManager = edbee::Edbee::instance()-> grammarManager ();
TextGrammar* grammar = grammarManager-> detectGrammarWithFilename ( " a-ruby-file.rb " );
widget-> textDocument ()->setLanguagGrammar( grammar );Edbee支持自動完成。目前,這非常有限,但是已經為支持更先進的自動完成而做出了基礎。
通過查詢自動完成提供商(TextautoCompleteprovider)來自動完成工作。它通過eDbee :: instance()級別具有文本document級別的textautocompleteproviderList。
當前,僅實現了StringTextautococtleteprovider。您可以在文檔級別和Edbeel級別上添加自動完成列表。
對未來的想法
當前,您可以設置這樣的關鍵字列表:
# include " edbee/models/textautocompleteprovider.h "
StringTextAutoCompleteProvider* provider = new StringTextAutoCompleteProvider();
provider-> add ( " const " );
provider-> add ( " class " );
provider-> add ( " compare " );
// etc ...
// to add it Locally (specific to the given document)
textDocument-> autoCompleteProviderList ()->giveProvider(provider);
// to add it Globally:
Edbee::instance ()->autoCompleteProviderList()->giveProvider(provider);當您使用QT項目使用時,例如util.cpp,您可以獲得對象文件式擠壓。 (makefile:警告:目標util.o的覆蓋命令)。這樣做的解決方法正在附加您的以下幾行(Objects_dir是可選的,但在運行QMAKE時會防止警告)
CONFIG += object_parallel_to_source in your .pro file
OBJECTS_DIR = objects
您可以通過Github貢獻
當然,您還可以通過Twitter @GameCreature與我聯繫,或通過https://github.com/gamecreature給我留言。
儘管我們在(http://issues.edbee.net/)上有自己的問題跟踪器,但您可以通過github essue tracker報告問題,或向我發送消息https://github.com/gamecreature