Templates/TemplateViewer.py

changeset 2320
fe9d876fc9dd
parent 2302
f29e9405c851
child 2341
4c7f312cec02
--- a/Templates/TemplateViewer.py	Mon Jan 07 17:06:13 2013 +0100
+++ b/Templates/TemplateViewer.py	Mon Jan 07 18:05:29 2013 +0100
@@ -397,9 +397,10 @@
         self.__menu.addAction(self.trUtf8("Edit..."), self.__edit)
         self.__menu.addAction(self.trUtf8("Remove"), self.__remove)
         self.__menu.addSeparator()
-        self.__menu.addAction(self.trUtf8("Save"), self.__save)
+        self.__menu.addAction(self.trUtf8("Save"), self.save)
         self.__menu.addAction(self.trUtf8("Import..."), self.__import)
         self.__menu.addAction(self.trUtf8("Export..."), self.__export)
+        self.__menu.addAction(self.trUtf8("Reload"), self.__reload)
         self.__menu.addSeparator()
         self.__menu.addAction(self.trUtf8("Help about Templates..."), self.__showHelp)
         self.__menu.addSeparator()
@@ -408,15 +409,17 @@
         self.__backMenu = QMenu(self)
         self.__backMenu.addAction(self.trUtf8("Add group..."), self.__addGroup)
         self.__backMenu.addSeparator()
-        self.__backMenu.addAction(self.trUtf8("Save"), self.__save)
+        self.__backMenu.addAction(self.trUtf8("Save"), self.save)
         self.__backMenu.addAction(self.trUtf8("Import..."), self.__import)
         self.__backMenu.addAction(self.trUtf8("Export..."), self.__export)
+        self.__backMenu.addAction(self.trUtf8("Reload"), self.__reload)
         self.__backMenu.addSeparator()
         self.__backMenu.addAction(self.trUtf8("Help about Templates..."), self.__showHelp)
         self.__backMenu.addSeparator()
         self.__backMenu.addAction(self.trUtf8("Configure..."), self.__configure)
         
         self.__activating = False
+        self.__dirty = False
         
         self.setContextMenuPolicy(Qt.CustomContextMenu)
         self.customContextMenuRequested.connect(self.__showContextMenu)
@@ -473,6 +476,7 @@
         if dlg.exec_() == QDialog.Accepted:
             name, description, groupName, template = dlg.getData()
             self.addEntry(groupName, name, description, template)
+            self.__dirty = True
         
     def __addGroup(self):
         """
@@ -482,6 +486,7 @@
         if dlg.exec_() == QDialog.Accepted:
             name, language = dlg.getData()
             self.addGroup(name, language)
+            self.__dirty = True
         
     def __edit(self):
         """
@@ -500,6 +505,7 @@
             else:
                 name, description, groupName, template = dlg.getData()
                 self.changeEntry(itm, name, groupName, description, template)
+            self.__dirty = True
         
     def __remove(self):
         """
@@ -517,12 +523,16 @@
             self.removeGroup(itm)
         else:
             self.removeEntry(itm)
+        self.__dirty = True
 
-    def __save(self):
+    def save(self):
         """
-        Private slot to handle the Save context menu action.
+        Public slot to save the templates.
         """
-        self.writeTemplates()
+        if self.__dirty:
+            ok = self.writeTemplates()
+            if ok:
+                self.__dirty = False
 
     def __import(self):
         """
@@ -536,6 +546,7 @@
         
         if fn:
             self.readTemplates(fn)
+            self.__dirty = True
 
     def __export(self):
         """
@@ -556,7 +567,25 @@
                 if ex:
                     fn += ex
             self.writeTemplates(fn)
-
+    
+    def __reload(self):
+        """
+        Private slot to reload the templates.
+        """
+        if self.__dirty:
+            res = E5MessageBox.yesNo(self,
+                self.trUtf8("Reload Templates"),
+                self.trUtf8("""The templates contain unsaved changes. Shall these"""
+                            """ changes be discarded?"""),
+                icon = E5MessageBox.Warning)
+            if not res:
+                return
+        
+        self.clear()
+        self.groups = {}
+        
+        self.readTemplates()
+    
     def __showHelp(self):
         """
         Private method to show some help.
@@ -879,6 +908,7 @@
         Public method to write the templates data to an XML file (.e4c).
         
         @param filename name of a templates file to read (string)
+        @return flag indicating success (boolean)
         """
         if filename is None:
             filename = os.path.join(Utilities.getConfigDir(), "eric5templates.e4c")
@@ -889,10 +919,12 @@
                 self.trUtf8("Save templates"),
                 self.trUtf8("<p>The templates file <b>{0}</b> could not be written.</p>")
                     .format(filename))
-            return
+            return False
         
         TemplatesWriter(f, self).writeXML()
         f.close()
+        
+        return True
     
     def readTemplates(self, filename=None):
         """

eric ide

mercurial