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));
+ }
}
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn