+1
-1
src-tauri/src/frontend_calls/settings.rs
+1
-1
src-tauri/src/frontend_calls/settings.rs
+2
src-tauri/src/lib.rs
+2
src-tauri/src/lib.rs
+19
-10
src/App.tsx
+19
-10
src/App.tsx
···
10
10
import { ContextMenu } from "./structs/ContextMenu";
11
11
import { NodeManager } from "./Mangers/NodeManager";
12
12
import { TabMenu } from "./components/TabMenu";
13
-
import { ConfirmationPopup } from "./components/ConfirmationPopup";
14
13
15
14
import * as keybinds from './keybinds';
15
+
import { listen } from "@tauri-apps/api/event";
16
16
17
17
let App = () => {
18
18
let [ selectedNode, setSelectedNode ] = createSignal<Node | null>(null);
···
56
56
visible: false
57
57
}
58
58
59
-
onMount(() => {
59
+
onMount(async () => {
60
60
NodeManager.Instance.HookTabChange(() => setSelectedNode(null));
61
61
62
62
ctx = canvas.getContext('2d')!;
···
323
323
324
324
keybinds.load(selectedNode, setSelectedNode);
325
325
requestAnimationFrame(update);
326
+
327
+
let unlisten_0 = await listen('hide-window', () => {
328
+
stopRender = true;
329
+
})
330
+
331
+
let unlisten_1 = await listen('show-window', () => {
332
+
if(stopRender)window.location.reload();
333
+
})
334
+
335
+
onCleanup(() => {
336
+
stopRender = true;
337
+
window.clearInterval(interval);
338
+
339
+
unlisten_0();
340
+
unlisten_1();
341
+
});
326
342
});
327
343
328
-
let update = () => { // TODO: Start/Stop render when app is minimised
344
+
let update = () => {
329
345
if(stopRender)return;
330
-
331
346
scale = lerp(scale, targetScale, 0.25);
332
347
333
348
offset[0] = lerp(offset[0], offsetTarget[0], 0.5);
···
361
376
}
362
377
}, 1000);
363
378
364
-
onCleanup(() => {
365
-
stopRender = true;
366
-
window.clearInterval(interval);
367
-
});
368
-
369
379
return (
370
380
<>
371
-
<ConfirmationPopup />
372
381
<TabMenu />
373
382
<ControlBar node={selectedNode} lockMovement={( lock ) => lockMovement = lock} />
374
383
<canvas ref={canvas}/>
+23
src/components/ParameterList.css
+23
src/components/ParameterList.css
···
59
59
60
60
.parameter-list-button-dropdown > div:hover{
61
61
color: #aaa;
62
+
}
63
+
64
+
.parameter-list-parameter{
65
+
display: inline-block;
66
+
padding: 5px 10px;
67
+
margin: 5px 0px 5px 10px;
68
+
background: #445077;
69
+
border-radius: 5px;
70
+
transition: 0.1s;
71
+
cursor: pointer;
72
+
user-select: none;
73
+
-webkit-user-select: none;
74
+
}
75
+
76
+
.parameter-list-parameter:hover{
77
+
background: #363f5e;
78
+
}
79
+
80
+
.parameter-list-parameter-delete{
81
+
padding: 0px 5px;
82
+
display: flex;
83
+
justify-content: center;
84
+
align-items: center;
62
85
}
+12
-2
src/components/ParameterList.tsx
+12
-2
src/components/ParameterList.tsx
···
7
7
changed: ( value: { type: string, desc: string }[] ) => void
8
8
}
9
9
10
-
// TODO: An actual parameter list
11
10
export let ParameterList = ( props: ParameterListProps ) => {
12
11
let [ parameters, setParameters ] = createSignal<{ type: string, desc: string }[]>(props.value, { equals: false });
13
12
let [ addParametersOpen, setAddParametersOpen ] = createSignal(false);
···
23
22
</div>
24
23
<div class="parameter-list-content">
25
24
<For each={parameters()}>
26
-
{ i => <div>{ JSON.stringify(i) }</div>}
25
+
{ ( i, index ) => <div style={{ display: 'flex' }}>
26
+
<div class="parameter-list-parameter">{ i.desc === "" ? i.type : i.desc + ` ${i.type}` }</div>
27
+
<div class="parameter-list-parameter parameter-list-parameter-delete" onClick={() => {
28
+
let params = parameters();
29
+
params.splice(index(), 1);
30
+
31
+
setParameters(params);
32
+
props.changed(params);
33
+
}}>
34
+
<img src="/assets/icons/trash-can-solid-full.svg" width="20" />
35
+
</div>
36
+
</div>}
27
37
</For>
28
38
<div class="button" onClick={() => { setAddParametersOpen(!addParametersOpen()) }}>Add Parameter + </div>
29
39
<Show when={addParametersOpen()}>