Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#26 Le 24/02/2009, à 18:19

sbig77

Re : pylote : un logiciel pour TBI

Juste un petit message pour te signaler que la dernière archive que tu as uploadée est corrompue, je ne peux pas l'ouvrir.

Hors ligne

#27 Le 24/02/2009, à 20:14

EdLeH

Re : pylote : un logiciel pour TBI

sbig77 a écrit :

Juste un petit message pour te signaler que la dernière archive que tu as uploadée est corrompue, je ne peux pas l'ouvrir.

finalement ça tombe pas si mal ; j'en ai profité pour intégrer tes améliorations...
Prends la version "sans demo" ; l'autre n'est pas encore uploadée.

Le double-clic : très bonne idée.
J'ai un peu adapté car il gérait déjà l'édition des textes et noms de points. Au passage, il faut sortir du mode création de texte ou de point pour que ça fonctionne.
Cela peut être arrangé en gérant un délai pour distinguer le simple du double clic (je l'ai fait pour la trayicon).

La modif de "calculDecalage" est faite, et j'ai décommenté aussi dans la fonction "resizeEvent" (c'est sité juste au-dessus) la partie qui enlève les bordures sous windows. Par contre, je ne peux pas tester pour l'instant ; je te laisse faire s'il y a des modifs à faire...

En tout cas, je vois que tu prends goût à Python ; c'est bien et tu as l'air d'apprendre vite.

O-

Hors ligne

#28 Le 24/02/2009, à 20:45

sbig77

Re : pylote : un logiciel pour TBI

J'ai jeté de nouveau un coup d'oeil au logiciel que j'utilisais jusqu'ici au collège et qui était fourni avec le TNI. En fait, sur mon crayon, il y a 3 boutons dont un qui servait à faire apparaitre et disparaître la palette d'outils et je viens de remarquer que ceux-ci sont paramétrables donc, si tu préfères, tu peux affecter la disparition de la palette d'outils au clic du milieu pour éviter les interactions. Le seul souci c'est que cela ne fonctionnera pas avec la wiimote.

Pour ce qui est de Python, j'avais déjà lu 2 ou 3 trucs il y a quelques temps et cela faisait un moment que je voulais me mettre à un langage de programmation car j'avais travaillé pas mal sur flash et actionscript à une époque (voir mon site) mais cela limite aux applications web. J'avais donc déjà des bonnes bases en programmation mais tu m'as donné l'occasion de me mettre à python et surtout pyQt (pour lequel, je t'avoue que j'ai encore du mal à tout saisir).

Je m'en vais tester cette dernière version et je te tiens au courant.

@+

Hors ligne

#29 Le 25/02/2009, à 10:53

sbig77

Re : pylote : un logiciel pour TBI

Salut,

J'ai refais pas mal de test sous windows pour tester cet histoire d'emplacement de fenêtre. Je crois qu'il n'y a pas de solution. En effet, lorsqu'on supprime la barre de fenêtre, elle est seulement masquée et la fenêtre refuse de s'afficher plus haut ce qui laisse donc apparaître un blanc au dessus (à l'emplacement de l'ancienne fenêtre). J'ai essayé avec self.move() et self.setGeometry() de déplacer la fenêtre vers le haut mais elle ne veut pas sad .
La seule solution est de laisser la barre affichée en fullspace (donc de recommenter ou supprimer les lignes dans resizeEvent). Avec les boutons fullscreen et minimize que tu as ajoutés, cela ne pose plus de problème.

Sinon, tout semble fonctionner à part un petit détail, lorsqu'on modifie la forme de la fenêtre d'outils et qu'on la cache, lorsqu'on la fait réapparaître, elle reprend sa forme initiale mais je pense savoir comment corriger le problème. Je m'y attelle aujourd'hui et je te tiens au courant si je n'y arrive pas.

@+

Dernière modification par sbig77 (Le 25/02/2009, à 10:58)

Hors ligne

#30 Le 25/02/2009, à 11:49

EdLeH

Re : pylote : un logiciel pour TBI

salut,

quelle horreur : j'ai dû passer un peu de temps avec xp, et vraiment c'est moche et tous ces double-clics et le copier-coller qui ne marche pas via la molette (je me suis fait avoir au moins 10 fois)...

bon ; j'ai une demi-solution bancale :

la fenêtre est maintenant bien positionnée.
C'est bien les bordures qui bloquent. J'arrive à les masquer, mais elles restent là apparemment.
J'ai réussi à repositionner après moultes essais, mais par contre la fenêtre ne va plus jusqu'en bas (la zone qui manque correspond à cette *** de barre de titre).

