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