From ce90f9df4bb0ad26405c68f7e428b77c5c6023a9 Mon Sep 17 00:00:00 2001
From: Kirigaya <1193466151@qq.com>
Date: Mon, 2 Sep 2024 20:49:53 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20sidebar=20+=20signal=20vie?=
=?UTF-8?q?w=20tree=20=E6=96=B0=E5=8A=9F=E8=83=BD=EF=BC=9Ashift=20+=20?=
=?UTF-8?q?=E9=BC=A0=E6=A0=87=E5=B7=A6=E5=87=BB=E8=BF=9E=E7=BB=AD=E9=80=89?=
=?UTF-8?q?=E6=8B=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/sidebar/index.vue | 30 ++++++++--
src/components/treeview/index.vue | 1 +
src/components/treeview/signals.vue | 85 ++++++++++++++++++++---------
src/hook/sidebar-select-wire.js | 15 +++++
src/hook/wave-container-view.js | 27 +++++++++
5 files changed, 126 insertions(+), 32 deletions(-)
diff --git a/src/components/sidebar/index.vue b/src/components/sidebar/index.vue
index 2e179b1..0ee20fa 100644
--- a/src/components/sidebar/index.vue
+++ b/src/components/sidebar/index.vue
@@ -23,7 +23,7 @@
@@ -76,6 +76,7 @@ import SignalItem from './signal-item.vue';
import GroupItem from './group-item.vue';
import GroupContextMenu from './group-context-menu.vue';
import { sidebarSelectedWires } from '@/hook/sidebar-select-wire';
+import { genOrderedLinks } from '@/hook/wave-container-view';
const { t } = useI18n();
defineComponent({ name: 'side-bar' });
@@ -102,18 +103,37 @@ function addSignal() {
}
-function handleItemClick(link) {
+function handleItemClick(event, link) {
contextmenu.show = false;
groupcontextmenu.show = false;
+ const lastLink = sidebarSelectedWires.lastLink;
- if (sidebarSelectedWires.has(link)) {
- sidebarSelectedWires.delete(link);
+ if (event.shiftKey && lastLink !== undefined) {
+ // 如果按下了 shift,那么把刚刚的 link 到现在之间所有的 link 全部加入
+ let addBegin = false;
+ const links = [];
+ for (const currentLink of genOrderedLinks({returnGroup: false})) {
+ if (currentLink === link || currentLink === lastLink) {
+ links.push(currentLink);
+ addBegin = !addBegin;
+ } else if (addBegin) {
+ links.push(currentLink);
+ }
+ }
+ sidebarSelectedWires.addLinks(links);
} else {
- sidebarSelectedWires.add(link);
+ // 如果没有,则加入;有,则删除
+ if (sidebarSelectedWires.has(link)) {
+ sidebarSelectedWires.delete(link);
+ } else {
+ sidebarSelectedWires.add(link);
+ }
}
}
+
+
function handleSidebarGlobalClick() {
contextmenu.show = false;
groupcontextmenu.show = false;
diff --git a/src/components/treeview/index.vue b/src/components/treeview/index.vue
index 5385973..4d5052a 100644
--- a/src/components/treeview/index.vue
+++ b/src/components/treeview/index.vue
@@ -70,6 +70,7 @@ export default {
display: flex;
flex-direction: column;
transition: height .5s ease-in-out;
+ user-select: none;
}
.vcd-module-wrapper {
diff --git a/src/components/treeview/signals.vue b/src/components/treeview/signals.vue
index d152ac9..d3e7575 100644
--- a/src/components/treeview/signals.vue
+++ b/src/components/treeview/signals.vue
@@ -4,7 +4,7 @@
@@ -19,42 +19,73 @@
-