Templates/TemplateViewer.py

changeset 2320
fe9d876fc9dd
parent 2302
f29e9405c851
child 2341
4c7f312cec02
equal deleted inserted replaced
2319:116c547dedce 2320:fe9d876fc9dd
395 self.__menu.addAction(self.trUtf8("Add entry..."), self.__addEntry) 395 self.__menu.addAction(self.trUtf8("Add entry..."), self.__addEntry)
396 self.__menu.addAction(self.trUtf8("Add group..."), self.__addGroup) 396 self.__menu.addAction(self.trUtf8("Add group..."), self.__addGroup)
397 self.__menu.addAction(self.trUtf8("Edit..."), self.__edit) 397 self.__menu.addAction(self.trUtf8("Edit..."), self.__edit)
398 self.__menu.addAction(self.trUtf8("Remove"), self.__remove) 398 self.__menu.addAction(self.trUtf8("Remove"), self.__remove)
399 self.__menu.addSeparator() 399 self.__menu.addSeparator()
400 self.__menu.addAction(self.trUtf8("Save"), self.__save) 400 self.__menu.addAction(self.trUtf8("Save"), self.save)
401 self.__menu.addAction(self.trUtf8("Import..."), self.__import) 401 self.__menu.addAction(self.trUtf8("Import..."), self.__import)
402 self.__menu.addAction(self.trUtf8("Export..."), self.__export) 402 self.__menu.addAction(self.trUtf8("Export..."), self.__export)
403 self.__menu.addAction(self.trUtf8("Reload"), self.__reload)
403 self.__menu.addSeparator() 404 self.__menu.addSeparator()
404 self.__menu.addAction(self.trUtf8("Help about Templates..."), self.__showHelp) 405 self.__menu.addAction(self.trUtf8("Help about Templates..."), self.__showHelp)
405 self.__menu.addSeparator() 406 self.__menu.addSeparator()
406 self.__menu.addAction(self.trUtf8("Configure..."), self.__configure) 407 self.__menu.addAction(self.trUtf8("Configure..."), self.__configure)
407 408
408 self.__backMenu = QMenu(self) 409 self.__backMenu = QMenu(self)
409 self.__backMenu.addAction(self.trUtf8("Add group..."), self.__addGroup) 410 self.__backMenu.addAction(self.trUtf8("Add group..."), self.__addGroup)
410 self.__backMenu.addSeparator() 411 self.__backMenu.addSeparator()
411 self.__backMenu.addAction(self.trUtf8("Save"), self.__save) 412 self.__backMenu.addAction(self.trUtf8("Save"), self.save)
412 self.__backMenu.addAction(self.trUtf8("Import..."), self.__import) 413 self.__backMenu.addAction(self.trUtf8("Import..."), self.__import)
413 self.__backMenu.addAction(self.trUtf8("Export..."), self.__export) 414 self.__backMenu.addAction(self.trUtf8("Export..."), self.__export)
415 self.__backMenu.addAction(self.trUtf8("Reload"), self.__reload)
414 self.__backMenu.addSeparator() 416 self.__backMenu.addSeparator()
415 self.__backMenu.addAction(self.trUtf8("Help about Templates..."), self.__showHelp) 417 self.__backMenu.addAction(self.trUtf8("Help about Templates..."), self.__showHelp)
416 self.__backMenu.addSeparator() 418 self.__backMenu.addSeparator()
417 self.__backMenu.addAction(self.trUtf8("Configure..."), self.__configure) 419 self.__backMenu.addAction(self.trUtf8("Configure..."), self.__configure)
418 420
419 self.__activating = False 421 self.__activating = False
422 self.__dirty = False
420 423
421 self.setContextMenuPolicy(Qt.CustomContextMenu) 424 self.setContextMenuPolicy(Qt.CustomContextMenu)
422 self.customContextMenuRequested.connect(self.__showContextMenu) 425 self.customContextMenuRequested.connect(self.__showContextMenu)
423 self.itemActivated.connect(self.__templateItemActivated) 426 self.itemActivated.connect(self.__templateItemActivated)
424 427
471 dlg = TemplatePropertiesDialog(self) 474 dlg = TemplatePropertiesDialog(self)
472 dlg.setSelectedGroup(groupName) 475 dlg.setSelectedGroup(groupName)
473 if dlg.exec_() == QDialog.Accepted: 476 if dlg.exec_() == QDialog.Accepted:
474 name, description, groupName, template = dlg.getData() 477 name, description, groupName, template = dlg.getData()
475 self.addEntry(groupName, name, description, template) 478 self.addEntry(groupName, name, description, template)
479 self.__dirty = True
476 480
477 def __addGroup(self): 481 def __addGroup(self):
478 """ 482 """
479 Private slot to handle the Add Group context menu action. 483 Private slot to handle the Add Group context menu action.
480 """ 484 """
481 dlg = TemplatePropertiesDialog(self, True) 485 dlg = TemplatePropertiesDialog(self, True)
482 if dlg.exec_() == QDialog.Accepted: 486 if dlg.exec_() == QDialog.Accepted:
483 name, language = dlg.getData() 487 name, language = dlg.getData()
484 self.addGroup(name, language) 488 self.addGroup(name, language)
489 self.__dirty = True
485 490
486 def __edit(self): 491 def __edit(self):
487 """ 492 """
488 Private slot to handle the Edit context menu action. 493 Private slot to handle the Edit context menu action.
489 """ 494 """
498 name, language = dlg.getData() 503 name, language = dlg.getData()
499 self.changeGroup(itm.getName(), name, language) 504 self.changeGroup(itm.getName(), name, language)
500 else: 505 else:
501 name, description, groupName, template = dlg.getData() 506 name, description, groupName, template = dlg.getData()
502 self.changeEntry(itm, name, groupName, description, template) 507 self.changeEntry(itm, name, groupName, description, template)
508 self.__dirty = True
503 509
504 def __remove(self): 510 def __remove(self):
505 """ 511 """
506 Private slot to handle the Remove context menu action. 512 Private slot to handle the Remove context menu action.
507 """ 513 """
515 521
516 if isinstance(itm, TemplateGroup): 522 if isinstance(itm, TemplateGroup):
517 self.removeGroup(itm) 523 self.removeGroup(itm)
518 else: 524 else:
519 self.removeEntry(itm) 525 self.removeEntry(itm)
520 526 self.__dirty = True
521 def __save(self): 527
522 """ 528 def save(self):
523 Private slot to handle the Save context menu action. 529 """
524 """ 530 Public slot to save the templates.
525 self.writeTemplates() 531 """
532 if self.__dirty:
533 ok = self.writeTemplates()
534 if ok:
535 self.__dirty = False
526 536
527 def __import(self): 537 def __import(self):
528 """ 538 """
529 Private slot to handle the Import context menu action. 539 Private slot to handle the Import context menu action.
530 """ 540 """
534 "", 544 "",
535 self.trUtf8("Templates Files (*.e4c);; All Files (*)")) 545 self.trUtf8("Templates Files (*.e4c);; All Files (*)"))
536 546
537 if fn: 547 if fn:
538 self.readTemplates(fn) 548 self.readTemplates(fn)
549 self.__dirty = True
539 550
540 def __export(self): 551 def __export(self):
541 """ 552 """
542 Private slot to handle the Export context menu action. 553 Private slot to handle the Export context menu action.
543 """ 554 """
554 if not ext: 565 if not ext:
555 ex = selectedFilter.split("(*")[1].split(")")[0] 566 ex = selectedFilter.split("(*")[1].split(")")[0]
556 if ex: 567 if ex:
557 fn += ex 568 fn += ex
558 self.writeTemplates(fn) 569 self.writeTemplates(fn)
559 570
571 def __reload(self):
572 """
573 Private slot to reload the templates.
574 """
575 if self.__dirty:
576 res = E5MessageBox.yesNo(self,
577 self.trUtf8("Reload Templates"),
578 self.trUtf8("""The templates contain unsaved changes. Shall these"""
579 """ changes be discarded?"""),
580 icon = E5MessageBox.Warning)
581 if not res:
582 return
583
584 self.clear()
585 self.groups = {}
586
587 self.readTemplates()
588
560 def __showHelp(self): 589 def __showHelp(self):
561 """ 590 """
562 Private method to show some help. 591 Private method to show some help.
563 """ 592 """
564 E5MessageBox.information(self, 593 E5MessageBox.information(self,
877 def writeTemplates(self, filename=None): 906 def writeTemplates(self, filename=None):
878 """ 907 """
879 Public method to write the templates data to an XML file (.e4c). 908 Public method to write the templates data to an XML file (.e4c).
880 909
881 @param filename name of a templates file to read (string) 910 @param filename name of a templates file to read (string)
911 @return flag indicating success (boolean)
882 """ 912 """
883 if filename is None: 913 if filename is None:
884 filename = os.path.join(Utilities.getConfigDir(), "eric5templates.e4c") 914 filename = os.path.join(Utilities.getConfigDir(), "eric5templates.e4c")
885 f = QFile(filename) 915 f = QFile(filename)
886 ok = f.open(QIODevice.WriteOnly) 916 ok = f.open(QIODevice.WriteOnly)
887 if not ok: 917 if not ok:
888 E5MessageBox.critical(self, 918 E5MessageBox.critical(self,
889 self.trUtf8("Save templates"), 919 self.trUtf8("Save templates"),
890 self.trUtf8("<p>The templates file <b>{0}</b> could not be written.</p>") 920 self.trUtf8("<p>The templates file <b>{0}</b> could not be written.</p>")
891 .format(filename)) 921 .format(filename))
892 return 922 return False
893 923
894 TemplatesWriter(f, self).writeXML() 924 TemplatesWriter(f, self).writeXML()
895 f.close() 925 f.close()
926
927 return True
896 928
897 def readTemplates(self, filename=None): 929 def readTemplates(self, filename=None):
898 """ 930 """
899 Public method to read in the templates file (.e4c) 931 Public method to read in the templates file (.e4c)
900 932

eric ide

mercurial