Fixed a few bugs and added actions to activate the time tracker window. release-0.2.0

Sat, 03 Nov 2012 16:53:13 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 03 Nov 2012 16:53:13 +0100
changeset 21
28b7956c9608
parent 20
b907cb69c2c7
child 22
3959ca3f0480

Fixed a few bugs and added actions to activate the time tracker window.

ChangeLog file | annotate | diff | comparison | revisions
PluginTimeTracker.e4p file | annotate | diff | comparison | revisions
PluginTimeTracker.py file | annotate | diff | comparison | revisions
PluginTimeTracker.zip file | annotate | diff | comparison | revisions
TimeTracker/Documentation/source/Plugin_Time_Tracker.TimeTracker.TimeTracker.html file | annotate | diff | comparison | revisions
TimeTracker/TimeTracker.py file | annotate | diff | comparison | revisions
TimeTracker/i18n/timetracker_de.qm file | annotate | diff | comparison | revisions
TimeTracker/i18n/timetracker_de.ts file | annotate | diff | comparison | revisions
TimeTracker/i18n/timetracker_en.ts file | annotate | diff | comparison | revisions
TimeTracker/i18n/timetracker_es.ts file | annotate | diff | comparison | revisions
--- a/ChangeLog	Sun Oct 21 19:44:36 2012 +0200
+++ b/ChangeLog	Sat Nov 03 16:53:13 2012 +0100
@@ -1,4 +1,8 @@
 ChangeLog
 ---------
-Version 0.1.0
+Version 0.2.0:
+- fixed a few bugs
+- added actions to activate the time tracker window
+
+Version 0.1.0:
 - first development release
--- a/PluginTimeTracker.e4p	Sun Oct 21 19:44:36 2012 +0200
+++ b/PluginTimeTracker.e4p	Sat Nov 03 16:53:13 2012 +0100
@@ -7,7 +7,7 @@
   <ProgLanguage mixed="0">Python3</ProgLanguage>
   <ProjectType>E4Plugin</ProjectType>
   <Description>Plugin implementing a simple time tracker to keep track of the time used for a project. The time can be subdivided into tasks.</Description>
-  <Version>0.1</Version>
+  <Version>0.2.0</Version>
   <Author>Detlev Offenbach</Author>
   <Email>detlev@die-offenbachs.de</Email>
   <TranslationPattern>TimeTracker/i18n/timetracker_%language%.ts</TranslationPattern>
--- a/PluginTimeTracker.py	Sun Oct 21 19:44:36 2012 +0200
+++ b/PluginTimeTracker.py	Sat Nov 03 16:53:13 2012 +0100
@@ -22,7 +22,7 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "0.1.0"
+version = "0.2.0"
 className = "TimeTrackerPlugin"
 packageName = "TimeTracker"
 shortDescription = "Time Tracker to keep track of the project time."
@@ -114,11 +114,11 @@
         """
         global error
         
-        if self.__ui.versionIsNewer('5.2.99', '20121012'):
+        if self.__ui.versionIsNewer('5.2.99', '20121102'):
             error = ""
         else:
             error = self.trUtf8("eric5 version is too old, {0}, {1} or newer needed.")\
-                .format("5.3.0", "20121012")
+                .format("5.3.0", "20121103")
             return False
         
         return True
@@ -139,7 +139,7 @@
         timeTrackerPluginObject = self
         
         self.__object = TimeTracker(self, self.__ui)
-##        self.__object.initActions()
+        self.__object.activate()
         e5App().registerPluginObject("TimeTracker", self.__object)
         
         if self.__e5project.isOpen():
@@ -156,6 +156,7 @@
         Public method to deactivate this plugin.
         """
         e5App().unregisterPluginObject("TimeTracker")
+        self.__object.deactivate()
         
         self.__e5project.newProject.disconnect(self.__object.projectOpened)
         self.__e5project.projectOpened.disconnect(self.__object.projectOpened)
Binary file PluginTimeTracker.zip has changed
--- a/TimeTracker/Documentation/source/Plugin_Time_Tracker.TimeTracker.TimeTracker.html	Sun Oct 21 19:44:36 2012 +0200
+++ b/TimeTracker/Documentation/source/Plugin_Time_Tracker.TimeTracker.TimeTracker.html	Sat Nov 03 16:53:13 2012 +0100
@@ -61,18 +61,27 @@
 <td><a href="#TimeTracker.__init__">TimeTracker</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#TimeTracker.__activateWidget">__activateWidget</a></td>
+<td>Private slot to handle the activation of the project browser.</td>
+</tr><tr>
 <td><a href="#TimeTracker.__initialize">__initialize</a></td>
 <td>Public slot to initialize some member variables.</td>
 </tr><tr>
 <td><a href="#TimeTracker.__readTrackerEntries">__readTrackerEntries</a></td>
 <td>Private slot to read the time tracker entries from a file.</td>
 </tr><tr>
