Author: remi
Date: 2009-07-22 15:52:19 +0200 (Wed, 22 Jul 2009)
New Revision: 5137

Modified:
   
software_suite_v3/smart-core/smart-server/trunk/data/web_interface/user_01/css/livewithtux.css
   
software_suite_v3/smart-core/smart-server/trunk/data/web_interface/user_01/xsl/livewithtux.xsl
   
software_suite_v3/smart-core/smart-server/trunk/resources/04_robot_content_interactions/00_resourceRobotContentInteractions.py
   
software_suite_v3/smart-core/smart-server/trunk/resources/07_web_interfaces/01_resourceWIUser01.py
   software_suite_v3/smart-core/smart-server/trunk/util/string/String.py
Log:
* Show TTS messages in the page "Live with Tux".

Modified: 
software_suite_v3/smart-core/smart-server/trunk/data/web_interface/user_01/css/livewithtux.css
===================================================================
--- 
software_suite_v3/smart-core/smart-server/trunk/data/web_interface/user_01/css/livewithtux.css
      2009-07-22 12:20:46 UTC (rev 5136)
+++ 
software_suite_v3/smart-core/smart-server/trunk/data/web_interface/user_01/css/livewithtux.css
      2009-07-22 13:52:19 UTC (rev 5137)
@@ -368,6 +368,13 @@
     font-family:Verdana, Bitstream Vera Sans;
 }
 
+.notifyHintGadgetMessage{
+    font-size:12px;
+    color:#FFFFFF;
+    text-align:left;
+    font-family:Verdana, Bitstream Vera Sans;
+}
+
 div.notifyHintGadgetMessages{
     left:0px;
     top:5px;

Modified: 
software_suite_v3/smart-core/smart-server/trunk/data/web_interface/user_01/xsl/livewithtux.xsl
===================================================================
--- 
software_suite_v3/smart-core/smart-server/trunk/data/web_interface/user_01/xsl/livewithtux.xsl
      2009-07-22 12:20:46 UTC (rev 5136)
+++ 
software_suite_v3/smart-core/smart-server/trunk/data/web_interface/user_01/xsl/livewithtux.xsl
      2009-07-22 13:52:19 UTC (rev 5137)
@@ -46,6 +46,7 @@
             var knowedAlertGadgetUuid = null;
             var emptyGadgetIcon = "/data/web_interface/user_01/img/empty.png";
             var emptyGadgetName = " ";
+            var knowedGadgetMessagesDict = null;
 
             function updateStates()
             {
@@ -142,6 +143,19 @@
                     {
                         updateCurrentAlertGadget("0", emptyGadgetName, 
emptyGadgetIcon);
                     }
+                    var gadgetMessagesDict = null;
+                    try
+                    {
+                        gadgetMessagesDict = states.get("gadget_messages");
+                    }
+                    catch (e)
+                    {
+                        gadgetMessagesDict = null;
+                    }
+                    if (gadgetMessagesDict != null)
+                    {
+                        updateMessagesBox(gadgetMessagesDict);
+                    }
                 }
                 if (batteryState != knowedBatteryState)
                 {
@@ -308,9 +322,46 @@
                     setpng(document.getElementById('notifyHintGadgetIcon'));
                     
document.getElementById("notifyHintGadgetName").firstChild.nodeValue = name;
                     
document.getElementById("notifyHintGadgetDescription").firstChild.nodeValue = 
description;
+                    clearMessagesBox();
                 }
             }
 
+            function updateMessagesBox(gadgetMessagesDict)
+            {
+                if (gadgetMessagesDict.get("count") == "0")
+                {
+                    return;
+                }
+                knowedCount = 0;
+                if (knowedGadgetMessagesDict != null)
+                {
+                    knowedCount = 
parseInt(knowedGadgetMessagesDict.get("count"));
+                }
+                currentCount = parseInt(gadgetMessagesDict.get("count"));
+                if (knowedCount == currentCount)
+                {
+                    return;
+                }
+                knowedGadgetMessagesDict = gadgetMessagesDict;
+                var divContent = '<span class="notifyHintGadgetMessage">';
+                for (i = 0; i < currentCount; i++)
+                {
+                    message = gadgetMessagesDict.get("msg_" + i);
+                    divContent += message + "<br>";
+                }
+                divContent += "</span>";
+                document.getElementById("notifyHintGadgetMessages").innerHTML 
= divContent;
+                // Scroll down
+                var objDiv = 
document.getElementById("notifyHintGadgetMessages");
+                objDiv.scrollTop = objDiv.scrollHeight;
+            }
+
+            function clearMessagesBox()
+            {
+                document.getElementById("notifyHintGadgetMessages").innerHTML 
= "<span></span>";
+                knowedGadgetMessagesDict = null;
+            }
+
             function updateGadgetThumb01(uuid, name, icon)
             {
                 if ((knowedGadget01Name != name) || (knowedGadget01Uuid != 
uuid))

Modified: 
software_suite_v3/smart-core/smart-server/trunk/resources/04_robot_content_interactions/00_resourceRobotContentInteractions.py
===================================================================
--- 
software_suite_v3/smart-core/smart-server/trunk/resources/04_robot_content_interactions/00_resourceRobotContentInteractions.py
      2009-07-22 12:20:46 UTC (rev 5136)
+++ 
software_suite_v3/smart-core/smart-server/trunk/resources/04_robot_content_interactions/00_resourceRobotContentInteractions.py
      2009-07-22 13:52:19 UTC (rev 5137)
@@ -6,6 +6,7 @@
 import time
 
 from translation.Translation import Translation
+from util.string.String import String
 
 PGU_CONTEXT_LAYER_USER = 0
 PGU_CONTEXT_LAYER_SCHEDULER = 1
@@ -36,6 +37,7 @@
             if 
self.__pluginInterpreterContext.getInstanceParameters()['startedBy'] == 
'scheduler':
                 self.__contextLayer = PGU_CONTEXT_LAYER_SCHEDULER
         self.__eventStack = []
+        self.__messagesHistory = []
         self.__eventStackMutex = threading.Lock()
         self.__contextComplete = False
         self.__contextCompleteMutex = threading.Lock()
@@ -124,6 +126,16 @@
         self.__eventStackMutex.release()
         return result
 
+    def getMessagesHistory(self):
+        """
+        """
+        self.__eventStackMutex.acquire()
+        result = []
+        for message in self.__messagesHistory:
+            result.append(message)
+        self.__eventStackMutex.release()
+        return result
+
     def insertMessage(self, message, locutor, pitch):
         """
         """
@@ -132,6 +144,7 @@
             'locutor' : locutor,
             'pitch' : pitch,
         })
