diff --git a/electron-ui/src/main/main.ts b/electron-ui/src/main/main.ts index 0e5ab27..c8d7915 100644 --- a/electron-ui/src/main/main.ts +++ b/electron-ui/src/main/main.ts @@ -164,7 +164,7 @@ app .whenReady() .then(() => { // if (app.isPackaged) { - pythonManager.start(); + // pythonManager.start(); // } createWindow(); app.on('activate', () => { diff --git a/electron-ui/src/renderer/components/ClipList.tsx b/electron-ui/src/renderer/components/ClipList.tsx index 7e450fd..8ea4fb3 100644 --- a/electron-ui/src/renderer/components/ClipList.tsx +++ b/electron-ui/src/renderer/components/ClipList.tsx @@ -12,7 +12,7 @@ import { verticalListSortingStrategy, } from '@dnd-kit/sortable'; import { restrictToVerticalAxis } from '@dnd-kit/modifiers'; -import AudioTrimmer from './AudioTrimer'; +import AudioTrimmer from './Trimmer/AudioTrimer'; import { ClipMetadata } from '../../redux/types'; import { useAppDispatch, useAppSelector } from '../hooks'; import { apiFetch } from '../api'; diff --git a/electron-ui/src/renderer/components/AudioTrimer.tsx b/electron-ui/src/renderer/components/Trimmer/AudioTrimer.tsx similarity index 57% rename from electron-ui/src/renderer/components/AudioTrimer.tsx rename to electron-ui/src/renderer/components/Trimmer/AudioTrimer.tsx index 6b9c04f..710a6bb 100644 --- a/electron-ui/src/renderer/components/AudioTrimer.tsx +++ b/electron-ui/src/renderer/components/Trimmer/AudioTrimer.tsx @@ -5,27 +5,22 @@ import React, { useCallback, useRef, } from 'react'; -import Dialog from '@mui/material/Dialog'; -import DialogTitle from '@mui/material/DialogTitle'; -import DialogContent from '@mui/material/DialogContent'; -import DialogActions from '@mui/material/DialogActions'; import Slider from '@mui/material/Slider'; import ToggleButton from '@mui/material/ToggleButton'; import ToggleButtonGroup from '@mui/material/ToggleButtonGroup'; import { useWavesurfer } from '@wavesurfer/react'; import RegionsPlugin from 'wavesurfer.js/dist/plugins/regions.esm.js'; import ZoomPlugin from 'wavesurfer.js/dist/plugins/zoom.esm.js'; -import PlayArrowIcon from '@mui/icons-material/PlayArrow'; -import PauseIcon from '@mui/icons-material/Pause'; -import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; -import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'; -import DeleteIcon from '@mui/icons-material/Delete'; import { useSortable } from '@dnd-kit/sortable'; import { CSS } from '@dnd-kit/utilities'; -import { ClipMetadata, PlaybackType } from '../../redux/types'; -import { useAppSelector } from '../hooks'; -import PlayStopIcon from './playStopIcon'; -import PlayOverlapIcon from './playOverlapIcon'; +import { ClipMetadata, PlaybackType } from '../../../redux/types'; +import { useAppSelector } from '../../hooks'; +import PlayStopIcon from '../icons/playStopIcon'; +import PlayOverlapIcon from '../icons/playOverlapIcon'; +import NameEditDialog from './dialogs/NameEditDialog'; +import DeleteClipDialog from './dialogs/DeleteClipDialog'; +import TitleBlock from './TitleBlock'; +import ClipButtonRow from './ClipButtonRow'; export interface AudioTrimmerProps { metadata: ClipMetadata; @@ -42,35 +37,23 @@ export default function AudioTrimmer({ }: AudioTrimmerProps) { const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: metadata.filename }); - - // Dialog state for editing name const rootRef = useRef(null); const [isVisible, setIsVisible] = useState(false); const [editDialogOpen, setEditDialogOpen] = useState(false); const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); - const [dropdownOpen, setDropdownOpen] = useState(false); - const [nameInput, setNameInput] = useState(metadata.name); const [volumeInput, setVolumeInput] = useState(metadata.volume ?? 1); const collectionNames = useAppSelector((state) => state.collections.map((col) => col.name), ); - useEffect(() => { - setNameInput(metadata.name); - }, [metadata.name]); - - const openEditDialog = () => setEditDialogOpen(true); - const closeEditDialog = () => setEditDialogOpen(false); - - const handleDialogSave = () => { - if (nameInput.trim() && nameInput !== metadata.name) { - const updated = { ...metadata, name: nameInput.trim() }; + const handleDialogSave = (newName: string) => { + if (newName.trim() && newName !== metadata.name) { + const updated = { ...metadata, name: newName.trim() }; if (onSave) onSave(updated); } - closeEditDialog(); + setEditDialogOpen(false); }; - const [blobUrl, setBlobUrl] = useState(undefined); const containerRef = useRef(null); // const [clipStart, setClipStart] = useState(undefined); // const [clipEnd, setClipEnd] = useState(undefined); @@ -85,16 +68,12 @@ export default function AudioTrimmer({ [], ); - const fileBaseName = - metadata.filename.split('\\').pop()?.split('/').pop() || 'Unknown'; - const { wavesurfer, isReady, isPlaying } = useWavesurfer({ container: containerRef, height: 100, waveColor: '#ccb1ff', progressColor: '#6e44ba', hideScrollbar: true, - url: blobUrl, plugins, }); @@ -276,6 +255,21 @@ export default function AudioTrimmer({ }} className="shadow-[0_2px_8px_rgba(0,0,0,0.5)] m-2 rounded-lg bg-darkDrop" > + setEditDialogOpen(false)} + startValue={metadata.name} + onSave={handleDialogSave} + /> + + setDeleteDialogOpen(false)} + onDelete={() => { + setDeleteDialogOpen(false); + if (onDelete) onDelete(metadata); + }} + />
*/}
-
- { - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault(); - openEditDialog(); - } - }} - title="Click to edit name" - tabIndex={0} - role="button" - style={{ outline: 'none' }} - > - {metadata.name} - - {fileBaseName} -
- setEditDialogOpen(true)} + /> + { + if (onMove !== undefined) { + onMove(collectionName, metadata); + } }} - > - Edit Clip Name - -