Plugins/PluginEricdoc.py

changeset 0
de9c2efb9d02
child 13
1af94a91f439
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/PluginEricdoc.py	Mon Dec 28 16:03:33 2009 +0000
@@ -0,0 +1,180 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2007 - 2009 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Ericdoc plugin.
+"""
+
+import os
+import sys
+import copy
+
+from PyQt4.QtCore import QObject, SIGNAL
+from PyQt4.QtGui import QDialog, QApplication
+
+from E4Gui.E4Application import e4App
+
+from E4Gui.E4Action import E4Action
+
+from DocumentationPlugins.Ericdoc.EricdocConfigDialog import EricdocConfigDialog
+from DocumentationPlugins.Ericdoc.EricdocExecDialog import EricdocExecDialog
+
+import Utilities
+
+# Start-Of-Header
+name = "Ericdoc Plugin"
+author = "Detlev Offenbach <detlev@die-offenbachs.de>"
+autoactivate = True
+deactivateable = True
+version = "5.0.0"
+className = "EricdocPlugin"
+packageName = "__core__"
+shortDescription = "Show the Ericdoc dialogs."
+longDescription = """This plugin implements the Ericdoc dialogs.""" \
+ """ Ericdoc is used to generate a source code documentation""" \
+ """ for Python and Ruby projects."""
+pyqtApi = 2
+# End-Of-Header
+
+error = ""
+
+def exeDisplayData():
+    """
+    Public method to support the display of some executable info.
+    
+    @return dictionary containing the data to query the presence of
+        the executable
+    """
+    exe = 'eric4-doc'
+    if Utilities.isWindowsPlatform():
+        exe += '.bat'
+    
+    data = {
+        "programEntry"      : True, 
+        "header"            : QApplication.translate("EricdocPlugin",
+                                "Eric4 Documentation Generator"), 
+        "exe"               : exe, 
+        "versionCommand"    : '--version', 
+        "versionStartsWith" : 'eric4-', 
+        "versionPosition"   : -2, 
+        "version"           : "", 
+        "versionCleanup"    : None, 
+    }
+    
+    return data
+
+class EricdocPlugin(QObject):
+    """
+    Class implementing the Ericdoc plugin.
+    """
+    def __init__(self, ui):
+        """
+        Constructor
+        
+        @param ui reference to the user interface object (UI.UserInterface)
+        """
+        QObject.__init__(self, ui)
+        self.__ui = ui
+        self.__initialize()
+        
+    def __initialize(self):
+        """
+        Private slot to (re)initialize the plugin.
+        """
+        self.__projectAct = None
+
+    def activate(self):
+        """
+        Public method to activate this plugin.
+        
+        @return tuple of None and activation status (boolean)
+        """
+        menu = e4App().getObject("Project").getMenu("Apidoc")
+        if menu:
+            self.__projectAct = \
+                E4Action(self.trUtf8('Generate documentation (eric4-doc)'),
+                    self.trUtf8('Generate &documentation (eric4-doc)'), 0, 0,
+                    self, 'doc_eric4_doc')
+            self.__projectAct.setStatusTip(\
+                self.trUtf8('Generate API documentation using eric4-doc'))
+            self.__projectAct.setWhatsThis(self.trUtf8(
+                """<b>Generate documentation</b>"""
+                """<p>Generate API documentation using eric4-doc.</p>"""
+            ))
+            self.connect(self.__projectAct, SIGNAL('triggered()'), self.__doEricdoc)
+            e4App().getObject("Project").addE4Actions([self.__projectAct])
+            menu.addAction(self.__projectAct)
+        
+        self.connect(e4App().getObject("Project"), SIGNAL("showMenu"), 
+                     self.__projectShowMenu)
+        
+        return None, True
+
+    def deactivate(self):
+        """
+        Public method to deactivate this plugin.
+        """
+        self.disconnect(e4App().getObject("Project"), SIGNAL("showMenu"), 
+                        self.__projectShowMenu)
+        
+        menu = e4App().getObject("Project").getMenu("Apidoc")
+        if menu:
+            menu.removeAction(self.__projectAct)
+            e4App().getObject("Project").removeE4Actions([self.__projectAct])
+        self.__initialize()
+    
+    def __projectShowMenu(self, menuName, menu):
+        """
+        Private slot called, when the the project menu or a submenu is 
+        about to be shown.
+        
+        @param menuName name of the menu to be shown (string)
+        @param menu reference to the menu (QMenu)
+        """
+        if menuName == "Apidoc":
+            if self.__projectAct is not None:
+                self.__projectAct.setEnabled(\
+                    e4App().getObject("Project").getProjectLanguage() in \
+                        ["Python", "Python3", "Ruby"])
+    
+    def __doEricdoc(self):
+        """
+        Private slot to perform the eric4-doc api documentation generation.
+        """
+        project = e4App().getObject("Project")
+        parms = project.getData('DOCUMENTATIONPARMS', "ERIC4DOC")
+        dlg = EricdocConfigDialog(project.getProjectPath(), parms)
+        if dlg.exec_() == QDialog.Accepted:
+            args, parms = dlg.generateParameters()
+            project.setData('DOCUMENTATIONPARMS', "ERIC4DOC", parms)
+            
+            # now do the call
+            dia = EricdocExecDialog("Ericdoc")
+            res = dia.start(args, project.ppath)
+            if res:
+                dia.exec_()
+            
+            outdir = parms['outputDirectory']
+            if outdir == '':
+                outdir = 'doc'      # that is eric4-docs default output dir
+                
+            # add it to the project data, if it isn't in already
+            outdir = outdir.replace(project.ppath+os.sep, '')
+            if outdir not in project.pdata['OTHERS']:
+                project.pdata['OTHERS'].append(outdir)
+                project.setDirty(True)
+                project.othersAdded(outdir)
+            
+            if parms['qtHelpEnabled']:
+                outdir = parms['qtHelpOutputDirectory']
+                if outdir == '':
+                    outdir = 'help'      # that is eric4-docs default QtHelp output dir
+                    
+                # add it to the project data, if it isn't in already
+                outdir = outdir.replace(project.ppath+os.sep, '')
+                if outdir not in project.pdata['OTHERS']:
+                    project.pdata['OTHERS'].append(outdir)
+                    project.setDirty(True)
+                    project.othersAdded(outdir)

eric ide

mercurial