[tuxdroid-svn] r1424 - in software_suite_v2/software/tools/attitunesStudio/trunk/src: . com/tuxisa
Status: Beta
Brought to you by:
ks156
From: remi <c2m...@c2...> - 2008-07-30 12:30:45
|
Author: remi Date: 2008-07-30 14:30:47 +0200 (Wed, 30 Jul 2008) New Revision: 1424 Modified: software_suite_v2/software/tools/attitunesStudio/trunk/src/MainFrame.java software_suite_v2/software/tools/attitunesStudio/trunk/src/com/tuxisalive/attitunes/format/ATTBlockParams.java software_suite_v2/software/tools/attitunesStudio/trunk/src/com/tuxisalive/attitunes/visual/ATTBlockViewer.java Log: * added: play scene from index. play a block. stop the scene or the block. Modified: software_suite_v2/software/tools/attitunesStudio/trunk/src/MainFrame.java =================================================================== --- software_suite_v2/software/tools/attitunesStudio/trunk/src/MainFrame.java 2008-07-30 11:11:36 UTC (rev 1423) +++ software_suite_v2/software/tools/attitunesStudio/trunk/src/MainFrame.java 2008-07-30 12:30:47 UTC (rev 1424) @@ -264,7 +264,6 @@ */ public void onBlockSelected(ATTBlock block) { - System.out.println(block.getFunctionParams()); } /* @@ -349,6 +348,7 @@ */ public void onPlayButtonPressed(MouseEvent evt) { + attBlockViewer.playScene(attBlockViewer.getCurrentPosition()); } /* @@ -356,5 +356,6 @@ */ public void onStopButtonPressed(MouseEvent evt) { + attBlockViewer.stop(); } } Modified: software_suite_v2/software/tools/attitunesStudio/trunk/src/com/tuxisalive/attitunes/format/ATTBlockParams.java =================================================================== --- software_suite_v2/software/tools/attitunesStudio/trunk/src/com/tuxisalive/attitunes/format/ATTBlockParams.java 2008-07-30 11:11:36 UTC (rev 1423) +++ software_suite_v2/software/tools/attitunesStudio/trunk/src/com/tuxisalive/attitunes/format/ATTBlockParams.java 2008-07-30 12:30:47 UTC (rev 1424) @@ -1,5 +1,6 @@ package com.tuxisalive.attitunes.format; +import java.net.URLEncoder; import java.util.Hashtable; /** @@ -451,7 +452,13 @@ cmd = String.format("OSL_CMD:TTS:SET_PITCH:%d", struct.get("pitch")); result[1] = cmd; String text = (String)struct.get("text"); - text = text.replace("\n", " "); + // Remove ending lines + text = text.replace("\n", "."); + // Try to encode the string + try + { + text = URLEncoder.encode(text, "UTF-8"); + } catch (Exception e) {} cmd = String.format("OSL_CMD:TTS:SPEAK:%s", text); result[2] = cmd; return result; @@ -468,7 +475,7 @@ * ATT command to macro command * ---------------------------------------------------------------------- */ - public String[] attCmdToMacroCmd(Hashtable<String,Object> struct) + public static String[] attCmdToMacroCmd(Hashtable<String,Object> struct) { String cmd = (String)struct.get("cmd"); Modified: software_suite_v2/software/tools/attitunesStudio/trunk/src/com/tuxisalive/attitunes/visual/ATTBlockViewer.java =================================================================== --- software_suite_v2/software/tools/attitunesStudio/trunk/src/com/tuxisalive/attitunes/visual/ATTBlockViewer.java 2008-07-30 11:11:36 UTC (rev 1423) +++ software_suite_v2/software/tools/attitunesStudio/trunk/src/com/tuxisalive/attitunes/visual/ATTBlockViewer.java 2008-07-30 12:30:47 UTC (rev 1424) @@ -12,10 +12,7 @@ import java.util.Iterator; import java.util.Hashtable; -import com.tuxisalive.api.SLock; -import com.tuxisalive.api.SThread; -import com.tuxisalive.api.TuxEventHandlers; -import com.tuxisalive.api.TuxAPIMisc; +import com.tuxisalive.api.*; import com.tuxisalive.attitunes.ATTConfig; import com.tuxisalive.attitunes.ATTMisc; import com.tuxisalive.attitunes.block.ATTBlock; @@ -85,6 +82,8 @@ public ATTFormatReadWrite attituneFile; + public TuxAPI tux = new TuxAPI("localhost", 270); + /** * Constructor of the class. * @param width width of the viewer @@ -178,6 +177,8 @@ recalcFullTime(); /* Set visible */ this.setVisible(true); + /* Connect the tuxdroid api */ + tux.server.autoConnect(TuxAPIConst.CLIENT_LEVEL_RESTRICTED, "AttitunesStudio", "attscene"); } /** @@ -186,6 +187,7 @@ public void destroy() { refreshStarted = false; + tux.destroy(); } /* @@ -1191,4 +1193,130 @@ } return result; } + + /* + * + */ + private void sendSimpleCmd(String cmd) + { + Hashtable<Object,Object> varStruct = new Hashtable<Object,Object>(); + Hashtable<Object,Object> varResult = new Hashtable<Object,Object>(); + + tux.server.request(cmd, varStruct, varResult, false); + } + + /** + * + * @param index + * @param length + */ + @SuppressWarnings("unchecked") + public void playScene(double index) + { + /* Translate the block format to the macro format */ + Hashtable<String,Object> blocksStruct = getBlocksStruct(); + List<Hashtable<String,Object>> macroStruct = new ArrayList<Hashtable<String,Object>>(); + String key; + Iterator<String> it = (Iterator<String>)blocksStruct.keys(); + Hashtable<String,Object> blockStruct; + Hashtable<String,Object> cmdStruct; + String[] cmds; + String wavPath; + String cmd; + String cmdStr; + double idxb; + String macro; + + while (it.hasNext()) + { + key = (String)it.next(); + blockStruct = (Hashtable<String,Object>)blocksStruct.get(key); + cmds = ATTBlockParams.attCmdToMacroCmd(blockStruct); + + for (int i = 0; i < cmds.length; i++) + { + cmdStruct = new Hashtable<String,Object>(); + cmdStruct.put("delay", (Double)blockStruct.get("start_time") + 0.5); + cmdStruct.put("cmd", cmds[i]); + + cmd = (String)blockStruct.get("cmd"); + + if (cmd.equals("wav_play")) + { + cmdStruct.put("delay", (Double)cmdStruct.get("delay") - 0.3); + if (attituneFile != null) + { + wavPath = attituneFile.getWaveFile((String)blockStruct.get("wav_name")); + cmdStruct.put("wav_path", wavPath); + } + } + else if (cmd.equals("tts_play")) + { + cmdStruct.put("delay", (Double)cmdStruct.get("delay") - 0.3); + } + + if ((Double)cmdStruct.get("delay") >= index) + { + if (cmdStruct.containsKey("wav_path")) + { + cmdStr = String.format("OSL_CMD:WAV:PLAY:0.0,0.0,%s", + (String)cmdStruct.get("wav_path")); + cmdStruct.put("cmd", cmdStr); + } + cmdStruct.put("delay", (Double)cmdStruct.get("delay") - index); + macroStruct.add(cmdStruct); + } + else if (cmdStruct.containsKey("wav_path")) + { + idxb = index - (Double)cmdStruct.get("delay"); + + if (idxb < (Double)blockStruct.get("duration")) + { + cmdStr = String.format("OSL_CMD:WAV:PLAY:%g,0.0,%s", + idxb, + (String)cmdStruct.get("wav_path")); + cmdStruct.put("cmd", cmdStr); + cmdStruct.put("delay", 0.0); + macroStruct.add(cmdStruct); + } + } + } + } + + macro = ""; + for (int i = 0; i < macroStruct.size(); i++) + { + cmd = String.format("%g:%s|", + macroStruct.get(i).get("delay"), + macroStruct.get(i).get("cmd")); + macro += cmd; + } + + sendSimpleCmd(String.format("macro/play?macro=%s", macro)); + } + + /** + * + */ + public void stop() + { + sendSimpleCmd("macro/stop?"); + } + + /** + * + * @param index + */ + public void playBlock(ATTBlock block) + { + String[] cmds = ATTBlockParams.attCmdToMacroCmd(block.getFunctionParams()); + String macro = ""; + + for (int i = 0; i < cmds.length; i++) + { + macro += String.format("0.1:%s|", cmds[i]); + } + + sendSimpleCmd(String.format("macro/play?macro=%s", macro)); + } } |