+        self.__messagesHistory.append(message)
 
     def insertActuation(self, actuationName, arguments = []):
         """
@@ -556,6 +569,36 @@
                 result['uuid'] = 
pguContext.getPguObject().getDescription().getUuid()
         return result
 
+    def getLastStartedOnDemandUgcMessages(self):
+        """
+        """
+        def fillResult(pguContext):
+            result = {}
+            if pguContext == None:
+                result['count'] = 0
+                return result
+            else:
+                if not pguContext.executionIsStarted():
+                    result['count'] = 0
+                    return result
+            messages = pguContext.getMessagesHistory()
+            result['count'] = len(messages)
+            for i, message in enumerate(messages):
+                if not String.isUtf8(message):
+                    try:
+                        tmp = message.decode("latin-1", "ignore")
+                        message = tmp.encode("utf-8", "ignore")
+                    except:
+                        pass
+                message = String.toUtf8(message)
+                result['msg_%d' % i] = message
+            return result
+        pguContext = self.getForegroundPguContext()
+        if pguContext != None:
+            if pguContext.getContextLayer() != PGU_CONTEXT_LAYER_SCHEDULER:
+                return fillResult(pguContext)
+        return fillResult(self.getBackgroundPguContext())
+
     def __setStarted(self, value):
         """
         """

Modified: 
software_suite_v3/smart-core/smart-server/trunk/resources/07_web_interfaces/01_resourceWIUser01.py
===================================================================
--- 
software_suite_v3/smart-core/smart-server/trunk/resources/07_web_interfaces/01_resourceWIUser01.py
  2009-07-22 12:20:46 UTC (rev 5136)
+++ 
software_suite_v3/smart-core/smart-server/trunk/resources/07_web_interfaces/01_resourceWIUser01.py
  2009-07-22 13:52:19 UTC (rev 5137)
@@ -330,6 +330,7 @@
         currentAlertData = 
resourceRobotContentInteractions.getPguContextsManager().getCurrentUgcForegroundScheduled()
         if currentAlertData != {}:
             contentStruct['root']['alert'] = currentAlertData
+        contentStruct['root']['gadget_messages'] = 
resourceRobotContentInteractions.getPguContextsManager().getLastStartedOnDemandUgcMessages()
         return headersStruct, contentStruct
 
 # Register the service into the resource

Modified: software_suite_v3/smart-core/smart-server/trunk/util/string/String.py
===================================================================
--- software_suite_v3/smart-core/smart-server/trunk/util/string/String.py       
2009-07-22 12:20:46 UTC (rev 5136)
+++ software_suite_v3/smart-core/smart-server/trunk/util/string/String.py       
2009-07-22 13:52:19 UTC (rev 5137)
@@ -42,6 +42,20 @@
         return text
 
     # 
--------------------------------------------------------------------------
+    # Check if the text is encoded in 'utf-8'.
+    # 
--------------------------------------------------------------------------
+    def isUtf8(text):
+        """Check if the text is encoded in 'utf-8'.
+        @param text: Input text to check.
+        @return: A boolean.
+        """
+        encoding = detect(text)['encoding']
+        if encoding.lower() in ["utf8", "utf-8"]:
+            return True
+        else:
+            return False
+
+    # 
--------------------------------------------------------------------------
     # Translate a text.
     # 
--------------------------------------------------------------------------
     def translate(text, fromLang, toLang, inConsole = False):
@@ -161,6 +175,7 @@
         return text
 
     toUtf8 = staticmethod(toUtf8)
+    isUtf8 = staticmethod(isUtf8)
     translate = staticmethod(translate)
     autoTranslate = staticmethod(autoTranslate)
     getLanguage = staticmethod(getLanguage)


------------------------------------------------------------------------------
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to