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