TimeTracker/TimeTracker.py

changeset 21
28b7956c9608
parent 15
645506ab3376
child 31
db0afa672b75
diff -r b907cb69c2c7 -r 28b7956c9608 TimeTracker/TimeTracker.py
--- a/TimeTracker/TimeTracker.py	Sun Oct 21 19:44:36 2012 +0200
+++ b/TimeTracker/TimeTracker.py	Sat Nov 03 16:53:13 2012 +0100
@@ -9,10 +9,12 @@
 
 import os
 
-from PyQt4.QtCore import QObject
+from PyQt4.QtCore import Qt, QObject
+from PyQt4.QtGui import QKeySequence
 
 from E5Gui.E5Application import e5App
 from E5Gui import E5MessageBox
+from E5Gui.E5Action import E5Action
 
 from .TimeTrackEntry import TimeTrackEntry
 from .TimeTrackerWidget import TimeTrackerWidget
@@ -39,13 +41,6 @@
         self.__ui = parent
         
         self.__e5project = e5App().getObject("Project")
-        
-        self.__widget = TimeTrackerWidget(self)
-        self.__ui.addSideWidget(self.__ui.BottomSide, self.__widget,
-            UI.PixmapCache.getIcon(os.path.join("TimeTracker", "icons", "clock.png")),
-            self.tr("Time Tracker"))
-        
-        self.__initialize()
     
     def __initialize(self):
         """
@@ -61,6 +56,43 @@
         self.__widget.clear()
         self.__widget.setEnabled(False)
     
+    def activate(self):
+        """
+        Public method to activate the time tracker.
+        """
+        self.__widget = TimeTrackerWidget(self)
+        self.__ui.addSideWidget(self.__ui.BottomSide, self.__widget,
+            UI.PixmapCache.getIcon(os.path.join("TimeTracker", "icons", "clock.png")),
+            self.tr("Time Tracker"))
+        
+        self.__activateAct = E5Action(self.trUtf8('Time Tracker'),
+                self.trUtf8('T&ime Tracker'),
+                QKeySequence(self.trUtf8("Alt+Shift+I")),
+                0, self,
+                'time_tracker_activate')
+        self.__activateAct.setStatusTip(self.trUtf8(
+            "Switch the input focus to the Time Tracker window."))
+        self.__activateAct.setWhatsThis(self.trUtf8(
+            """<b>Activate Time Tracker</b>"""
+            """<p>This switches the input focus to the Time Tracker window.</p>"""
+        ))
+        self.__activateAct.triggered[()].connect(self.__activateWidget)
+        
+        self.__ui.addE5Actions([self.__activateAct], 'ui')
+        menu = self.__ui.getMenu("subwindow")
+        menu.addAction(self.__activateAct)
+        
+        self.__initialize()
+    
+    def deactivate(self):
+        """
+        Public method to deactivate the time tracker.
+        """
+        menu = self.__ui.getMenu("subwindow")
+        menu.removeAction(self.__activateAct)
+        self.__ui.removeE5Actions([self.__activateAct], 'ui')
+        self.__ui.removeSideWidget(self.__widget)
+    
     def projectOpened(self):
         """
         Public slot to handle the projectOpened signal.
@@ -84,8 +116,9 @@
         """
         Public slot to handle the projectClosed signal.
         """
-        self.stopTrackerEntry()
-        self.saveTrackerEntries()
+        if self.__projectOpen:
+            self.stopTrackerEntry()
+            self.saveTrackerEntries()
         self.__initialize()
     
     def __readTrackerEntries(self):
@@ -402,3 +435,17 @@
         @return the requested setting
         """
         return self.__plugin.getPreferences(key)
+    
+    def __activateWidget(self):
+        """
+        Private slot to handle the activation of the project browser.
+        """
+        if self.__ui.layout == "Toolboxes":
+            self.__ui.hToolboxDock.show()
+            self.__ui.hToolboxDock.setCurrentWidget(self.__widget)
+        elif self.__ui.layout == "Sidebars":
+            self.__ui.bottomSidebar.show()
+            self.__ui.bottomSidebar.setCurrentWidget(self.__widget)
+        else:
+            self.__widget.show()
+        self.__widget.setFocus(Qt.ActiveWindowFocusReason)

eric ide

mercurial