voici les changements :

    def calculDecalage(self):
        ...
        elif SCREENMODE == "FULLSPACE" :
            # Position de la fenêtre en fonction de l'os
            rect = QtGui.QApplication.desktop().availableGeometry()
            if sys.platform == 'win32':
                self.decalX = rect.x()
                self.decalY = rect.y()
            else :
                self.decalX = rect.x() + (rect.width() - self.width())/2
                self.decalY = rect.y() + (rect.height() - self.height())/2                
            self.move(self.decalX, self.decalY)
            self.decalX = self.decalX + self.width()/2 - self.view.getContentsMargins()[0]/2
            self.decalY = self.decalY + self.height()/2 - self.view.getContentsMargins()[1]/2

devient :

    def calculDecalage(self):
        ...
        elif SCREENMODE == "FULLSPACE" :
            # Position de la fenêtre en fonction de l'os
            rect = QtGui.QApplication.desktop().availableGeometry()
            if sys.platform == 'win32':
                self.decalX = rect.x()
                self.decalY = rect.y()
                self. moveIfWin()
            else :
                self.decalX = rect.x() + (rect.width() - self.width())/2
                self.decalY = rect.y() + (rect.height() - self.height())/2                
                self.move(self.decalX, self.decalY)
            self.decalX = self.decalX + self.width()/2 - self.view.getContentsMargins()[0]/2
            self.decalY = self.decalY + self.height()/2 - self.view.getContentsMargins()[1]/2
        ...

La fonction "moveIfWin" est placée après "doRestore" (qui a aussi besoin de l'appeler) :

    def doRestore(self):
        ...

devient :

    def doRestore(self):
        ...
        if sys.platform == 'win32':
            self.moveIfWin()

    def moveIfWin(self):
        if SCREENMODE == "FULLSPACE" :
            origine = self.mapToGlobal(QtCore.QPoint(0, 0))
            print origine
            rect = QtGui.QApplication.desktop().availableGeometry()
            print self.view.getContentsMargins()[0]
            marge = (3 * self.view.getContentsMargins()[0],
                     3 * self.view.getContentsMargins()[1])
            print marge
            """
            self.move(rect.x() - origine.x() - marge[0],
                      rect.y() - origine.y() - marge[1])
            """
            a = 4
            self.move(rect.x() - origine.x() - a,
                      rect.y() - origine.y() - a)

Comme tu peux le voir, le "4" est la valeur qui a l'air de marcher, mais c'est là que c'est bancal.
Je n'arrive pas à calculer cette valeur (voir les essais de "marge") qui a l'air d'être liée aux bordures des fenêtres, et risque de dépendre du thème (et de ne pas toujours être 4).

En attendant mieux, on peut forcer le mode "FULLSCREEN" pour windows au premier lancement :

    if SCREENMODE != "TESTS" :
        settings = QtCore.QSettings(utils.PROGNAME, "config")
            SCREENMODE = settings.value("SCREENMODE", QtCore.QVariant("FULLSPACE")).toString()

devient :

    if SCREENMODE != "TESTS" :
        settings = QtCore.QSettings(utils.PROGNAME, "config")
        if sys.platform == 'win32':
            SCREENMODE = settings.value("SCREENMODE", QtCore.QVariant("FULLSCREEN")).toString()
        else :
            SCREENMODE = settings.value("SCREENMODE", QtCore.QVariant("FULLSPACE")).toString()

Rien à voir mais j'avais oublié le premier point lors des tracés de courbes :

    def initCurve(self, startPoint):
        ...
        #pour faire la courbe finale :
        self.listPoints = []

devient :

    def initCurve(self, startPoint):
        ...
        #pour faire la courbe finale :
        self.listPoints = []
        self.listPoints.append(startPoint)

Sinon j'ai commencé à intégrer la différence simple ou double clic (problème pour les textes, les noms de points et les images) et ça vient.

O-

Hors ligne

#31 Le 25/02/2009, à 13:58

sbig77

Re : pylote : un logiciel pour TBI

Salut,

Je pense personnellement que le mieux, c'est de laisser en "fullspace" avec la barre de la fenêtre présente (qui finalement n'est pas si gênante que cela) et avec le bouton fullscreen, chacun reste libre de l'activer si besoin.

Sinon, j'ai travaillé sur cette histoire de dimension de la barre d'outils, ce n'était pas excessivement difficile, la fonction mouseDoubleClickEvent devient :

