Skip to content

Commit

Permalink
Amélioration génération grilles PDF
Browse files Browse the repository at this point in the history
  • Loading branch information
cedrick-f committed Apr 29, 2020
1 parent e52aca2 commit 5d5ebe1
Show file tree
Hide file tree
Showing 5 changed files with 178 additions and 110 deletions.
28 changes: 18 additions & 10 deletions src/genpdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -635,7 +635,7 @@ def genererDossierValidation(nomFichier, projet, fenDoc):


def genererGrillePDF(nomFichier, grilles_feuilles):
print("genererGrillePDF")
# print("genererGrillePDF")
# print grilles_feuilles

wx.BeginBusyCursor()
Expand All @@ -651,13 +651,15 @@ def genererGrillePDF(nomFichier, grilles_feuilles):
g = []
for i, grille_feuille in enumerate(grilles_feuilles):
grille, feuille = grille_feuille
print(" ", grille, feuille)
# print(" ", grille, feuille)
try:
grille = grilles.PyExcel(grille)
except Exception as err:
wx.EndBusyCursor()
messageErreur(wx.GetTopLevelParent(), "Erreur !", "{0}".format(err))
return False
except Exception as err: #pywintypes.com_error
# wx.EndBusyCursor()
# messageErreur(wx.GetTopLevelParent(wx.GetActiveWindow()), "Erreur !", "{0}".format(err))
messageErreur(wx.GetTopLevelWindows()[-1], "Erreur !", "{0}".format(err))
continue
# return False

