PluginTimeTracker.py

changeset 1
a0beac325e5a
parent 0
944024997123
child 7
6c769e2cc920
diff -r 944024997123 -r a0beac325e5a PluginTimeTracker.py
--- a/PluginTimeTracker.py	Sat Oct 13 18:07:16 2012 +0200
+++ b/PluginTimeTracker.py	Fri Oct 19 13:06:56 2012 +0200
@@ -0,0 +1,135 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Time Tracker plugin.
+"""
+
+import os
+
+from PyQt4.QtCore import QObject, QTranslator
+
+from E5Gui.E5Application import e5App
+
+from TimeTracker.TimeTracker import TimeTracker
+
+# Start-Of-Header
+name = "Time Tracker Plugin"
+author = "Detlev Offenbach <detlev@die-offenbachs.de>"
+autoactivate = True
+deactivateable = True
+version = "0.1.0"
+className = "TimeTrackerPlugin"
+packageName = "TimeTracker"
+shortDescription = "Time Tracker to keep track of the project time."
+longDescription = """This plugin implements a time tracker to keep track""" \
+    """ of the time used for a project. The time can be subdivided into tasks."""
+needsRestart = False
+pyqtApi = 2
+# End-Of-Header
+
+error = ""
+    
+
+class TimeTrackerPlugin(QObject):
+    """
+    Class implementing the Eric assistant 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()
+        
+        self.__translator = None
+        self.__loadTranslator()
+        
+        self.__e5project = e5App().getObject("Project")
+    
+    def __initialize(self):
+        """
+        Private slot to (re)initialize the plugin.
+        """
+        self.__object = None
+    
+    def __checkVersions(self):
+        """
+        Private function to check that the eric5 version is ok.
+        
+        @return flag indicating version is ok (boolean)
+        """
+        global error
+        
+        if self.__ui.versionIsNewer('5.2.99', '20121012'):
+            error = ""
+        else:
+            error = self.trUtf8("eric5 version is too old, {0}, {1} or newer needed.")\
+                .format("5.3.0", "20121012")
+            return False
+        
+        return True
+    
+    def activate(self):
+        """
+        Public method to activate this plugin.
+        
+        @return tuple of None and activation status (boolean)
+        """
+        global error
+        error = ""     # clear previous error
+        
+        if not self.__checkVersions():
+            return None, False
+        
+        self.__object = TimeTracker(self, self.__ui)
+##        self.__object.initActions()
+        e5App().registerPluginObject("TimeTracker", self.__object)
+        
+        if self.__e5project.isOpen():
+            self.__object.projectOpened()
+        
+        self.__e5project.newProject.connect(self.__object.projectOpened)
+        self.__e5project.projectOpened.connect(self.__object.projectOpened)
+        self.__e5project.projectClosed.connect(self.__object.projectClosed)
+        
+        return None, True
+    
+    def deactivate(self):
+        """
+        Public method to deactivate this plugin.
+        """
+        e5App().unregisterPluginObject("TimeTracker")
+        
+        self.__e5project.newProject.disconnect(self.__object.projectOpened)
+        self.__e5project.projectOpened.disconnect(self.__object.projectOpened)
+        self.__e5project.projectClosed.disconnect(self.__object.projectClosed)
+        
+        self.__object.projectClosed()
+        
+        self.__initialize()
+    
+    def __loadTranslator(self):
+        """
+        Private method to load the translation file.
+        """
+        if self.__ui is not None:
+            loc = self.__ui.getLocale()
+            if loc and loc != "C":
+                locale_dir = \
+                    os.path.join(os.path.dirname(__file__), "TimeTracker", "i18n")
+                translation = "timetracker_{0}".format(loc)
+                translator = QTranslator(None)
+                loaded = translator.load(translation, locale_dir)
+                if loaded:
+                    self.__translator = translator
+                    e5App().installTranslator(self.__translator)
+                else:
+                    print("Warning: translation file '{0}' could not be loaded."\
+                        .format(translation))
+                    print("Using default.")

eric ide

mercurial