def mouseDoubleClickEvent(self, event):
        """
        Si le double-clic est fait sur un texte ou le label d'un point,
            il permet de l'éditer.
        Sinon, il permet de cacher/afficher la barre d'outil
        """
        #Initialisation de dimToolsWindow
        dimToolsWindow=self.main.toolsWindow.geometry()
        if self.main.editText() == False :
            if self.main.toolsWindow.isVisible() :
                dimToolsWindow=self.main.toolsWindow.geometry()
                self.main.toolsWindow.hide()
            else :
                self.main.toolsWindow.show()
                self.main.toolsWindow.setGeometry(dimToolsWindow)

Sinon, j'ai vu aussi pour sauvegarder ces dimensions avec les SETTINGS, en fait, tu avais sauvegardé la position, mais on peut aussi sauvegarder les dimensions en modifiant (j'ai commenté ce qu'il y avait précédemment) :

#self.toolsWindow.move(self.toolsWindowPos)
        self.toolsWindow.setGeometry(self.toolsWindowGeometry)

dans la classe MainWindow

#self.toolsWindowPos = settings.value("toolsWindowPos", 
        #                        QtCore.QVariant(QtCore.QPoint(10, 10))).toPoint()
        self.toolsWindowGeometry = settings.value("toolsWindowGeometry", 
                                QtCore.QVariant(QtCore.QRect(91, 128, 179, 162))).toRect()

dans readSettings

et :

#settings.setValue("toolsWindowPos",QtCore.QVariant(self.toolsWindow.pos()))
        settings.setValue("toolsWindowGeometry", QtCore.QVariant(self.toolsWindow.geometry()))

dans write settings.

Il ne me reste qu'un tout petit soucis, qui est qu'il ne restaure pas la hauteur de la fenêtre d'outils lorqu'on relance l'application, elle est plus haute. En cherchant un peu dans le code, j'ai cru comprendre qu'à un moment, tu impose une hauteur minimale à la fenêtre d'outils mais je n'ai pas trouvé comment résoudre ce problème. Je m'en remet à toi.

@+

Hors ligne

#32 Le 25/02/2009, à 17:14

EdLeH

Re : pylote : un logiciel pour TBI

Je crois que ça y est...

toolsWindowGeometry intégré comme tu le suggères ; merci encore.
Pour la restauration (self.toolsWindow.setGeometry(self.toolsWindowGeometry)), j'ai compris au bout d'un moment qu'il fallait le faire après la fonction init.

Du coup, je l'ai mis à la fin de la fonction "firstScreenShot", et ça fonctionne.

Par ailleurs, j'ai séparé les fonctions doMinimize et doRestore en 2, en ajoutant des doMinimizeToolsWindow et doRestoreToolsWindow.

La mise à jour est faite.

O-

Hors ligne

#33 Le 25/02/2009, à 20:53

sbig77

Re : pylote : un logiciel pour TBI

Juste pour savoir si tu avais mis ces dernières mises à jour sur la version de ton site ?
Je viens de la télécharger mais je n'ai pas vu de différence mais, je me suis peut-être emmêlé les pieds (ou plutôt les doigts wink ) avec toutes les versions et les essais que j'ai fais moi-même !!!

@+

Hors ligne

#34 Le 25/02/2009, à 21:38

EdLeH

Re : pylote : un logiciel pour TBI

sbig77 a écrit :

Juste pour savoir si tu avais mis ces dernières mises à jour sur la version de ton site ?
Je viens de la télécharger mais je n'ai pas vu de différence mais, je me suis peut-être emmêlé les pieds (ou plutôt les doigts wink ) avec toutes les versions et les essais que j'ai fais moi-même !!!
@+

oui j'ai mis à jour vers 19h30.
Juste avant, j'ai ajouté, dans la partie "MainWindow", des commentaires dans le code, et un peu réorganisé l'ordre des fonctions qui commençait à devenir n'importe quoi.

O-

Hors ligne

#35 Le 26/02/2009, à 11:39

sbig77

Re : pylote : un logiciel pour TBI

Salut,

Hier, j'avais téléchargé un peu tôt l'archive, c'est pour cela que je n'avais pas la dernière version. Cela ressemble à un vrai logiciel professionnel. Honnêtement, j'aurais plus de possibilités avec ce logiciel qu'avec celui qui m'était fournit par le TNI au collège.