g.append(grille)
if feuille is None:
Expand Down Expand Up @@ -702,12 +704,18 @@ def genererGrillePDF(nomFichier, grilles_feuilles):
if not Ok:
shutil.rmtree(dosstemp)
wx.EndBusyCursor()
messageErreur(self, "Erreur !",
messageErreur(wx.GetTopLevelWindows()[-1], "Erreur !",
"Impossible de générer le fichier PDF des grilles")
return False

doc.save(nomFichier)
doc.close()
try:
doc.save(nomFichier)
except:
Ok = False
messageErreur(wx.GetTopLevelWindows()[-1], "Erreur !",
"Impossible de générer le fichier PDF des grilles")
finally:
doc.close()
# output = open(nomFichier, "wb")
# merger.write(output)

Expand All @@ -717,7 +725,7 @@ def genererGrillePDF(nomFichier, grilles_feuilles):
print("Grilles temporaires non supprimées :", dosstemp)

wx.EndBusyCursor()
return True
return Ok
# read PDF files (.pdf) with wxPython
# using wx.lib.pdfwin.PDFWindow class ActiveX control
# from wxPython's new wx.activex module, this allows one
Expand Down
129 changes: 87 additions & 42 deletions src/lien.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import os, sys, subprocess
import wx
import re
from util_path import toFileEncoding, toSystemEncoding, SYSTEM_ENCODING, testRel
from util_path import toFileEncoding, toSystemEncoding, SYSTEM_ENCODING
from widgets import messageErreur, scaleImage, Grammaire
import images
from drag_file import *
Expand Down Expand Up @@ -100,13 +100,17 @@ def setPath(self, path):

######################################################################################
def __neq__(self, l):
if self.typ != l.typ:
if self.type != l.type:
return True
elif self.path != l.path:
return True
return False


######################################################################################
def __eq__(self, lien):
return self.path == lien.path


######################################################################################
def DialogCreer(self, pathref):
dlg = URLDialog(None, self, pathref)
Expand All @@ -117,8 +121,9 @@ def DialogCreer(self, pathref):
######################################################################################
def Afficher(self, pathref, fenSeq = None):
""" Lance l'affichage du contenu du lien
<pathref> = chemin de l'application pour d�terminer le chemin absolu
<pathref> = chemin de l'application pour déterminer le chemin absolu
"""
t = self.getTexte()
# print "Afficher", self.type, self.path
path = self.GetAbsPath(pathref)
# print " ", path
Expand All @@ -133,8 +138,8 @@ def Afficher(self, pathref, fenSeq = None):
messageErreur(None, "Ouverture impossible",
"Impossible d'ouvrir le fichier\n\n%s\n" %toSystemEncoding(path))
else:
messageErreur(None, "Chemin non trouv�",
"Le fichiern'a pas �t� trouv�\n\n%s" %toSystemEncoding(path))
messageErreur(None, "Chemin non trouvé",
"Le fichiern'a pas été trouvé\n\n%s" %toSystemEncoding(path))


elif self.type == 'd':
Expand All @@ -147,8 +152,8 @@ def Afficher(self, pathref, fenSeq = None):
# messageErreur(None, u"Ouverture impossible",
# u"Impossible d'acc�der au dossier\n\n%s\n" %toSystemEncoding(path))
else:
messageErreur(None, "Chemin non trouv�",
"Le dossiern'a pas �t� trouv�\n\n%s" %toSystemEncoding(path))
messageErreur(None, "Chemin non trouvé",
"Le dossiern'a pas été trouvé\n\n%s" %toSystemEncoding(path))


elif self.type == 'u':
Expand All @@ -166,33 +171,33 @@ def Afficher(self, pathref, fenSeq = None):
child = fenSeq.commandeNouveau()
child.ouvrir(path)


######################################################################################
def EvalTypeLien(self, pathref):
def isOk(self):
self.EvalTypeLien()
return self.ok


######################################################################################
def EvalTypeLien(self, pathref = ""):
""" Evaluation du de self.lien.path
par rapport à pathref
et attribue un type
"""
# print("EvalTypeLien\n ", self.path, "\n ", pathref)
# print(" ", os.path.commonpath([pathref, self.path]))



abspath = self.GetAbsPath(pathref)

# print(" ", abspath, self.abs)

if os.path.exists(abspath):
relpath = testRel(abspath, pathref)
if os.path.isfile(abspath):
self.type = 'f'

elif os.path.isdir(abspath):
self.type = 'd'

if not self.abs:
self.path = relpath
else:
self.path = abspath
# if not self.abs:
# self.path = relpath
# else:
# self.path = abspath

self.ok = True

Expand All @@ -203,7 +208,38 @@ def EvalTypeLien(self, pathref):
else:
self.type = ''
self.ok = False



return

# abspath = self.GetAbsPath(pathref)
#
# # print(" ", abspath, self.abs)
#
# if os.path.exists(abspath):
# relpath = testRel(abspath, pathref)
# print("relpath", relpath)
# if os.path.isfile(abspath):
# self.type = 'f'
#
# elif os.path.isdir(abspath):
# self.type = 'd'
#
# if not self.abs:
# self.path = relpath
# else:
# self.path = abspath
#
# self.ok = True
#
# elif re.match(regex, self.path):
# self.type = 'u'
# self.ok = True
#
# else:
# self.type = ''
# self.ok = False
#


######################################################################################
Expand Down Expand Up @@ -234,8 +270,8 @@ def GetAbsPath(self, pathdoc, path = None):
if path == None:
path = self.path

if path == ".":
return pathdoc
# if path == ".":
# return pathdoc

cwd = os.getcwd()
if pathdoc != "":
Expand Down Expand Up @@ -293,21 +329,40 @@ def GetRelPath(self, pathdoc, path = None):
return path


###############################################################################################
def getTexte(self):
if self.type == 'd':
t = "dossier(s)$m"
elif self.type == 'f':
t = "fichier(s)$m"
elif self.type == 'u':
t = "URL(s)$f"
else:
t = ""
return Grammaire(t)


######################################################################################
def getBranche(self, branche):
branche.set("Lien", toSystemEncoding(os.path.normpath(self.path)))
# branche.set("Lien", toSystemEncoding(os.path.normpath(self.path)))
branche.set("Lien", toSystemEncoding(self.path))
branche.set("TypeLien", self.type)
branche.set("Abs", str(self.abs))


######################################################################################
def setBranche(self, branche, pathdoc):
self.path = toFileEncoding(branche.get("Lien", r""))
self.path = os.path.normpath(self.path)
self.path = toFileEncoding(branche.get("Lien", ""))
if self.path == ".":
self.path = ""
# print("setBranche Lien", self.path)
# self.path = os.path.normpath(self.path)

self.type = branche.get("TypeLien", "")
self.abs = eval(branche.get("Abs", "False"))
if self.type == "" and self.path != r"":
if self.type == "" and self.path != "":
self.EvalTypeLien(pathdoc)
# print(" ", self.path)
return True


Expand Down Expand Up @@ -418,7 +473,7 @@ def __init__(self, parent, lien, pathref,
dossier : bool pour spécifier que le lien est un dossier
ext : Extension de fichier par défaut
"""
# print "init URLSelectorBase", pathref
# print("init URLSelectorBase", lien.path)

wx.Panel.__init__(self, parent, -1)
self.SetMaxSize((-1,22*SSCALE))
Expand All @@ -437,17 +492,7 @@ def __init__(self, parent, lien, pathref,
self.SetPathSeq(pathref)


###############################################################################################
def getTexte(self):
if self.lien.type == 'd':
t = "dossier(s)$m"
elif self.lien.type == 'f':
t = "fichier(s)$m"
elif self.lien.type == 'u':
t = "URL(s)$f"
else:
t = ""
return Grammaire(t)


###############################################################################################
def CreateSelector(self, dossier = True, btn_ouvrir = False):
Expand All @@ -458,7 +503,7 @@ def CreateSelector(self, dossier = True, btn_ouvrir = False):

sizer = wx.BoxSizer(wx.HORIZONTAL)
bsize = (16*SSCALE, 16*SSCALE)

# print(" ", self.lien.path)
self.texte = wx.TextCtrl(self, -1, toSystemEncoding(self.lien.path), size = (-1, bsize[1]))


Expand Down Expand Up @@ -514,7 +559,7 @@ def sendEvent(self):

###############################################################################################
def SetToolTipTexte(self):
t = self.getTexte()
t = self.lien.getTexte()
if self.lien.path == "":
self.texte.SetToolTip("Saisir un nom de fichier/dossier ou un URL\nou faire glisser un fichier")
elif self.lien.ok:
Expand Down Expand Up @@ -623,7 +668,7 @@ def SetPath(self, lien = None, typ = None, marquerModifier = False):
if lien is not None:
self.lien.path = lien
self.lien.EvalLien(lien, self.pathref)

# print(" ", self.lien.path)
try:
self.texte.ChangeValue(self.lien.path)
except: # Ca ne devrait pas arriver ... et pourtant �a arrive !
Expand Down
Loading

0 comments on commit 5d5ebe1

Please sign in to comment.