+<td><a href="#TimeTracker.activate">activate</a></td>
+<td>Public method to activate the time tracker.</td>
+</tr><tr>
 <td><a href="#TimeTracker.addTrackerEntry">addTrackerEntry</a></td>
 <td>Public method to add a new tracker entry based on the given data.</td>
 </tr><tr>
 <td><a href="#TimeTracker.continueTrackerEntry">continueTrackerEntry</a></td>
 <td>Public method to continue the current tracker entry.</td>
 </tr><tr>
+<td><a href="#TimeTracker.deactivate">deactivate</a></td>
+<td>Public method to deactivate the time tracker.</td>
+</tr><tr>
 <td><a href="#TimeTracker.deleteTrackerEntry">deleteTrackerEntry</a></td>
 <td>Public method to delete a tracker entry given its ID.</td>
 </tr><tr>
@@ -133,7 +142,12 @@
 <dd>
 parent (QObject)
 </dd>
-</dl><a NAME="TimeTracker.__initialize" ID="TimeTracker.__initialize"></a>
+</dl><a NAME="TimeTracker.__activateWidget" ID="TimeTracker.__activateWidget"></a>
+<h4>TimeTracker.__activateWidget</h4>
+<b>__activateWidget</b>(<i></i>)
+<p>
+        Private slot to handle the activation of the project browser.
+</p><a NAME="TimeTracker.__initialize" ID="TimeTracker.__initialize"></a>
 <h4>TimeTracker.__initialize</h4>
 <b>__initialize</b>(<i></i>)
 <p>
@@ -143,6 +157,11 @@
 <b>__readTrackerEntries</b>(<i></i>)
 <p>
         Private slot to read the time tracker entries from a file.
+</p><a NAME="TimeTracker.activate" ID="TimeTracker.activate"></a>
+<h4>TimeTracker.activate</h4>
+<b>activate</b>(<i></i>)
+<p>
+        Public method to activate the time tracker.
 </p><a NAME="TimeTracker.addTrackerEntry" ID="TimeTracker.addTrackerEntry"></a>
 <h4>TimeTracker.addTrackerEntry</h4>
 <b>addTrackerEntry</b>(<i>startDateTime, duration, task, comment</i>)
@@ -167,6 +186,11 @@
 <b>continueTrackerEntry</b>(<i></i>)
 <p>
         Public method to continue the current tracker entry.
+</p><a NAME="TimeTracker.deactivate" ID="TimeTracker.deactivate"></a>
+<h4>TimeTracker.deactivate</h4>
+<b>deactivate</b>(<i></i>)
+<p>
+        Public method to deactivate the time tracker.
 </p><a NAME="TimeTracker.deleteTrackerEntry" ID="TimeTracker.deleteTrackerEntry"></a>
 <h4>TimeTracker.deleteTrackerEntry</h4>
 <b>deleteTrackerEntry</b>(<i>eid</i>)
--- 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)
Binary file TimeTracker/i18n/timetracker_de.qm has changed
--- a/TimeTracker/i18n/timetracker_de.ts	Sun Oct 21 19:44:36 2012 +0200
+++ b/TimeTracker/i18n/timetracker_de.ts	Sat Nov 03 16:53:13 2012 +0100
@@ -1,48 +1,39 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="de_DE" sourcelanguage="en_US">
+<!DOCTYPE TS><TS version="2.0" language="de_DE" sourcelanguage="en_US">
 <context>
     <name>TimeTracker</name>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="44"/>
+        <location filename="TimeTracker/TimeTracker.py" line="68"/>
         <source>Time Tracker</source>
         <translation>Zeitnahme</translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="118"/>
+        <location filename="TimeTracker/TimeTracker.py" line="151"/>
         <source>Read Time Tracker File</source>
         <translation>Zeitnahmedatei einlesen</translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="161"/>
+        <location filename="TimeTracker/TimeTracker.py" line="194"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Zeitnahmedatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
-    <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="118"/>
-        <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained %n invalid entries. These have been discarded.</source>
-        <translation type="obsolete">
-            <numerusform>&lt;p&gt;Die Zeitnahmedatei &lt;b&gt;{0}&lt;/b&gt; enthielt einen ungültigen Eintrag. Dieser wurde übersprungen.&lt;/p&gt;</numerusform>
-            <numerusform>&lt;p&gt;Die Zeitnahmedatei &lt;b&gt;{0}&lt;/b&gt; enthielt %n ungültige Einträge. Diese wurden übersprungen.&lt;/p&gt;</numerusform>
-        </translation>
-    </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="144"/>
+        <location filename="TimeTracker/TimeTracker.py" line="177"/>
         <source>Save Time Tracker File</source>
         <translation>Zeitnahmedatei speichern</translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="144"/>
