--- /dev/null
+\r
+Microsoft Visual Studio Solution File, Format Version 11.00\r
+# Visual Studio 2010\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tactons Experiment", "Tactons Experiment\Tactons Experiment.vcxproj", "{06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tactons JND", "Tactons JND\Tactons JND.vcxproj", "{454A6651-24D2-4DBA-A579-FDACD5CAC68C}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TactonPlayer", "TactonPlayer\TactonPlayer.vcxproj", "{6D5C62C0-562D-4B2A-9AAC-806372810CBF}"\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Win32 = Debug|Win32\r
+ Release|Win32 = Release|Win32\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}.Debug|Win32.Build.0 = Debug|Win32\r
+ {06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}.Release|Win32.ActiveCfg = Release|Win32\r
+ {06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}.Release|Win32.Build.0 = Release|Win32\r
+ {454A6651-24D2-4DBA-A579-FDACD5CAC68C}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {454A6651-24D2-4DBA-A579-FDACD5CAC68C}.Debug|Win32.Build.0 = Debug|Win32\r
+ {454A6651-24D2-4DBA-A579-FDACD5CAC68C}.Release|Win32.ActiveCfg = Release|Win32\r
+ {454A6651-24D2-4DBA-A579-FDACD5CAC68C}.Release|Win32.Build.0 = Release|Win32\r
+ {6D5C62C0-562D-4B2A-9AAC-806372810CBF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {6D5C62C0-562D-4B2A-9AAC-806372810CBF}.Debug|Win32.Build.0 = Debug|Win32\r
+ {6D5C62C0-562D-4B2A-9AAC-806372810CBF}.Release|Win32.ActiveCfg = Release|Win32\r
+ {6D5C62C0-562D-4B2A-9AAC-806372810CBF}.Release|Win32.Build.0 = Release|Win32\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+2,4,1\r
+0,2,1\r
+1,1,1\r
+1,3,1\r
+0,0,1\r
+2,2,1\r
+0,1,1\r
+3,4,1\r
+0,3,1\r
+0,4,1\r
+2,3,1\r
+3,3,1\r
+1,4,1\r
+4,4,1\r
+1,2,1\r
--- /dev/null
+1,3,1\r
+1,4,1\r
+1,2,1\r
+2,5,1\r
+3,5,1\r
+0,2,1\r
+0,3,1\r
+0,1,1\r
+0,5,1\r
+1,1,1\r
+3,4,1\r
+4,5,1\r
+2,2,1\r
+0,4,1\r
+0,0,1\r
+2,4,1\r
+2,3,1\r
+4,4,1\r
+1,5,1\r
+3,3,1\r
--- /dev/null
+1;1111;200;250;20\r
+1;1111;200;250;40\r
+1;1111;200;250;60\r
+1;1111;200;250;80\r
+1;1111;200;250;100
\ No newline at end of file
--- /dev/null
+1;1111;50;250;100\r
+1;1111;100;250;100\r
+1;1111;150;250;100\r
+1;1111;200;250;100\r
+1;1111;250;250;100\r
+1;1111;300;250;100\r
+1;1111;350;250;100\r
+1;1111;400;250;100\r
--- /dev/null
+Frequencies\r
+Amplitudes\r
+Locations\r
+Durations\r
+All
\ No newline at end of file
--- /dev/null
+1;1111;200;50;100\r
+1;1111;200;100;100\r
+1;1111;200;150;100\r
+1;1111;200;200;100\r
+1;1111;200;250;100\r
+1;1111;200;300;100\r
--- /dev/null
+Rest\r
+Arm up\r
+Arm right\r
+Arm left\r
+Arm down\r
+Circle side\r
+Circle front
\ No newline at end of file
--- /dev/null
+1;0001;200;250;100\r
+1;0010;200;250;100\r
+1;0011;200;250;100\r
+1;0100;200;250;100\r
+1;0101;200;250;100\r
+1;0110;200;250;100\r
+1;0111;200;250;100\r
+1;1000;200;250;100\r
+1;1001;200;250;100\r
+1;1010;200;250;100\r
+1;1011;200;250;100\r
+1;1100;200;250;100\r
+1;1101;200;250;100\r
+1;1110;200;250;100\r
+1;1111;200;250;100\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup Label="ProjectConfigurations">\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}</ProjectGuid>\r
+ <Keyword>Qt4VSv1.0</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>\r
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+ <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IncludePath)</IncludePath>\r
+ <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IncludePath)</IncludePath>\r
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(LibraryPath)</LibraryPath>\r
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(LibraryPath)</LibraryPath>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories>.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <Optimization>Disabled</Optimization>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+ </ClCompile>\r
+ <Link>\r
+ <SubSystem>Windows</SubSystem>\r
+ <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+ <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <AdditionalDependencies>qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies);TactonPlayer.lib</AdditionalDependencies>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories>.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <DebugInformationFormat>\r
+ </DebugInformationFormat>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+ </ClCompile>\r
+ <Link>\r
+ <SubSystem>Windows</SubSystem>\r
+ <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+ <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>false</GenerateDebugInformation>\r
+ <AdditionalDependencies>qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies);TactonPlayer.lib</AdditionalDependencies>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="answerform.cpp" />\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_answerform.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_tactonsexperiment.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_answerform.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_tactonsexperiment.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="main.cpp" />\r
+ <ClCompile Include="tactonsexperiment.cpp" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="tactonsexperiment.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="tactonsexperiment.ui">\r
+ <FileType>Document</FileType>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="tactonsexperiment.qrc">\r
+ <FileType>Document</FileType>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="answerform.ui">\r
+ <FileType>Document</FileType>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="answerform.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+ </CustomBuild>\r
+ <ClInclude Include="GeneratedFiles\ui_answerform.h" />\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+ <ProjectExtensions>\r
+ <VisualStudio>\r
+ <UserProperties UicDir=".\GeneratedFiles" MocDir=".\GeneratedFiles\$(ConfigurationName)" MocOptions="" RccDir=".\GeneratedFiles" lupdateOnBuild="0" lupdateOptions="" lreleaseOptions="" QtVersion_x0020_Win32="4.7.3" />\r
+ </VisualStudio>\r
+ </ProjectExtensions>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup>\r
+ <Filter Include="Source Files">\r
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+ <Extensions>cpp;cxx;c;def</Extensions>\r
+ </Filter>\r
+ <Filter Include="Header Files">\r
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+ <Extensions>h</Extensions>\r
+ </Filter>\r
+ <Filter Include="Form Files">\r
+ <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>\r
+ <Extensions>ui</Extensions>\r
+ </Filter>\r
+ <Filter Include="Resource Files">\r
+ <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>\r
+ <Extensions>qrc;*</Extensions>\r
+ <ParseFiles>false</ParseFiles>\r
+ </Filter>\r
+ <Filter Include="Generated Files">\r
+ <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>\r
+ <Extensions>moc;h;cpp</Extensions>\r
+ <SourceControlFiles>False</SourceControlFiles>\r
+ </Filter>\r
+ <Filter Include="Generated Files\Debug">\r
+ <UniqueIdentifier>{4be88096-af23-4867-b021-d81a3fab99b9}</UniqueIdentifier>\r
+ <Extensions>cpp;moc</Extensions>\r
+ <SourceControlFiles>False</SourceControlFiles>\r
+ </Filter>\r
+ <Filter Include="Generated Files\Release">\r
+ <UniqueIdentifier>{772e3daf-faf0-4cd0-bb45-9c36d2fcf77a}</UniqueIdentifier>\r
+ <Extensions>cpp;moc</Extensions>\r
+ <SourceControlFiles>False</SourceControlFiles>\r
+ </Filter>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="main.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="tactonsexperiment.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_tactonsexperiment.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_tactonsexperiment.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_answerform.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_answerform.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="answerform.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="tactonsexperiment.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="tactonsexperiment.ui">\r
+ <Filter>Form Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="tactonsexperiment.qrc">\r
+ <Filter>Resource Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="answerform.ui">\r
+ <Filter>Form Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="answerform.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="GeneratedFiles\ui_answerform.h">\r
+ <Filter>Generated Files</Filter>\r
+ </ClInclude>\r
+ </ItemGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+#include "answerform.h"\r
+\r
+#include <QTimer>\r
+ #include <QDebug>\r
+\r
+AnswerForm::AnswerForm(QWidget *parent, Qt::WFlags flags)\r
+ : QDialog(parent, flags), _logfile(NULL), _tactonPlayer("COM3"), _current(0)\r
+{\r
+ //init the window\r
+ setupUi(this);\r
+ this->layout()->setSizeConstraint(QLayout::SetFixedSize);\r
+\r
+ //init buttons\r
+ QObject::connect(buttonSame, SIGNAL(clicked()), this, SLOT(pressSame()));\r
+ QObject::connect(buttonDifferent, SIGNAL(clicked()), this, SLOT(pressDifferent()));\r
+\r
+}\r
+\r
+AnswerForm::~AnswerForm()\r
+{\r
+ if (_logfile)\r
+ fclose(_logfile);\r
+ //reset the wristband\r
+ _tactonPlayer.stop();\r
+}\r
+\r
+void AnswerForm::init(QString user, int repetitions, QString experiment, QString gesture)\r
+{\r
+ _user = user;\r
+ _repetitions = repetitions;\r
+ _experiment = experiment;\r
+ _gesture = gesture;\r
+\r
+ //create log file\r
+ QString logfilename = user + "-" + experiment + "-" + gesture + "-";\r
+ _logfile = fopen(logfilename.toStdString().c_str(), "w");\r
+\r
+ //load icons\r
+ _nbtactons = _tactonPlayer.registFile((experiment + ".txt").toAscii().data());\r
+\r
+ //init the wristband\r
+ //_tactonPlayer.start();\r
+\r
+ //generate the block\r
+ for (int i = 0 ; i < _repetitions ; i++)\r
+ {\r
+ QList<QPair<int, int> > temp;\r
+ //generate the block\r
+ for (int j = 0 ; j < _nbtactons ; j++)\r
+ for (int k = j ; k < _nbtactons ; k++)\r
+ temp.push_back(QPair<int,int>(j, k));\r
+ //shuffle\r
+ for (int j = 0; j < temp.count(); j++)\r
+ temp.swap(j, (rand() % (temp.count() - j)) + j);\r
+ //add the block to the trial\r
+ _trials.append(temp);\r
+ }\r
+\r
+ //run first trial\r
+ runTrial();\r
+}\r
+\r
+void AnswerForm::setLabel()\r
+{\r
+ if (_current >= _trials.count())\r
+ label->setText("Finished!");\r
+ else\r
+ label->setText(QString::number(_current + 1) + "/" + QString::number(_trials.count()));\r
+}\r
+\r
+void AnswerForm::pressSame()\r
+{\r
+ setAnswer(true);\r
+}\r
+\r
+void AnswerForm::pressDifferent()\r
+{\r
+ setAnswer(false);\r
+}\r
+\r
+void AnswerForm::setAnswer(bool same)\r
+{\r
+ //write answer in the log file\r
+ log(same);\r
+\r
+ _current++;\r
+\r
+ //run next trial\r
+ runTrial();\r
+}\r
+\r
+void AnswerForm::runTrial()\r
+{\r
+ //change label with progress\r
+ setLabel();\r
+ \r
+ //disable buttons\r
+ toggleButtons();\r
+\r
+ if (_current >= _trials.count())\r
+ return;\r
+\r
+ //play next tacton 1\r
+ _tactonPlayer.play(_trials.at(_current).first);\r
+\r
+ //pause\r
+ //play next tacton 2\r
+ QTimer::singleShot(1000, this, SLOT(playSecond()));\r
+\r
+ //pause\r
+ //enable buttons\r
+ QTimer::singleShot(2000, this, SLOT(toggleButtons()));\r
+}\r
+\r
+void AnswerForm::playSecond()\r
+{\r
+ _tactonPlayer.play(_trials.at(_current).second);\r
+}\r
+\r
+void AnswerForm::toggleButtons()\r
+{\r
+ buttonDifferent->setEnabled(!buttonDifferent->isEnabled());\r
+ buttonSame->setEnabled(!buttonSame->isEnabled());\r
+}\r
+\r
+void AnswerForm::log(bool answer)\r
+{\r
+ if (_logfile == NULL)\r
+ return;\r
+ fprintf(_logfile, "%d,%d,%d\n", _trials.at(_current).first, _trials.at(_current).second, answer);\r
+}\r
--- /dev/null
+#ifndef _ANSWERFORM_\r
+#define _ANSWERFORM_\r
+\r
+#include <TactonPlayer/TactonPlayer.hpp>\r
+\r
+#include <QtGui/QDialog>\r
+#include "ui_answerform.h"\r
+\r
+\r
+class AnswerForm : public QDialog, Ui::AnswerFormClass\r
+{\r
+ Q_OBJECT\r
+\r
+public:\r
+ AnswerForm(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+ ~AnswerForm();\r
+\r
+ void init(QString user, int repetitions, QString experiment, QString gesture);\r
+\r
+ void setAnswer(bool same);\r
+\r
+private:\r
+ void setLabel();\r
+ void log(bool answer);\r
+ void runTrial();\r
+\r
+ FILE *_logfile;\r
+ TactonPlayer _tactonPlayer;\r
+ QString _user;\r
+ int _repetitions;\r
+ QString _experiment;\r
+ QString _gesture;\r
+ unsigned int _nbtactons;\r
+ QList<QPair<int, int> > _trials; \r
+ int _current;\r
+private slots:\r
+ void pressSame();\r
+ void pressDifferent();\r
+ void toggleButtons();\r
+ void playSecond();\r
+};\r
+\r
+#endif\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>AnswerFormClass</class>\r
+ <widget class="QDialog" name="AnswerFormClass">\r
+ <property name="geometry">\r
+ <rect>\r
+ <x>0</x>\r
+ <y>0</y>\r
+ <width>420</width>\r
+ <height>107</height>\r
+ </rect>\r
+ </property>\r
+ <property name="windowTitle">\r
+ <string>Tactons Experiment</string>\r
+ </property>\r
+ <layout class="QGridLayout" name="gridLayout_2">\r
+ <item row="0" column="0">\r
+ <layout class="QGridLayout" name="gridLayout">\r
+ <item row="0" column="0" colspan="2">\r
+ <widget class="QLabel" name="label">\r
+ <property name="minimumSize">\r
+ <size>\r
+ <width>400</width>\r
+ <height>40</height>\r
+ </size>\r
+ </property>\r
+ <property name="font">\r
+ <font>\r
+ <pointsize>20</pointsize>\r
+ </font>\r
+ </property>\r
+ <property name="styleSheet">\r
+ <string notr="true"/>\r
+ </property>\r
+ <property name="text">\r
+ <string/>\r
+ </property>\r
+ <property name="alignment">\r
+ <set>Qt::AlignCenter</set>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="1" column="0">\r
+ <widget class="QPushButton" name="buttonSame">\r
+ <property name="enabled">\r
+ <bool>true</bool>\r
+ </property>\r
+ <property name="font">\r
+ <font>\r
+ <pointsize>20</pointsize>\r
+ </font>\r
+ </property>\r
+ <property name="text">\r
+ <string>Same</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="1" column="1">\r
+ <widget class="QPushButton" name="buttonDifferent">\r
+ <property name="font">\r
+ <font>\r
+ <pointsize>20</pointsize>\r
+ </font>\r
+ </property>\r
+ <property name="text">\r
+ <string>Different</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ </layout>\r
+ </widget>\r
+ <resources/>\r
+ <connections/>\r
+</ui>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>AnswerWindow</class>\r
+ <widget class="QMainWindow" name="AnswerWindow">\r
+ <property name="geometry">\r
+ <rect>\r
+ <x>0</x>\r
+ <y>0</y>\r
+ <width>373</width>\r
+ <height>98</height>\r
+ </rect>\r
+ </property>\r
+ <property name="windowTitle">\r
+ <string>Tacton Study</string>\r
+ </property>\r
+ <property name="locale">\r
+ <locale language="English" country="Canada"/>\r
+ </property>\r
+ <widget class="QWidget" name="centralwidget">\r
+ <layout class="QGridLayout" name="gridLayout">\r
+ <item row="0" column="0" colspan="2">\r
+ <widget class="QLabel" name="label">\r
+ <property name="font">\r
+ <font>\r
+ <pointsize>20</pointsize>\r
+ </font>\r
+ </property>\r
+ <property name="styleSheet">\r
+ <string notr="true"/>\r
+ </property>\r
+ <property name="text">\r
+ <string>TextLabel</string>\r
+ </property>\r
+ <property name="alignment">\r
+ <set>Qt::AlignCenter</set>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="1" column="0">\r
+ <widget class="QPushButton" name="buttonSame">\r
+ <property name="font">\r
+ <font>\r
+ <pointsize>20</pointsize>\r
+ </font>\r
+ </property>\r
+ <property name="text">\r
+ <string>Same</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="1" column="1">\r
+ <widget class="QPushButton" name="buttonDifferent">\r
+ <property name="font">\r
+ <font>\r
+ <pointsize>20</pointsize>\r
+ </font>\r
+ </property>\r
+ <property name="text">\r
+ <string>Different</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </widget>\r
+ </widget>\r
+ <resources/>\r
+ <connections/>\r
+</ui>\r
--- /dev/null
+<ui version="4.0" >\r
+ <author></author>\r
+ <comment></comment>\r
+ <exportmacro></exportmacro>\r
+ <class>Dialog</class>\r
+ <widget class="QDialog" name="Dialog" >\r
+ <property name="geometry" >\r
+ <rect>\r
+ <x>0</x>\r
+ <y>0</y>\r
+ <width>400</width>\r
+ <height>300</height>\r
+ </rect>\r
+ </property>\r
+ <property name="windowTitle" >\r
+ <string>Dialog</string>\r
+ </property>\r
+ <widget class="QWidget" name="layoutWidget" >\r
+ <property name="geometry" >\r
+ <rect>\r
+ <x>20</x>\r
+ <y>250</y>\r
+ <width>351</width>\r
+ <height>33</height>\r
+ </rect>\r
+ </property>\r
+ <layout class="QHBoxLayout" >\r
+ <property name="margin" >\r
+ <number>0</number>\r
+ </property>\r
+ <property name="spacing" >\r
+ <number>6</number>\r
+ </property>\r
+ <item>\r
+ <spacer>\r
+ <property name="orientation" >\r
+ <enum>Qt::Horizontal</enum>\r
+ </property>\r
+ <property name="sizeHint" >\r
+ <size>\r
+ <width>131</width>\r
+ <height>31</height>\r
+ </size>\r
+ </property>\r
+ </spacer>\r
+ </item>\r
+ <item>\r
+ <widget class="QPushButton" name="okButton" >\r
+ <property name="text" >\r
+ <string>OK</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QPushButton" name="cancelButton" >\r
+ <property name="text" >\r
+ <string>Cancel</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </widget>\r
+ </widget>\r
+ <pixmapfunction></pixmapfunction>\r
+ <resources/>\r
+ <connections>\r
+ <connection>\r
+ <sender>okButton</sender>\r
+ <signal>clicked()</signal>\r
+ <receiver>Dialog</receiver>\r
+ <slot>accept()</slot>\r
+ <hints>\r
+ <hint type="sourcelabel" >\r
+ <x>278</x>\r
+ <y>253</y>\r
+ </hint>\r
+ <hint type="destinationlabel" >\r
+ <x>96</x>\r
+ <y>254</y>\r
+ </hint>\r
+ </hints>\r
+ </connection>\r
+ <connection>\r
+ <sender>cancelButton</sender>\r
+ <signal>clicked()</signal>\r
+ <receiver>Dialog</receiver>\r
+ <slot>reject()</slot>\r
+ <hints>\r
+ <hint type="sourcelabel" >\r
+ <x>369</x>\r
+ <y>253</y>\r
+ </hint>\r
+ <hint type="destinationlabel" >\r
+ <x>179</x>\r
+ <y>282</y>\r
+ </hint>\r
+ </hints>\r
+ </connection>\r
+ </connections>\r
+</ui>\r
--- /dev/null
+#include "tactonsexperiment.h"\r
+#include <QtGui/QApplication>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+ QApplication a(argc, argv);\r
+ TactonsExperiment w;\r
+ w.show();\r
+ return a.exec();\r
+}\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>MainWindow</class>\r
+ <widget class="QMainWindow" name="MainWindow">\r
+ <property name="geometry">\r
+ <rect>\r
+ <x>0</x>\r
+ <y>0</y>\r
+ <width>384</width>\r
+ <height>226</height>\r
+ </rect>\r
+ </property>\r
+ <property name="windowTitle">\r
+ <string>Tacton Study</string>\r
+ </property>\r
+ <widget class="QWidget" name="centralwidget">\r
+ <layout class="QGridLayout" name="gridLayout">\r
+ <item row="0" column="0">\r
+ <widget class="QLabel" name="labeluser">\r
+ <property name="text">\r
+ <string>User:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="1" column="0">\r
+ <widget class="QLabel" name="labelrepetitions">\r
+ <property name="text">\r
+ <string>Repetitions:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="2" column="0">\r
+ <widget class="QLabel" name="labelexperiment">\r
+ <property name="text">\r
+ <string>Experiment:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="0" column="1">\r
+ <widget class="QLineEdit" name="username"/>\r
+ </item>\r
+ <item row="1" column="1">\r
+ <widget class="QSpinBox" name="spinBox">\r
+ <property name="minimum">\r
+ <number>1</number>\r
+ </property>\r
+ <property name="maximum">\r
+ <number>100</number>\r
+ </property>\r
+ <property name="value">\r
+ <number>1</number>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="2" column="1">\r
+ <widget class="QComboBox" name="experiment"/>\r
+ </item>\r
+ <item row="3" column="1">\r
+ <widget class="QPushButton" name="buttonstart">\r
+ <property name="text">\r
+ <string>Start experiment</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </widget>\r
+ </widget>\r
+ <resources/>\r
+ <connections/>\r
+</ui>\r
--- /dev/null
+#include "tactonsexperiment.h"\r
+\r
+TactonsExperiment::TactonsExperiment(QWidget *parent, Qt::WFlags flags)\r
+ : QMainWindow(parent, flags)\r
+{\r
+ setupUi(this);\r
+\r
+ this->layout()->setSizeConstraint(QLayout::SetFixedSize);\r
+\r
+ FILE *f = fopen("Experiments.txt", "r");\r
+ if (f)\r
+ {\r
+ char buffer[256];\r
+ while ((fgets(buffer, 256, f)) != NULL)\r
+ {\r
+ while((buffer[strlen(buffer) - 1] == '\r') || (buffer[strlen(buffer) - 1] == '\n'))\r
+ buffer[strlen(buffer) - 1] = '\0';\r
+ experiment->addItem(buffer);\r
+ }\r
+ fclose(f);\r
+ }\r
+\r
+ f = fopen("Gestures.txt", "r");\r
+ if (f)\r
+ {\r
+ char buffer[256];\r
+ while ((fgets(buffer, 256, f)) != NULL)\r
+ {\r
+ while((buffer[strlen(buffer) - 1] == '\r') || (buffer[strlen(buffer) - 1] == '\n'))\r
+ buffer[strlen(buffer) - 1] = '\0';\r
+ gesture->addItem(buffer);\r
+ }\r
+ fclose(f);\r
+ }\r
+\r
+ QObject::connect(buttonstart, SIGNAL(clicked()), this, SLOT(runBlock()));\r
+}\r
+\r
+TactonsExperiment::~TactonsExperiment()\r
+{\r
+\r
+}\r
+\r
+void TactonsExperiment::runBlock(void)\r
+{\r
+ this->hide();\r
+ w.init(username->text(), repetitions->value(), experiment->currentText(), gesture->currentText());\r
+ w.show();\r
+}\r
+\r
--- /dev/null
+#ifndef TACTONSEXPERIMENT_H\r
+#define TACTONSEXPERIMENT_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_tactonsexperiment.h"\r
+\r
+#include "answerform.h"\r
+\r
+class TactonsExperiment : public QMainWindow, Ui::TactonsExperimentClass\r
+{\r
+ Q_OBJECT\r
+\r
+public:\r
+ TactonsExperiment(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+ ~TactonsExperiment();\r
+\r
+private:\r
+ AnswerForm w;\r
+\r
+private slots:\r
+ void runBlock(void);\r
+};\r
+\r
+#endif // TACTONSEXPERIMENT_H\r
--- /dev/null
+<RCC>\r
+ <qresource prefix="TactonsExperiment">\r
+ </qresource>\r
+</RCC>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>TactonsExperimentClass</class>\r
+ <widget class="QMainWindow" name="TactonsExperimentClass">\r
+ <property name="windowModality">\r
+ <enum>Qt::NonModal</enum>\r
+ </property>\r
+ <property name="geometry">\r
+ <rect>\r
+ <x>0</x>\r
+ <y>0</y>\r
+ <width>324</width>\r
+ <height>180</height>\r
+ </rect>\r
+ </property>\r
+ <property name="windowTitle">\r
+ <string>Tactons Experiment</string>\r
+ </property>\r
+ <property name="locale">\r
+ <locale language="English" country="Canada"/>\r
+ </property>\r
+ <widget class="QWidget" name="centralWidget">\r
+ <layout class="QGridLayout" name="gridLayout_2">\r
+ <item row="0" column="0">\r
+ <layout class="QGridLayout" name="gridLayout">\r
+ <item row="0" column="0">\r
+ <widget class="QLabel" name="labeluser">\r
+ <property name="text">\r
+ <string>User:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="0" column="1">\r
+ <widget class="QLineEdit" name="username"/>\r
+ </item>\r
+ <item row="1" column="0">\r
+ <widget class="QLabel" name="labelrepetitions">\r
+ <property name="text">\r
+ <string>Repetitions:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="1" column="1">\r
+ <widget class="QSpinBox" name="repetitions">\r
+ <property name="minimum">\r
+ <number>1</number>\r
+ </property>\r
+ <property name="maximum">\r
+ <number>100</number>\r
+ </property>\r
+ <property name="value">\r
+ <number>1</number>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="2" column="0">\r
+ <widget class="QLabel" name="labelexperiment">\r
+ <property name="text">\r
+ <string>Experiment:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="2" column="1">\r
+ <widget class="QComboBox" name="experiment"/>\r
+ </item>\r
+ <item row="3" column="0">\r
+ <widget class="QLabel" name="labelGesture">\r
+ <property name="text">\r
+ <string>Gesture:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="3" column="1">\r
+ <widget class="QComboBox" name="gesture"/>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item row="1" column="0">\r
+ <widget class="QPushButton" name="buttonstart">\r
+ <property name="locale">\r
+ <locale language="English" country="Canada"/>\r
+ </property>\r
+ <property name="text">\r
+ <string>Start experiment</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </widget>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+ <include location="tactonsexperiment.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup Label="ProjectConfigurations">\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{454A6651-24D2-4DBA-A579-FDACD5CAC68C}</ProjectGuid>\r
+ <Keyword>Qt4VSv1.0</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>\r
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories>.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <Optimization>Disabled</Optimization>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+ </ClCompile>\r
+ <Link>\r
+ <SubSystem>Windows</SubSystem>\r
+ <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+ <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <AdditionalDependencies>TactonPlayer.lib;qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories>.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <DebugInformationFormat>\r
+ </DebugInformationFormat>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+ </ClCompile>\r
+ <Link>\r
+ <SubSystem>Windows</SubSystem>\r
+ <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+ <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>false</GenerateDebugInformation>\r
+ <AdditionalDependencies>TactonPlayer.lib;qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="answer3AFC.cpp" />\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_answer3AFC.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_tactonsjnd.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\qrc_tactonsjnd.cpp">\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_answer3AFC.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_tactonsjnd.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="main.cpp" />\r
+ <ClCompile Include="tactonsjnd.cpp" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="tactonsjnd.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "tactonsjnd.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "tactonsjnd.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="tactonsjnd.ui">\r
+ <FileType>Document</FileType>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="answer3AFC.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+ </CustomBuild>\r
+ <ClInclude Include="GeneratedFiles\ui_answer3AFC.h" />\r
+ <ClInclude Include="GeneratedFiles\ui_tactonsjnd.h" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="tactonsjnd.qrc">\r
+ <FileType>Document</FileType>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="answer3AFC.ui">\r
+ <FileType>Document</FileType>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+ <ProjectExtensions>\r
+ <VisualStudio>\r
+ <UserProperties UicDir=".\GeneratedFiles" MocDir=".\GeneratedFiles\$(ConfigurationName)" MocOptions="" RccDir=".\GeneratedFiles" lupdateOnBuild="0" lupdateOptions="" lreleaseOptions="" QtVersion_x0020_Win32="4.7.3" />\r
+ </VisualStudio>\r
+ </ProjectExtensions>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup>\r
+ <Filter Include="Source Files">\r
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+ <Extensions>cpp;cxx;c;def</Extensions>\r
+ </Filter>\r
+ <Filter Include="Header Files">\r
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+ <Extensions>h</Extensions>\r
+ </Filter>\r
+ <Filter Include="Form Files">\r
+ <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>\r
+ <Extensions>ui</Extensions>\r
+ </Filter>\r
+ <Filter Include="Resource Files">\r
+ <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>\r
+ <Extensions>qrc;*</Extensions>\r
+ <ParseFiles>false</ParseFiles>\r
+ </Filter>\r
+ <Filter Include="Generated Files">\r
+ <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>\r
+ <Extensions>moc;h;cpp</Extensions>\r
+ <SourceControlFiles>False</SourceControlFiles>\r
+ </Filter>\r
+ <Filter Include="Generated Files\Debug">\r
+ <UniqueIdentifier>{46d85dc4-0c7e-48d5-bd55-7a10b0960449}</UniqueIdentifier>\r
+ <Extensions>cpp;moc</Extensions>\r
+ <SourceControlFiles>False</SourceControlFiles>\r
+ </Filter>\r
+ <Filter Include="Generated Files\Release">\r
+ <UniqueIdentifier>{12076a94-7630-4742-8658-e16a03d8f379}</UniqueIdentifier>\r
+ <Extensions>cpp;moc</Extensions>\r
+ <SourceControlFiles>False</SourceControlFiles>\r
+ </Filter>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="main.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="tactonsjnd.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_tactonsjnd.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_tactonsjnd.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\qrc_tactonsjnd.cpp">\r
+ <Filter>Generated Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_answer3AFC.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_answer3AFC.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="answer3AFC.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="tactonsjnd.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="tactonsjnd.ui">\r
+ <Filter>Form Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="tactonsjnd.qrc">\r
+ <Filter>Resource Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="answer3AFC.ui">\r
+ <Filter>Form Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="answer3AFC.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="GeneratedFiles\ui_tactonsjnd.h">\r
+ <Filter>Generated Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="GeneratedFiles\ui_answer3AFC.h">\r
+ <Filter>Generated Files</Filter>\r
+ </ClInclude>\r
+ </ItemGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+#include "answer3AFC.h"\r
+\r
+#include <QTimer>\r
+ #include <QDebug>\r
+\r
+Answer3AFC::Answer3AFC(QWidget *parent, Qt::WFlags flags)\r
+ : QDialog(parent, flags), _logfile(NULL), _tactonPlayer("COM3"), _current(0)\r
+{\r
+ //init the window\r
+ setupUi(this);\r
+ this->layout()->setSizeConstraint(QLayout::SetFixedSize);\r
+\r
+ //init buttons\r
+ QObject::connect(play1, SIGNAL(clicked()), this, SLOT(play(1)));\r
+ QObject::connect(play2, SIGNAL(clicked()), this, SLOT(play(2)));\r
+ QObject::connect(play3, SIGNAL(clicked()), this, SLOT(play(3)));\r
+ QObject::connect(answer1, SIGNAL(clicked()), this, SLOT(answer(1)));\r
+ QObject::connect(answer2, SIGNAL(clicked()), this, SLOT(answer(2)));\r
+ QObject::connect(answer3, SIGNAL(clicked()), this, SLOT(answer(3)));\r
+}\r
+\r
+void Answer3AFC::toggleButtons()\r
+{\r
+ bool ok = _tplayed[0] && _tplayed[1] && _tplayed[2];\r
+ play1->setEnabled(ok);\r
+ play2->setEnabled(ok);\r
+ play3->setEnabled(ok);\r
+}\r
+\r
+void Answer3AFC::play(int tacton)\r
+{\r
+ if (tacton == _goodanswer)\r
+ _tactonPlayer.play(Tacton(\r
+ \r
+ (...[tacton]);\r
+ _tplayed[tacton]++;\r
+ toggleButtons();\r
+}\r
+\r
+void Answer3AFC::answer(int rep)\r
+{\r
+ log(rep);\r
+ _tplayed[0] = _tplayed[1] = _tplayed[2] = 0;\r
+ toggleButtons();\r
+\r
+ runTrial();\r
+}\r
+\r
+void Answer3AFC::log(bool answer)\r
+{\r
+ if (_logfile == NULL)\r
+ return;\r
+ fprintf(_logfile, "%d,%d,%d,%d,%d,%d,%d\n", _currentval, _currenttest, _goodanswer, answer, _tplayed[0], _tplayed[1], _tplayed[2]);\r
+}\r
+ \r
+void Answer3AFC::runTrial()\r
+{\r
+}
\ No newline at end of file
--- /dev/null
+#ifndef _ANSWER3AFC_\r
+#define _ANSWER3AFC_\r
+\r
+#include <TactonPlayer/TactonPlayer.hpp>\r
+\r
+#include <QtGui/QDialog>\r
+#include "ui_answer3AFC.h"\r
+\r
+\r
+class Answer3AFC : public QDialog, Ui::Answer3AFCClass\r
+{\r
+ Q_OBJECT\r
+\r
+public:\r
+ Answer3AFC(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+ ~Answer3AFC();\r
+\r
+ void init(QString user, int repetitions, QString experiment, QString gesture);\r
+\r
+ void setAnswer(bool same);\r
+\r
+private:\r
+ void log(bool answer);\r
+ void runTrial();\r
+\r
+ FILE *_logfile;\r
+ TactonPlayer _tactonPlayer;\r
+ QString _user;\r
+ int _reversals, tseries, _fseries;\r
+ double _tinc, _finc;\r
+ QString _experiment;\r
+ QString _gesture;\r
+\r
+ int _currentval, _currenttest, _goodanswer;\r
+ \r
+ int _tplayed[3];\r
+\r
+private slots:\r
+ void toggleButtons();\r
+ void play(int tacton);\r
+ void answer(int rep);\r
+};\r
+\r
+#endif\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>Answer3AFCClass</class>\r
+ <widget class="QDialog" name="Answer3AFCClass">\r
+ <property name="geometry">\r
+ <rect>\r
+ <x>0</x>\r
+ <y>0</y>\r
+ <width>392</width>\r
+ <height>122</height>\r
+ </rect>\r
+ </property>\r
+ <property name="windowTitle">\r
+ <string>Tactons JND experiment</string>\r
+ </property>\r
+ <widget class="QWidget" name="gridLayoutWidget">\r
+ <property name="geometry">\r
+ <rect>\r
+ <x>0</x>\r
+ <y>0</y>\r
+ <width>391</width>\r
+ <height>121</height>\r
+ </rect>\r
+ </property>\r
+ <layout class="QGridLayout" name="gridLayout">\r
+ <property name="leftMargin">\r
+ <number>10</number>\r
+ </property>\r
+ <property name="rightMargin">\r
+ <number>10</number>\r
+ </property>\r
+ <property name="horizontalSpacing">\r
+ <number>20</number>\r
+ </property>\r
+ <property name="verticalSpacing">\r
+ <number>10</number>\r
+ </property>\r
+ <item row="2" column="0">\r
+ <widget class="QPushButton" name="play1">\r
+ <property name="text">\r
+ <string>Play</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="2" column="1">\r
+ <widget class="QPushButton" name="play2">\r
+ <property name="text">\r
+ <string>Play</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="2" column="2">\r
+ <widget class="QPushButton" name="play3">\r
+ <property name="text">\r
+ <string>Play</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="1" column="0" colspan="3">\r
+ <widget class="QLabel" name="label">\r
+ <property name="font">\r
+ <font>\r
+ <pointsize>20</pointsize>\r
+ </font>\r
+ </property>\r
+ <property name="locale">\r
+ <locale language="English" country="Canada"/>\r
+ </property>\r
+ <property name="text">\r
+ <string>Which one is different?</string>\r
+ </property>\r
+ <property name="alignment">\r
+ <set>Qt::AlignCenter</set>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="3" column="0">\r
+ <widget class="QPushButton" name="answer1">\r
+ <property name="enabled">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="text">\r
+ <string>This one</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="3" column="1">\r
+ <widget class="QPushButton" name="answer2">\r
+ <property name="enabled">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="text">\r
+ <string>This one</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="3" column="2">\r
+ <widget class="QPushButton" name="answer3">\r
+ <property name="enabled">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="text">\r
+ <string>This one</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </widget>\r
+ </widget>\r
+ <resources/>\r
+ <connections/>\r
+</ui>\r
--- /dev/null
+#include "tactonsjnd.h"\r
+#include <QtGui/QApplication>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+ QApplication a(argc, argv);\r
+ TactonsJND w;\r
+ w.show();\r
+ return a.exec();\r
+}\r
--- /dev/null
+#include "tactonsjnd.h"\r
+\r
+TactonsJND::TactonsJND(QWidget *parent, Qt::WFlags flags)\r
+ : QMainWindow(parent, flags)\r
+{\r
+ setupUi(this);\r
+\r
+ this->layout()->setSizeConstraint(QLayout::SetFixedSize);\r
+\r
+ FILE *f = fopen("Experiments.txt", "r");\r
+ if (f)\r
+ {\r
+ char buffer[256];\r
+ while ((fgets(buffer, 256, f)) != NULL)\r
+ {\r
+ while((buffer[strlen(buffer) - 1] == '\r') || (buffer[strlen(buffer) - 1] == '\n'))\r
+ buffer[strlen(buffer) - 1] = '\0';\r
+ experiment->addItem(buffer);\r
+ }\r
+ fclose(f);\r
+ }\r
+\r
+ f = fopen("Gestures.txt", "r");\r
+ if (f)\r
+ {\r
+ char buffer[256];\r
+ while ((fgets(buffer, 256, f)) != NULL)\r
+ {\r
+ while((buffer[strlen(buffer) - 1] == '\r') || (buffer[strlen(buffer) - 1] == '\n'))\r
+ buffer[strlen(buffer) - 1] = '\0';\r
+ gesture->addItem(buffer);\r
+ }\r
+ fclose(f);\r
+ }\r
+\r
+ QObject::connect(buttonstart, SIGNAL(clicked()), this, SLOT(runBlock()));\r
+}\r
+\r
+TactonsJND::~TactonsJND()\r
+{\r
+\r
+}\r
--- /dev/null
+#ifndef TACTONSJND_H\r
+#define TACTONSJND_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_tactonsjnd.h"\r
+\r
+#include "Answer3AFC.h"\r
+\r
+class TactonsJND : public QMainWindow, Ui::TactonsJNDClass\r
+{\r
+ Q_OBJECT\r
+\r
+public:\r
+ TactonsJND(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+ ~TactonsJND();\r
+\r
+private:\r
+ Answer3AFC w;\r
+\r
+private slots:\r
+ void runBlock(void);\r
+};\r
+\r
+#endif // TACTONSJND_H\r
--- /dev/null
+<RCC>\r
+ <qresource prefix="TactonsJND">\r
+ </qresource>\r
+</RCC>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>TactonsJNDClass</class>\r
+ <widget class="QMainWindow" name="TactonsJNDClass">\r
+ <property name="geometry">\r
+ <rect>\r
+ <x>0</x>\r
+ <y>0</y>\r
+ <width>461</width>\r
+ <height>270</height>\r
+ </rect>\r
+ </property>\r
+ <property name="windowTitle">\r
+ <string>Tactons JND experiment</string>\r
+ </property>\r
+ <property name="locale">\r
+ <locale language="English" country="Canada"/>\r
+ </property>\r
+ <widget class="QWidget" name="centralWidget">\r
+ <layout class="QGridLayout" name="gridLayout_3">\r
+ <item row="0" column="0">\r
+ <layout class="QGridLayout" name="gridLayout_2">\r
+ <item row="0" column="0">\r
+ <layout class="QGridLayout" name="gridLayout">\r
+ <item row="0" column="0">\r
+ <widget class="QLabel" name="labeluser">\r
+ <property name="text">\r
+ <string>User:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="0" column="1">\r
+ <widget class="QLineEdit" name="username"/>\r
+ </item>\r
+ <item row="1" column="0">\r
+ <widget class="QLabel" name="labelrepetitions">\r
+ <property name="text">\r
+ <string>Reversals:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="1" column="1">\r
+ <widget class="QSpinBox" name="reversals">\r
+ <property name="minimum">\r
+ <number>2</number>\r
+ </property>\r
+ <property name="maximum">\r
+ <number>20</number>\r
+ </property>\r
+ <property name="value">\r
+ <number>5</number>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="6" column="0">\r
+ <widget class="QLabel" name="labelexperiment">\r
+ <property name="text">\r
+ <string>Experiment:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="6" column="1">\r
+ <widget class="QComboBox" name="experiment"/>\r
+ </item>\r
+ <item row="7" column="0">\r
+ <widget class="QLabel" name="labelGesture">\r
+ <property name="text">\r
+ <string>Gesture:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="7" column="1">\r
+ <widget class="QComboBox" name="gesture"/>\r
+ </item>\r
+ <item row="2" column="0">\r
+ <widget class="QLabel" name="tinclabel">\r
+ <property name="text">\r
+ <string>T Inc</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="3" column="0">\r
+ <widget class="QLabel" name="finclabel">\r
+ <property name="text">\r
+ <string>F Inc</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="4" column="0">\r
+ <widget class="QLabel" name="tserieslabel">\r
+ <property name="text">\r
+ <string>T Series</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="5" column="0">\r
+ <widget class="QLabel" name="fserieslabel">\r
+ <property name="text">\r
+ <string>F Series</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="4" column="1">\r
+ <widget class="QSpinBox" name="tseries">\r
+ <property name="minimum">\r
+ <number>1</number>\r
+ </property>\r
+ <property name="maximum">\r
+ <number>20</number>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="5" column="1">\r
+ <widget class="QSpinBox" name="fseries">\r
+ <property name="minimum">\r
+ <number>1</number>\r
+ </property>\r
+ <property name="maximum">\r
+ <number>20</number>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="2" column="1">\r
+ <widget class="QDoubleSpinBox" name="tinc">\r
+ <property name="maximum">\r
+ <double>10.000000000000000</double>\r
+ </property>\r
+ <property name="singleStep">\r
+ <double>0.250000000000000</double>\r
+ </property>\r
+ <property name="value">\r
+ <double>1.000000000000000</double>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="3" column="1">\r
+ <widget class="QDoubleSpinBox" name="finc">\r
+ <property name="minimum">\r
+ <double>0.000000000000000</double>\r
+ </property>\r
+ <property name="maximum">\r
+ <double>10.000000000000000</double>\r
+ </property>\r
+ <property name="singleStep">\r
+ <double>0.250000000000000</double>\r
+ </property>\r
+ <property name="value">\r
+ <double>1.000000000000000</double>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item row="1" column="0">\r
+ <widget class="QPushButton" name="buttonstart">\r
+ <property name="locale">\r
+ <locale language="English" country="Canada"/>\r
+ </property>\r
+ <property name="text">\r
+ <string>Start experiment</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ </layout>\r
+ </widget>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+ <include location="tactonsjnd.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r