diff --git a/dist-033-diagnostics3/builder-debug.yml b/dist-out/builder-debug.yml similarity index 98% rename from dist-033-diagnostics3/builder-debug.yml rename to dist-out/builder-debug.yml index feb539d..55054cf 100644 --- a/dist-033-diagnostics3/builder-debug.yml +++ b/dist-out/builder-debug.yml @@ -2,7 +2,7 @@ x64: firstOrDefaultFilePatterns: - '!**/node_modules/**' - '!build{,/**/*}' - - '!dist-033-diagnostics3{,/**/*}' + - '!dist-out{,/**/*}' - main.js - preload.js - src/**/* @@ -25,4 +25,4 @@ x64: - time4midi.png - package.json nsis: - script: "!include \"C:\\Projects\\Time4Midi\\node_modules\\app-builder-lib\\templates\\nsis\\include\\StdUtils.nsh\"\n!addincludedir \"C:\\Projects\\Time4Midi\\node_modules\\app-builder-lib\\templates\\nsis\\include\"\n!macro _isUpdated _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"updated\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isUpdated `\"\" isUpdated \"\"`\n\n!macro _isForceRun _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"force-run\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isForceRun `\"\" isForceRun \"\"`\n\n!macro _isKeepShortcuts _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"keep-shortcuts\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isKeepShortcuts `\"\" isKeepShortcuts \"\"`\n\n!macro _isNoDesktopShortcut _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"no-desktop-shortcut\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isNoDesktopShortcut `\"\" isNoDesktopShortcut \"\"`\n\n!macro _isDeleteAppData _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"delete-app-data\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isDeleteAppData `\"\" isDeleteAppData \"\"`\n\n!macro _isForAllUsers _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"allusers\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isForAllUsers `\"\" isForAllUsers \"\"`\n\n!macro _isForCurrentUser _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"currentuser\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isForCurrentUser `\"\" isForCurrentUser \"\"`\n\n!macro addLangs\n !insertmacro MUI_LANGUAGE \"English\"\n !insertmacro MUI_LANGUAGE \"German\"\n !insertmacro MUI_LANGUAGE \"French\"\n !insertmacro MUI_LANGUAGE \"SpanishInternational\"\n !insertmacro MUI_LANGUAGE \"SimpChinese\"\n !insertmacro MUI_LANGUAGE \"TradChinese\"\n !insertmacro MUI_LANGUAGE \"Japanese\"\n !insertmacro MUI_LANGUAGE \"Korean\"\n !insertmacro MUI_LANGUAGE \"Italian\"\n !insertmacro MUI_LANGUAGE \"Dutch\"\n !insertmacro MUI_LANGUAGE \"Danish\"\n !insertmacro MUI_LANGUAGE \"Swedish\"\n !insertmacro MUI_LANGUAGE \"Norwegian\"\n !insertmacro MUI_LANGUAGE \"Finnish\"\n !insertmacro MUI_LANGUAGE \"Russian\"\n !insertmacro MUI_LANGUAGE \"Portuguese\"\n !insertmacro MUI_LANGUAGE \"PortugueseBR\"\n !insertmacro MUI_LANGUAGE \"Polish\"\n !insertmacro MUI_LANGUAGE \"Ukrainian\"\n !insertmacro MUI_LANGUAGE \"Czech\"\n !insertmacro MUI_LANGUAGE \"Slovak\"\n !insertmacro MUI_LANGUAGE \"Hungarian\"\n !insertmacro MUI_LANGUAGE \"Arabic\"\n !insertmacro MUI_LANGUAGE \"Turkish\"\n !insertmacro MUI_LANGUAGE \"Thai\"\n !insertmacro MUI_LANGUAGE \"Vietnamese\"\n!macroend\n\n!include \"C:\\Users\\jh\\AppData\\Local\\Temp\\t-ExBgIO\\1-messages.nsh\"\n!addplugindir /x86-unicode \"C:\\Users\\jh\\AppData\\Local\\electron-builder\\Cache\\nsis-resources-3.4.1\\nsis-resources-3.4.1-2jx2y\\plugins\\x86-unicode\"\n\n!include \"common.nsh\"\n!include \"extractAppPackage.nsh\"\n\n# https://github.com/electron-userland/electron-builder/issues/3972#issuecomment-505171582\nCRCCheck off\nWindowIcon Off\nAutoCloseWindow True\nRequestExecutionLevel ${REQUEST_EXECUTION_LEVEL}\n\nFunction .onInit\n !ifndef SPLASH_IMAGE\n SetSilent silent\n !endif\n\n !insertmacro check64BitAndSetRegView\nFunctionEnd\n\nFunction .onGUIInit\n InitPluginsDir\n\n !ifdef SPLASH_IMAGE\n File /oname=$PLUGINSDIR\\splash.bmp \"${SPLASH_IMAGE}\"\n BgImage::SetBg $PLUGINSDIR\\splash.bmp\n BgImage::Redraw\n !endif\nFunctionEnd\n\nSection\n !ifdef SPLASH_IMAGE\n HideWindow\n !endif\n\n StrCpy $INSTDIR \"$PLUGINSDIR\\app\"\n !ifdef UNPACK_DIR_NAME\n StrCpy $INSTDIR \"$TEMP\\${UNPACK_DIR_NAME}\"\n !endif\n\n RMDir /r $INSTDIR\n SetOutPath $INSTDIR\n\n !ifdef APP_DIR_64\n !ifdef APP_DIR_ARM64\n !ifdef APP_DIR_32\n ${if} ${IsNativeARM64}\n File /r \"${APP_DIR_ARM64}\\*.*\"\n ${elseif} ${RunningX64}\n File /r \"${APP_DIR_64}\\*.*\"\n ${else}\n File /r \"${APP_DIR_32}\\*.*\"\n ${endIf}\n !else\n ${if} ${IsNativeARM64}\n File /r \"${APP_DIR_ARM64}\\*.*\"\n ${else}\n File /r \"${APP_DIR_64}\\*.*\"\n {endIf}\n !endif\n !else\n !ifdef APP_DIR_32\n ${if} ${RunningX64}\n File /r \"${APP_DIR_64}\\*.*\"\n ${else}\n File /r \"${APP_DIR_32}\\*.*\"\n ${endIf}\n !else\n File /r \"${APP_DIR_64}\\*.*\"\n !endif\n !endif\n !else\n !ifdef APP_DIR_32\n File /r \"${APP_DIR_32}\\*.*\"\n !else\n !insertmacro extractEmbeddedAppPackage\n !endif\n !endif\n\n System::Call 'Kernel32::SetEnvironmentVariable(t, t)i (\"PORTABLE_EXECUTABLE_DIR\", \"$EXEDIR\").r0'\n System::Call 'Kernel32::SetEnvironmentVariable(t, t)i (\"PORTABLE_EXECUTABLE_FILE\", \"$EXEPATH\").r0'\n System::Call 'Kernel32::SetEnvironmentVariable(t, t)i (\"PORTABLE_EXECUTABLE_APP_FILENAME\", \"${APP_FILENAME}\").r0'\n ${StdUtils.GetAllParameters} $R0 0\n\n !ifdef SPLASH_IMAGE\n BgImage::Destroy\n !endif\n\n\tExecWait \"$INSTDIR\\${APP_EXECUTABLE_FILENAME} $R0\" $0\n SetErrorLevel $0\n\n SetOutPath $EXEDIR\n\tRMDir /r $INSTDIR\nSectionEnd\n" + script: "!include \"C:\\Projects\\Time4Midi\\node_modules\\app-builder-lib\\templates\\nsis\\include\\StdUtils.nsh\"\n!addincludedir \"C:\\Projects\\Time4Midi\\node_modules\\app-builder-lib\\templates\\nsis\\include\"\n!macro _isUpdated _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"updated\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isUpdated `\"\" isUpdated \"\"`\n\n!macro _isForceRun _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"force-run\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isForceRun `\"\" isForceRun \"\"`\n\n!macro _isKeepShortcuts _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"keep-shortcuts\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isKeepShortcuts `\"\" isKeepShortcuts \"\"`\n\n!macro _isNoDesktopShortcut _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"no-desktop-shortcut\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isNoDesktopShortcut `\"\" isNoDesktopShortcut \"\"`\n\n!macro _isDeleteAppData _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"delete-app-data\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isDeleteAppData `\"\" isDeleteAppData \"\"`\n\n!macro _isForAllUsers _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"allusers\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isForAllUsers `\"\" isForAllUsers \"\"`\n\n!macro _isForCurrentUser _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"currentuser\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isForCurrentUser `\"\" isForCurrentUser \"\"`\n\n!macro addLangs\n !insertmacro MUI_LANGUAGE \"English\"\n !insertmacro MUI_LANGUAGE \"German\"\n !insertmacro MUI_LANGUAGE \"French\"\n !insertmacro MUI_LANGUAGE \"SpanishInternational\"\n !insertmacro MUI_LANGUAGE \"SimpChinese\"\n !insertmacro MUI_LANGUAGE \"TradChinese\"\n !insertmacro MUI_LANGUAGE \"Japanese\"\n !insertmacro MUI_LANGUAGE \"Korean\"\n !insertmacro MUI_LANGUAGE \"Italian\"\n !insertmacro MUI_LANGUAGE \"Dutch\"\n !insertmacro MUI_LANGUAGE \"Danish\"\n !insertmacro MUI_LANGUAGE \"Swedish\"\n !insertmacro MUI_LANGUAGE \"Norwegian\"\n !insertmacro MUI_LANGUAGE \"Finnish\"\n !insertmacro MUI_LANGUAGE \"Russian\"\n !insertmacro MUI_LANGUAGE \"Portuguese\"\n !insertmacro MUI_LANGUAGE \"PortugueseBR\"\n !insertmacro MUI_LANGUAGE \"Polish\"\n !insertmacro MUI_LANGUAGE \"Ukrainian\"\n !insertmacro MUI_LANGUAGE \"Czech\"\n !insertmacro MUI_LANGUAGE \"Slovak\"\n !insertmacro MUI_LANGUAGE \"Hungarian\"\n !insertmacro MUI_LANGUAGE \"Arabic\"\n !insertmacro MUI_LANGUAGE \"Turkish\"\n !insertmacro MUI_LANGUAGE \"Thai\"\n !insertmacro MUI_LANGUAGE \"Vietnamese\"\n!macroend\n\n!include \"C:\\Users\\jh\\AppData\\Local\\Temp\\t-kdPl5p\\1-messages.nsh\"\n!addplugindir /x86-unicode \"C:\\Users\\jh\\AppData\\Local\\electron-builder\\Cache\\nsis-resources-3.4.1\\nsis-resources-3.4.1-2jx2y\\plugins\\x86-unicode\"\n\n!include \"common.nsh\"\n!include \"extractAppPackage.nsh\"\n\n# https://github.com/electron-userland/electron-builder/issues/3972#issuecomment-505171582\nCRCCheck off\nWindowIcon Off\nAutoCloseWindow True\nRequestExecutionLevel ${REQUEST_EXECUTION_LEVEL}\n\nFunction .onInit\n !ifndef SPLASH_IMAGE\n SetSilent silent\n !endif\n\n !insertmacro check64BitAndSetRegView\nFunctionEnd\n\nFunction .onGUIInit\n InitPluginsDir\n\n !ifdef SPLASH_IMAGE\n File /oname=$PLUGINSDIR\\splash.bmp \"${SPLASH_IMAGE}\"\n BgImage::SetBg $PLUGINSDIR\\splash.bmp\n BgImage::Redraw\n !endif\nFunctionEnd\n\nSection\n !ifdef SPLASH_IMAGE\n HideWindow\n !endif\n\n StrCpy $INSTDIR \"$PLUGINSDIR\\app\"\n !ifdef UNPACK_DIR_NAME\n StrCpy $INSTDIR \"$TEMP\\${UNPACK_DIR_NAME}\"\n !endif\n\n RMDir /r $INSTDIR\n SetOutPath $INSTDIR\n\n !ifdef APP_DIR_64\n !ifdef APP_DIR_ARM64\n !ifdef APP_DIR_32\n ${if} ${IsNativeARM64}\n File /r \"${APP_DIR_ARM64}\\*.*\"\n ${elseif} ${RunningX64}\n File /r \"${APP_DIR_64}\\*.*\"\n ${else}\n File /r \"${APP_DIR_32}\\*.*\"\n ${endIf}\n !else\n ${if} ${IsNativeARM64}\n File /r \"${APP_DIR_ARM64}\\*.*\"\n ${else}\n File /r \"${APP_DIR_64}\\*.*\"\n {endIf}\n !endif\n !else\n !ifdef APP_DIR_32\n ${if} ${RunningX64}\n File /r \"${APP_DIR_64}\\*.*\"\n ${else}\n File /r \"${APP_DIR_32}\\*.*\"\n ${endIf}\n !else\n File /r \"${APP_DIR_64}\\*.*\"\n !endif\n !endif\n !else\n !ifdef APP_DIR_32\n File /r \"${APP_DIR_32}\\*.*\"\n !else\n !insertmacro extractEmbeddedAppPackage\n !endif\n !endif\n\n System::Call 'Kernel32::SetEnvironmentVariable(t, t)i (\"PORTABLE_EXECUTABLE_DIR\", \"$EXEDIR\").r0'\n System::Call 'Kernel32::SetEnvironmentVariable(t, t)i (\"PORTABLE_EXECUTABLE_FILE\", \"$EXEPATH\").r0'\n System::Call 'Kernel32::SetEnvironmentVariable(t, t)i (\"PORTABLE_EXECUTABLE_APP_FILENAME\", \"${APP_FILENAME}\").r0'\n ${StdUtils.GetAllParameters} $R0 0\n\n !ifdef SPLASH_IMAGE\n BgImage::Destroy\n !endif\n\n\tExecWait \"$INSTDIR\\${APP_EXECUTABLE_FILENAME} $R0\" $0\n SetErrorLevel $0\n\n SetOutPath $EXEDIR\n\tRMDir /r $INSTDIR\nSectionEnd\n" diff --git a/dist-033-diagnostics3/builder-effective-config.yaml b/dist-out/builder-effective-config.yaml similarity index 92% rename from dist-033-diagnostics3/builder-effective-config.yaml rename to dist-out/builder-effective-config.yaml index 8244e4d..628a1f7 100644 --- a/dist-033-diagnostics3/builder-effective-config.yaml +++ b/dist-out/builder-effective-config.yaml @@ -1,5 +1,5 @@ directories: - output: dist-033-diagnostics3 + output: dist-out buildResources: build appId: com.jhartworks.time4midi productName: Time4Midi diff --git a/dist-033-diagnostics3/win-unpacked/LICENSE.electron.txt b/dist-out/win-unpacked/LICENSE.electron.txt similarity index 100% rename from dist-033-diagnostics3/win-unpacked/LICENSE.electron.txt rename to dist-out/win-unpacked/LICENSE.electron.txt diff --git a/dist-033-diagnostics3/win-unpacked/LICENSES.chromium.html b/dist-out/win-unpacked/LICENSES.chromium.html similarity index 100% rename from dist-033-diagnostics3/win-unpacked/LICENSES.chromium.html rename to dist-out/win-unpacked/LICENSES.chromium.html diff --git a/dist-033-diagnostics3/win-unpacked/Time4Midi.exe b/dist-out/win-unpacked/Time4Midi.exe similarity index 99% rename from dist-033-diagnostics3/win-unpacked/Time4Midi.exe rename to dist-out/win-unpacked/Time4Midi.exe index b12b154..370ee77 100644 Binary files a/dist-033-diagnostics3/win-unpacked/Time4Midi.exe and b/dist-out/win-unpacked/Time4Midi.exe differ diff --git a/dist-033-diagnostics3/win-unpacked/chrome_100_percent.pak b/dist-out/win-unpacked/chrome_100_percent.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/chrome_100_percent.pak rename to dist-out/win-unpacked/chrome_100_percent.pak diff --git a/dist-033-diagnostics3/win-unpacked/chrome_200_percent.pak b/dist-out/win-unpacked/chrome_200_percent.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/chrome_200_percent.pak rename to dist-out/win-unpacked/chrome_200_percent.pak diff --git a/dist-033-diagnostics3/win-unpacked/d3dcompiler_47.dll b/dist-out/win-unpacked/d3dcompiler_47.dll similarity index 100% rename from dist-033-diagnostics3/win-unpacked/d3dcompiler_47.dll rename to dist-out/win-unpacked/d3dcompiler_47.dll diff --git a/dist-033-diagnostics3/win-unpacked/dxcompiler.dll b/dist-out/win-unpacked/dxcompiler.dll similarity index 100% rename from dist-033-diagnostics3/win-unpacked/dxcompiler.dll rename to dist-out/win-unpacked/dxcompiler.dll diff --git a/dist-033-diagnostics3/win-unpacked/dxil.dll b/dist-out/win-unpacked/dxil.dll similarity index 100% rename from dist-033-diagnostics3/win-unpacked/dxil.dll rename to dist-out/win-unpacked/dxil.dll diff --git a/dist-033-diagnostics3/win-unpacked/ffmpeg.dll b/dist-out/win-unpacked/ffmpeg.dll similarity index 100% rename from dist-033-diagnostics3/win-unpacked/ffmpeg.dll rename to dist-out/win-unpacked/ffmpeg.dll diff --git a/dist-033-diagnostics3/win-unpacked/icudtl.dat b/dist-out/win-unpacked/icudtl.dat similarity index 100% rename from dist-033-diagnostics3/win-unpacked/icudtl.dat rename to dist-out/win-unpacked/icudtl.dat diff --git a/dist-033-diagnostics3/win-unpacked/libEGL.dll b/dist-out/win-unpacked/libEGL.dll similarity index 100% rename from dist-033-diagnostics3/win-unpacked/libEGL.dll rename to dist-out/win-unpacked/libEGL.dll diff --git a/dist-033-diagnostics3/win-unpacked/libGLESv2.dll b/dist-out/win-unpacked/libGLESv2.dll similarity index 100% rename from dist-033-diagnostics3/win-unpacked/libGLESv2.dll rename to dist-out/win-unpacked/libGLESv2.dll diff --git a/dist-033-diagnostics3/win-unpacked/locales/af.pak b/dist-out/win-unpacked/locales/af.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/af.pak rename to dist-out/win-unpacked/locales/af.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/am.pak b/dist-out/win-unpacked/locales/am.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/am.pak rename to dist-out/win-unpacked/locales/am.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/ar.pak b/dist-out/win-unpacked/locales/ar.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/ar.pak rename to dist-out/win-unpacked/locales/ar.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/bg.pak b/dist-out/win-unpacked/locales/bg.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/bg.pak rename to dist-out/win-unpacked/locales/bg.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/bn.pak b/dist-out/win-unpacked/locales/bn.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/bn.pak rename to dist-out/win-unpacked/locales/bn.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/ca.pak b/dist-out/win-unpacked/locales/ca.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/ca.pak rename to dist-out/win-unpacked/locales/ca.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/cs.pak b/dist-out/win-unpacked/locales/cs.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/cs.pak rename to dist-out/win-unpacked/locales/cs.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/da.pak b/dist-out/win-unpacked/locales/da.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/da.pak rename to dist-out/win-unpacked/locales/da.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/de.pak b/dist-out/win-unpacked/locales/de.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/de.pak rename to dist-out/win-unpacked/locales/de.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/el.pak b/dist-out/win-unpacked/locales/el.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/el.pak rename to dist-out/win-unpacked/locales/el.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/en-GB.pak b/dist-out/win-unpacked/locales/en-GB.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/en-GB.pak rename to dist-out/win-unpacked/locales/en-GB.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/en-US.pak b/dist-out/win-unpacked/locales/en-US.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/en-US.pak rename to dist-out/win-unpacked/locales/en-US.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/es-419.pak b/dist-out/win-unpacked/locales/es-419.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/es-419.pak rename to dist-out/win-unpacked/locales/es-419.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/es.pak b/dist-out/win-unpacked/locales/es.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/es.pak rename to dist-out/win-unpacked/locales/es.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/et.pak b/dist-out/win-unpacked/locales/et.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/et.pak rename to dist-out/win-unpacked/locales/et.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/fa.pak b/dist-out/win-unpacked/locales/fa.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/fa.pak rename to dist-out/win-unpacked/locales/fa.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/fi.pak b/dist-out/win-unpacked/locales/fi.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/fi.pak rename to dist-out/win-unpacked/locales/fi.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/fil.pak b/dist-out/win-unpacked/locales/fil.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/fil.pak rename to dist-out/win-unpacked/locales/fil.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/fr.pak b/dist-out/win-unpacked/locales/fr.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/fr.pak rename to dist-out/win-unpacked/locales/fr.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/gu.pak b/dist-out/win-unpacked/locales/gu.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/gu.pak rename to dist-out/win-unpacked/locales/gu.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/he.pak b/dist-out/win-unpacked/locales/he.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/he.pak rename to dist-out/win-unpacked/locales/he.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/hi.pak b/dist-out/win-unpacked/locales/hi.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/hi.pak rename to dist-out/win-unpacked/locales/hi.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/hr.pak b/dist-out/win-unpacked/locales/hr.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/hr.pak rename to dist-out/win-unpacked/locales/hr.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/hu.pak b/dist-out/win-unpacked/locales/hu.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/hu.pak rename to dist-out/win-unpacked/locales/hu.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/id.pak b/dist-out/win-unpacked/locales/id.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/id.pak rename to dist-out/win-unpacked/locales/id.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/it.pak b/dist-out/win-unpacked/locales/it.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/it.pak rename to dist-out/win-unpacked/locales/it.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/ja.pak b/dist-out/win-unpacked/locales/ja.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/ja.pak rename to dist-out/win-unpacked/locales/ja.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/kn.pak b/dist-out/win-unpacked/locales/kn.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/kn.pak rename to dist-out/win-unpacked/locales/kn.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/ko.pak b/dist-out/win-unpacked/locales/ko.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/ko.pak rename to dist-out/win-unpacked/locales/ko.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/lt.pak b/dist-out/win-unpacked/locales/lt.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/lt.pak rename to dist-out/win-unpacked/locales/lt.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/lv.pak b/dist-out/win-unpacked/locales/lv.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/lv.pak rename to dist-out/win-unpacked/locales/lv.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/ml.pak b/dist-out/win-unpacked/locales/ml.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/ml.pak rename to dist-out/win-unpacked/locales/ml.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/mr.pak b/dist-out/win-unpacked/locales/mr.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/mr.pak rename to dist-out/win-unpacked/locales/mr.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/ms.pak b/dist-out/win-unpacked/locales/ms.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/ms.pak rename to dist-out/win-unpacked/locales/ms.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/nb.pak b/dist-out/win-unpacked/locales/nb.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/nb.pak rename to dist-out/win-unpacked/locales/nb.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/nl.pak b/dist-out/win-unpacked/locales/nl.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/nl.pak rename to dist-out/win-unpacked/locales/nl.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/pl.pak b/dist-out/win-unpacked/locales/pl.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/pl.pak rename to dist-out/win-unpacked/locales/pl.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/pt-BR.pak b/dist-out/win-unpacked/locales/pt-BR.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/pt-BR.pak rename to dist-out/win-unpacked/locales/pt-BR.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/pt-PT.pak b/dist-out/win-unpacked/locales/pt-PT.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/pt-PT.pak rename to dist-out/win-unpacked/locales/pt-PT.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/ro.pak b/dist-out/win-unpacked/locales/ro.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/ro.pak rename to dist-out/win-unpacked/locales/ro.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/ru.pak b/dist-out/win-unpacked/locales/ru.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/ru.pak rename to dist-out/win-unpacked/locales/ru.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/sk.pak b/dist-out/win-unpacked/locales/sk.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/sk.pak rename to dist-out/win-unpacked/locales/sk.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/sl.pak b/dist-out/win-unpacked/locales/sl.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/sl.pak rename to dist-out/win-unpacked/locales/sl.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/sr.pak b/dist-out/win-unpacked/locales/sr.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/sr.pak rename to dist-out/win-unpacked/locales/sr.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/sv.pak b/dist-out/win-unpacked/locales/sv.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/sv.pak rename to dist-out/win-unpacked/locales/sv.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/sw.pak b/dist-out/win-unpacked/locales/sw.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/sw.pak rename to dist-out/win-unpacked/locales/sw.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/ta.pak b/dist-out/win-unpacked/locales/ta.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/ta.pak rename to dist-out/win-unpacked/locales/ta.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/te.pak b/dist-out/win-unpacked/locales/te.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/te.pak rename to dist-out/win-unpacked/locales/te.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/th.pak b/dist-out/win-unpacked/locales/th.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/th.pak rename to dist-out/win-unpacked/locales/th.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/tr.pak b/dist-out/win-unpacked/locales/tr.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/tr.pak rename to dist-out/win-unpacked/locales/tr.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/uk.pak b/dist-out/win-unpacked/locales/uk.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/uk.pak rename to dist-out/win-unpacked/locales/uk.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/ur.pak b/dist-out/win-unpacked/locales/ur.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/ur.pak rename to dist-out/win-unpacked/locales/ur.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/vi.pak b/dist-out/win-unpacked/locales/vi.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/vi.pak rename to dist-out/win-unpacked/locales/vi.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/zh-CN.pak b/dist-out/win-unpacked/locales/zh-CN.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/zh-CN.pak rename to dist-out/win-unpacked/locales/zh-CN.pak diff --git a/dist-033-diagnostics3/win-unpacked/locales/zh-TW.pak b/dist-out/win-unpacked/locales/zh-TW.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/locales/zh-TW.pak rename to dist-out/win-unpacked/locales/zh-TW.pak diff --git a/dist-033-diagnostics3/win-unpacked/resources.pak b/dist-out/win-unpacked/resources.pak similarity index 100% rename from dist-033-diagnostics3/win-unpacked/resources.pak rename to dist-out/win-unpacked/resources.pak diff --git a/dist-033-diagnostics3/win-unpacked/resources/app.asar b/dist-out/win-unpacked/resources/app.asar similarity index 99% rename from dist-033-diagnostics3/win-unpacked/resources/app.asar rename to dist-out/win-unpacked/resources/app.asar index 4b91070..3c87993 100644 Binary files a/dist-033-diagnostics3/win-unpacked/resources/app.asar and b/dist-out/win-unpacked/resources/app.asar differ diff --git a/dist-033-diagnostics3/win-unpacked/resources/elevate.exe b/dist-out/win-unpacked/resources/elevate.exe similarity index 100% rename from dist-033-diagnostics3/win-unpacked/resources/elevate.exe rename to dist-out/win-unpacked/resources/elevate.exe diff --git a/dist-033-diagnostics3/win-unpacked/snapshot_blob.bin b/dist-out/win-unpacked/snapshot_blob.bin similarity index 100% rename from dist-033-diagnostics3/win-unpacked/snapshot_blob.bin rename to dist-out/win-unpacked/snapshot_blob.bin diff --git a/dist-033-diagnostics3/win-unpacked/v8_context_snapshot.bin b/dist-out/win-unpacked/v8_context_snapshot.bin similarity index 100% rename from dist-033-diagnostics3/win-unpacked/v8_context_snapshot.bin rename to dist-out/win-unpacked/v8_context_snapshot.bin diff --git a/dist-033-diagnostics3/win-unpacked/vk_swiftshader.dll b/dist-out/win-unpacked/vk_swiftshader.dll similarity index 100% rename from dist-033-diagnostics3/win-unpacked/vk_swiftshader.dll rename to dist-out/win-unpacked/vk_swiftshader.dll diff --git a/dist-033-diagnostics3/win-unpacked/vk_swiftshader_icd.json b/dist-out/win-unpacked/vk_swiftshader_icd.json similarity index 100% rename from dist-033-diagnostics3/win-unpacked/vk_swiftshader_icd.json rename to dist-out/win-unpacked/vk_swiftshader_icd.json diff --git a/dist-033-diagnostics3/win-unpacked/vulkan-1.dll b/dist-out/win-unpacked/vulkan-1.dll similarity index 100% rename from dist-033-diagnostics3/win-unpacked/vulkan-1.dll rename to dist-out/win-unpacked/vulkan-1.dll diff --git a/dist/Time4Midi 0.3.9.exe b/dist/Time4Midi 0.3.9.exe new file mode 100644 index 0000000..ec19ee9 Binary files /dev/null and b/dist/Time4Midi 0.3.9.exe differ diff --git a/dist/Time4Midi 0.3.8.exe b/dist/old_versions/Time4Midi 0.3.8.exe similarity index 100% rename from dist/Time4Midi 0.3.8.exe rename to dist/old_versions/Time4Midi 0.3.8.exe diff --git a/main.js b/main.js index 98ab88e..4784819 100644 --- a/main.js +++ b/main.js @@ -126,8 +126,8 @@ function createSplashWindow() { } splashWindow = new BrowserWindow({ - width: 520, - height: 420, + width: 680, + height: 520, frame: false, resizable: false, minimizable: false, @@ -153,9 +153,9 @@ function createSplashWindow() { function createWindow() { mainWindow = new BrowserWindow({ - width: 1600, - height: 980, - minWidth: 1200, + width: 1760, + height: 1020, + minWidth: 1320, minHeight: 760, backgroundColor: "#0f1117", icon: path.join(__dirname, "time4midi.png"), diff --git a/package.json b/package.json index 4578423..a5ad0e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "time4midi", - "version": "0.3.3", + "version": "0.3.9", "description": "Cross-platform timeline editor for MIDI notes and Art-Net values, slaved to incoming timecode.", "main": "main.js", "author": "J.H. Artworks", diff --git a/src/app.js b/src/app.js index ba98910..c8c24c0 100644 --- a/src/app.js +++ b/src/app.js @@ -274,6 +274,7 @@ transportStatusLabel: document.getElementById("transportStatusLabel"), timelineTitle: document.getElementById("timelineTitle"), canvasFrame: document.querySelector(".canvas-frame"), + timelineGutterCanvas: document.getElementById("timelineGutterCanvas"), timelineCanvas: document.getElementById("timelineCanvas"), midiInputSelect: document.getElementById("midiInputSelect"), midiOutputSelect: document.getElementById("midiOutputSelect"), @@ -330,6 +331,7 @@ } const ctx = refs.timelineCanvas.getContext("2d"); + const gutterCtx = refs.timelineGutterCanvas?.getContext("2d") || null; const runtime = { midiAccess: null, midiInputs: [], @@ -2138,16 +2140,16 @@ return `${text.slice(0, Math.max(1, maxLength - 3)).trimEnd()}...`; } - function truncateCanvasText(text, maxWidth) { + function truncateCanvasText(text, maxWidth, drawingContext = ctx) { const value = String(text || ""); if (!value) { return ""; } - if (ctx.measureText(value).width <= maxWidth) { + if (drawingContext.measureText(value).width <= maxWidth) { return value; } let shortened = value; - while (shortened.length > 1 && ctx.measureText(`${shortened}...`).width > maxWidth) { + while (shortened.length > 1 && drawingContext.measureText(`${shortened}...`).width > maxWidth) { shortened = shortened.slice(0, -1); } return `${shortened.trimEnd()}...`; @@ -2162,9 +2164,13 @@ } function getCanvasViewportWidth() { + const plotViewportWidth = refs.canvasFrame?.clientWidth + || refs.timelineCanvas.parentElement?.clientWidth + || refs.timelineCanvas.clientWidth + || 0; return Math.max( LEFT_GUTTER + RIGHT_PADDING + 120, - refs.canvasFrame?.clientWidth || refs.timelineCanvas.parentElement?.clientWidth || refs.timelineCanvas.clientWidth || 0 + LEFT_GUTTER + plotViewportWidth ); } @@ -2180,12 +2186,21 @@ return Math.max(getCanvasViewportWidth(), contentWidth); } + function getCanvasMinScrollLeft() { + if (!refs.canvasFrame) { + return 0; + } + + const maxScrollLeft = Math.max(0, refs.canvasFrame.scrollWidth - refs.canvasFrame.clientWidth); + return Math.min(LEFT_GUTTER, maxScrollLeft); + } + function clampCanvasScrollLeft(nextScrollLeft) { if (!refs.canvasFrame) { return 0; } const maxScrollLeft = Math.max(0, refs.canvasFrame.scrollWidth - refs.canvasFrame.clientWidth); - return clamp(nextScrollLeft, 0, maxScrollLeft); + return clamp(nextScrollLeft, getCanvasMinScrollLeft(), maxScrollLeft); } function setCanvasScrollLeft(nextScrollLeft) { @@ -2206,6 +2221,15 @@ if (refs.timelineCanvas.style.width !== `${desiredWidth}px`) { refs.timelineCanvas.style.width = `${desiredWidth}px`; } + if (refs.timelineGutterCanvas) { + if (refs.timelineGutterCanvas.style.height !== `${desiredHeight}px`) { + refs.timelineGutterCanvas.style.height = `${desiredHeight}px`; + } + if (refs.timelineGutterCanvas.style.width !== `${LEFT_GUTTER}px`) { + refs.timelineGutterCanvas.style.width = `${LEFT_GUTTER}px`; + } + } + setCanvasScrollLeft(refs.canvasFrame?.scrollLeft ?? getCanvasMinScrollLeft()); } function resizeCanvas() { @@ -2218,6 +2242,17 @@ refs.timelineCanvas.height = nextHeight; } ctx.setTransform(dpr, 0, 0, dpr, 0, 0); + + if (refs.timelineGutterCanvas && gutterCtx) { + const gutterRect = refs.timelineGutterCanvas.getBoundingClientRect(); + const gutterWidth = Math.max(1, Math.floor(gutterRect.width * dpr)); + const gutterHeight = Math.max(1, Math.floor(gutterRect.height * dpr)); + if (refs.timelineGutterCanvas.width !== gutterWidth || refs.timelineGutterCanvas.height !== gutterHeight) { + refs.timelineGutterCanvas.width = gutterWidth; + refs.timelineGutterCanvas.height = gutterHeight; + } + gutterCtx.setTransform(dpr, 0, 0, dpr, 0, 0); + } } function getPlotMetrics() { @@ -2357,7 +2392,7 @@ ctx.fillText("Keine Timeline vorhanden. Links eine Timeline anlegen.", 24, 40); } - function drawTrackLaneLabel(track, trackIndex) { + function drawTrackLaneLabel(track, trackIndex, drawingContext = ctx) { const top = RULER_HEIGHT + (trackIndex * TRACK_HEIGHT); const color = getTrackColor(track); const labelLeft = 66; @@ -2365,32 +2400,62 @@ const trackName = track.name || "Unbenannt"; const detailText = describeTrack(track); - ctx.fillStyle = color; - ctx.beginPath(); - ctx.roundRect(16, top + 15, 40, 22, 8); - ctx.fill(); + drawingContext.fillStyle = color; + drawingContext.beginPath(); + drawingContext.roundRect(16, top + 15, 40, 22, 8); + drawingContext.fill(); - ctx.fillStyle = "#091018"; - ctx.font = "bold 10px Trebuchet MS"; - ctx.textAlign = "center"; - ctx.fillText(getTrackKindLabel(track), 36, top + 29); + drawingContext.fillStyle = "#091018"; + drawingContext.font = "bold 10px Trebuchet MS"; + drawingContext.textAlign = "center"; + drawingContext.fillText(getTrackKindLabel(track), 36, top + 29); - ctx.textAlign = "left"; - ctx.fillStyle = "rgba(255,255,255,0.86)"; - ctx.font = "bold 12px Trebuchet MS"; - ctx.fillText(truncateCanvasText(trackName, labelWidth), labelLeft, top + 33); + drawingContext.textAlign = "left"; + drawingContext.fillStyle = "rgba(255,255,255,0.86)"; + drawingContext.font = "bold 12px Trebuchet MS"; + drawingContext.fillText(truncateCanvasText(trackName, labelWidth, drawingContext), labelLeft, top + 33); - ctx.fillStyle = "rgba(164,178,204,0.92)"; - ctx.font = "11px Trebuchet MS"; - ctx.fillText(truncateCanvasText(detailText, labelWidth), labelLeft, top + 52); + drawingContext.fillStyle = "rgba(164,178,204,0.92)"; + drawingContext.font = "11px Trebuchet MS"; + drawingContext.fillText(truncateCanvasText(detailText, labelWidth, drawingContext), labelLeft, top + 52); if (track.id === state.selectedTrackId) { - ctx.strokeStyle = "rgba(110,194,242,0.76)"; - ctx.lineWidth = 2; - ctx.strokeRect(4, top + 4, LEFT_GUTTER - 8, TRACK_HEIGHT - 8); - ctx.lineWidth = 1; + drawingContext.strokeStyle = "rgba(110,194,242,0.76)"; + drawingContext.lineWidth = 2; + drawingContext.strokeRect(4, top + 4, LEFT_GUTTER - 8, TRACK_HEIGHT - 8); + drawingContext.lineWidth = 1; + } + drawingContext.textAlign = "left"; + } + + function drawGutter(tracks, height) { + if (!gutterCtx || !refs.timelineGutterCanvas) { + return; + } + + const gutterWidth = refs.timelineGutterCanvas.clientWidth || LEFT_GUTTER; + gutterCtx.clearRect(0, 0, gutterWidth, height); + gutterCtx.fillStyle = "#0b111a"; + gutterCtx.fillRect(0, 0, gutterWidth, height); + gutterCtx.fillStyle = "rgba(255,255,255,0.03)"; + gutterCtx.fillRect(0, 0, gutterWidth, height); + gutterCtx.strokeStyle = "rgba(255,255,255,0.08)"; + gutterCtx.beginPath(); + gutterCtx.moveTo(gutterWidth - 0.5, 0); + gutterCtx.lineTo(gutterWidth - 0.5, height); + gutterCtx.stroke(); + + for (let index = 0; index < tracks.length; index += 1) { + const top = RULER_HEIGHT + (index * TRACK_HEIGHT); + gutterCtx.fillStyle = index % 2 === 0 ? "rgba(255,255,255,0.015)" : "rgba(255,255,255,0.035)"; + gutterCtx.fillRect(0, top, gutterWidth, TRACK_HEIGHT); + gutterCtx.strokeStyle = "rgba(255,255,255,0.08)"; + gutterCtx.beginPath(); + gutterCtx.moveTo(0, top); + gutterCtx.lineTo(gutterWidth, top); + gutterCtx.stroke(); + drawTrackLaneLabel(tracks[index], index, gutterCtx); } - ctx.textAlign = "left"; } function drawGrid(duration, tracks, metrics) { @@ -2428,7 +2493,6 @@ ctx.moveTo(0, top); ctx.lineTo(metrics.width, top); ctx.stroke(); - drawTrackLaneLabel(tracks[index], index); } } @@ -2670,6 +2734,7 @@ if (!timeline) { drawEmptyCanvas(metrics.width, metrics.height); + drawGutter([], metrics.height); return; } @@ -2678,6 +2743,7 @@ drawAudioSnapOverlay(duration, metrics); drawTracks(duration, timeline.tracks, metrics); drawPlayhead(duration, metrics); + drawGutter(timeline.tracks, metrics.height); } function renderTimelineList() { @@ -4487,6 +4553,28 @@ return { track, point: null, trackIndex }; } + function selectTrackFromLaneY(y) { + const timeline = getSelectedTimeline(); + if (!timeline) { + return false; + } + + if (y < RULER_HEIGHT) { + return false; + } + + const trackIndex = Math.floor((y - RULER_HEIGHT) / TRACK_HEIGHT); + const track = timeline.tracks[trackIndex]; + if (!track) { + return false; + } + + state.selectedTrackId = track.id; + state.selectedPointId = ""; + renderAll(); + return true; + } + function setPlayheadFromCanvas(x) { const timeline = getSelectedTimeline(); if (!timeline) return; @@ -5059,6 +5147,11 @@ addPointFromCanvas(event.clientX - rect.left, event.clientY - rect.top); }); + refs.timelineGutterCanvas?.addEventListener("mousedown", (event) => { + const rect = refs.timelineGutterCanvas.getBoundingClientRect(); + selectTrackFromLaneY(event.clientY - rect.top); + }); + refs.timelineCanvas.addEventListener("mousemove", (event) => { const rect = refs.timelineCanvas.getBoundingClientRect(); updateCanvasHoverTitle(event.clientX - rect.left, event.clientY - rect.top); @@ -5068,6 +5161,10 @@ refs.timelineCanvas.title = ""; }); + refs.timelineGutterCanvas?.addEventListener("mouseleave", () => { + refs.timelineGutterCanvas.title = ""; + }); + refs.canvasFrame?.addEventListener("wheel", (event) => { if (event.ctrlKey) { event.preventDefault(); diff --git a/src/index.html b/src/index.html index 76e4a82..72316f7 100644 --- a/src/index.html +++ b/src/index.html @@ -69,56 +69,58 @@
-
-
- Quelle - +
+
+
+ Quelle + +
+
+ Timecode + 00:00:00:00 +
+
+ Status + Idle +
+ + + + +
+ Snap Quelle + Kein Audio-Raster +
-
- Timecode - 00:00:00:00 -
-
- Status - Idle -
- - - - -
- Snap Quelle - Kein Audio-Raster -
-
+
@@ -143,8 +145,13 @@ Entf: Punkt loeschen
-
- +
+ +
+ +
diff --git a/src/splash.html b/src/splash.html index d271614..f7a7b60 100644 --- a/src/splash.html +++ b/src/splash.html @@ -39,7 +39,7 @@ .shell { width: 100%; height: 100%; - padding: 28px; + padding: 24px; } .panel { @@ -47,8 +47,8 @@ display: flex; flex-direction: column; justify-content: space-between; - gap: 24px; - padding: 28px; + gap: 20px; + padding: 24px; border-radius: 24px; border: 1px solid var(--line); background: var(--panel); @@ -63,13 +63,13 @@ } .brand-row img:first-child { - width: 156px; + width: 140px; height: auto; object-fit: contain; } .brand-row img:last-child { - width: 132px; + width: 116px; height: auto; object-fit: contain; opacity: 0.95; @@ -90,13 +90,14 @@ h1 { margin: 0; - font-size: 1.8rem; + font-size: 1.65rem; } p { margin: 0; color: var(--muted); line-height: 1.45; + font-size: 0.95rem; } .loader { @@ -128,6 +129,7 @@ gap: 12px; color: var(--muted); font-size: 0.8rem; + flex-wrap: wrap; } @keyframes loading { diff --git a/src/styles.css b/src/styles.css index 32ac433..aa7de21 100644 --- a/src/styles.css +++ b/src/styles.css @@ -439,8 +439,20 @@ p { padding: 12px 14px; } +.transport-layout { + display: grid; + gap: 10px; +} + .transport-main { align-items: end; + flex-wrap: wrap; +} + +.transport-controls-row { + justify-content: flex-start; + padding-top: 4px; + border-top: 1px solid rgba(255, 255, 255, 0.06); } .transport-block { @@ -471,7 +483,7 @@ p { white-space: nowrap; } -.canvas-frame { +.timeline-stage { margin-top: 10px; flex: 1; min-height: 0; @@ -479,15 +491,37 @@ p { background: linear-gradient(180deg, rgba(255, 255, 255, 0.03), transparent), rgba(5, 8, 12, 0.62); + border: 1px solid rgba(255, 255, 255, 0.08); + overflow: hidden; + display: grid; + grid-template-columns: 162px minmax(0, 1fr); +} + +.timeline-gutter { + min-width: 0; + background: rgba(11, 17, 26, 0.96); + border-right: 1px solid rgba(255, 255, 255, 0.08); +} + +.canvas-frame { + min-width: 0; + min-height: 0; overflow: auto; overscroll-behavior: contain; - border: 1px solid rgba(255, 255, 255, 0.08); +} + +#timelineGutterCanvas, +#timelineCanvas { + display: block; + height: 100%; +} + +#timelineGutterCanvas { + width: 100%; } #timelineCanvas { - display: block; min-width: 100%; - height: 100%; } .empty-state { @@ -727,6 +761,10 @@ p { flex-direction: column; } + .timeline-stage { + grid-template-columns: 138px minmax(0, 1fr); + } + .inspector { grid-template-columns: 1fr; }