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-