1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2017 EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 from __future__ import absolute_import
23 from builtins import str
24 from builtins import object
28 from Extensions.i18n import tr
30 from PyQt5.QtWidgets import QFileDialog, QMessageBox
31 from PyQt5.QtCore import QFileInfo
33 # --------------------------------
34 class JdcSsIhmHandler(object):
35 # --------------------------------
36 # retourne a l utilisateur
38 def __init__(self,viewManager):
39 # --------------------------------------
40 self.viewManagerSsIhm=viewManager
43 # ---------------------
44 self.viewManagerSsIhm.handleViewJdcPy(self)
46 def viewJdcSource(self) :
47 # ---------------------
48 self.viewManagerSsIhm.handleViewJdcSource(self)
50 def getFileName(self):
51 # ---------------------
52 self.viewManagerSsIhm.getFileName(self)
54 def viewJdcRapport(self) :
55 # ---------------------
56 self.viewManagerSsIhm.handleViewJdcRapport(self)
58 def getJdcRapport(self) :
59 # ---------------------
60 return self.viewManagerSsIhm.handleGetJdcRapport(self)
62 def getDicoPython(self) :
63 # -------------------------
64 return self.viewManagerSsIhm.generDico(self)
66 def isJdcValid(self) :
67 # -------------------------
68 return self.viewManagerSsIhm.isJdcValid(self)
70 def fileSaveAs(self,fileName):
71 # -------------------------
72 return self.viewManagerSsIhm.fileSaveAs(self,fileName)
74 def fileLegerSaveAs(self,fileName):
75 # -----------------------------------
76 return self.viewManagerSsIhm.fileLegerSaveAs(self,fileName)
80 #--------------------------------
81 class MyViewManagerSsIhm(object):
82 #--------------------------------
83 # Symetrique de ViewManager mais pas d heritage entre les 2
84 # dans le viewManager pas de souci pour savoir qui est le jdc sur lequel on travaille
85 # ici en revanche.... c est moins sur
87 # --------------------------------
88 def __init__(self,appliEficas):
89 # --------------------------------
90 self.appliEficas=appliEficas
94 self.untitledCount = 0
97 # ------------------------------------------------------
98 def handleOpen(self,fichier=None, units=None):
99 # ------------------------------------------------------
102 print ('nom de fichier obligatoire')
105 for handler in self.dictEditors :
106 editor=self.dictEditors[handler]
107 if self.samePath(fichier, editor.getFileName()):
108 print ('fichier deja ouvert . pas de nouvel editor')
111 monNewHandler = self.getNewEditor(fichier,units)
114 # ----------------------------------------------------------------------
115 def getNewEditor(self,fichier = None,jdc = None, units = None,include=0):
116 # ----------------------------------------------------------------------
118 from InterfaceQT4.editorSsIhm import JDCEditorSsIhm
119 editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include)
121 if editor.jdc: # le fichier est bien un jdc
122 monHandler = JdcSsIhmHandler(self)
123 self.dictEditors[monHandler]=editor
126 print ('impossible de construire le jdc')
129 # -----------------------------
130 def samePath(self,f1, f2):
131 # ------------------------------
135 if f1 is None or f2 is None: return 0
136 if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1
139 # ---------------------------------
140 def handleViewJdcPy(self,handler):
141 # ---------------------------------
142 if not (handler in self.dictEditors) :
143 print ('editor non trouve')
145 self.dictEditors[handler].viewJdcPy()
147 # ---------------------------------
148 def getFileName(self,handler):
149 # ---------------------------------
150 if not (handler in self.dictEditors) :
151 print ('editor non trouve')
153 return self.dictEditors[handler].getFileName()
156 # ---------------------------------------------
157 def handleViewJdcSource(self,handler):
158 # ---------------------------------------------
160 if not (handler in self.dictEditors) :
161 print ('editor non trouve')
163 self.dictEditors[handler].viewJdcSource()
166 # ---------------------------------------------
167 def handleViewJdcRapport(self,handler):
168 # ---------------------------------------------
170 if not (handler in self.dictEditors) :
171 print ('editor non trouve')
173 self.dictEditors[handler].viewJdcRapport()
175 # ---------------------------------------------
176 def handleGetJdcRapport(self,handler):
177 # ---------------------------------------------
178 if not (handler in self.dictEditors) :
179 print ('editor non trouve')
181 return self.dictEditors[handler].getJdcRapport()
183 # ---------------------------------------------
184 def handleViewJdcRapport(self,handler):
185 # ---------------------------------------------
187 if not (handler in self.dictEditors) :
188 print ('editor non trouve')
190 self.dictEditors[handler].viewJdcRapport()
193 # ---------------------------------------------
194 def generDico(self,handler):
195 # ---------------------------------------------
197 if not (handler in self.dictEditors) :
198 print ('editor non trouve')
200 return self.dictEditors[handler].generDico()
203 # ---------------------------------------------
204 def isJdcValid(self,handler):
205 # ---------------------------------------------
207 if not (handler in self.dictEditors) :
208 print ('editor non trouve')
210 return self.dictEditors[handler].jdc.isValid()
213 # ---------------------------------------------
214 def fileSaveAs(self,handler,fileName):
215 # ---------------------------------------------
217 if not (handler in self.dictEditors) :
218 print ('editor non trouve')
220 return self.dictEditors[handler].saveFile(fileName)
222 # ---------------------------------------------
223 def fileLegerSaveAs(self, handler,fileName):
224 # ---------------------------------------------
226 if not (handler in self.dictEditors) :
227 print ('editor non trouve')
229 self.dictEditors[handler].saveFileLegerAs(fileName)
232 # def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter')):
233 # if doitSauverRecent : self.appliEficas.sauveRecents()
234 # index=self.myQtab.currentIndex()
235 # if index < 0 : return
236 # res=self.checkDirty(self.dict_editors[index],texte)
237 # if res == 2 : return 2 # l utilisateur a annule
238 # index=self.myQtab.currentIndex()
240 # while idx < len(self.dict_editors) -1 :
241 # self.dict_editors[idx]=self.dict_editors[idx+1]
243 # del self.dict_editors[len (self.dict_editors) -1]
245 # del self.doubles[self.dict_editors[index]]
248 # self.myQtab.removeTab(index)
253 # def handleCloseAll(self,texte=tr('Quitter')):
255 # self.appliEficas.sauveRecents()
256 # while len(self.dict_editors) > 0 :
257 # self.myQtab.setCurrentIndex(0)
258 # res=self.handleClose(0,texte)
259 # if res==2 : return res # l utilsateur a annule
264 # def newEditor(self,include=0):
265 # if self.appliEficas.demande==True :
266 # self.appliEficas.definitCode(None,None)
267 # if self.appliEficas.code == None:return
268 # maPage=self.getEditor(include=include)
272 # def handleViewJdcRegles(self):
273 # index=self.myQtab.currentIndex()
274 # if index < 0 : return
275 # self.dict_editors[index].viewJdcRegles()
277 # def handleGestionParam(self):
278 # index=self.myQtab.currentIndex()
280 # QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees"))
282 # self.dict_editors[index].gestionParam()
286 # def saveCurrentEditor(self):
287 # index=self.myQtab.currentIndex()
288 # if index < 0 : return
289 # editor=self.dict_editors[index]
290 # if editor in self.doubles :
291 # QMessageBox.warning(
293 # tr("Fichier Duplique"),
294 # tr("Le fichier ne sera pas sauvegarde."),)
296 # ok, newName = editor.saveFile()
298 # fileName=os.path.basename(six.text_type(newName))
299 # self.myQtab.setTabText(index,fileName)
302 # def saveLegerCurrentEditor(self):
303 # index=self.myQtab.currentIndex()
304 # if index < 0 : return
305 # editor=self.dict_editors[index]
306 # ok, newName = editor.saveFileLeger()
309 # def sauveLigneCurrentEditor(self):
310 # index=self.myQtab.currentIndex()
311 # if index < 0 : return
312 # editor=self.dict_editors[index]
313 # if editor in self.doubles :
314 # QMessageBox.warning(
316 # tr("Fichier Duplique"),
317 # tr("Le fichier ne sera pas sauvegarde."),)
319 # ok, newName = editor.sauveLigneFile()
321 # fileName=os.path.basename(six.text_type(newName))
322 # self.myQtab.setTabText(index,fileName)
326 # def saveAsCurrentEditor(self):
327 # index=self.myQtab.currentIndex()
328 # editor=self.dict_editors[index]
329 # oldName=editor.fichier
330 # ok,newName = editor.saveFileAs()
332 # fileName=os.path.basename(six.text_type(newName))
333 # self.myQtab.setTabText(index,fileName)
334 # if editor in self.doubles :
335 # if oldName != newName :
336 # del self.doubles[editor]
339 # def displayJDC(self,jdc,fn=None):
341 # Public slot to display a file in an editor.
342 # @param fn name of file to be opened
343 # # insert filename into list of recently opened files
346 # if fn != None : titre=fn.split("/")[-1]
347 # editor = self.getEditor(fichier= fn, jdc = jdc ,include=1)
348 # self.appliEficas.addToRecentList(editor.getFileName())
351 ##PNPNPNPN --> a affiner
352 # if fichier is None:
353 # self.untitledCount += 1
354 # self.myQtab.addTab(win, tr("Fichier non encore nomme ", self.untitledCount))
355 # #self.myQtab.addTab(win, str(self.appliEficas.code))
357 # liste=fichier.split('/')
359 # if not QFileInfo(fichier).isWritable():
360 # txt = '%s (ro)' % txt
361 # self.myQtab.addTab(win,txt )
362 # self.myQtab.setCurrentWidget(win)
363 # self.currentEditor=win
366 # def getOpenStartDir(self) :
367 # #PN --> Les Preferences
369 # userDir=os.path.expanduser("~/Eficas_install/")
375 # def checkDirty(self, editor,texte):
377 # Private method to check dirty status and open a message window.
379 # @param editor editor window to check
380 # @return flag indicating successful reset of the dirty flag (boolean)
383 # if (editor.modified) and (editor in self.doubles) :
384 # msgBox = QMessageBox(None)
385 # msgBox.setWindowTitle(tr("Fichier Duplique"))
386 # msgBox.setText(tr("Le fichier ne sera pas sauvegarde."))
387 # msgBox.addButton(texte,0)
388 # msgBox.addButton(tr("&Annuler"),1)
390 # if res == 0 : return 1
392 # if editor.modified:
393 # fn = editor.getFileName()
394 # if fn is None: fn = tr('Noname')
395 # msgBox = QMessageBox(None)
396 # msgBox.setWindowTitle(tr("Fichier Modifie"))
397 # msgBox.setText(tr("Le fichier ne sera pas sauvegarde."))
398 # msgBox.addButton(tr("&Sauvegarder"),1)
399 # msgBox.addButton(tr("&Quitter sans sauvegarder"),0)
400 # msgBox.addButton(tr("&Annuler"),2)
402 # if res == 2 : return res
404 # (ok, newName) = editor.saveFile()
406 # fileName=os.path.basename(six.text_type(newName))
407 # index=self.myQtab.currentIndex()
408 # self.myQtab.setTabText(index,fileName)
412 # def handleAjoutGroup(self,listeGroup):
413 # index=self.myQtab.currentIndex()
414 # if index < 0 : return
415 # editor=self.dict_editors[index]
416 # editor.handleAjoutGroup(listeGroup)