Hi all, after the precious Larry's advice, I made some changes to the console for highlighting styles and traceback one, few things [1] ! Currently lacks only the insertion of text from "mimeData". [2] Rigth now I'm very busy and I cannot seem to implement additional features suggested by Larry, I hope in the future I will!
After introducing mimeData stuff, I'll clean the code and then share it!! Greetings! [1] - http://lrssvt.ns0.it/newPythonConsole.ogv [2] - https://github.com/qgis/Quantum-GIS/blob/master/python/console.py#L269 > 2012/9/4 Larry Shaffer <[email protected]>: >> Hi Salvatore, >> >> On Tue, Sep 4, 2012 at 9:13 AM, Salvatore Larosa <[email protected]> wrote: >>> Hello everyone, I am working to implement the auto complete in QGIS >>> python console. >>> At the time, I came to this result: [1] >> >> That looks great already! Very welcome addition. >> >>> Still a few things missing: >>> 1) run command with multi-line text >>> 2) styled text for errors, traceback, message etc. >> >> If you're thinking of tinkering with the traceback output dialog, >> please consider some of the suggestions put forth here [0], which >> include more complete frame info, like variables, etc. There is >> already good sample code for this in the Django project debug output >> (as mentioned by Martin)[1]. >> >> For styling purposes, it may be possible to output the traceback in >> HTML, like with Django, then style it with CSS in a QWebView (see >> Martin's initial response to my post). >> >> [0] >> http://osgeo-org.1560.n6.nabble.com/Changes-to-python-utils-py-td4977090.html >> [1] https://github.com/django/django/blob/master/django/views/debug.py >> >>> 3) fix up events when keys are pressed (keyPressEvent) >>> 4) other minor errors. >>> >>> Basically I changed the class QTextEdit with QsciScintilla using >>> pieces of code from [2] >>> and, for API syntax, the files provided by Larry Shaffer (thanks). >>> >>> I'm having some difficulties as disable the undo/redo and I can not >>> use styles to the text (font, color, etc) if the Lexer is enabled! >> >> Concerning undo, it looks like you can't turn it off, but maybe you >> can just make sure its buffer is always emptied if it contains >> anything instead? (not tested) >> >> Qsci-object.SendScintilla(QsciScintilla.SCI_EMPTYUNDOBUFFER) >> >> >> Concerning styles, some are set for the Qsci object and some are set >> for its currently bound lexer (I assume you are using >> QsciLexerPython). I believe styles can be adjusted either before the >> lexer is applied or after (though you may have to clear them first, if >> after). >> >> For examples of doing this see Eric4 source here [0], specifically >> __setTextDisplay() method for styling Qsci object at line #2156 and >> here[1] for info on setting lexer style blocks. For the lexer styles, >> you instantiate the lexer then override the styles you want using >> their lexer-specific enum value as a reference (e.g. keyword, number, >> operator, etc.) [2], then apply the lexer to the Qsci object: >> >> lexer-object.setColor(QColor, 1) # for setting color of operators >> >> If you change the coloring styles, I believe you lastly need to call >> Qsci-object.recolor(). >> >> [0] >> http://die-offenbachs.homelinux.org:48888/viewvc/eric4%20IDE/eric4/trunk/QScintilla/MiniEditor.py?view=markup >> [1] >> http://die-offenbachs.homelinux.org:48888/viewvc/eric4%20IDE/eric4/trunk/Preferences/ConfigurationPages/EditorHighlightingStylesPage.py?view=markup >> [2] >> http://www.riverbankcomputing.co.uk/static/Docs/QScintilla2/classQsciLexer.html >> , >> http://www.riverbankcomputing.co.uk/static/Docs/QScintilla2/classQsciLexerPython.html >> >> >>> Any feedback and help are welcome! >> >> I did some research on QScintilla2 APIs and QGIS supported platforms >> and their distros. I came to the conclusion that, at this time, the >> QScintilla2 API to use is 2.4.5 (no higher). This supports as far back >> as Natty on Ubuntu desktop, but is possibly even a bit too new for >> some distros like CentOS. You can download the docs as part of the >> source here [0]. >> >> [0] http://packages.ubuntu.com/source/natty/qscintilla2 >> >> >> Also, concerning the compiled .api files, it would be very >> advantageous to have the Python 2.7 .api mixed in there as well (if >> it's not). That api file should be included in the current source of >> QScintilla2 ( <src-dir>/qsci/api/python or >> /usr/local/Qt4.?/qsci/api/python/ ). Not sure if you included a PyQt4 >> api as well, but that should probably be based off of Qt 4.6 or 4.7, >> depending upon current unfinished(?) decision on QGIS base Qt version >> to support with next release. >> >> I have most of these api files archived, if you need any. I have >> tested the Qsci editor in QGIS with over 54,000 compiled api lines >> with no appreciable slow down, though the list of possible completions >> gets too long. >> >> In my Plugin Editor plugin, I currently store a user-generated >> compiled api file in ~/.config/QGIS_PluginEditor/python.pap [0]. >> However, if it were QGIS-generic, say, ~/.config/qgis_apis/python.pap >> instead, anyone who uses my plugin or Eric4 can compile a custom >> python.pap and place it in ~/.config/qgis_apis/python.pap to >> user-override the console's auto-completion and call tips (very >> handy!). Most Python packages (osgeo, for example) can be loaded into >> Eric4 and have a Qsci-compatible api file generated. >> >> [0] http://dl.dropbox.com/u/4058089/qgis/editor_apis.png >> >> Regards, >> >> Larry >> >> >>> Regards, >>> >>> -SL >>> >>> [1] - http://lrssvt.ns0.it/autocompletion.ogv >>> [2] - https://code.google.com/p/pydee/ >>> >>> -- >>> Salvatore Larosa >>> linkedIn: http://linkedin.com/in/larosasalvatore >>> twitter: @lrssvt >>> skype: s.larosa >>> IRC: lrssvt on freenode >>> _______________________________________________ >>> Qgis-developer mailing list >>> [email protected] >>> http://lists.osgeo.org/mailman/listinfo/qgis-developer > > > > -- > Salvatore Larosa > linkedIn: http://linkedin.com/in/larosasalvatore > twitter: @lrssvt > skype: s.larosa > IRC: lrssvt on freenode -- Salvatore Larosa linkedIn: http://linkedin.com/in/larosasalvatore twitter: @lrssvt skype: s.larosa IRC: lrssvt on freenode _______________________________________________ Qgis-developer mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-developer
