[PyQt] Probleme with the metho description of QSciScintlla

projetmbc projetmbc at club-internet.fr
Mon Jun 15 19:52:26 BST 2009


Phil Thompson a écrit :
> On Mon, 15 Jun 2009 19:02:58 +0200, projetmbc <projetmbc at club-internet.fr>
> wrote:
>   
>> Hello,
>> I'm always trying to make my own lexer but I don't have enough 
>> informtaion to start easily.
>>
>> I have to implement some methods but what have I to do with the method 
>> description.
>>     
>
> What part of...
>
> http://www.riverbankcomputing.com/static/Docs/QScintilla2/classQsciLexer.html#dd9c20adb43bc38d1a0ca3083ac3e6fa
>
> ...is causing you a problem?
>
> Phil
Indeed I've typed the code given with this message. I have the folowing 
Error :
" QsciLexerCustom.description() is abstract and must be overridden. "

What's wrong ?

Christophe.


-------------- next part --------------
# -*- coding: utf-8 -*-
#!/usr/bin/env python

# PRESENTATION : ce script montre comment utiliser les focntionnalités de base du composant QSci (Scintilla).
# AUTEUR : BAL Christophe
# MAIL : projetmbc at club.fr
# SITE : http://christophe_bal.club.fr/index.php
# DATE DE CREATION : 28/08/2008
# 
# TEST(S) EFFECTUE(S) : programme testé sous Windows XP avec succès.

# On importe les bibliothèques que nous allons utiliser.
import sys
from PyQt4 import QtCore, QtGui, Qsci
from window_LecteurCodePython_HTML import Ui_window_LecteurCodePython_HTML

class myLexer(Qsci.QsciLexerCustom):
    def setStyling(self, lenght, style_bits = 0):
        print '(lenght, style_bits)'
        print (lenght, style_bits)

    def startStyling(self, pos, style_bits = 0):
        print '(pos, style_bits)'
        print (pos, style_bits)

    def styleText(self, start, end):
        print '(start, end)'
        print (start, end)

class window_LecteurCodePython_HTML(QtGui.QMainWindow, Ui_window_LecteurCodePython_HTML):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        Ui_window_LecteurCodePython_HTML.__init__(self)
        self.setupUi(self)
        self.extensionsPython = ['py','pyw']
        self.extensionsHTML = ['htm','html']

        font = QtGui.QFont()
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setFixedPitch(True)
        font.setPointSize(10)
        fm = QtGui.QFontMetrics(font)
        self.textScintilla_Principal.setFont(font)
        self.textScintilla_Principal.setMarginsFont(font)
        self.textScintilla_Principal.setMarginLineNumbers(1,True)
        self.textScintilla_Principal.setMarginWidth(1, fm.width( "00000" ) + 5)

        self.textScintilla_Principal.setBraceMatching(Qsci.QsciScintilla.SloppyBraceMatch)
        self.textScintilla_Principal.setFolding(Qsci.QsciScintilla.BoxedTreeFoldStyle)
        self.textScintilla_Principal.setWrapMode(Qsci.QsciScintilla.WrapMode(Qsci.QsciScintillaBase.SC_WRAP_WORD))
        self.textScintilla_Principal.setWrapVisualFlags(Qsci.QsciScintilla.WrapVisualFlag(Qsci.QsciScintilla.WrapFlagByBorder), Qsci.QsciScintilla.WrapVisualFlag(Qsci.QsciScintilla.WrapFlagNone), 0)   

        self.connect(self.actionOuvrir, QtCore.SIGNAL("triggered()"),self.ouvrirFichier)

        self.textScintilla_Principal.setLexer(myLexer)
        f=open('test.txt')
        textFichier= f.read()
        self.textScintilla_Principal.setText(textFichier)

    def ouvrirFichier(self) :
        self.cheminFichier = QtGui.QFileDialog.getOpenFileName(self, self.tr("Choisir le fichier"),QtCore.QDir.currentPath(),"");

        if self.cheminFichier <> '':
            self.textScintilla_Principal.setMarginLineNumbers(1,True)
            nomFichier = str(QtCore.QFileInfo(self.cheminFichier).fileName())
            separer = nomFichier.split('.')

            if len(separer) == 1 :
                print 'Fichier sans extension'
            else:
                extension = separer[len(separer) - 1]
                if extension in self.extensionsPython:
                    self.textScintilla_Principal.setLexer(Qsci.QsciLexerPython())
                elif extension in self.extensionsHTML:
                    self.textScintilla_Principal.setLexer(Qsci.QsciLexerHTML())
                else:
                    print 'Seule la coloration des fichiers HTML et Python sont gérés par cette application Test.'
                    self.textScintilla_Principal.setLexer(Qsci.QsciLexerCPP())

            f=open(self.cheminFichier)
            textFichier= f.read()
            self.textScintilla_Principal.setText(textFichier)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    LecteurCodePython = window_LecteurCodePython_HTML()
    LecteurCodePython.show()
    sys.exit(app.exec_())


More information about the PyQt mailing list