copy file paths
mellbacon committed
Aug 11, 2022 at 17:02 UTC
f591fd041e03a24ddd50b6554e6d39cde777bf0c
4 files changed
+37
-12
src/components/FileTree/LeafNodeMenu.svelte
+18
-5
@@ -6,10 +6,15 @@
6
import Paste from "carbon-icons-svelte/lib/Paste.svelte";
7
import Cut from "carbon-icons-svelte/lib/Cut.svelte";
8
import Script from "carbon-icons-svelte/lib/Script.svelte";
9
+ import { fs, clipboard } from "@tauri-apps/api";
10
export let target;
11
export let filename;
11
- export let path;
12
+ export let filepath;
13
let open;
14
+
15
+ async function copyToClipboard(input) {
16
+ await clipboard.writeText(input);
17
+ }
18
</script>
19
20
<ContextMenu {target}>
@@ -26,17 +31,25 @@
31
<ContextMenuOption indented icon={Script} labelText="Edit {filename}"></ContextMenuOption>
32
</ContextMenuOption>
33
<ContextMenuOption labelText="Copy Path...">
29
- <ContextMenuOption labelText="Copy Relative Path"></ContextMenuOption>
30
- <ContextMenuOption labelText="Copy Absolute Path"></ContextMenuOption>
34
+ <!--TODO: Make this relative instead of file name. Am lazy-->
35
+ <ContextMenuOption on:click={() => copyToClipboard(filename)}>
36
+ <span slot="labelText" title={filename}>Copy File Name</span>
37
+ </ContextMenuOption>
38
+ <ContextMenuOption on:click={() => copyToClipboard(filepath)}>
39
+ <span slot="labelText" title={filepath}>Copy Absolute Path</span>
40
+ </ContextMenuOption>
41
</ContextMenuOption>
42
<ContextMenuOption labelText="Show in Explorer"></ContextMenuOption>
43
+
44
<ContextMenuDivider></ContextMenuDivider>
34
- <ContextMenuOption labelText="Delete...">
45
+ <ContextMenuOption labelText="Delete..." on:click={ async() => {
46
+ await fs.removeFile(filepath);
47
+ }}>
48
<span class="contextshortcut" slot="shortcutText">Delete</span>
49
</ContextMenuOption>
50
</ContextMenu>
51
39
-<RenameModel bind:open bind:filename={filename} bind:path={path} />
52
+<RenameModel bind:open bind:filename={filename} bind:path={filepath} />
53
54
<style>
55
.contextshortcut {
src/components/FileTree/ParentNodeMenu.svelte
+17
-5
@@ -5,10 +5,15 @@
5
import Paste from "carbon-icons-svelte/lib/Paste.svelte";
6
import Cut from "carbon-icons-svelte/lib/Cut.svelte";
7
import RenameModel from "../Modal/RenameModel.svelte";
8
+ import { fs, clipboard } from "@tauri-apps/api";
9
export let target;
10
export let filename;
10
- export let path;
11
+ export let filepath;
12
let open;
13
+
14
+ async function copyToClipboard(input) {
15
+ await clipboard.writeText(input);
16
+ }
17
</script>
18
19
<ContextMenu {target}>
@@ -27,17 +32,24 @@
32
</ContextMenuOption>
33
</ContextMenuOption>
34
<ContextMenuOption labelText="Copy Path...">
30
- <ContextMenuOption labelText="Copy Relative Path"></ContextMenuOption>
31
- <ContextMenuOption labelText="Copy Absolute Path"></ContextMenuOption>
35
+ <!--TODO: Make this relative instead of file name. Am lazy-->
36
+ <ContextMenuOption on:click={() => copyToClipboard(filename)}>
37
+ <span slot="labelText" title={filename}>Copy File Name</span>
38
+ </ContextMenuOption>
39
+ <ContextMenuOption on:click={() => copyToClipboard(filepath)}>
40
+ <span slot="labelText" title={filepath}>Copy Absolute Path</span>
41
+ </ContextMenuOption>
42
</ContextMenuOption>
43
<ContextMenuOption labelText="Show in Explorer"></ContextMenuOption>
44
<ContextMenuDivider></ContextMenuDivider>
35
- <ContextMenuOption labelText="Delete...">
45
+ <ContextMenuOption labelText="Delete..." on:click={ async() => {
46
+ await fs.removeDir(filepath, {recursive: true});
47
+ }}>
48
<span class="contextshortcut" slot="shortcutText">Delete</span>
49
</ContextMenuOption>
50
</ContextMenu>
51
40
-<RenameModel bind:open bind:filename={filename} bind:path={path} />
52
+<RenameModel bind:open bind:filename={filename} bind:path={filepath} />
53
54
<style>
55
.contextshortcut {
src/components/FileTree/TreeViewNode.svelte
+1
-1
@@ -114,7 +114,7 @@
114
{name}
115
</div>
116
</li>
117
-<LeafNodeMenu target={ref} filename={name} path={path}></LeafNodeMenu>
117
+<LeafNodeMenu target={ref} filename={name} filepath={path}></LeafNodeMenu>
118
<RenameModel bind:open bind:filename={name} bind:path={path} />
119
120
<style>
src/components/FileTree/TreeViewNodeList.svelte
+1
-1
@@ -148,4 +148,4 @@
148
</li>
149
{/if}
150
151
-<ParentNodeMenu target={[refLabel]} filename={name} path={path}></ParentNodeMenu>
\ No newline at end of file
151
+<ParentNodeMenu target={[refLabel]} filename={name} filepath={path}></ParentNodeMenu>
\ No newline at end of file