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