Edbee est un composant d'éditeur basé sur QT. Il prend en charge plusieurs porte-care, Textmate Scoping / Grammar et mettant en évidence le support.
La classe de base d'Edbee est un QWidget, il a été écrit à partir de zéro et n'est pas basé sur les composants de l'éditeur par défaut QT.
Le site Web principal d'Edbee est à http://edbee.net/ Vous pouvez trouver la documentation générée à http://docs.edbee.net/
Ce référentiel est une extraction propre du précédent référentiel monolithique EDBEE. Cette bibliothèque ne contient aucun fichier de données. L'utiliser devrait devenir aussi facile que l'exemple suivant:
# include " edbee/edbee.h "
edbee::TextEditorWidget* widget = new edbee::TextEditorWidget();Malheureusement, nous ne sommes pas encore à ce stade. Actuellement, la bibliothèque EDBEE ne fonctionnera pas sans charger un fichier Keymap par défaut.
L'utilisation du composant est assez facile. Vous devez d'abord configurer l'environnement Edbee. Ce processus est nécessaire pour faire connaître la bibliothèque à l'emplacement des fichiers de paramètres:
# 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 ();Après cela, vous êtes prêt à partir. Vous pouvez créer un widget comme celui-ci:
edbee::TextEditorWidget* widget = new edbee::TextEditorWidget();Bien sûr, ce serait également bien de remplir l'éditeur d'un fichier. Vous pouvez utiliser le sérialiseur inclus pour cela.
# 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 ()) );
}
Après avoir chargé le fichier de texte, il est agréable de détecter la grammaire / la langue de ce fichier. La bibliothèque Edbee utilise une détection de type de fichier basée sur des extensions. Bien sûr, vous pouvez également plumer le vôtre.
# 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 prend en charge la saisie semi-automatique. Actuellement, il est très limité, mais les bases ont été effectuées pour soutenir des assorties automobiles plus avancées.
Auto Complete fonctionne en interrogeant les fournisseurs de saisie semi-automatique (TextAutocompleteProvider). Il a un TextAutoCompleProviderList au niveau du TextDocument et à l'échelle mondiale via le niveau EDBEE :: Instance ().
Actuellement, seul le StringTextAutoCompleProvider est implémenté. Vous pouvez ajouter une liste de saisie automatique au niveau du document et le niveau EDBEEL.
Idées pour l'avenir
Actuellement, vous pouvez définir la liste des mots clés comme ceci:
# 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);Lorsque vos projets QT utilisent par exemple util.cpp, vous pouvez obtenir une collision de fichier d'objet. (Makefile: avertissement: commandes de remplacement pour cible util.o). Une solution de contournement pour cela consiste à ajouter les lignes suivantes dans votre (objets_dir est facultative, mais empêche un avertissement lors de l'exécution de Qmake)
CONFIG += object_parallel_to_source in your .pro file
OBJECTS_DIR = objects
Vous pouvez contribuer via github
Bien sûr, vous pouvez également contribuer en me contactant via Twitter @GameCreature ou envoyez-moi un message via le courriel-address fourni sur https://github.com/gamecreature
Bien que nous ayons notre propre tracker de numéro sur (http://issues.edbee.net/), vous pouvez signaler vos problèmes via le tracker de numéro GitHub ou m'envoyer un message https://github.com/gamecreate