+        <location filename="TimeTracker/TimeTracker.py" line="177"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; could not be saved.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Zeitnahmedatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gespeichert werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="216"/>
+        <location filename="TimeTracker/TimeTracker.py" line="249"/>
         <source>Import Time Tracker File</source>
         <translation>Zeitnahmedatei importieren</translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="211"/>
+        <location filename="TimeTracker/TimeTracker.py" line="244"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained %n invalid entries.</source>
         <translation>
             <numerusform>&lt;p&gt;Die Zeitnahmedatei &lt;b&gt;{0}&lt;/b&gt; enthielt einen ungültigen Eintrag.</numerusform>
@@ -50,15 +41,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="204"/>
-        <source>%n duplicate entries were detected.</source>
-        <translation type="obsolete">
-            <numerusform>Ein doppelter Eintrag wurde erkannt.</numerusform>
-            <numerusform>%n doppelte Einträge wurden erkannt.</numerusform>
-        </translation>
-    </message>
-    <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="207"/>
+        <location filename="TimeTracker/TimeTracker.py" line="240"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained %n duplicate entries.</source>
         <translation>
             <numerusform>&lt;p&gt;Die Zeitnahmedatei &lt;b&gt;{0}&lt;/b&gt; enthielt einen doppelten Eintrag.</numerusform>
@@ -66,20 +49,15 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="118"/>
+        <location filename="TimeTracker/TimeTracker.py" line="151"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained %n invalid entries. These have been discarded.&lt;/p&gt;</source>
         <translation>
             <numerusform>&lt;p&gt;Die Zeitnahmedatei &lt;b&gt;{0}&lt;/b&gt; enthielt einen ungültigen Eintrag. Dieser wurde übersprungen.&lt;/p&gt;</numerusform>
             <numerusform>&lt;p&gt;Die Zeitnahmedatei &lt;b&gt;{0}&lt;/b&gt; enthielt %n ungültige Einträge. Diese wurden übersprungen.&lt;/p&gt;</numerusform>
         </translation>
     </message>
-    <message>
-        <location filename="TimeTracker/TimeTracker.py" line="214"/>
-        <source>These have been ignored.&lt;/p&gt;</source>
-        <translation type="obsolete">Diese wurden ignoriert.&lt;/p&gt;</translation>
-    </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="204"/>
+        <location filename="TimeTracker/TimeTracker.py" line="237"/>
         <source> %n duplicate entries were detected.</source>
         <translation>
             <numerusform> Ein doppelter Eintrag wurde erkannt.</numerusform>
@@ -87,13 +65,33 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="214"/>
+        <location filename="TimeTracker/TimeTracker.py" line="247"/>
         <source> %n entries have been ignored.&lt;/p&gt;</source>
         <translation>
             <numerusform> Ein Eintrag wurde ubersprungen.&lt;/p&gt;</numerusform>
             <numerusform> %n Einträge wurden übersprungen.&lt;/p&gt;</numerusform>
         </translation>
     </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="68"/>
+        <source>T&amp;ime Tracker</source>
+        <translation>Ze&amp;itnahme</translation>
+    </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="68"/>
+        <source>Alt+Shift+I</source>
+        <translation>Alt+Shift+I</translation>
+    </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="73"/>
+        <source>Switch the input focus to the Time Tracker window.</source>
+        <translation>Schalte den Eingabefokus auf das Zeitnahmefenster um.</translation>
+    </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="75"/>
+        <source>&lt;b&gt;Activate Time Tracker&lt;/b&gt;&lt;p&gt;This switches the input focus to the Time Tracker window.&lt;/p&gt;</source>
+        <translation>&lt;b&gt;Zeitnahme aktivieren&lt;/b&gt;&lt;p&gt;Dies schaltet den Eingabefokus auf das Zeitnahmefenster um.&lt;/p&gt;</translation>
+    </message>
 </context>
 <context>
     <name>TimeTrackerEntryDialog</name>
--- a/TimeTracker/i18n/timetracker_en.ts	Sun Oct 21 19:44:36 2012 +0200
+++ b/TimeTracker/i18n/timetracker_en.ts	Sat Nov 03 16:53:13 2012 +0100
@@ -1,40 +1,39 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="de_DE">
+<!DOCTYPE TS><TS version="2.0" language="de_DE" sourcelanguage="">
 <context>
     <name>TimeTracker</name>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="44"/>
+        <location filename="TimeTracker/TimeTracker.py" line="68"/>
         <source>Time Tracker</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="118"/>
