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 """ |
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 |