IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Ajouter des étapes undo / redo


Sujet :

PyQt Python

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut Ajouter des étapes undo / redo
    Comment puis je faire pour ajouter des "points d'enregistrement" au stack de sauvegardes des undo/redo d'un QTextEdit?

  2. #2
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Si tu veux juste agir au moment d'un UnDo ou Redo, tu peux faire comme suit (après à toi de gérer les enregistrements) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    # -*- coding: utf-8 -*-
     
    from PyQt4 import QtCore, QtGui
     
    class textPlus(QtGui.QTextEdit):
        def keyPressEvent(self, event):
            if event.key() == QtCore.Qt.Key_Z:
                if event.modifiers() and QtCore.Qt.ControlModifier:
                    print 'Un UnDo'
     
            if event.key() == QtCore.Qt.Key_Y:
                if event.modifiers() and QtCore.Qt.ControlModifier:
                    print 'Un ReDo'
     
            QtGui.QTextEdit.keyPressEvent(self, event)
     
     
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(395, 292)
            self.centralwidget = QtGui.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget)
            self.verticalLayout.setObjectName("verticalLayout")
            self.textEdit = textPlus()
            self.textEdit.setObjectName("textEdit")
            self.verticalLayout.addWidget(self.textEdit)
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtGui.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 395, 21))
            self.menubar.setObjectName("menubar")
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtGui.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
     
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
     
        def retranslateUi(self, MainWindow):
            MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
     
     
    if __name__ == "__main__":
        import sys
        app = QtGui.QApplication(sys.argv)
        MainWindow = QtGui.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())
    Il me semble que le CTRL+Z et le CTRL+Y sont utilisés sous Windows et Ubuntu. Pour Mac, je ne sais pas.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut
    Salut, en fait, ce que je souhaite faire, c'est rajourter des "points de sauvegarde". Je me suis rendu compte que si je colle deux fois de suite la même chose, si je fais un "undo", il revient avant le 1er collage. Je voudrais revenir "un collage en arrière "et pas deux comme c'est le cas. En d'autre termes, comment fait on un enregistrement de l'état du QtextEdit pour y revenir en faisant "undo"?

  4. #4
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Hum au temps pour moi. Là comme ça je ne sais pas comment faire. Peut-être peux-tu essayer d'enregistrer à intervalle de temps régulier.
    Je garde ta question sous le coude quand j'aurais cinq minutes ou une heure...

  5. #5
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Juste avant d'aller skier, je te propose de regarder ici http://www.riverbankcomputing.co.uk/....html#revision sans garantie que ce soit la bonne piste.
    Si tu y arrives, je serais intéressé par ta méthode.

  6. #6
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut
    sauf erreur de ma part, ce n'est malheureusement pas la bonne piste...
    Tout ce que j'ai pu glaner comme info est à la fin de la description mais je n'ai trouvé nulle part comment faire un "enregistrement"!
    http://www.riverbankcomputing.co.uk/...t.html#details
    je continue à chercher...

    [EDIT]
    peut etre ici la bonne piste, mais le lien est mort :
    cliquer sur Qt Undo Framework de la page :
    http://www.riverbankcomputing.co.uk/...#undoAvailable

    Je pense que c'est du coté de la classe Qundo....
    ça a l'air intéressant mais je ne sais pas comment l'utiliser...
    QUndoStack.push()

  7. #7
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Google l'omniscient m'a donné pour "pyqt+subclass+undo" le lien suivant qui a l'air en rapport avec ce que tu penses être une bonne solution : http://www.informit.com/articles/art...87104&seqNum=3 . Cela peut peut-être donner des idées.

  8. #8
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut
    oui en effet, cela semble correspondre, cependant, je me dis que je devrais pouvoir ajouter un point de sauvegarde sans réimplémenter toute la partie undo/redo du QTextEdit puisque par défaut on peut faire un undo.
    Mais pour cela il faudrait que je sache comment appeler les commandes (trouvée dans la classe QUndo) du framewok undo/redo de la classe QtextEdit.
    J'ai essayé un ".__dict__" pensant avoir les attributs de la classe mais c'est vide...

  9. #9
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Une autre piste pour les undo/redo : http://qt-quarterly.developpez.com/q...edo-avec-vues/ .

Discussions similaires

  1. Ajouter les fonctions undo et redo
    Par lass7 dans le forum Android
    Réponses: 37
    Dernier message: 21/01/2015, 11h54
  2. Réponses: 5
    Dernier message: 13/03/2012, 14h36
  3. Réponses: 1
    Dernier message: 15/01/2011, 12h49
  4. [Eclipse plug-in]Limite des opérations d'Undo/Redo
    Par Gueritarish dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 20/07/2009, 11h38
  5. Ajout des fonctions a l'étape Execution Script java
    Par Rachid24 dans le forum kettle/PDI
    Réponses: 1
    Dernier message: 16/12/2008, 12h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo