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

Reply via email to