En revanche, il reste encore deux petits bugs que j'ai remarqués ce matin en testant rapidement :
1) Lorsqu'on est en mode curseur et qu'on active le "faux curseur", celui-ci ne bouge pas, si on clique, il reste figé à cet emplacement. Je pense qu'il faudrait carrément désactiver le faux curseur dans ce cas.
2) Il est très difficile de sélectionner les segments tracés (de part leur finesse, je pense), il faudrait peut-être rendre la zone cliquable plus importante.
3) Cette fois-ci, ce n'est pas un bug mais une suggestion, la police par défaut des textes et des noms de point est petite proportionnellement à la taille des points par exemple, il faudrait, par défaut la mettre plus grande (et pourquoi pas sauvegarder sa taille dans les settings) en taille 14, c'est pas mal.

Sinon, je vais uploader la version pour windows sur mon site dans la matinée (pour ceux que cela intéresse et qui n'ont pas relu toute la discussion http:\\cdpmaths.free.fr\pylote\pylote.zip )

@+

Dernière modification par sbig77 (Le 01/11/2009, à 21:17)

Hors ligne

#36 Le 26/02/2009, à 17:05

EdLeH

Re : pylote : un logiciel pour TBI

salut,

version "sans démo" à jour ; version complète en cours d'upload...

sbig77 a écrit :

1) Lorsqu'on est en mode curseur et qu'on active le "faux curseur", celui-ci ne bouge pas, si on clique, il reste figé à cet emplacement. Je pense qu'il faudrait carrément désactiver le faux curseur dans ce cas.

un bug (oubli d'une ligne de code) à force de copiés-collés trop rapides :

    def mouseMoveEvent(self, event):
        ...
        if withFalseCursor :
            self.main.myCursor.setPos(point.x(), point.y())
            if self.cursor() != QtCore.Qt.BlankCursor :
                self.setCursor(QtCore.Qt.BlankCursor)
        ...

    def mouseMoveEvent(self, event):
        ...
        if withFalseCursor :
            point = self.mapToScene(event.pos())
            self.main.myCursor.setPos(point.x(), point.y())
            if self.cursor() != QtCore.Qt.BlankCursor :
                self.setCursor(QtCore.Qt.BlankCursor)
        ...
sbig77 a écrit :

2) Il est très difficile de sélectionner les segments tracés (de part leur finesse, je pense), il faudrait peut-être rendre la zone cliquable plus importante.

Ce serait trop difficile à faire il me semble ; après tout, ce n'est pas un programme de PAO.



sbig77 a écrit :

3) Cette fois-ci, ce n'est pas un bug mais une suggestion, la police par défaut des textes et des noms de point est petite proportionnellement à la taille des points par exemple, il faudrait, par défaut la mettre plus grande (et pourquoi pas sauvegarder sa taille dans les settings) en taille 14, c'est pas mal.

Bonne idée ; j'ai suivi ton conseil pour la taille par défaut, et mis dans les settings la police, la couleur et l'épaisseur des traits.



sbig77 a écrit :

4) Là, c'est une petite doléance. Dans les crédits, au lieu de mettre mon pseudo mettre mon nom et mon prénom (sylvain bignon) et, si je n'abuse pas trop, peux-tu mettre l'adresse de mon site dédié aux maths (http:\\cdpmaths.free.fr). En tout cas, merci de me citer !

C'est corrigé. C'est normal que je te remercie pour tout le travail que tu as fait.



Quelques liens pyqt :

les nombreux exemples pyqt (paquet python-qt4-doc)

http://doc.trolltech.com/4.4/index.html   (en particulier le lien "All Classes")
fait référence au C, mais c'est pas trop difficile à traduire en python.

http://www.qtfr.org/ et son forum

Le livre "Rapid GUI Programming With Python and Qt" :
http://www.amazon.fr/Rapid-GUI-Programm … 0132354187
une présentation en Français :
http://doc.qtfr.org/post/2007/11/25/Rap … hon-and-Qt

O-

Hors ligne

#37 Le 26/02/2009, à 20:43

sbig77

Re : pylote : un logiciel pour TBI

La nouvelle version windows (corrigée) est en ligne sur mon site mais je crois que cette fois-ci tu vas pourvoir considérer que tu en es à la version 1.0 au lieu du 0.00000000000001 .

Sans rire, comme je l'ai déjà écris plus haut, ce logiciel peut rivaliser avec certains logiciels de fabricants de TNI sans soucis...

D'autre part, merci pour les liens, je vais creuser un peu tout cela car j'ai quelques petites idées de logiciel. D'ailleurs, à ce sujet, connais-tu wxPython, est-ce mieux, moins bien ou tout simplement différent de pyQt ?

En tous cas, j'ai pris beaucoup de plaisir à bosser sur ton logiciel vu le résultat obtenu et je vais l'essayer dès lundi avec mes élèves avant de faire une petite démo à mes collègues et de faire de la pub sur l'académie de Créteil.

@+

Hors ligne

#38 Le 26/02/2009, à 22:19

EdLeH

Re : pylote : un logiciel pour TBI

salut,

je mettrai un lien vers ton site depuis le mien dès que j'ai le courage de mettre à jour la page.

Pour le numéro de version, je pense le laisser encore un peu à "Jean Mineur", car il manque encore :

* un fichier d'aide complet et clair (même si les utilisateurs ne le lisent pas en général)

* une traduction des commentaires du code et du fichier d'aide (celui qui n'est pas encore fait) en Anglais, car c'est nécesssaire pour internationaliser un logiciel.

Ce n'est plus du code, mais c'est quant même du boulot...

wxPython, pygtk ou pyqt : je pense que c'est plus une question de goût et de hasard.
Je me sens plus à l'aise avec pyqt, mais c'est aussi parceque j'ai progressé en python.
Le meilleur ToolKit, c'est celui que tu sais utiliser.
Ce genre de sujet, c'est un peu comme de savoir si kde est mieux que gnome...

bonne rentrée...

O-

Hors ligne

#39 Le 03/03/2009, à 20:55

EdLeH

Re : pylote : un logiciel pour TBI

bonsoir,

une mise à jour sans vraiment de modifications concernant le code.

C'est surtout l'"anglicisation" qui a été faite (noms des instruments que j'ai découverts au passage, page de présentation, ...)

J'ai corrigé une erreur balotte dans les crédits pour les liens vers le site de sbig77 (les "/" étaient à l'envers ; cochonneries de copier-collers sans vérification...).


O-

Hors ligne

#40 Le 04/03/2009, à 14:34

sbig77

Re : pylote : un logiciel pour TBI

Salut à toi,