+        <location filename="TimeTracker/TimeTracker.py" line="151"/>
         <source>Read Time Tracker File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="161"/>
+        <location filename="TimeTracker/TimeTracker.py" line="194"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="144"/>
+        <location filename="TimeTracker/TimeTracker.py" line="177"/>
         <source>Save Time Tracker File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="144"/>
+        <location filename="TimeTracker/TimeTracker.py" line="177"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; could not be saved.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="216"/>
+        <location filename="TimeTracker/TimeTracker.py" line="249"/>
         <source>Import Time Tracker File</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="211"/>
+        <location filename="TimeTracker/TimeTracker.py" line="244"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained %n invalid entries.</source>
         <translation>
             <numerusform>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained one invalid entry.</numerusform>
@@ -42,7 +41,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="207"/>
+        <location filename="TimeTracker/TimeTracker.py" line="240"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained %n duplicate entries.</source>
         <translation>
             <numerusform>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained one duplicate entry.</numerusform>
@@ -50,7 +49,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="118"/>
+        <location filename="TimeTracker/TimeTracker.py" line="151"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained %n invalid entries. These have been discarded.&lt;/p&gt;</source>
         <translation>
             <numerusform>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained one invalid entry. This has been discarded.&lt;/p&gt;</numerusform>
@@ -58,7 +57,7 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="204"/>
+        <location filename="TimeTracker/TimeTracker.py" line="237"/>
         <source> %n duplicate entries were detected.</source>
         <translation>
             <numerusform> One duplicate entry was detected.</numerusform>
@@ -66,13 +65,33 @@
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="214"/>
+        <location filename="TimeTracker/TimeTracker.py" line="247"/>
         <source> %n entries have been ignored.&lt;/p&gt;</source>
         <translation>
             <numerusform> One entry has been ignored.&lt;/p&gt;</numerusform>
             <numerusform> %n entries have been ignored.&lt;/p&gt;</numerusform>
         </translation>
     </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="68"/>
+        <source>T&amp;ime Tracker</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="68"/>
+        <source>Alt+Shift+I</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="73"/>
+        <source>Switch the input focus to the Time Tracker window.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="75"/>
+        <source>&lt;b&gt;Activate Time Tracker&lt;/b&gt;&lt;p&gt;This switches the input focus to the Time Tracker window.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TimeTrackerEntryDialog</name>
--- a/TimeTracker/i18n/timetracker_es.ts	Sun Oct 21 19:44:36 2012 +0200
+++ b/TimeTracker/i18n/timetracker_es.ts	Sat Nov 03 16:53:13 2012 +0100
@@ -3,70 +3,90 @@
 <context>
     <name>TimeTracker</name>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="44"/>
+        <location filename="TimeTracker/TimeTracker.py" line="68"/>
         <source>Time Tracker</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="118"/>
+        <location filename="TimeTracker/TimeTracker.py" line="151"/>
         <source>Read Time Tracker File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="161"/>
+        <location filename="TimeTracker/TimeTracker.py" line="194"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="144"/>
+        <location filename="TimeTracker/TimeTracker.py" line="177"/>
         <source>Save Time Tracker File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="144"/>
+        <location filename="TimeTracker/TimeTracker.py" line="177"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; could not be saved.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="TimeTracker/TimeTracker.py" line="216"/>
+        <location filename="TimeTracker/TimeTracker.py" line="249"/>
         <source>Import Time Tracker File</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="211"/>
+        <location filename="TimeTracker/TimeTracker.py" line="244"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained %n invalid entries.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="207"/>
+        <location filename="TimeTracker/TimeTracker.py" line="240"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained %n duplicate entries.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="118"/>
+        <location filename="TimeTracker/TimeTracker.py" line="151"/>
         <source>&lt;p&gt;The time tracker file &lt;b&gt;{0}&lt;/b&gt; contained %n invalid entries. These have been discarded.&lt;/p&gt;</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="204"/>
+        <location filename="TimeTracker/TimeTracker.py" line="237"/>
         <source> %n duplicate entries were detected.</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
     <message numerus="yes">
-        <location filename="TimeTracker/TimeTracker.py" line="214"/>
+        <location filename="TimeTracker/TimeTracker.py" line="247"/>
         <source> %n entries have been ignored.&lt;/p&gt;</source>
         <translation type="unfinished">
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="68"/>
+        <source>T&amp;ime Tracker</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="68"/>
+        <source>Alt+Shift+I</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="73"/>
+        <source>Switch the input focus to the Time Tracker window.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="TimeTracker/TimeTracker.py" line="75"/>
+        <source>&lt;b&gt;Activate Time Tracker&lt;/b&gt;&lt;p&gt;This switches the input focus to the Time Tracker window.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TimeTrackerEntryDialog</name>

eric ide

mercurial