rework file actions, closes #3

This commit is contained in:
vcoppe
2024-07-01 11:08:28 +02:00
parent a96d911f36
commit 8e446ec74a
4 changed files with 50 additions and 20 deletions

View File

@@ -10,7 +10,6 @@
Undo2, Undo2,
Redo2, Redo2,
Trash2, Trash2,
Upload,
Heart, Heart,
Map, Map,
Layers2, Layers2,
@@ -38,7 +37,10 @@
ClipboardCopy, ClipboardCopy,
Scissors, Scissors,
ClipboardPaste, ClipboardPaste,
PaintBucket PaintBucket,
FolderOpen,
FileStack,
FileX
} from 'lucide-svelte'; } from 'lucide-svelte';
import { import {
@@ -149,8 +151,8 @@
</Menubar.Item> </Menubar.Item>
<Menubar.Separator /> <Menubar.Separator />
<Menubar.Item on:click={triggerFileInput}> <Menubar.Item on:click={triggerFileInput}>
<Upload size="16" class="mr-1" /> <FolderOpen size="16" class="mr-1" />
{$_('menu.load_desktop')} {$_('menu.open')}
<Shortcut key="O" ctrl={true} /> <Shortcut key="O" ctrl={true} />
</Menubar.Item> </Menubar.Item>
<Menubar.Separator /> <Menubar.Separator />
@@ -160,6 +162,17 @@
<Shortcut key="D" ctrl={true} /> <Shortcut key="D" ctrl={true} />
</Menubar.Item> </Menubar.Item>
<Menubar.Separator /> <Menubar.Separator />
<Menubar.Item on:click={dbUtils.deleteSelectedFiles} disabled={$selection.size == 0}>
<FileX size="16" class="mr-1" />
{$_('menu.close')}
<Shortcut key="⌫" ctrl={true} />
</Menubar.Item>
<Menubar.Item on:click={dbUtils.deleteAllFiles} disabled={$fileObservers.size == 0}>
<FileX size="16" class="mr-1" />
{$_('menu.close_all')}
<Shortcut key="⌫" ctrl={true} shift={true} />
</Menubar.Item>
<Menubar.Separator />
<Menubar.Item <Menubar.Item
on:click={() => ($exportState = ExportState.SELECTION)} on:click={() => ($exportState = ExportState.SELECTION)}
disabled={$selection.size == 0} disabled={$selection.size == 0}
@@ -236,7 +249,7 @@
</Menubar.Item> </Menubar.Item>
<Menubar.Separator /> <Menubar.Separator />
<Menubar.Item on:click={selectAll}> <Menubar.Item on:click={selectAll}>
<span class="w-4 mr-1"></span> <FileStack size="16" class="mr-1" />
{$_('menu.select_all')} {$_('menu.select_all')}
<Shortcut key="A" ctrl={true} /> <Shortcut key="A" ctrl={true} />
</Menubar.Item> </Menubar.Item>
@@ -270,15 +283,6 @@
{$_('menu.delete')} {$_('menu.delete')}
<Shortcut key="⌫" ctrl={true} /> <Shortcut key="⌫" ctrl={true} />
</Menubar.Item> </Menubar.Item>
<Menubar.Item
class="text-destructive data-[highlighted]:text-destructive"
on:click={dbUtils.deleteAllFiles}
disabled={$fileObservers.size == 0}
>
<Trash2 size="16" class="mr-1" />
{$_('menu.delete_all')}
<Shortcut key="⌫" ctrl={true} shift={true} />
</Menubar.Item>
</Menubar.Content> </Menubar.Content>
</Menubar.Menu> </Menubar.Menu>
<Menubar.Menu> <Menubar.Menu>
@@ -459,7 +463,6 @@
<svelte:window <svelte:window
on:keydown={(e) => { on:keydown={(e) => {
console.log(e);
let targetInput = let targetInput =
e.target.tagName === 'INPUT' || e.target.tagName === 'INPUT' ||
e.target.tagName === 'TEXTAREA' || e.target.tagName === 'TEXTAREA' ||

View File

@@ -15,7 +15,9 @@
EyeOff, EyeOff,
ClipboardCopy, ClipboardCopy,
ClipboardPaste, ClipboardPaste,
Scissors Scissors,
FileStack,
FileX
} from 'lucide-svelte'; } from 'lucide-svelte';
import { import {
ListFileItem, ListFileItem,
@@ -30,6 +32,7 @@
copySelection, copySelection,
cutSelection, cutSelection,
pasteSelection, pasteSelection,
selectAll,
selectItem, selectItem,
selection selection
} from './Selection'; } from './Selection';
@@ -261,6 +264,14 @@
<ContextMenu.Separator /> <ContextMenu.Separator />
{/if} {/if}
{/if} {/if}
{#if item.level !== ListLevel.WAYPOINTS}
<ContextMenu.Item on:click={selectAll}>
<FileStack size="16" class="mr-1" />
{$_('menu.select_all')}
<Shortcut key="A" ctrl={true} />
</ContextMenu.Item>
<ContextMenu.Separator />
{/if}
{#if $verticalFileView} {#if $verticalFileView}
<ContextMenu.Item on:click={dbUtils.duplicateSelection}> <ContextMenu.Item on:click={dbUtils.duplicateSelection}>
<Copy size="16" class="mr-1" /> <Copy size="16" class="mr-1" />
@@ -292,8 +303,13 @@
<ContextMenu.Separator /> <ContextMenu.Separator />
{/if} {/if}
<ContextMenu.Item on:click={dbUtils.deleteSelection}> <ContextMenu.Item on:click={dbUtils.deleteSelection}>
<Trash2 size="16" class="mr-1" /> {#if item instanceof ListFileItem}
{$_('menu.delete')} <FileX size="16" class="mr-1" />
{$_('menu.close')}
{:else}
<Trash2 size="16" class="mr-1" />
{$_('menu.delete')}
{/if}
<Shortcut key="⌫" ctrl={true} /> <Shortcut key="⌫" ctrl={true} />
</ContextMenu.Item> </ContextMenu.Item>
</ContextMenu.Content> </ContextMenu.Content>

View File

@@ -908,6 +908,16 @@ export const dbUtils = {
}); });
}); });
}, },
deleteSelectedFiles: () => {
if (get(selection).size === 0) {
return;
}
applyGlobal((draft) => {
applyToOrderedSelectedItemsFromFile((fileId, level, items) => {
draft.delete(fileId);
});
});
},
deleteAllFiles: () => { deleteAllFiles: () => {
applyGlobal((draft) => { applyGlobal((draft) => {
draft.clear(); draft.clear();

View File

@@ -9,8 +9,10 @@
"new_file": "New file", "new_file": "New file",
"new_track": "New track", "new_track": "New track",
"new_segment": "New segment", "new_segment": "New segment",
"load_desktop": "Load...", "open": "Open...",
"duplicate": "Duplicate", "duplicate": "Duplicate",
"close": "Close",
"close_all": "Close all",
"copy": "Copy", "copy": "Copy",
"paste": "Paste", "paste": "Paste",
"cut": "Cut", "cut": "Cut",
@@ -24,7 +26,6 @@
"undo": "Undo", "undo": "Undo",
"redo": "Redo", "redo": "Redo",
"delete": "Delete", "delete": "Delete",
"delete_all": "Delete all",
"select_all": "Select all", "select_all": "Select all",
"view": "View", "view": "View",
"elevation_profile": "Elevation profile", "elevation_profile": "Elevation profile",