J'ai commencé à utiliser pylote en "live" avec mes élèves. Du coup, forcément, il y a qqes petits points liés à l'ergonomie, à améliorer car, avec le stylet du TNI, ce n'est pas tout à fait comme avec la souris :
- lorsqu'on sélectionne le curseur, il faudrait, automatiquement déselectionner les outils de tracé (crayons, texte, points ...)
- inversement, lorsque les crayons sont sélectionnés, il faudrait ne pas pouvoir bouger les outils. En effet, j'ai eu plusieurs fois le problème en voulant tracer un segment le long de la règle ou de l'équerre que ce soit l'outil qui se sélectionne et se déplace.
- Enfin, même si c'est un peu moins urgent, il pourrait être pratique d'avoir un bouton permettant de lancer le clavier virtuel (qui pourrait n'apparaître que sous windows) ou alors avec une commande différente pour kvkbd sous linux à condition qu'il soit installé.
Voilà pour mes premières remarques après qqes jours d'utilisation. Je pense aussi qu'il faudra retravailler les inscriptions sur les outils car elles ne sont pas très visibles lorsqu'on projette en 800x600. Si tu veux, je m'y collerais dès que j'aurais un peu de temps.

Bon courage
@ +

Hors ligne

#41 Le 07/03/2009, à 11:32

EdLeH

Re : pylote : un logiciel pour TBI

salut,
profitons d'un week-end pluvieux...


sbig77 a écrit :

- lorsqu'on sélectionne le curseur, il faudrait, automatiquement déselectionner les outils de tracé (crayons, texte, points ...)

Ci fait ; je comprends que ce faux curseur te servant avec le bouton du stylet maintenu, tu ne souhaites pas barbouiller l'écran en même temps.
Par contre, j'ai laissé la possibilité, après le faux curseur sélectionné, de reprendre ces outils en plus.
Je posterai la mise à jour après ta réponse concernant le point suivant.

sbig77 a écrit :

- inversement, lorsque les crayons sont sélectionnés, il faudrait ne pas pouvoir bouger les outils. En effet, j'ai eu plusieurs fois le problème en voulant tracer un segment le long de la règle ou de l'équerre que ce soit l'outil qui se sélectionne et se déplace.

Je pense ajouter un bouton dans la barre "TBI" permettant de basculer vers un tel mode, car inversement, on pourrait trouver gonflant de devoir désélectionner l'outil en cours pour déplacer un instrument, pour le resélectionner ensuite. Cela conviendrait-il ?


sbig77 a écrit :

- Enfin, même si c'est un peu moins urgent, il pourrait être pratique d'avoir un bouton permettant de lancer le clavier virtuel (qui pourrait n'apparaître que sous windows) ou alors avec une commande différente pour kvkbd sous linux à condition qu'il soit installé.

Là j'avoue ne pas en comprendre l'intérêt.
Il y a plusieurs logiciels de clavier virtuel possibles, et il suffit de lancer celui qu'on utilise en parallèle à pylote (j'ai testé avec kvkbd, et ça fonctionne bien pour remplir un texte ou le nom d'un point).
Et pour être honnête, si le clavier virtuel de windows marche un peu moins bien, ce n'est pas pour me déplaire ...


sbig77 a écrit :

Je pense aussi qu'il faudra retravailler les inscriptions sur les outils car elles ne sont pas très visibles lorsqu'on projette en 800x600. Si tu veux, je m'y collerais dès que j'aurais un peu de temps.

Si tu veux, j'avais fait une extension pour Inkscape pour créer automatiquement les graduations de la règle et du rapporteur, avec les valeurs (je n'ai pas réussi à faire se positionner correctement celles du rapporteur, par contre elles sont sous le bon angle ; il reste à les placer à la main ensuite).



O-
Pascal

Hors ligne

#42 Le 11/03/2009, à 16:17

sbig77

Re : pylote : un logiciel pour TBI

Salut,

J'ai mis un peu de temps à répondre mais, la rentrée étant là, le travail aussi...

Pour ce qui est du bouton pour lancer le clavier virtuel, cela vient du fait que je suis un peu étourdi (j'oubli toujours de lancer le clavier avant pylote) et comme, je suis obligé de mettre pylote en plein écran, il faut que je le réduise afin de pouvoir accéder aux menu. De plus, il était présent dans le logiciel livré avec mon TNI (on prend vite des habitudes) mais, je comprends que tu ne veuilles pas alourdir pylote en rajoutant des tonnes de boutons.

Pour l'ajout du bouton dans la barre TBI, cela me convient tout à fait, car, finalement, je m'habitue et je suis de plus en plus à l'aise avec pylote. J'ai passé la taille des "traits" en 2px et c'est déjà beaucoup plus facile. En ce moment, je travaille les symétries avec mes sixièmes et je fais toutes mes figures à l'aide de pylote, c'est vraiment génial !!!

Pour le rapporteur, je n'ai pas encore eu le temps de m'y plonger mais, j'ai réutilisé mathenpoche avec mes élèves et, ce logiciel (libre) contient déjà un rapporteur très bien fait. Je jetterais surement un coup d'oeil pour m'en inspirer.

@+

Sylvain

Hors ligne

#43 Le 11/03/2009, à 20:34

EdLeH

Re : pylote : un logiciel pour TBI

Ça y est ; mise à jour effectuée...

sbig77 a écrit :

J'ai mis un peu de temps à répondre mais, la rentrée étant là, le travail aussi...

on est dans la même zone et je confirme...

sbig77 a écrit :

Pour l'ajout du bouton dans la barre TBI, cela me convient tout à fait, car, finalement, je m'habitue et je suis de plus en plus à l'aise avec pylote. J'ai passé la taille des "traits" en 2px et c'est déjà beaucoup plus facile. En ce moment, je travaille les symétries avec mes sixièmes et je fais toutes mes figures à l'aide de pylote, c'est vraiment génial !!!

Le bouton enfoncé bloque l'utilisation des instruments. On les libère en le désactivant.

sbig77 a écrit :

Pour le rapporteur, je n'ai pas encore eu le temps de m'y plonger mais, j'ai réutilisé mathenpoche avec mes élèves et, ce logiciel (libre) contient déjà un rapporteur très bien fait. Je jetterais surement un coup d'oeil pour m'en inspirer.

Attention : instrumentpoche lui n'est pas libre, et je ne sais pas pour les images des instruments.
Il faudrait poser la question sur le forum de mathenPoche.
Sinon, j'ai mis le script inkscape dans un sous-dossier de "images".

Pour finir : j'ai ajouté la possibilité de changer le style des lignes (pointillés etc) car j'en ai eu besoin avec mes sixièmes (perspective).

Dès que la doc est terminée, je passerai brutalement en version 1.0 (finie la si jolie version Jean Mineur) et ferai un peu de pub (je ne sais pas trop où d'ailleurs).

O-

Hors ligne

#44 Le 24/03/2009, à 11:11

sbig77

Re : pylote : un logiciel pour TBI

Salut,

Je viens de prendre le temps de compiler la dernière version mise en ligne, elle sera dispo sur mon site dès demain (après midi je pense) car je suis au collège et je n'ai pas accès aux serveurs ftp d'ici.

Sinon, j'ai une autre proposition d'amélioration mais je ne sais pas si c'est faisable facilement. Au collège j'utilise une extension de mon moniteur sur le vidéoprojecteur. Ce qui me permet de projeter aux élèves des docs et de préparer la suite sur mon ordi sans qu'ils ne le voient. Serait-il possible, à ton avis, de pouvoir choisir le moniteur utilisé par pylote. Sachant que pour l'instant il se met par défaut sur le moniteur principal et que cela m'arrangerait de le mettre sur le moniteur secondaire (vidéoproj).

@+

Hors ligne

#45 Le 29/03/2009, à 15:52

EdLeH

Re : pylote : un logiciel pour TBI

Délolé d'avoir tardé à répondre mais j'étais débordé.

sbig77 a écrit :

Sinon, j'ai une autre proposition d'amélioration mais je ne sais pas si c'est faisable facilement. Au collège j'utilise une extension de mon moniteur sur le vidéoprojecteur. Ce qui me permet de projeter aux élèves des docs et de préparer la suite sur mon ordi sans qu'ils ne le voient. Serait-il possible, à ton avis, de pouvoir choisir le moniteur utilisé par pylote. Sachant que pour l'instant il se met par défaut sur le moniteur principal et que cela m'arrangerait de le mettre sur le moniteur secondaire (vidéoproj).

Je ne sais pas trop comment faire, et n'ai pas de quoi tester cela sous le coude.
Je pensais naïvement que le programme fonctionnerait sur l'écran d'où on le lance.

Pourrais-tu tester ces 2 programmes :

http://pascal.peter.free.fr/000/screenshot.py.tar.gz
C'est l'exemple de la doc Qt dont je me suis inspiré au départ.
Vois si c'est pareil, ou si tu peux faire des screenshots de ton deuxième écran.

http://pascal.peter.free.fr/000/tests.py.tar.gz
Ça c'est juste un machin que j'ai vite fait pour tester le retour de quelques fonctions (en particulier ce que renvoie "numScreens").

Il faudra sûrement l'adapter ensuite, tout en lisant la doc Qt :
http://doc.trolltech.com/4.4/qdesktopwidget.html

O-

Hors ligne

#46 Le 30/03/2009, à 09:06

sbig77

Re : pylote : un logiciel pour TBI

Salut,

Je viens de tester tout cela au collège.

Pour le logiciel de screenshot de la doc QT, je n'ai pu faire qu'un scrennshot du premier écran (principal), si j'ai un peu de temps ce soir, j'essaierais de me plonger dans le code pour tenter de faire un screenshot du deuxième écran (secondaire).

Sinon, ton petit programme me renvoi, avec les 2 écrans activés :
winID : "rien du tout"
numScreens : 2
isVirtualDesktop : True

D'autre part, pour pylote, il se lance bien sur le bon écran (c'est à dire celui depuis lequel il a été lancé) mais, il me fait toujours un screenshot de l'écran principal.

Bonne journée et je te tiens au courant.

Hors ligne

#47 Le 30/03/2009, à 11:08

EdLeH

Re : pylote : un logiciel pour TBI

Salut,

la ligne magique à modifier dans Pylote est la 1659 (correspondant à la ligne 84 de l'exemple screenshot) :

self.backgroundPixmap = QtGui.QPixmap.grabWindow(QtGui.QApplication.desktop().winId())

La fonction grabWindow crèe une image de l'objet dont on passe l'identifiant.
L'identifiant du bureau est retourné par "QtGui.QApplication.desktop().winId()".

Soit il faut donner le bon identifiant, s'il y en a un pour chaque écran, soit il faut passer les coordonnées de la partie correspondant au deuxième écran à la fonction "grabWindow".

Pourrais-tu modifier le programme de tests comme suit (ajout de lignes) :

winId = QtGui.QApplication.desktop().winId()
numScreens = QtGui.QApplication.desktop().numScreens()
isVirtualDesktop = QtGui.QApplication.desktop().isVirtualDesktop()
effectiveWinId = QtGui.QApplication.desktop().effectiveWinId()
screenNumber = QtGui.QApplication.desktop().screenNumber()
primaryScreen = QtGui.QApplication.desktop().primaryScreen()
primaryScreenId = QtGui.QApplication.desktop().screen(primaryScreen).winId()

MESSAGE = ""
MESSAGE = MESSAGE + "<P><B>winId : </B>" + str(winId) + "</P>"
MESSAGE = MESSAGE + "<P><B>numScreens : </B>" + str(numScreens) + "</P>"
MESSAGE = MESSAGE + "<P><B>isVirtualDesktop : </B>" + str(isVirtualDesktop) + "</P>"
MESSAGE = MESSAGE + "<P><B>effectiveWinId : </B>" + str(effectiveWinId) + "</P>"
MESSAGE = MESSAGE + "<P><B>screenNumber : </B>" + str(screenNumber) + "</P>"
MESSAGE = MESSAGE + "<P><B>primaryScreen : </B>" + str(primaryScreen) + "</P>"
MESSAGE = MESSAGE + "<P><B>primaryScreenId : </B>" + str(primaryScreenId) + "</P>"

for i in range(numScreens) :
    r = QtGui.QApplication.desktop().screenGeometry(i)
    MESSAGE = MESSAGE + "<P><B>Ecran " + str(i) + " : </B>" + str(r) + "</P>"
    s = QtGui.QApplication.desktop().screen(i).winId()
    MESSAGE = MESSAGE + "<P><B>winId Ecran " + str(i) + " : </B>" + str(s) + "</P>"

Si primaryScreenId semble correspondre au deuxième écran, il faudrait mettre :

primaryScreen = QtGui.QApplication.desktop().primaryScreen()
primaryScreenId = QtGui.QApplication.desktop().screen(primaryScreen).winId()
self.backgroundPixmap = QtGui.QPixmap.grabWindow(primaryScreenId)

Sinon, il faudrait repérer les retours des "QtGui.QApplication.desktop().screenGeometry(i)".

Si la première solution marche, c'est tant mieux car ça a l'air plus simple...

O-

Hors ligne

#48 Le 30/03/2009, à 12:58

sbig77

Re : pylote : un logiciel pour TBI

Je viens tout juste de lire ton post et j'en était arrivé à la même conclusion en étudiant le code ce matin. J'ai réussi à effectuer un screenshot de l'écran secondaire en utilisant screenGeometry().
Voici le code que j'ai utilisé :

numecran=1 ##0 pour l'écran principal et 1 pour l'écran secondaire
dimecran=QtGui.QApplication.desktop().screenGeometry(numecran)##permet de récupérer l'emplacement de l'écran et ses dimensions   
self.originalPixmap = QtGui.QPixmap.grabWindow(QtGui.QApplication.desktop().winId(),dimecran.x(),dimecran.y(),dimecran.width(),dimecran.height())

Je pense, qu'au moment du lancement de pylote, il faudrait tester le nombre d'écrans et le cas échéant demander duquel l'utilisateur souhaite faire un screenshot.

@+

Dernière modification par sbig77 (Le 30/03/2009, à 13:48)

Hors ligne

#49 Le 30/03/2009, à 14:03

sbig77

Re : pylote : un logiciel pour TBI

Re-salut,
Je viens de tester le nouveau prog de test avec ce que tu viens de me donner :
J'obtiens :
winId : rien
numScreens : 2
isvirtulaDesktop : True
screenNumber : 0
PrimaryScreen : 0
PrimaryScreenId : rien
Ecran 0 : PyQt4.QtCore.QRect(0,0,1024,600)
winId Ecran 0 :rien
Ecran 1 :PyQt4.QtCore.QRect(1024,0,1024,768)
winId Ecran 1 :rien

Cela correspond bien à ce que j'avais observé précédemment. Pour moi, la seule solution est d'utiliser screenGeometry().

Hors ligne

#50 Le 01/04/2009, à 17:46

EdLeH

Re : pylote : un logiciel pour TBI

Salut,

je viens de faire une modification dont j'ai vite ressenti le besoin à l'utilisation :

il y a maintenant une suite de 5 boutons qui sont des stylos réglables par l'utilisateurs, et sauvegardés losqu'on quitte. Par défaut, c'est le stylo 1 qui est sélectionné.

Cela devrait faire gagner du temps losqu'il faut passer d'un stylo à un autre souvent.

sbig77 a écrit :

numScreens : 2
isvirtulaDesktop : True
screenNumber : 0
PrimaryScreen : 0
PrimaryScreenId : rien
Ecran 0 : PyQt4.QtCore.QRect(0,0,1024,600)
winId Ecran 0 :rien
Ecran 1 :PyQt4.QtCore.QRect(1024,0,1024,768)
winId Ecran 1 :rien

Cela correspond bien à ce que j'avais observé précédemment. Pour moi, la seule solution est d'utiliser screenGeometry().

C'est bien cela. Juste une chose : l'as-tu testé en lançant sur le deuxième écran ?
Car ce qui me chagrine c'est le "PrimaryScreen : 0" ; ce serait bien qu'on détecte au lancement l'écran sur lequel pylote est lancé, afin d'éviter de demander de choisir.

O-

Hors ligne

Haut de page ↑