450 Commits

Author SHA1 Message Date
akwkevin
329aea3572 Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2025-03-23 16:24:04 +08:00
akwkevin
c269be1bbf xx 2025-03-23 16:23:19 +08:00
shuiwa
95ac56f857 修改界面大小 2025-02-09 11:56:22 +08:00
akwkevin
4c36933b76 第一版终稿 2025-02-03 19:39:11 +08:00
akwkevin
141ba3b775 系统优化 2025-02-03 15:22:00 +08:00
艾竹
ddf89e21e4 bug优化 2025-01-19 11:02:03 +08:00
艾竹
4582897817 移除没用的项目 2024-12-15 09:05:51 +08:00
艾竹
ab12714123 移除没用的项目 2024-12-15 09:02:05 +08:00
艾竹
b1f56c3609 替换模块 2024-12-08 21:26:01 +08:00
艾竹
3cece222b0 xx 2024-11-24 21:46:31 +08:00
艾竹
04c3b12eb6 xx 2024-11-17 11:38:18 +08:00
艾竹
2a990f4495 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2024-11-09 08:18:40 +00:00
艾竹
ea1db64f04 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2024-11-09 08:18:18 +00:00
艾竹
23d762a64e update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2024-07-21 11:41:29 +00:00
艾竹
dea9d3567f Locked Demo bug修复 2024-03-16 16:06:30 +08:00
艾竹
8e295966dd Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2024-03-16 15:53:30 +08:00
艾竹
1e61d63519 image保存后打开bug修复 2024-03-16 15:51:59 +08:00
kwai
4abbf61bbd 动画bug修复 2024-03-12 19:26:18 +08:00
艾竹
a182f4785f update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2024-02-21 00:38:59 +00:00
艾竹
973b520bbf update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2024-02-20 14:16:52 +00:00
艾竹
2a97a90ac8 删除几个非mit的引用 2024-02-20 22:14:30 +08:00
艾竹
a0439f6b88 又一个小bug 2024-02-19 22:29:43 +08:00
艾竹
24a578eadb 漏修改了一处 2024-02-19 22:16:55 +08:00
艾竹
edf6bd49d3 重新加载Item的bug修复 2024-02-18 16:40:33 +08:00
艾竹
807d37bd28 缩略图 2024-02-08 23:16:30 +08:00
艾竹
bbb5809790 缩略图优化 2024-02-08 23:00:50 +08:00
艾竹
f5e0275a8b update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2024-02-02 00:45:16 +00:00
艾竹
1cba687918 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2024-02-02 00:43:04 +00:00
艾竹
0d3b9908fe update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2024-02-01 15:06:37 +00:00
艾竹
3569ccb931 去掉几个引用的dll,避免新手困扰 2024-02-01 22:56:01 +08:00
艾竹
f2a1e39403 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2024-02-01 00:48:11 +00:00
艾竹
529c451d72 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2024-02-01 00:47:56 +00:00
艾竹
0d8fe41d79 block 2024-01-21 21:41:51 +08:00
艾竹
a611f1b11b 添加几个裁剪参数 2024-01-01 20:37:06 +08:00
艾竹
c2bce7c912 自定义工具栏连接线显示 2023-12-23 10:14:08 +08:00
艾竹
41f711f11a Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-12-22 22:07:03 +08:00
艾竹
24a08ed6fe 自定义工具栏按钮修复 2023-12-22 22:06:52 +08:00
艾竹
f5295394ea update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-12-21 14:26:01 +00:00
艾竹
0a177e6c73 自动布局 2023-12-21 22:21:08 +08:00
艾竹
6e917a2107 自动布局完成 2023-12-21 22:20:38 +08:00
kwai
467bec839a 自动布局的代码,完成中 2023-12-21 19:51:50 +08:00
艾竹
23b0f68348 几个快捷键写错了 2023-12-17 18:36:51 +08:00
艾竹
08997298ac 修复序列化的问题,忧伤小bug 2023-12-15 23:03:17 +08:00
艾竹
4c228ad858 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-12-11 13:53:45 +00:00
艾竹
cab9326843 小优化 2023-11-29 22:12:56 +08:00
艾竹
3b2079ac84 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-11-29 13:54:21 +00:00
艾竹
22564b2fbe update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-11-29 13:53:02 +00:00
艾竹
55ebf87b33 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-11-29 13:52:18 +00:00
艾竹
a0c8567a42 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-11-29 13:50:56 +00:00
kwai
55d3d59309 ink 2023-11-08 20:03:43 +08:00
艾竹
f3561bcc12 怎么又嵌入错了 2023-11-07 22:32:38 +08:00
艾竹
bf021b88c8 Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-11-04 15:53:37 +08:00
艾竹
fb2f0be991 啥时候改出一个报错了 2023-11-04 15:53:19 +08:00
艾竹
9469506161 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-11-03 07:46:21 +00:00
kwai
27f1cfefe0 ink 2023-10-30 19:03:24 +08:00
艾竹
331cbf339f update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-10-29 08:41:19 +00:00
艾竹
683d1029ac update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-10-28 09:37:38 +00:00
艾竹
ffd6015b47 ink 2023-10-12 23:00:27 +08:00
艾竹
3afc0081cf 修复快速文字颜色 2023-10-06 22:22:33 +08:00
艾竹
45ef4a3cc2 ink 2023-10-01 23:26:22 +08:00
fan.yaying
da8f77510b Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-09-11 10:25:45 +08:00
fan.yaying
a184dce650 获取连接点时,如果根据坐标位置找不到时,根据id再查找一次 2023-09-11 10:25:40 +08:00
艾竹
9e6000f278 block 2023-09-05 22:51:08 +08:00
艾竹
2b8fe03f25 思维导图打开i报错修复 2023-09-03 21:11:23 +08:00
艾竹
0badb714a0 改下自定义控件类型 2023-09-03 16:57:02 +08:00
艾竹
2f12bfa829 添加几个参数 2023-09-03 16:48:56 +08:00
艾竹
b83f4fad7f 升级一下库 2023-08-27 23:03:07 +08:00
艾竹
2ffc7b3e52 拖拽支持工具栏信息带入 2023-08-27 16:02:28 +08:00
艾竹
476d0c57d3 声音序列化 2023-08-27 15:09:03 +08:00
艾竹
d50ec045ea bug修复 2023-08-26 21:30:31 +08:00
艾竹
045a724ee2 一点小优化和一点小bug修复 2023-08-26 15:02:43 +08:00
kwai
3859713cc1 Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-08-25 19:07:03 +08:00
kwai
d4c347b19e block 2023-08-25 19:06:39 +08:00
艾竹
a896426adc update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-08-25 08:46:32 +00:00
艾竹
dc16828247 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-08-25 08:46:01 +00:00
艾竹
a562137d9e update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-08-25 08:45:13 +00:00
艾竹
77c8a9bdfd update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-08-25 08:44:27 +00:00
艾竹
b08e13b93e 反序列化构造函数 2023-08-23 22:49:42 +08:00
kwai
268404d1e8 block 2023-08-23 19:30:03 +08:00
fan.yaying
38e0981bb9 修复保存项目再开时连线重复添加了 start、end点 2023-08-22 15:44:09 +08:00
fan.yaying
67d995bb27 修改连线添加条件判断逻辑 2023-08-22 10:06:22 +08:00
艾竹
7692bb9398 单步执行和执行日志 2023-08-19 21:46:16 +08:00
kwai
e76a50f6e5 block 2023-08-18 18:56:37 +08:00
艾竹
a696312936 block 2023-08-13 23:05:06 +08:00
艾竹
872526f575 漏改了一个地方 2023-08-13 14:39:53 +08:00
艾竹
d68fe22a05 block demo 已经完成到第三个了 2023-08-13 11:36:47 +08:00
艾竹
9485ce6684 block使用linklist重写,把代码复杂度降低点 2023-08-12 22:58:24 +08:00
艾竹
8f7a43accd helloworld 2023-08-06 22:24:26 +08:00
艾竹
fe3e8b9ae1 block 2023-08-04 22:05:46 +08:00
kwai
25993fd3a9 block 2023-08-04 19:03:42 +08:00
艾竹
25cd232579 block 2023-08-03 23:01:33 +08:00
kwai
5ee23157e4 block 2023-08-03 20:06:02 +08:00
艾竹
5559a18c8e block 2023-08-02 22:58:12 +08:00
kwai
fe38c57e53 block 2023-08-02 19:46:44 +08:00
艾竹
15b7596515 block 2023-08-01 22:59:01 +08:00
艾竹
91d45b10f6 画笔扩展及周末不小心搞出来的几个bug修复 2023-07-31 22:50:19 +08:00
艾竹
4efb9a2c36 block 2023-07-30 22:49:50 +08:00
艾竹
dcd2cc44a3 block 2023-07-29 22:45:22 +08:00
艾竹
55678e72ed block size 2023-07-29 12:35:09 +08:00
艾竹
14735f78dc block 2023-07-29 09:45:50 +08:00
kwai
36413e2349 block 2023-07-28 18:48:15 +08:00
kwai
d0214cc1b3 block 2023-07-27 19:27:37 +08:00
艾竹
2d345fb076 block 2023-07-23 17:40:44 +08:00
艾竹
e34f7fd5a3 block 2023-07-23 12:35:18 +08:00
艾竹
b6e095293c block 2023-07-22 19:11:08 +08:00
艾竹
8ab43ecae1 block 2023-07-20 22:40:04 +08:00
kwai
661b235f57 block 2023-07-20 19:12:43 +08:00
艾竹
a862f94c50 block 2023-07-18 22:44:31 +08:00
艾竹
3193b538f9 block 2023-07-17 22:38:47 +08:00
艾竹
9b4e98ece4 update LICENSE.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-07-15 04:46:13 +00:00
艾竹
39d991da0f update LICENSE.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-07-15 04:32:49 +00:00
艾竹
2c9804513f update LICENSE.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-07-15 04:27:05 +00:00
艾竹
ebf003b20b josn保存的bug 2023-07-15 11:08:57 +08:00
艾竹
515ce1944b block的序列化与反序列化 2023-07-15 10:20:50 +08:00
kwai
954aeee87e block 2023-07-11 19:17:13 +08:00
艾竹
380c126e33 block 2023-07-09 21:03:35 +08:00
艾竹
49b95ba881 连线bug 2023-07-08 18:57:01 +08:00
艾竹
88a315c3f0 修改空间名称 2023-07-08 18:00:14 +08:00
艾竹
0fbfb485a7 Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-07-08 17:23:25 +08:00
艾竹
6710d0f48d block 2023-07-08 17:22:55 +08:00
艾竹
a71e15d778 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-07-08 07:49:50 +00:00
艾竹
4b82ca7c49 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-07-08 07:46:47 +00:00
kwai
0ef78d917e Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-07-03 16:37:55 +08:00
艾竹
cb40c941cd update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-07-02 04:22:57 +00:00
艾竹
7b4d9db7bb block 2023-07-02 12:19:08 +08:00
艾竹
b476fd4eb5 block 2023-07-02 11:23:00 +08:00
艾竹
be7a99e651 Block图鉴 2023-07-01 21:38:23 +08:00
kwai
953a7bd9aa block 2023-06-29 20:00:44 +08:00
kwai
bfb6d163c4 block 2023-06-29 19:58:57 +08:00
艾竹
5b79ee6010 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-06-29 01:10:32 +00:00
艾竹
4d097b4e05 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-06-29 01:06:50 +00:00
艾竹
8dd882390b update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-06-29 01:05:30 +00:00
艾竹
7a4ba0c1f7 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-06-29 01:00:46 +00:00
艾竹
2cc55cb1c0 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-06-29 00:59:48 +00:00
艾竹
4f8243184c update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-06-29 00:46:56 +00:00
艾竹
89c7da0811 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-06-29 00:45:15 +00:00
艾竹
a1e2ff3f74 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-06-29 00:44:31 +00:00
艾竹
3ec68b7b63 整理代码 2023-06-28 22:11:24 +08:00
kwai
e20d1f7e59 block 2023-06-28 12:08:16 +08:00
kwai
1f20aad2c7 block 2023-06-28 12:06:58 +08:00
艾竹
a4ea9f334e block 2023-06-27 22:57:17 +08:00
艾竹
d2e00c6149 block 2023-06-27 22:57:08 +08:00
kwai
6995fe1476 block 2023-06-27 19:58:08 +08:00
fan.yaying
4968bbb5e7 增加自定义 DesignerItemView 样式 2023-06-27 10:57:16 +08:00
艾竹
ace3d631f5 block 2023-06-26 22:50:08 +08:00
kwai
7f857c3464 代码整理 2023-06-26 16:45:48 +08:00
kwai
82500f86a6 block 2023-06-20 13:46:26 +08:00
kwai
4870a2fd0e 小小整理下 2023-06-19 15:47:39 +08:00
艾竹
b946c2df93 block 2023-06-18 18:43:48 +08:00
艾竹
af1cacc846 block 2023-06-18 16:21:18 +08:00
艾竹
0b0f81faac block 2023-06-17 23:55:54 +08:00
艾竹
56545ece4b init 2023-06-17 09:31:15 +08:00
kwai
bdf7385a39 xx 2023-06-16 19:20:44 +08:00
kwai
56c3aac8e8 xx 2023-06-16 19:03:15 +08:00
艾竹
1dd09a2240 xx 2023-06-15 22:44:12 +08:00
kwai
207523eb16 zz 2023-06-14 19:41:29 +08:00
艾竹
0f7a5b0308 xx 2023-06-13 22:51:59 +08:00
艾竹
efec06f853 xx 2023-06-13 22:51:34 +08:00
kwai
7a0630bbc8 xx 2023-06-13 19:06:51 +08:00
艾竹
78558a305f 删除未完善的项目 2023-06-11 23:59:35 +08:00
艾竹
5a9bcc03f3 Revert "Revert "block 可以拖拽到内部,还有少量问题待解决""
This reverts commit fcd7beb193.
2023-06-11 23:58:22 +08:00
艾竹
fcd7beb193 Revert "block 可以拖拽到内部,还有少量问题待解决"
This reverts commit 538898d238.
2023-06-11 23:57:59 +08:00
艾竹
538898d238 block 可以拖拽到内部,还有少量问题待解决 2023-06-11 23:05:21 +08:00
艾竹
4674b8904b 修复工具栏删除 2023-06-10 16:10:03 +08:00
艾竹
8b8e4741c6 mind不可删除修复 2023-06-05 22:35:36 +08:00
艾竹
01131dde47 页面视图新增缩略图模式 2023-05-27 12:35:44 +08:00
艾竹
b11d39024a 整理了下代码,摸一摸bug 2023-05-21 23:03:28 +08:00
艾竹
fde899cfa9 添加block快,不需要连接线,直接吸附。 2023-05-21 22:06:59 +08:00
艾竹
2fd8321363 Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-05-20 19:25:36 +08:00
艾竹
4ae8b383d8 删除一点临时文件 2023-05-20 19:25:19 +08:00
艾竹
e437245ff5 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-20 09:44:54 +00:00
艾竹
1f40f1c75c update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-20 09:29:35 +00:00
艾竹
a22279bec2 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-20 09:28:02 +00:00
艾竹
6427c96c86 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-20 09:26:20 +00:00
艾竹
c6dd5ecafd 完善 2023-05-20 17:22:39 +08:00
艾竹
853551982f Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-05-20 17:22:27 +08:00
艾竹
6a9d31c29d 画图画板示例完事 2023-05-20 17:22:12 +08:00
艾竹
e3de3a6fe7 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-17 14:53:15 +00:00
艾竹
e18d808d49 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-17 14:50:19 +00:00
艾竹
117a500f72 一个小bug 2023-05-17 22:47:51 +08:00
kwai
25f680a960 bug 2023-05-17 08:40:55 +08:00
艾竹
9e8981176a 海龟迷途部分图形 2023-05-16 22:53:11 +08:00
艾竹
65e18759c9 简单画线算法 2023-05-15 22:57:13 +08:00
kwai
19ba2736ab 形状demo 2023-05-15 20:13:42 +08:00
艾竹
d5b712f275 demo 2023-05-14 23:26:22 +08:00
艾竹
da9cdb55c9 程序添加绘图元素,Demo完成一半 2023-05-14 23:26:08 +08:00
艾竹
40f81b7209 选中状态代码整理 2023-05-14 18:02:59 +08:00
艾竹
58359c36d4 绘图形状补充一部分 2023-05-14 15:06:30 +08:00
艾竹
9ade5a0fda Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-05-14 00:31:44 +08:00
艾竹
8003cebf99 画板基础基本完成 2023-05-14 00:31:25 +08:00
艾竹
bc551d2fe9 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-12 06:16:50 +00:00
艾竹
4c642db9b2 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-12 06:16:18 +00:00
艾竹
147a84cf91 xx 2023-05-11 22:37:51 +08:00
kwai
f995722828 DiagramOption LayoutOption 参数整理 2023-05-11 19:14:39 +08:00
kwai
2045c5e45c 准备切换到左侧视图模式 2023-05-11 10:57:08 +08:00
艾竹
adf1ee0805 可擦除完成,需要实现画笔,是不是还得用ink来做比较好 2023-05-10 22:46:39 +08:00
艾竹
f19d6c20ef 修复6.0二维码的bug 2023-05-09 23:22:17 +08:00
kwai
e61b505dd3 橡皮修改 2023-05-09 19:21:48 +08:00
艾竹
c3342ced13 支持画笔及痕迹擦除,为白板做准备 2023-05-07 23:01:38 +08:00
艾竹
4a1d25fdf0 优化画形状 2023-05-05 22:46:53 +08:00
艾竹
940512589c 思维导图修改成回车新增子节点 2023-05-03 23:42:34 +08:00
艾竹
071490f5ee update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-03 14:14:53 +00:00
艾竹
5c21e97caa update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-03 14:14:07 +00:00
艾竹
ce69c85b6b update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-03 14:11:15 +00:00
艾竹
96f10c2cb0 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-03 14:08:55 +00:00
艾竹
6ab92947a2 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-03 14:01:21 +00:00
艾竹
88953fe4b6 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-03 13:56:38 +00:00
艾竹
28af997749 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-03 13:55:34 +00:00
艾竹
cc65902b02 Image 2023-05-03 21:54:36 +08:00
艾竹
40b935ed03 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-03 13:54:23 +00:00
艾竹
107c88ff0e update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-03 13:50:29 +00:00
艾竹
f2580bcdfa Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-05-03 21:48:49 +08:00
艾竹
7e66a5a6a3 Images 2023-05-03 21:48:42 +08:00
艾竹
656722e04c update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-03 13:45:07 +00:00
艾竹
ea2e2f45dd ReadMe的Image移动到文件夹下 2023-05-03 21:44:20 +08:00
艾竹
9902ca2af2 新建 Images 2023-05-03 13:39:58 +00:00
艾竹
c877192b1d 重命名 editor.png.png 为 editor.png 2023-05-03 13:38:14 +00:00
艾竹
10679295c0 小调整 2023-05-03 20:29:12 +08:00
艾竹
07bf962aa4 PortlessLinks Demo调整 2023-05-03 19:02:37 +08:00
艾竹
b9210cb6d9 修复demo中彩色节点的bug 2023-05-03 18:35:01 +08:00
艾竹
c462d110ff 动画支持形状定义demo 2023-05-03 17:14:47 +08:00
艾竹
c135a7f144 删除废弃的两个item 2023-05-03 16:07:02 +08:00
艾竹
6b13f51814 部分连接线完成,另外待连接点红色区域显示。 2023-05-03 16:00:34 +08:00
艾竹
ed22b9daa3 可以把连线从节点上拖下来,并且依附上去。 2023-05-03 13:28:16 +08:00
艾竹
1536e5018d 部分连接线拖拽完成 2023-05-03 09:59:46 +08:00
艾竹
6de36f2473 连线优化1:开始和结束节点。 2023-05-02 17:28:16 +08:00
艾竹
06c3ddde7e 连接点显示 2023-05-02 14:28:51 +08:00
艾竹
f52895a8a8 Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-05-02 08:31:17 +08:00
艾竹
a66e9239fe 更新一下dll 2023-05-02 08:31:01 +08:00
艾竹
f73dd637ee update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-01 16:04:01 +00:00
艾竹
36c5b956c3 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-05-01 16:00:33 +00:00
艾竹
6fa78893ee popup支持设置大小 2023-05-01 23:07:19 +08:00
艾竹
508de7a7d9 C# 脚本模块正式发布 2023-05-01 21:40:41 +08:00
艾竹
4a1fc12c52 动画完成 2023-05-01 13:17:26 +08:00
艾竹
48555edbc6 支持动画使用不同的形状 2023-05-01 00:10:55 +08:00
艾竹
4a3f278a97 线条动画支持大小切换 2023-04-29 18:36:50 +08:00
艾竹
f4268b9fc2 为线的动画做扩展准备 2023-04-29 15:29:22 +08:00
艾竹
7d8b19e4e0 Connector 错误处理 2023-04-26 22:53:44 +08:00
艾竹
48314acbd5 连接线 2023-04-25 23:07:25 +08:00
艾竹
aa8ab61e37 调整一下删除拷贝,我也不记得之前为啥这样写了。 2023-04-24 22:43:56 +08:00
艾竹
dea5a5341c !3 connect
Merge pull request !3 from 艾竹/dev
2023-04-24 13:49:47 +00:00
kwai
d38f11e758 connect 2023-04-24 20:10:17 +08:00
艾竹
e5d187d8c8 If 2023-04-23 22:44:15 +08:00
艾竹
1cef64c7c8 开发中的功能注释掉 2023-04-23 21:45:08 +08:00
艾竹
997ccde257 !2 自动合并
Merge pull request !2 from 艾竹/dev
2023-04-23 08:45:25 +00:00
艾竹
fe8ecdfc32 !1 C# retrieving the com class factory 80040154
Merge pull request !1 from 艾竹/master
2023-04-23 08:43:51 +00:00
艾竹
9a39d6caf8 Merge branch 'dev' of gitee.com:akwkevin/aistudio.-wpf.-diagram into master
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-04-23 08:43:34 +00:00
”Jabin章志朋“
af5ac77496 test zzpaaa 2023-04-23 16:39:37 +08:00
”Jabin章志朋“
ff012a1380 test txt 2023-04-23 16:33:53 +08:00
”Jabin章志朋“
f7f05a002f Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-04-23 16:29:04 +08:00
”Jabin章志朋“
3605ce9223 AIStudio.Wpf.DiagramDesigner的UserControls文件夹下的DiagramControl的201行添加基础图形上下左右按钮控件 2023-04-23 16:25:01 +08:00
艾竹
bd1741b572 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-04-23 07:52:02 +00:00
”Jabin章志朋“
77932a4175 test git demo 2023-04-23 15:07:31 +08:00
艾竹
13cede06cf 1.1.4 2023-04-22 22:40:41 +08:00
艾竹
5963c2c29f 1.1.1 2023-04-22 21:08:01 +08:00
艾竹
21467e26f5 1.1.1 2023-04-22 21:06:52 +08:00
艾竹
dfc299689a Demos 2023-04-22 12:41:26 +08:00
艾竹
87f31fa79d Demos 2023-04-22 12:41:15 +08:00
艾竹
f8340b5885 添加逻辑节点支持字符串值 2023-04-19 22:26:04 +08:00
艾竹
451df2d5de 控件重名冲突 2023-04-18 22:38:20 +08:00
艾竹
033bebb6bc 支持到6.0 2023-04-16 23:32:55 +08:00
艾竹
81f91f3f35 项目结构调整 2023-04-16 20:11:40 +08:00
艾竹
cbfbf96033 Boundary画线算法,精度导致的问题修复 2023-04-16 14:56:53 +08:00
艾竹
4b8a03afb6 审批序列化 2023-04-16 12:21:51 +08:00
艾竹
5dee3a9907 修复一个sfc的bug 2023-04-16 10:10:12 +08:00
艾竹
f05654309b SFC报错修复 2023-04-15 23:42:36 +08:00
艾竹
488e23ea57 使用设计模式优化一下逻辑图 2023-04-15 23:32:29 +08:00
艾竹
c6bc57140f 查找与替换完成 2023-04-15 21:55:27 +08:00
艾竹
ce2e44fe49 PropertyChanged使用基类的,各个类不在自己定义 2023-04-10 23:08:14 +08:00
艾竹
429d7b1e24 截屏嵌入,查找待优化 2023-04-09 21:48:26 +08:00
艾竹
21009fc383 整理 2023-04-09 18:58:13 +08:00
艾竹
fae7826577 ReDo Undo Item ItemWidth 和 Angle 等工具栏设置完成 2023-04-09 12:38:57 +08:00
艾竹
2ef5b7a1ed 颜色,字体,支持redo undo 2023-04-08 23:38:01 +08:00
艾竹
8ad42aec49 分组,取消分组 ReDo UnDo 整理 2023-04-08 21:48:43 +08:00
艾竹
fa96573cbd 继续整理 2023-04-08 18:08:00 +08:00
艾竹
2edb4ffb14 动画bug修复 2023-04-08 17:28:38 +08:00
艾竹
5e7dd6c5e5 连接线,文本编辑 2023-04-08 14:37:07 +08:00
艾竹
a0485601c1 补充提交 2023-04-08 14:28:51 +08:00
艾竹
78da8f4852 最近精简代码,有些bug,修复 2023-04-08 14:22:12 +08:00
kwai
347488e8e9 xx 2023-04-07 19:21:27 +08:00
艾竹
afea559325 ReDo UnDo 继续 2023-04-06 23:01:18 +08:00
艾竹
e0a26a76d2 整理Redo和Undo命令 2023-04-05 23:40:22 +08:00
艾竹
c513bd0f64 Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-04-05 20:36:23 +08:00
艾竹
5935a58541 mind多个根节点的时候,切换模式的修复 2023-04-05 20:35:10 +08:00
艾竹
eccf798818 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-04-05 03:21:59 +00:00
艾竹
f9b9b0fb2d update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-04-05 02:59:51 +00:00
艾竹
b3f99f5dfd update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-04-05 01:39:15 +00:00
艾竹
0fd8c217f4 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-04-05 01:34:15 +00:00
艾竹
3dc7b25d95 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-04-05 01:15:37 +00:00
艾竹
b04028c893 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-04-05 01:14:51 +00:00
艾竹
88ae871b64 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-04-05 01:12:22 +00:00
艾竹
fccac1da23 几个小bug 2023-04-05 08:57:31 +08:00
艾竹
4c54318b9a bug修复 2023-04-04 22:42:09 +08:00
艾竹
a3fbb2d8ad 序列化bug修复,近期主要修复bug为主 2023-04-02 22:59:22 +08:00
艾竹
7835b422ff 节点导入完成 2023-04-02 21:47:55 +08:00
艾竹
0701f25519 工具栏整理 2023-04-02 12:01:46 +08:00
艾竹
02ebd056b3 xx 2023-03-29 22:55:12 +08:00
艾竹
f80a67ff10 xx 2023-03-29 06:26:16 +08:00
艾竹
ca7abe6fd5 修复一个大bug 2023-03-29 06:26:00 +08:00
艾竹
b4d7f13111 offset修复一半 2023-03-28 23:16:56 +08:00
艾竹
72da084f15 xx 2023-03-28 22:09:24 +08:00
艾竹
43b5d82fae do redo 2023-03-26 23:23:34 +08:00
艾竹
90e94a7ec0 修改内部使用方法,不需要使用页面绑定的命令 2023-03-25 22:29:02 +08:00
艾竹
5e5da021ab mind的拷贝完成 2023-03-25 22:10:49 +08:00
艾竹
b36bd4b228 XX 2023-03-25 11:59:31 +08:00
艾竹
8a2c742ec4 xx 2023-03-24 22:32:42 +08:00
艾竹
5ff4376674 附加信息序列化 2023-03-21 23:08:12 +08:00
艾竹
3c8120aa15 mind集成到diagram app中 2023-03-20 23:01:38 +08:00
kwai
2c6b3cc285 主题还得完善下 2023-03-20 20:23:20 +08:00
艾竹
07ac28965e mind基本完成,准备写文档 2023-03-19 23:26:14 +08:00
艾竹
c2f4d3c706 mind 工具栏 2023-03-19 12:38:08 +08:00
艾竹
8d87f61c07 mind 2023-03-18 22:50:00 +08:00
艾竹
9b3c2633a7 mind 2023-03-18 21:44:58 +08:00
艾竹
d97938cc2b link 2023-03-15 23:05:41 +08:00
kwai
70dac7d41c xx 2023-03-15 19:35:53 +08:00
艾竹
035a725da3 priority 2023-03-13 22:27:00 +08:00
kwai
31872222bc 附加信息准备中 2023-03-13 19:44:30 +08:00
艾竹
414eb28867 工具栏调整下 2023-03-12 23:26:22 +08:00
艾竹
f22d6dd3f1 适应窗口大小完成 2023-03-12 22:47:45 +08:00
艾竹
e2753b0bff 右键拖动画布 2023-03-12 15:26:58 +08:00
艾竹
fb7858fe74 可以切换主题 2023-03-11 22:27:23 +08:00
艾竹
84f413320f 暂存一下 2023-03-11 12:40:44 +08:00
艾竹
5cfb32bb19 mind 工具栏 2023-03-11 10:19:21 +08:00
艾竹
b3c7e1efec mind 2023-03-10 12:09:13 +08:00
艾竹
e4f6335224 mind序列化完善中 2023-03-08 23:02:50 +08:00
kwai
c80923d19c mind 2023-03-08 19:45:07 +08:00
艾竹
f48838f54a Mind 2023-03-07 22:59:27 +08:00
kwai
f042f95ee0 xx 2023-03-07 19:25:19 +08:00
kwai
152c6a8c22 xx 2023-03-06 11:54:41 +08:00
艾竹
cd20abd7fe 可以切换MindType 2023-03-05 23:22:34 +08:00
艾竹
79f4896fbd Mind Editoe 2023-03-05 21:30:53 +08:00
kwai
9061146139 tool 2023-03-03 18:59:02 +08:00
kwai
9966656269 mind 2023-03-01 19:28:06 +08:00
艾竹
84d4035e6d 分离完成 AIStudio.Wpf.DiagramModels 用于对接三分软件的模型 2023-02-28 23:04:16 +08:00
艾竹
a015f9208b Mind准备序列化,准备分离出model库 2023-02-28 22:07:40 +08:00
kwai
511636ebd7 fishbone 2023-02-28 18:53:34 +08:00
艾竹
73176a00d9 这个线有点偏差 2023-02-27 23:18:31 +08:00
kwai
6464cad46e xx 2023-02-27 20:19:08 +08:00
kwai
f8c2115f03 xx 2023-02-27 20:18:58 +08:00
艾竹
298ec29dd9 写不动了,休息。 2023-02-22 23:01:22 +08:00
kwai
3a744ecaf7 xx 2023-02-22 19:50:00 +08:00
艾竹
6d1f2a83fa 调试中 2023-02-21 23:23:03 +08:00
kwai
c227076076 结构调整 2023-02-21 19:47:46 +08:00
艾竹
71ed33f881 mind继续 2023-02-20 23:01:26 +08:00
艾竹
58c18db12f 添加附加信息 2023-02-19 23:20:02 +08:00
艾竹
c053396fa0 mind 两个布局完成 2023-02-19 22:56:47 +08:00
艾竹
ca1ac13a1f mind 有点样子了 2023-02-19 21:38:28 +08:00
艾竹
08a4fddfdc 嗯,自动获取曲线方向 2023-02-16 23:02:43 +08:00
kwai
968adb0635 mind 进行中 2023-02-16 19:21:37 +08:00
艾竹
debd7e711d 内部基础ZoomBox 2023-02-14 22:54:55 +08:00
艾竹
3ef7434f5b ZoomBox 完成 2023-02-14 22:15:19 +08:00
艾竹
38cb0fae85 暂存一下 2023-02-14 21:55:42 +08:00
kwai
d6e84d40c0 临时提交 2023-02-14 18:58:26 +08:00
艾竹
dfe76438c2 ZoomBox待完成,还需要调整 2023-02-13 22:50:50 +08:00
艾竹
4d36eac218 Mind 出发 2023-02-12 21:30:16 +08:00
艾竹
934357c87c 发布1.0.7 2023-02-12 16:06:28 +08:00
艾竹
2f3b622c4c Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-02-12 15:46:58 +08:00
艾竹
1c03c0f055 性能问题优化 2023-02-12 15:46:44 +08:00
艾竹
4d2c7a282a update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-02-12 07:26:25 +00:00
艾竹
bd6c8ad223 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-02-12 07:25:35 +00:00
艾竹
da2d8cd9b3 描述修改 2023-02-12 11:07:21 +08:00
艾竹
98392f377b 事件Demo完成 2023-02-12 11:02:20 +08:00
艾竹
8a50854868 继续 2023-02-12 09:26:27 +08:00
艾竹
f99fd93b3f 使用物理尺寸进行设置 2023-02-11 23:51:48 +08:00
艾竹
59bfed341d 实际尺寸之间转换 2023-02-11 22:20:24 +08:00
艾竹
86082cb788 修复旋转放大后 画线的问题 2023-02-11 10:03:06 +08:00
艾竹
a928ae1ddd Merge branch 'master' of https://gitee.com/akwkevin/aistudio.-wpf.-diagram 2023-02-11 09:08:41 +08:00
艾竹
9ea83dda6f 来一个旋转Group 2023-02-10 21:59:12 +08:00
kwai
cf1bfc7482 group 和 line 优化 2023-02-10 18:49:02 +08:00
艾竹
18b6bd7e71 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-02-09 04:06:25 +00:00
艾竹
2a3004a9c6 更新控件库 2023-02-05 22:50:09 +08:00
艾竹
09b3ec41de update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-02-05 14:49:04 +00:00
艾竹
d53cd2bd6a update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-02-05 13:39:16 +00:00
艾竹
f5bca4d87d update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-02-05 13:35:24 +00:00
艾竹
b40fb78c70 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-02-05 12:43:10 +00:00
艾竹
e2a65ff57f update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-02-05 12:40:59 +00:00
艾竹
c1d4c5c58f update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-02-05 12:28:10 +00:00
艾竹
24c392a8a4 update README.md.
Signed-off-by: 艾竹 <akwkevin@126.com>
2023-02-05 12:27:44 +00:00
艾竹
69c56c681b 引入一个查找元素的类 2023-02-05 18:54:39 +08:00
艾竹
9ccbfb7760 放大缩小 2023-02-05 10:36:13 +08:00
艾竹
7f5bea55a8 背景为渐变色的示例 2023-02-04 20:59:01 +08:00
艾竹
5b513370ff 快捷键支持 2023-02-04 20:21:18 +08:00
艾竹
285c015e83 快捷键实现 2023-02-04 16:51:22 +08:00
艾竹
e8f91abd68 内部连接点示例 2023-02-04 16:38:56 +08:00
艾竹
0d6debe87f 删除多余的 2023-02-04 12:19:08 +08:00
艾竹
bf5717cf25 箭头bug修复 2023-02-04 12:17:03 +08:00
艾竹
8bec9b446f 暂时存一版 2023-02-04 11:16:39 +08:00
艾竹
848121ffa2 修改逻辑图 动画时间可修改待处理 2023-02-03 23:07:57 +08:00
艾竹
da8cf08051 小优化 2023-02-03 22:36:08 +08:00
艾竹
bd90d55ca8 组合对象完成 2023-02-03 22:25:03 +08:00
kwai
2fde666182 支持多个node保存到工具栏,显示还有点问题。 2023-02-03 18:23:53 +08:00
艾竹
397ebcfac2 自定义group完成 2023-02-02 23:00:36 +08:00
艾竹
527dbd98e4 彩色连接点完成 2023-02-01 23:05:56 +08:00
艾竹
50eab5e091 分离逻辑与常规连接点 2023-01-31 22:45:50 +08:00
艾竹
5ee0c1ce26 可以自定义连接点 2023-01-29 22:54:06 +08:00
艾竹
ba9e3bdf58 自定义节点样式 2023-01-27 22:11:26 +08:00
艾竹
4feddf8392 覆盖默认定义 2023-01-27 21:29:42 +08:00
艾竹
6d1960a8df Portless序列化 2023-01-27 20:43:41 +08:00
艾竹
e8bd6faa21 IsPortless 画线 2023-01-27 20:10:17 +08:00
艾竹
72e3efb052 动画demo完成 2023-01-27 14:54:03 +08:00
艾竹
64ea56f01e 大部分完成,还有写要解决的问题 2023-01-26 22:25:48 +08:00
艾竹
04db0ef13b EnableSnapping完成 2023-01-26 20:05:21 +08:00
艾竹
b5867c148e marker.还有一点bug 2023-01-26 18:42:58 +08:00
艾竹
9bb6c6d321 箭头分离到独立的model中,方便自定义path 2023-01-26 18:27:17 +08:00
艾竹
f11a4170d8 demo提交 2023-01-25 23:55:30 +08:00
艾竹
b857151bdc zxing.net引用 更新 2023-01-25 17:04:56 +08:00
艾竹
b7af3534a2 整理整理 2023-01-25 15:58:05 +08:00
艾竹
4c5d535aad Demo整理 2023-01-25 15:21:20 +08:00
艾竹
40590bf98d 线条控件 2023-01-25 14:42:01 +08:00
艾竹
a01eb8825a 序列化继续改进 2023-01-25 11:11:27 +08:00
艾竹
a5005ac083 序列化调整中 2023-01-24 23:10:57 +08:00
艾竹
66d3a6685b 页边距修改 2023-01-24 20:51:39 +08:00
艾竹
1a291411e6 序列化继续整理 2023-01-24 17:53:04 +08:00
艾竹
8dbe05636d 整理序列化 2023-01-24 16:20:39 +08:00
艾竹
f39a57b3e5 把底层再分割一下 2023-01-24 09:02:40 +08:00
艾竹
2b4662ed37 虚线流动完成 2023-01-23 22:05:51 +08:00
艾竹
c4f8a40b5c 一个bug 2023-01-23 15:46:54 +08:00
艾竹
2c76aacc66 添加节点可删除 2023-01-23 15:43:44 +08:00
艾竹
bb2882c618 修改几个名字 2023-01-22 22:10:39 +08:00
艾竹
4c37fb9772 连接点可以添加文字 2023-01-22 21:46:59 +08:00
艾竹
ad227aee0c xx 2023-01-21 23:25:42 +08:00
艾竹
2e396d687b 支持添加中间节点 2023-01-21 22:01:10 +08:00
艾竹
c4ab1a6355 连线完成 2023-01-20 22:43:08 +08:00
艾竹
f8a0b29d5f 画线调整 2023-01-16 22:38:58 +08:00
艾竹
718d8c01e9 箭头位置,指向连接点的中心 2023-01-15 22:17:46 +08:00
艾竹
5bdf10445f 减少一层逻辑关系 2023-01-15 20:27:39 +08:00
艾竹
7d77864311 准备添加中间端点 2023-01-15 11:59:51 +08:00
艾竹
717cc43827 画线优化基本完成 2023-01-14 21:52:05 +08:00
艾竹
6a4c31106a 修改暂存一下 2023-01-12 23:02:53 +08:00
艾竹
5d7717cc2b 使用PointBase代替Point 2023-01-08 09:22:37 +08:00
艾竹
8fc69bc96d 简单表达式计算就用DataTable自带的好了 2023-01-07 12:08:28 +08:00
艾竹
93ca2859ba 整理,准备曲线算法 2023-01-07 11:32:01 +08:00
艾竹
4e2e68acdf 一个小bug 2022-12-13 19:42:58 +08:00
艾竹
4b798f75a0 1.01 2022-12-12 22:33:17 +08:00
艾竹
02f428d61a dev版本 2022-12-10 20:21:06 +08:00
艾竹
9f91fbcdd3 调整了一下各种命令的位置,便于其他应用调用 2022-12-08 20:54:45 +08:00
艾竹
9a8d4c95f0 线条文本可以保存了 2022-12-06 21:28:42 +08:00
艾竹
194eb9b104 继续调整 2022-12-05 22:48:00 +08:00
艾竹
0487857d7b Flowchart 2022-12-04 23:07:20 +08:00
艾竹
dc42f75610 FlowchartEditor完成 2022-12-02 23:06:31 +08:00
艾竹
1abeefcc66 修复一个多选框的bug 2022-12-02 08:44:40 +08:00
艾竹
503b92f40e 调整demo的combobox样式 2022-12-01 23:12:13 +08:00
艾竹
992a4bb83b 简单demo继续完善 2022-11-30 22:28:22 +08:00
艾竹
13f30f23d8 分离出一个小demo 2022-11-30 19:07:40 +08:00
艾竹
513937c1d6 整理一下项目文件 2022-10-28 22:45:39 +08:00
艾竹
334297b074 update README.md. 2022-06-22 12:12:33 +00:00
艾竹
c443603cfd 笔误啊 2022-05-29 16:02:25 +08:00
艾竹
179f8a45cc update LICENSE. 2021-11-02 03:15:17 +00:00
akwkevin
8bec38e040 连接线改成path绘制,方便绘制曲线 2021-08-06 18:12:05 +08:00
akwkevin
e9c043ae3a 连接线修改,为支持改变连接点做准备 2021-08-05 18:20:22 +08:00
3102 changed files with 66649 additions and 22975 deletions

135
.editorconfig Normal file
View File

@@ -0,0 +1,135 @@
# Rules in this file were initially inferred by Visual Studio IntelliCode from the F:\AIStudio.Wpf.Controls codebase based on best match to current usage at 2022/1/23
# You can modify the rules from these initially generated values to suit your own policies
# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference
[*.cs]
#Core editorconfig formatting - indentation
#use soft tabs (spaces) for indentation
indent_style = space
#Formatting - indentation options
#indent switch case contents.
csharp_indent_case_contents = true
#csharp_indent_case_contents_when_block
csharp_indent_case_contents_when_block = true
#indent switch labels
csharp_indent_switch_labels = true
#Formatting - new line options
#place catch statements on a new line
csharp_new_line_before_catch = true
#place else statements on a new line
csharp_new_line_before_else = true
#require finally statements to be on a new line after the closing brace
csharp_new_line_before_finally = true
#require members of object intializers to be on separate lines
csharp_new_line_before_members_in_object_initializers = true
#require braces to be on a new line for types, control_blocks, methods, properties, object_collection_array_initializers, and accessors (also known as "Allman" style)
csharp_new_line_before_open_brace = types, control_blocks, methods, properties, object_collection_array_initializers, accessors
#Formatting - organize using options
#sort System.* using directives alphabetically, and place them before other usings
dotnet_sort_system_directives_first = true
#Formatting - spacing options
#require NO space between a cast and the value
csharp_space_after_cast = false
#require a space before the colon for bases or interfaces in a type declaration
csharp_space_after_colon_in_inheritance_clause = true
#require a space after a keyword in a control flow statement such as a for loop
csharp_space_after_keywords_in_control_flow_statements = true
#require a space before the colon for bases or interfaces in a type declaration
csharp_space_before_colon_in_inheritance_clause = true
#remove space within empty argument list parentheses
csharp_space_between_method_call_empty_parameter_list_parentheses = false
#remove space between method call name and opening parenthesis
csharp_space_between_method_call_name_and_opening_parenthesis = false
#do not place space characters after the opening parenthesis and before the closing parenthesis of a method call
csharp_space_between_method_call_parameter_list_parentheses = false
#remove space within empty parameter list parentheses for a method declaration
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
#place a space character after the opening parenthesis and before the closing parenthesis of a method declaration parameter list.
csharp_space_between_method_declaration_parameter_list_parentheses = false
#Formatting - wrapping options
#leave code block on separate lines
csharp_preserve_single_line_blocks = false
#leave statements and member declarations on the same line
csharp_preserve_single_line_statements = true
#Style - Code block preferences
#prefer curly braces even for one line of code
csharp_prefer_braces = true:suggestion
#Style - expression bodied member options
#prefer block bodies for accessors
csharp_style_expression_bodied_accessors = false:suggestion
#prefer block bodies for constructors
csharp_style_expression_bodied_constructors = false:suggestion
#prefer block bodies for methods
csharp_style_expression_bodied_methods = false:suggestion
#prefer block bodies for properties
csharp_style_expression_bodied_properties = false:suggestion
#Style - expression level options
#prefer out variables to be declared inline in the argument list of a method call when possible
csharp_style_inlined_variable_declaration = true:suggestion
#prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them
dotnet_style_predefined_type_for_member_access = true:suggestion
#Style - Expression-level preferences
#prefer default(T) over default
csharp_prefer_simple_default_expression = false:suggestion
#prefer objects to be initialized using object initializers when possible
dotnet_style_object_initializer = true:suggestion
#Style - implicit and explicit types
#prefer explicit type over var in all cases, unless overridden by another code style rule
csharp_style_var_elsewhere = false:suggestion
#prefer explicit type over var to declare variables with built-in system types such as int
csharp_style_var_for_built_in_types = false:suggestion
#prefer explicit type over var when the type is already mentioned on the right-hand side of a declaration
csharp_style_var_when_type_is_apparent = false:suggestion
#Style - language keyword and framework type options
#prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
#Style - modifier options
#prefer accessibility modifiers to be declared except for public interface members. This will currently not differ from always and will act as future proofing for if C# adds default interface methods.
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
#Style - Modifier preferences
#when this rule is set to a list of modifiers, prefer the specified ordering.
csharp_preferred_modifier_order = public,private,protected,internal,static,readonly,override,virtual,new,async:suggestion
#Style - Pattern matching
#prefer is expression with type casts instead of pattern matching
csharp_style_pattern_matching_over_as_with_null_check = false:suggestion
#Style - qualification options
#prefer events to be prefaced with this. in C# or Me. in Visual Basic
dotnet_style_qualification_for_event = true:suggestion
#prefer fields not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_field = false:suggestion
#prefer methods not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_method = false:suggestion
#prefer properties not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_property = false:suggestion

View File

@@ -1,102 +0,0 @@
{
"Title": null,
"DiagramType": 0,
"DiagramItems": [
{
"Name": null,
"DiagramType": 0,
"DesignerItems": [
],
"PersistDesignerItems": [
],
"SettingsDesignerItems": [
],
"PathDesignerItems": [
{
"Left": 132.80000000000007,
"Top": 101.26000022888184,
"ScaleX": 1,
"ScaleY": 1,
"Margin": 0.0,
"ItemWidth": 65.0,
"ItemHeight": 65.0,
"Icon": "M 0,0 H 60 V 40 C 30,30 30,50 0,40 Z",
"ItemTypeName": "AIStudio.Wpf.BaseDiagram.Extensions.ViewModels.PathItemViewModel",
"Id": "da395032-ad9e-4dab-a035-f59bed5cb4c4",
"ZIndex": 0,
"IsGroup": false,
"ParentId": "00000000-0000-0000-0000-000000000000",
"Text": "欢迎来到AIStudio画板",
"ColorItem": {
"LineColor": {
"BrushType": 1,
"Color": "#FF808080",
"GradientStop": null,
"Offset": null,
"Image": null,
"SubType": 0,
"StartPoint": "0,0",
"EndPoint": "0,0",
"Opacity": 1.0,
"LinearOrientation": 0,
"RadialOrientation": 0,
"Angle": 0
},
"FillColor": {
"BrushType": 1,
"Color": "#FFFFA500",
"GradientStop": null,
"Offset": null,
"Image": null,
"SubType": 0,
"StartPoint": "0,0",
"EndPoint": "0,0",
"Opacity": 1.0,
"LinearOrientation": 0,
"RadialOrientation": 0,
"Angle": 0
},
"ShadowColor": "#00FFFFFF",
"LineWidth": 1.0,
"LeftArrowPathStyle": 0,
"RightArrowPathStyle": 1,
"LeftArrowSizeStyle": 10,
"RightArrowSizeStyle": 10
},
"FontItem": {
"FontWeight": "Normal",
"FontStyle": "Normal",
"FontStretch": "Normal",
"Underline": false,
"Strikethrough": false,
"OverLine": false,
"FontColor": "#FF000000",
"FontFamily": "Arial",
"FontSize": 11.0,
"FontObject": "Arial, 11pt",
"TextEffectColor": "#00FFFFFF",
"HighlightColor": "#00FFFFFF",
"FontCase": 0,
"HorizontalAlignment": 1,
"VerticalAlignment": 1,
"LineHeight": 0.0
}
}
],
"MediaDesignerItems": [
],
"ImageDesignerItems": [
],
"TextDesignerItems": [
],
"LogicalGateItems": [
],
"FlowNodeDesignerItems": [
],
"ConnectionIds": [
],
"Connections": [
]
}
]
}

View File

@@ -1,294 +0,0 @@
using Util.DiagramDesigner;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;
using AIStudio.Wpf.Flowchart;
using AIStudio.Wpf.BaseDiagram.Extensions.ViewModels;
using AIStudio.Wpf.BaseDiagram.Extensions.Models;
using Newtonsoft.Json;
using AIStudio.Wpf.Flowchart.Models;
using AIStudio.Wpf.Flowchart.ViewModels;
using AIStudio.Wpf.SFC.Models;
using AIStudio.Wpf.SFC.ViewModels;
using System.Windows;
using System.Windows.Media;
namespace AIStudio.Wpf.ADiagram.Models
{
[Serializable]
public class DiagramItem
{
public DiagramItem()
{
this.ConnectionIds = new List<Guid>();
this.Connections = new List<ConnectionItem>();
}
[XmlAttribute]
public string Name { get; set; }
[XmlAttribute]
public DiagramType DiagramType { get; set; }
[XmlAttribute]
public bool ShowGrid { get; set; }
[XmlIgnore]
public Size GridCellSize { get; set; }
[JsonIgnore]
[XmlAttribute("GridCellSize")]
public string XmlGridCellSize
{
get
{
return SerializeHelper.SerializeSize(GridCellSize);
}
set
{
GridCellSize = SerializeHelper.DeserializeSize(value);
}
}
[XmlAttribute]
public CellHorizontalAlignment CellHorizontalAlignment { get; set; }
[XmlAttribute]
public CellVerticalAlignment CellVerticalAlignment { get; set; }
[XmlAttribute]
public PageSizeOrientation PageSizeOrientation { get; set; }
[XmlIgnore]
public Size PageSize { get; set; }
[JsonIgnore]
[XmlAttribute("PageSize")]
public string XmlPageSize
{
get
{
return SerializeHelper.SerializeSize(PageSize);
}
set
{
PageSize = SerializeHelper.DeserializeSize(value);
}
}
[XmlAttribute]
public PageSizeType PageSizeType { get; set; }
[XmlAttribute]
public double GridMargin { get; set; }
[XmlIgnore]
public Color GridColor { get; set; }
[JsonIgnore]
[XmlAttribute("GridColor")]
public string XmlGridColor
{
get
{
return SerializeHelper.SerializeColor(GridColor);
}
set
{
GridColor = SerializeHelper.DeserializeColor(value);
}
}
[XmlArray]
public List<DesignerItemBase> DesignerItems { get; set; } = new List<DesignerItemBase>();
[XmlArray]
public List<PersistDesignerItem> PersistDesignerItems { get; set; } = new List<PersistDesignerItem>();
[XmlArray]
public List<SettingsDesignerItem> SettingsDesignerItems { get; set; } = new List<SettingsDesignerItem>();
[XmlArray]
public List<PathDesignerItem> PathDesignerItems { get; set; } = new List<PathDesignerItem>();
[XmlArray]
public List<MediaDesignerItem> MediaDesignerItems { get; set; } = new List<MediaDesignerItem>();
[XmlArray]
public List<ImageDesignerItem> ImageDesignerItems { get; set; } = new List<ImageDesignerItem>();
[XmlArray]
public List<TextDesignerItem> TextDesignerItems { get; set; } = new List<TextDesignerItem>();
[XmlArray]
public List<LogicalGateDesignerItemBase> LogicalGateItems { get; set; } = new List<LogicalGateDesignerItemBase>();
[XmlArray]
public List<FlowNodeDesignerItem> FlowNodeDesignerItems { get; set; } = new List<FlowNodeDesignerItem>();
[XmlArray]
public List<SFCNodeDesignerItem> SFCNodeDesignerItems { get; set; } = new List<SFCNodeDesignerItem>();
[JsonIgnore]
[XmlIgnore]
public List<DesignerItemBase> AllDesignerItems
{
get
{
return
DesignerItems.OfType<DesignerItemBase>()
.Union(TextDesignerItems.OfType<DesignerItemBase>())
.Union(LogicalGateItems.OfType<DesignerItemBase>())
.Union(MediaDesignerItems.OfType<DesignerItemBase>())
.Union(ImageDesignerItems.OfType<DesignerItemBase>())
.Union(PathDesignerItems.OfType<DesignerItemBase>())
.Union(PersistDesignerItems.OfType<DesignerItemBase>())
.Union(SettingsDesignerItems.OfType<DesignerItemBase>())
.Union(FlowNodeDesignerItems.OfType<DesignerItemBase>())
.Union(SFCNodeDesignerItems.OfType<DesignerItemBase>())
.ToList();
}
}
[XmlArray]
public List<Guid> ConnectionIds { get; set; }
[XmlArray]
public List<ConnectionItem> Connections { get; set; }
public void AddItems(IEnumerable<SelectableDesignerItemViewModelBase> selectedDesignerItems)
{
foreach (var item in selectedDesignerItems.OfType<DesignerItemViewModelBase>())
{
if (item is PersistDesignerItemViewModel)
{
PersistDesignerItems.Add(new PersistDesignerItem(item as PersistDesignerItemViewModel));
}
else if (item is SettingsDesignerItemViewModel)
{
SettingsDesignerItems.Add(new SettingsDesignerItem(item as SettingsDesignerItemViewModel));
}
else if (item is PathItemViewModel)
{
PathDesignerItems.Add(new PathDesignerItem(item));
}
else if (item is GifImageItemViewModel)
{
MediaDesignerItems.Add(new MediaDesignerItem(item as GifImageItemViewModel));
}
else if (item is MediaItemViewModel)
{
MediaDesignerItems.Add(new MediaDesignerItem(item as MediaItemViewModel));
}
else if (item is ImageItemViewModel)
{
ImageDesignerItems.Add(new ImageDesignerItem(item as ImageItemViewModel));
}
else if (item is TextDesignerItemViewModel)
{
TextDesignerItems.Add(new TextDesignerItem(item as TextDesignerItemViewModel));
}
else if (item is LogicalGateItemViewModelBase)
{
LogicalGateItems.Add(new LogicalGateDesignerItemBase(item as LogicalGateItemViewModelBase));
}
else if (item is FlowNode)
{
FlowNodeDesignerItems.Add(new FlowNodeDesignerItem(item as FlowNode));
}
else if (item is SFCNode)
{
SFCNodeDesignerItems.Add(new SFCNodeDesignerItem(item as SFCNode));
}
else if (item is BarcodeDesignerItemViewModel)
{
DesignerItems.Add(new DesignerItemBase(item, (item as BarcodeDesignerItemViewModel).Format.ToString()));
}
else
{
DesignerItems.Add(new DesignerItemBase(item));
}
}
}
public static DesignerItemBase ToXmlObject(SelectableDesignerItemViewModelBase item)
{
if (item is PersistDesignerItemViewModel)
{
return new PersistDesignerItem(item as PersistDesignerItemViewModel);
}
else if (item is SettingsDesignerItemViewModel)
{
return new SettingsDesignerItem(item as SettingsDesignerItemViewModel);
}
else if (item is PathItemViewModel)
{
return new PathDesignerItem(item as PathItemViewModel);
}
else if (item is GifImageItemViewModel)
{
return new MediaDesignerItem(item as GifImageItemViewModel);
}
else if (item is MediaItemViewModel)
{
return new MediaDesignerItem(item as MediaItemViewModel);
}
else if (item is ImageItemViewModel)
{
return new ImageDesignerItem(item as ImageItemViewModel);
}
else if (item is TextDesignerItemViewModel)
{
return new TextDesignerItem(item as TextDesignerItemViewModel);
}
else if (item is LogicalGateItemViewModelBase)
{
return new LogicalGateDesignerItemBase(item as LogicalGateItemViewModelBase);
}
else if (item is FlowNode)
{
return new FlowNodeDesignerItem(item as FlowNode);
}
else if (item is SFCNode)
{
return new SFCNodeDesignerItem(item as SFCNode);
}
else
{
return new DesignerItemBase(item as DesignerItemViewModelBase);
}
}
public static Type GetTypeOfDiagramItem(DesignerItemViewModelBase vmType)
{
if (vmType is PersistDesignerItemViewModel)
return typeof(PersistDesignerItem);
if (vmType is SettingsDesignerItemViewModel)
return typeof(SettingsDesignerItem);
if (vmType is PathItemViewModel)
return typeof(PathToolBoxData);
if (vmType is GifImageItemViewModel)
return typeof(MediaDesignerItem);
if (vmType is MediaItemViewModel)
return typeof(MediaDesignerItem);
if (vmType is ImageItemViewModel)
return typeof(ImageDesignerItem);
if (vmType is LogicalGateItemViewModelBase)
return typeof(LogicalGateDesignerItemBase);
if (vmType is FlowNode)
return typeof(FlowNodeDesignerItem);
if (vmType is SFCNode)
return typeof(SFCNodeDesignerItem);
throw new InvalidOperationException(string.Format("Unknown diagram type. Currently only {0} and {1} are supported",
typeof(PersistDesignerItem).AssemblyQualifiedName,
typeof(SettingsDesignerItemViewModel).AssemblyQualifiedName
));
}
}
}

View File

@@ -1,96 +0,0 @@
using AIStudio.Wpf.Flowchart;
using AIStudio.Wpf.SFC;
using System;
using System.Windows.Media;
using Util.DiagramDesigner;
using Util.DiagramDesigner.Helpers;
namespace AIStudio.Wpf.ADiagram.Models
{
public class PathToolBoxData : ToolBoxData
{
public PathToolBoxData(string icon, Type type, double width = 32, double height = 32) : base(null, icon, type, width, height)
{
ColorViewModel.FillColor.Color = Colors.Orange;
}
}
public class TextToolBoxData : ToolBoxData
{
public TextToolBoxData(string text, Type type, double width = 32, double height = 32) : base(text, null, type, width, height)
{
ColorViewModel.FillColor.Color = Colors.Orange;
}
}
public class EllipseTextToolBoxData : ToolBoxData
{
public EllipseTextToolBoxData(string text, Type type, double width = 32, double height = 32) : base(text, null, type, width, height)
{
ColorViewModel.FillColor.Color = Colors.Orange;
}
}
public class ImageToolBoxData : ToolBoxData
{
public ImageToolBoxData(string icon, Type type, double width = 32, double height = 32) : base(null, icon, type, width, height)
{
}
}
public class FlowchartToolBoxData : ToolBoxData
{
public NodeKinds Kind { get; set; }
public FlowchartToolBoxData(NodeKinds kind, Type type, double width = 32, double height = 32) : base(kind.GetDescription(), null, type, width, height)
{
Kind = kind;
ColorViewModel.LineColor.Color = Colors.Black;
}
}
public class SFCToolBoxData : ToolBoxData
{
public SFCNodeKinds Kind { get; set; }
public SFCToolBoxData(SFCNodeKinds kind, Type type, double width = 32, double height = 32) : base(null, null, type, width, height)
{
Kind = kind;
ColorViewModel.LineColor.Color = Colors.Black;
ColorViewModel.FillColor.Color = Colors.Blue;
}
}
public class DesignerItemToolBoxData : ToolBoxData
{
public string FileName { get; set; }
public DesignerItemViewModelBase DesignerItemViewModel { get; set; }
public DesignerItemToolBoxData(DesignerItemBase designerItemBase, string filename, Type type, double width = 32, double height = 32) : base(null, null, type, width, height)
{
Addition = designerItemBase;
DesignerItemViewModel = (DesignerItemViewModelBase)Activator.CreateInstance(type, null, designerItemBase);
FileName = filename;
}
}
public class SvgToolBoxData : ToolBoxData
{
public SvgToolBoxData(string filename, Type type, double width = 32, double height = 32) : base(null, filename, type, width, height)
{
ColorViewModel.FillColor.Color = Colors.Blue;
}
}
public class MediaToolBoxData : ToolBoxData
{
public MediaToolBoxData(string icon, Type type, double width = 32, double height = 32) : base(icon, null, type, width, height)
{
}
}
}

View File

@@ -1,28 +0,0 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Util.DiagramDesigner;component/Resources/Styles/ScrollBar.xaml" />
<ResourceDictionary Source="pack://application:,,,/Util.DiagramDesigner;component/Resources/Styles/Expander.xaml" />
<ResourceDictionary Source="pack://application:,,,/Util.DiagramDesigner;component/Resources/Styles/GroupBox.xaml" />
<ResourceDictionary Source="pack://application:,,,/Util.DiagramDesigner;component/Resources/Styles/ToolTip.xaml" />
<ResourceDictionary Source="pack://application:,,,/Util.DiagramDesigner;component/Resources/Styles/ScrollViewer.xaml" />
<ResourceDictionary Source="pack://application:,,,/Util.DiagramDesigner;component/Resources/Styles/ZoomBox.xaml" />
<ResourceDictionary Source="pack://application:,,,/Util.DiagramDesigner;component/Resources/Styles/DesignerItems.xaml" />
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.ADiagram;component/Themes/Styles/Fluent.xaml" />
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.ADiagram;component/Themes/Styles/Expander.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.ADiagram;component/Themes/Styles/ListBox.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.ADiagram;component/Themes/Styles/Slider.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.ADiagram;component/Themes/Styles/TabControl.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.ADiagram;component/Themes/Styles/ToggleButton.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.BaseDiagram;component/Extensions/ViewModels/BarcodeDesignerItemViewModel.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.BaseDiagram;component/Extensions/ViewModels/OutLineTextDesignerItemViewModel.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.BaseDiagram;component/Extensions/ViewModels/PathItemViewModel.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.BaseDiagram;component/Extensions/ViewModels/PersistDesignerItemViewModel.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.BaseDiagram;component/Extensions/ViewModels/SettingsDesignerItemViewModel.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.BaseDiagram;component/Extensions/ViewModels/SvgDesignerItemViewModel.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

File diff suppressed because it is too large Load Diff

View File

@@ -1,118 +0,0 @@
using AIStudio.Wpf.ADiagram.Models;
using AIStudio.Wpf.ADiagram.ViewModels;
using AIStudio.Wpf.Flowchart.ViewModels;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using Util.DiagramDesigner;
namespace AIStudio.Wpf.Flowchart
{
public class FlowchartViewModel : DiagramsViewModel
{
public FlowchartViewModel(string title, string status, DiagramType diagramType) : base(title, status, diagramType)
{
}
public FlowchartViewModel(string filename, DiagramDocument diagramDocument) : base(filename, diagramDocument)
{
if (DiagramViewModel != null)
{
FlowchartService.InitData(DiagramViewModel.Items.OfType<FlowNode>().ToList(), DiagramViewModel.Items.OfType<ConnectorViewModel>().ToList(), DiagramViewModel);
}
}
protected override void InitDiagramViewModel()
{
base.InitDiagramViewModel();
DiagramViewModel.ShowGrid = true;
DiagramViewModel.GridCellSize = new Size(100, 100);
DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center;
DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center;
}
protected override void Init()
{
base.Init();
DesignerItemViewModelBase start = new StartFlowNode() { Left = 100, Top = 0, Color = Colors.Yellow.ToString() };
DiagramViewModel.DirectAddItemCommand.Execute(start);
DesignerItemViewModelBase middle1 = new MiddleFlowNode() { Left = 100, Top = 100, Color = Colors.Yellow.ToString(), Text = "主管审批", UserIds= new List<string> { "操作员1", "操作员2" }, ActType = "or" };
DiagramViewModel.DirectAddItemCommand.Execute(middle1);
DesignerItemViewModelBase decide = new DecideFlowNode() { Left = 100, Top = 200, Color = Colors.Yellow.ToString(), Text = "5" };
DiagramViewModel.DirectAddItemCommand.Execute(decide);
DesignerItemViewModelBase middle2 = new MiddleFlowNode() { Left = 200, Top = 300, Color = Colors.Yellow.ToString(), Text = "分管领导", UserIds = new List<string> { "操作员1", "操作员2" }, ActType = "and" };
DiagramViewModel.DirectAddItemCommand.Execute(middle2);
DesignerItemViewModelBase cobegin = new COBeginFlowNode() { Left = 100, Top = 400, Color = Colors.Yellow.ToString() };
DiagramViewModel.DirectAddItemCommand.Execute(cobegin);
DesignerItemViewModelBase middle3 = new MiddleFlowNode() { Left = 100, Top = 500, Color = Colors.Yellow.ToString(), Text = "财务审批", UserIds = new List<string> { "Admin" }, ActType = "or" };
DiagramViewModel.DirectAddItemCommand.Execute(middle3);
DesignerItemViewModelBase middle4 = new MiddleFlowNode() { Left = 200, Top = 500, Color = Colors.Yellow.ToString(), Text = "人力审批", RoleIds = new List<string> { "操作员", "管理员" }, ActType = "or" };
DiagramViewModel.DirectAddItemCommand.Execute(middle4);
DesignerItemViewModelBase coend = new COEndFlowNode() { Left = 100, Top = 600, Color = Colors.Yellow.ToString() };
DiagramViewModel.DirectAddItemCommand.Execute(coend);
DesignerItemViewModelBase end = new EndFlowNode() { Left = 100, Top = 700, Color = Colors.Yellow.ToString() };
DiagramViewModel.DirectAddItemCommand.Execute(end);
ConnectorViewModel connector1 = new ConnectorViewModel(start.BottomConnector, middle1.TopConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectorViewModel connector2 = new ConnectorViewModel(middle1.BottomConnector, decide.TopConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
ConnectorViewModel connector3 = new ConnectorViewModel(decide.RightConnector, middle2.TopConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector3);
connector3.AddText(">=3");
ConnectorViewModel connector4 = new ConnectorViewModel(middle2.BottomConnector, cobegin.TopConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector4);
ConnectorViewModel connector5 = new ConnectorViewModel(decide.BottomConnector, cobegin.TopConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector5);
connector5.AddText("<3");
ConnectorViewModel connector6 = new ConnectorViewModel(cobegin.BottomConnector, middle3.TopConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector6);
ConnectorViewModel connector7 = new ConnectorViewModel(cobegin.BottomConnector, middle4.TopConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector7);
ConnectorViewModel connector8 = new ConnectorViewModel(middle3.BottomConnector, coend.TopConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector8);
ConnectorViewModel connector9 = new ConnectorViewModel(middle4.BottomConnector, coend.TopConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector9);
ConnectorViewModel connector10 = new ConnectorViewModel(coend.BottomConnector, end.TopConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector10);
DiagramViewModel.ClearSelectedItems();
FlowchartService.InitData(DiagramViewModel.Items.OfType<FlowNode>().ToList(), DiagramViewModel.Items.OfType<ConnectorViewModel>().ToList(), DiagramViewModel);
}
public override void Dispose()
{
base.Dispose();
foreach (var viewModel in DiagramViewModels)
{
FlowchartService.DisposeData(viewModel);
}
}
}
}

View File

@@ -1,422 +0,0 @@
using AIStudio.Wpf.ADiagram.Models;
using AIStudio.Wpf.ADiagram.ViewModels;
using AIStudio.Wpf.Logical.ViewModels;
using System;
using System.Linq;
using System.Windows;
using System.Windows.Media;
using Util.DiagramDesigner;
namespace AIStudio.Wpf.Logical
{
public class LogicalViewModel : DiagramsViewModel
{
public LogicalViewModel(string title, string status, DiagramType diagramType) : base(title, status, diagramType)
{
}
public LogicalViewModel(string filename, DiagramDocument diagramDocument) : base(filename, diagramDocument)
{
}
protected override void InitDiagramViewModel()
{
base.InitDiagramViewModel();
DiagramViewModel.ShowGrid = true;
DiagramViewModel.GridCellSize = new Size(150, 100);
DiagramViewModel.PageSizeOrientation = PageSizeOrientation.Horizontal;
DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Left;
DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.None;
DiagramViewModel.Items.CollectionChanged += Items_CollectionChanged;
}
protected override void Init()
{
base.Init();
TimerDesignerItemViewModel timer = new TimerDesignerItemViewModel() { Left = 0, Top = 10 };
timer.Value = 0.5;
DiagramViewModel.DirectAddItemCommand.Execute(timer);
InputItemViewModel in1 = new InputItemViewModel() { Left = 0, Top = 50 };
in1.LinkPoint = LogicalService.LinkPoint[0];
DiagramViewModel.DirectAddItemCommand.Execute(in1);
InputItemViewModel in2 = new InputItemViewModel() { Left = 0, Top = 80 };
in2.LinkPoint = LogicalService.LinkPoint[1];
DiagramViewModel.DirectAddItemCommand.Execute(in2);
AddGateItemViewModel item1 = new AddGateItemViewModel() { Left = 150, Top = 50 };
DiagramViewModel.DirectAddItemCommand.Execute(item1);
ConstantDesignerItemViewModel constant = new ConstantDesignerItemViewModel() { Left = 150, Top = 118 };
DiagramViewModel.DirectAddItemCommand.Execute(constant);
GTGateItemViewModel gTGate = new GTGateItemViewModel() { Left = 300, Top = 50 };
DiagramViewModel.DirectAddItemCommand.Execute(gTGate);
InputItemViewModel in3 = new InputItemViewModel() { Left = 300, Top = 118 };
in3.LinkPoint = LogicalService.LinkPoint[2];
DiagramViewModel.DirectAddItemCommand.Execute(in3);
InputItemViewModel in4 = new InputItemViewModel() { Left = 300, Top = 148 };
in4.LinkPoint = LogicalService.LinkPoint[3];
DiagramViewModel.DirectAddItemCommand.Execute(in4);
SELGateItemViewModel sELGate = new SELGateItemViewModel() { Left = 450, Top = 50 };
DiagramViewModel.DirectAddItemCommand.Execute(sELGate);
OutputItemViewModel out1 = new OutputItemViewModel() { Left = 600, Top = 50 };
out1.LinkPoint = LogicalService.LinkPoint[4];
DiagramViewModel.DirectAddItemCommand.Execute(out1);
ConnectorViewModel connector1 = new ConnectorViewModel(in1.Output[0], item1.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectorViewModel connector2 = new ConnectorViewModel(in2.Output[0], item1.Input[1]);
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
ConnectorViewModel connector3 = new ConnectorViewModel(item1.Output[0], gTGate.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector3);
ConnectorViewModel connector4 = new ConnectorViewModel(constant.Output[0], gTGate.Input[1]);
DiagramViewModel.DirectAddItemCommand.Execute(connector4);
ConnectorViewModel connector5 = new ConnectorViewModel(gTGate.Output[0], sELGate.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector5);
ConnectorViewModel connector6 = new ConnectorViewModel(in3.Output[0], sELGate.Input[1]);
DiagramViewModel.DirectAddItemCommand.Execute(connector6);
ConnectorViewModel connector7 = new ConnectorViewModel(in4.Output[0], sELGate.Input[2]);
DiagramViewModel.DirectAddItemCommand.Execute(connector7);
ConnectorViewModel connector8 = new ConnectorViewModel(sELGate.Output[0], out1.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector8);
}
private void Items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.OldItems != null)
{
foreach (var item in e.OldItems.OfType<TimerDesignerItemViewModel>())
{
item.Do -= Do;
}
}
if (e.NewItems != null)
{
foreach (var item in e.NewItems.OfType<TimerDesignerItemViewModel>())
{
item.Do += Do;
}
}
RaisePropertyChanged("Items");
}
protected override bool AddVerify(SelectableDesignerItemViewModelBase arg)
{
if (base.AddVerify(arg) == false)
return false;
if (arg is ConnectorViewModel connector)
{
if (connector.SinkConnectorInfo is FullyCreatedConnectorInfo fully)
{
if (DiagramViewModel.Items.OfType<ConnectorViewModel>().Any(p => p.SinkConnectorInfo == fully))
{
return false;
}
}
}
if (arg is TimerDesignerItemViewModel)
{
if (DiagramViewModel.Items.OfType<LogicalGateItemViewModelBase>().Any(p => p.LogicalType == LogicalType.Time))
{
return false;
}
}
return true;
}
private void Do()
{
foreach (var item in DiagramViewModel.Items.OfType<ConstantDesignerItemViewModel>())
{
foreach (var output in item.Output)
{
output.Value.ConnectorValue = item.Value;
output.Value.ColorViewModel.FillColor.Color = Colors.Green;
}
}
foreach (var item in DiagramViewModel.Items.OfType<InputItemViewModel>())
{
if (item.LinkPoint != null)
{
foreach (var output in item.Output)
{
output.Value.ConnectorValue = item.LinkPoint.Value;
output.Value.ColorViewModel.FillColor.Color = Colors.Green;
}
}
}
foreach (var item in DiagramViewModel.Items.OfType<LogicalGateItemViewModelBase>().OrderBy(p => p.OrderNumber))
{
if (item.LogicalType != LogicalType.None)
{
foreach (var input in item.Input)
{
var connector = GetSourceItem(input.Value);
if (connector == null)
{
continue;
}
if (connector.SourceConnectorInfo.DataItem is LogicalGateItemViewModelBase)
{
input.Value.ConnectorValue = connector.SourceConnectorInfo.ConnectorValue;
input.Value.ColorViewModel.FillColor.Color = connector.SourceConnectorInfo.ColorViewModel.FillColor.Color;
connector.ColorViewModel.LineColor.Color = connector.SourceConnectorInfo.ColorViewModel.FillColor.Color;
if (item.LogicalType == LogicalType.Output)
{
input.Value.ValueTypePoint = connector.SourceConnectorInfo.ValueTypePoint;
}
else if (item.LogicalType == LogicalType.NOT)
{
input.Value.ValueTypePoint = (connector.SourceConnectorInfo.ValueTypePoint == ValueTypePoint.Bool) ? ValueTypePoint.Bool : ValueTypePoint.Int;
}
}
}
foreach (var output in item.Output)
{
if (item.LogicalType == LogicalType.Output)
{
var first = item.Input.Values.FirstOrDefault();
output.Value.ConnectorValue = first.ConnectorValue;
output.Value.ValueTypePoint = first.ValueTypePoint;
(item as OutputItemViewModel).Value = first.ConnectorValue;
(item as OutputItemViewModel).LinkPoint.Value = first.ConnectorValue;
}
else if (item.LogicalType == LogicalType.ADD)
{
output.Value.ConnectorValue = item.Input.Values.Select(p => p.ConnectorValue).Sum();
}
else if (item.LogicalType == LogicalType.SUB)
{
var first = item.Input.Values.Select(p => p.ConnectorValue).FirstOrDefault();
var second = item.Input.Values.Where((value, index) => index != 0).Select(p => p.ConnectorValue).Sum();
output.Value.ConnectorValue = first - second;
}
else if (item.LogicalType == LogicalType.MUL)
{
double result = 0;
foreach (var input in item.Input.Values)
{
if (result == 0)
{
result = 1;
}
result *= input.ConnectorValue;
}
output.Value.ConnectorValue = result;
}
else if (item.LogicalType == LogicalType.DIV)
{
double result = item.Input.Values.Select(p => p.ConnectorValue).FirstOrDefault();
foreach (var input in item.Input.Values.Where((value, index) => index != 0))
{
result /= input.ConnectorValue;
}
output.Value.ConnectorValue = result;
}
else if (item.LogicalType == LogicalType.AVE)
{
output.Value.ConnectorValue = item.Input.Values.Select(p => p.ConnectorValue).Average();
}
else if (item.LogicalType == LogicalType.MOD)
{
output.Value.ConnectorValue = item.Input[0].ConnectorValue % item.Input[1].ConnectorValue;
}
else if (item.LogicalType == LogicalType.AND)
{
output.Value.ConnectorValue = Convert.ToInt32(item.Input[0].ConnectorValue) & Convert.ToInt32(item.Input[1].ConnectorValue);
}
else if (item.LogicalType == LogicalType.OR)
{
output.Value.ConnectorValue = Convert.ToInt32(item.Input[0].ConnectorValue) | Convert.ToInt32(item.Input[1].ConnectorValue);
}
else if (item.LogicalType == LogicalType.XOR)
{
output.Value.ConnectorValue = Convert.ToInt32(Convert.ToInt32(item.Input[0].ConnectorValue) ^ Convert.ToInt32(item.Input[1].ConnectorValue));
}
else if (item.LogicalType == LogicalType.NOT)
{
if (item.Input[0].ValueTypePoint == ValueTypePoint.Bool)
{
output.Value.ConnectorValue = Convert.ToInt32(!Convert.ToBoolean(item.Input[0].ConnectorValue));
output.Value.ValueTypePoint = ValueTypePoint.Bool;
}
else
{
output.Value.ConnectorValue = ~Convert.ToInt32(item.Input[0].ConnectorValue);
output.Value.ValueTypePoint = ValueTypePoint.Int;
}
}
else if (item.LogicalType == LogicalType.SHL)
{
output.Value.ConnectorValue = Convert.ToInt32(item.Input[0].ConnectorValue) << Convert.ToInt32(item.Input[1].ConnectorValue);
}
else if (item.LogicalType == LogicalType.SHR)
{
output.Value.ConnectorValue = Convert.ToInt32(item.Input[0].ConnectorValue) >> Convert.ToInt32(item.Input[1].ConnectorValue);
}
else if (item.LogicalType == LogicalType.ROL)
{
output.Value.ConnectorValue = (Convert.ToInt32(item.Input[0].ConnectorValue) << Convert.ToInt32(item.Input[1].ConnectorValue)) | (Convert.ToInt32(item.Input[0].ConnectorValue) >> 32 - Convert.ToInt32(item.Input[1].ConnectorValue));
}
else if (item.LogicalType == LogicalType.ROR)
{
output.Value.ConnectorValue = (Convert.ToInt32(item.Input[0].ConnectorValue) >> Convert.ToInt32(item.Input[1].ConnectorValue)) | (Convert.ToInt32(item.Input[0].ConnectorValue) << 32 - Convert.ToInt32(item.Input[1].ConnectorValue));
}
else if (item.LogicalType == LogicalType.SEL)
{
output.Value.ConnectorValue = (item.Input[0].ConnectorValue == output.Key) ? item.Input[1].ConnectorValue : item.Input[2].ConnectorValue;
}
else if (item.LogicalType == LogicalType.MAX)
{
output.Value.ConnectorValue = item.Input.Values.Select(p => p.ConnectorValue).Max();
}
else if (item.LogicalType == LogicalType.MIN)
{
output.Value.ConnectorValue = item.Input.Values.Select(p => p.ConnectorValue).Min();
}
else if (item.LogicalType == LogicalType.LIMIT)
{
output.Value.ConnectorValue = (item.Input[0].ConnectorValue > item.Input[1].ConnectorValue) ? item.Input[1].ConnectorValue : item.Input[0].ConnectorValue;
}
else if (item.LogicalType == LogicalType.GT)
{
output.Value.ConnectorValue = (item.Input[0].ConnectorValue > item.Input[1].ConnectorValue) ? 1 : 0;
}
else if (item.LogicalType == LogicalType.LT)
{
output.Value.ConnectorValue = (item.Input[0].ConnectorValue < item.Input[1].ConnectorValue) ? 1 : 0;
}
else if (item.LogicalType == LogicalType.GE)
{
output.Value.ConnectorValue = (item.Input[0].ConnectorValue >= item.Input[1].ConnectorValue) ? 1 : 0;
}
else if (item.LogicalType == LogicalType.LE)
{
output.Value.ConnectorValue = (item.Input[0].ConnectorValue <= item.Input[1].ConnectorValue) ? 1 : 0;
}
else if (item.LogicalType == LogicalType.EQ)
{
output.Value.ConnectorValue = (item.Input[0].ConnectorValue == item.Input[1].ConnectorValue) ? 1 : 0;
}
else if (item.LogicalType == LogicalType.NE)
{
output.Value.ConnectorValue = (item.Input[0].ConnectorValue != item.Input[1].ConnectorValue) ? 1 : 0;
}
else if (item.LogicalType == LogicalType.ABS)
{
output.Value.ConnectorValue = Math.Abs(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.SQRT)
{
output.Value.ConnectorValue = Math.Sqrt(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.LN)
{
output.Value.ConnectorValue = Math.Log10(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.LOG)
{
output.Value.ConnectorValue = Math.Log(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.EXP)
{
output.Value.ConnectorValue = Math.Exp(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.SIN)
{
output.Value.ConnectorValue = Math.Sin(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.COS)
{
output.Value.ConnectorValue = Math.Cos(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.TAN)
{
output.Value.ConnectorValue = Math.Tan(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.ASIN)
{
output.Value.ConnectorValue = Math.Asin(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.ACOS)
{
output.Value.ConnectorValue = Math.Acos(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.ATAN)
{
output.Value.ConnectorValue = Math.Atan(item.Input[0].ConnectorValue);
}
else if (item.LogicalType == LogicalType.EXPT)
{
output.Value.ConnectorValue = Math.Exp(item.Input[0].ConnectorValue);
}
if (output.Value.ValueTypePoint == ValueTypePoint.Bool)
{
if (output.Value.ConnectorValue == 0)
{
output.Value.ColorViewModel.FillColor.Color = Colors.Red;
if (item.LogicalType == LogicalType.Output)
{
item.ColorViewModel.FillColor.Color = Colors.Red;
}
}
else
{
output.Value.ColorViewModel.FillColor.Color = Colors.Green;
if (item.LogicalType == LogicalType.Output)
{
item.ColorViewModel.FillColor.Color = Colors.Green;
}
}
}
else
{
output.Value.ColorViewModel.FillColor.Color = Colors.Green;
}
}
}
}
}
private ConnectorViewModel GetSourceItem(FullyCreatedConnectorInfo sinkConnector)
{
foreach (var connector in DiagramViewModel.Items.OfType<ConnectorViewModel>())
{
if (connector.SinkConnectorInfo == sinkConnector)
{
return connector;
}
}
return null;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,303 +0,0 @@
using AIStudio.Wpf.ADiagram.Models;
using AIStudio.Wpf.ADiagram.ViewModels;
using AIStudio.Wpf.Flowchart.ViewModels;
using AIStudio.Wpf.SFC;
using AIStudio.Wpf.SFC.ViewModels;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.Windows;
using System.Windows.Media;
using Util.DiagramDesigner;
namespace AIStudio.Wpf.Flowchart
{
public class SFCViewModel : DiagramsViewModel
{
public SFCViewModel(string title, string status, DiagramType diagramType) : base(title, status, diagramType)
{
}
public SFCViewModel(string filename, DiagramDocument diagramDocument) : base(filename, diagramDocument)
{
if (DiagramViewModel != null)
{
SFCService.InitData(DiagramViewModel.Items.OfType<SFCNode>().ToList(), DiagramViewModel.Items.OfType<ConnectorViewModel>().ToList(), DiagramViewModel);
}
readDataTimer.Elapsed += timeCycle;
readDataTimer.Interval = 1000;
readDataTimer.AutoReset = false;
readDataTimer.Start();
}
protected override void InitDiagramViewModel()
{
base.InitDiagramViewModel();
DiagramViewModel.ShowGrid = true;
DiagramViewModel.GridCellSize = new Size(100, 60);
DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center;
DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center;
}
private System.Timers.Timer readDataTimer = new System.Timers.Timer();
protected override void Init()
{
base.Init();
SFCStartNode start = new SFCStartNode() { Left = 0, Top = 60, Text = "S0" };
DiagramViewModel.DirectAddItemCommand.Execute(start);
SFCConditionNode condition1_1 = new SFCConditionNode() { Left = 0, Top = 120, Text = "X01", Expression = "p0==1&p1<20", LinkPoint = new ObservableCollection<LinkPoint> { SFCService.LinkPoint.FirstOrDefault(p => p.Name == "S0"), SFCService.LinkPoint.FirstOrDefault(p => p.Name == "T2") } };
DiagramViewModel.DirectAddItemCommand.Execute(condition1_1);
SFCConditionNode condition1_2 = new SFCConditionNode() { Left = 100, Top = 120, Text = "X02", Expression = "p0==1&p1<30", LinkPoint = new ObservableCollection<LinkPoint> { SFCService.LinkPoint.FirstOrDefault(p => p.Name == "S0"), SFCService.LinkPoint.FirstOrDefault(p => p.Name == "T2") } };
DiagramViewModel.DirectAddItemCommand.Execute(condition1_2);
SFCNodeNode step1 = new SFCNodeNode() { Left = 0, Top = 180, Text = "S1" };
DiagramViewModel.DirectAddItemCommand.Execute(step1);
SFCActionNode action11 = new SFCActionNode() { Left = 100, Top = 180, Text = "SET_V1", Expression = "1", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K1_DI") };
DiagramViewModel.DirectAddItemCommand.Execute(action11);
SFCActionNode action12 = new SFCActionNode() { Left = 200, Top = 180, Text = "SET_V2", Expression = "1", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K2_DI") };
DiagramViewModel.DirectAddItemCommand.Execute(action12);
SFCActionNode action13 = new SFCActionNode() { Left = 300, Top = 180, Text = "SET_V3", Expression = "1", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K3_DI") };
DiagramViewModel.DirectAddItemCommand.Execute(action13);
SFCActionNode action14 = new SFCActionNode() { Left = 400, Top = 180, Text = "RES_V4", Expression = "0", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K4_DI") };
DiagramViewModel.DirectAddItemCommand.Execute(action14);
SFCConditionNode condition2 = new SFCConditionNode() { Left = 0, Top = 240, Text = "X1", Expression = "p0>50", LinkPoint = new ObservableCollection<LinkPoint> { SFCService.LinkPoint.FirstOrDefault(p => p.Name == "T2") } };
DiagramViewModel.DirectAddItemCommand.Execute(condition2);
SFCNodeNode step2 = new SFCNodeNode() { Left = 0, Top = 300, Text = "S2" };
DiagramViewModel.DirectAddItemCommand.Execute(step2);
SFCActionNode action2 = new SFCActionNode() { Left = 100, Top = 300, Text = "SET_V4", Expression = "1", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K4_DI") };
DiagramViewModel.DirectAddItemCommand.Execute(action2);
SFCConditionNode condition3 = new SFCConditionNode() { Left = 0, Top = 360, Text = "X2", Expression = "p0>70", LinkPoint = new ObservableCollection<LinkPoint> { SFCService.LinkPoint.FirstOrDefault(p => p.Name == "T2") } };
DiagramViewModel.DirectAddItemCommand.Execute(condition3);
SFCNodeNode step3 = new SFCNodeNode() { Left = 0, Top = 420, Text = "S3" };
DiagramViewModel.DirectAddItemCommand.Execute(step3);
SFCActionNode action3 = new SFCActionNode() { Left = 100, Top = 420, Text = "RES_V1", Expression = "0", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K1_DI") };
DiagramViewModel.DirectAddItemCommand.Execute(action3);
SFCConditionNode condition4 = new SFCConditionNode() { Left = 0, Top = 480, Text = "X3", Expression = "p0>80", LinkPoint = new ObservableCollection<LinkPoint> { SFCService.LinkPoint.FirstOrDefault(p => p.Name == "T2") } };
DiagramViewModel.DirectAddItemCommand.Execute(condition4);
SFCCOBeginNode cobegin = new SFCCOBeginNode() { Left = 38, Top = 540, Text = "" };
DiagramViewModel.DirectAddItemCommand.Execute(cobegin);
SFCNodeNode step4 = new SFCNodeNode() { Left = 0, Top = 600, Text = "S4" };
DiagramViewModel.DirectAddItemCommand.Execute(step4);
SFCActionNode action4 = new SFCActionNode() { Left = 100, Top = 600, Text = "RES_V2", Expression = "0", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K2_DI") };
DiagramViewModel.DirectAddItemCommand.Execute(action4);
SFCConditionNode condition5 = new SFCConditionNode() { Left = 0, Top = 660, Text = "X4", Expression = "p0==0", LinkPoint = new ObservableCollection<LinkPoint> { SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K2_DO") } };
DiagramViewModel.DirectAddItemCommand.Execute(condition5);
SFCNodeNode step5 = new SFCNodeNode() { Left = 200, Top = 600, Text = "S5" };
DiagramViewModel.DirectAddItemCommand.Execute(step5);
SFCActionNode action5 = new SFCActionNode() { Left = 300, Top = 600, Text = "RES_V3", Expression = "0", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K3_DI") };
DiagramViewModel.DirectAddItemCommand.Execute(action5);
SFCConditionNode condition6 = new SFCConditionNode() { Left = 200, Top = 660, Text = "X5", Expression = "p0==0", LinkPoint = new ObservableCollection<LinkPoint> { SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K3_DO") } };
DiagramViewModel.DirectAddItemCommand.Execute(condition6);
SFCCOEndNode coend = new SFCCOEndNode() { Left = 38, Top = 720, Text = "" };
DiagramViewModel.DirectAddItemCommand.Execute(coend);
ConnectorViewModel connector1_1 = new ConnectorViewModel(start.Output[0], condition1_1.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector1_1);
ConnectorViewModel connector2_1 = new ConnectorViewModel(condition1_1.Output[0], step1.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector2_1);
ConnectorViewModel connector1_2 = new ConnectorViewModel(start.Output[0], condition1_2.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector1_2);
ConnectorViewModel connector2_2 = new ConnectorViewModel(condition1_2.Output[0], step1.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector2_2);
ConnectorViewModel connector31 = new ConnectorViewModel(step1.Action[0], action11.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector31);
ConnectorViewModel connector32 = new ConnectorViewModel(step1.Action[0], action12.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector32);
ConnectorViewModel connector33 = new ConnectorViewModel(step1.Action[0], action13.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector33);
ConnectorViewModel connector34 = new ConnectorViewModel(step1.Action[0], action14.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector34);
ConnectorViewModel connector4 = new ConnectorViewModel(step1.Output[0], condition2.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector4);
ConnectorViewModel connector5 = new ConnectorViewModel(condition2.Output[0], step2.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector5);
ConnectorViewModel connector6 = new ConnectorViewModel(step2.Action[0], action2.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector6);
ConnectorViewModel connector7 = new ConnectorViewModel(step2.Output[0], condition3.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector7);
ConnectorViewModel connector8 = new ConnectorViewModel(condition3.Output[0], step3.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector8);
ConnectorViewModel connector9 = new ConnectorViewModel(step3.Action[0], action3.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector9);
ConnectorViewModel connector10 = new ConnectorViewModel(step3.Output[0], condition4.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector10);
ConnectorViewModel connector11 = new ConnectorViewModel(condition4.Output[0], cobegin.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector11);
ConnectorViewModel connector12 = new ConnectorViewModel(cobegin.Output[0], step4.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector12);
ConnectorViewModel connector13 = new ConnectorViewModel(step4.Action[0], action4.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector13);
ConnectorViewModel connector14 = new ConnectorViewModel(step4.Output[0], condition5.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector14);
ConnectorViewModel connector15 = new ConnectorViewModel(cobegin.Output[1], step5.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector15);
ConnectorViewModel connector16 = new ConnectorViewModel(step5.Action[0], action5.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector16);
ConnectorViewModel connector17 = new ConnectorViewModel(step5.Output[0], condition6.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector17);
ConnectorViewModel connector18 = new ConnectorViewModel(condition5.Output[0], coend.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector18);
ConnectorViewModel connector19 = new ConnectorViewModel(condition6.Output[0], coend.Input[1]);
DiagramViewModel.DirectAddItemCommand.Execute(connector19);
ConnectorViewModel connector20 = new ConnectorViewModel(coend.Output[0], start.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(connector20);
#region
TextDesignerItemViewModel despcription = new TextDesignerItemViewModel()
{
Left = 230,
Top = 270,
ItemWidth = 300,
ItemHeight = 120,
Text = @"模拟一个容器的高低液位控制方法
1.按下启动按钮, 程序启动
2.当液位低于20%的时候, V1,V2,V3打开, V4关闭
3.当液位高于50%的时候, V4打开
4.当液位高于70%的时侯, V1关闭
5.当液位高于80%的时候, V2,V3并行关闭"
};
despcription.FontViewModel.HorizontalAlignment = HorizontalAlignment.Left;
despcription.FontViewModel.VerticalAlignment = VerticalAlignment.Top;
DiagramViewModel.DirectAddItemCommand.Execute(despcription);
Simulate_ListViewModel list = new Simulate_ListViewModel()
{
Left = 410,
Top = 390,
};
DiagramViewModel.DirectAddItemCommand.Execute(list);
Simulate_StartViewModel btnstart = new Simulate_StartViewModel() { Left = 0, Top = 0, LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "S0"), };
DiagramViewModel.DirectAddItemCommand.Execute(btnstart);
Simulate_TankViewModel tank1 = new Simulate_TankViewModel() { Left = 100, Top = 43, ItemWidth = 48, ItemHeight = 60, Text = "T1", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "T1") };
DiagramViewModel.DirectAddItemCommand.Execute(tank1);
Simulate_SolenoidViewModel k1 = new Simulate_SolenoidViewModel() { Left = 200, Top = 0, Text = "K1", DILinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K1_DI"), DOLinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K1_DO") };
DiagramViewModel.DirectAddItemCommand.Execute(k1);
Simulate_SolenoidViewModel k2 = new Simulate_SolenoidViewModel() { Left = 200, Top = 60, Text = "K2", DILinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K2_DI"), DOLinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K2_DO") };
DiagramViewModel.DirectAddItemCommand.Execute(k2);
Simulate_SolenoidViewModel k3 = new Simulate_SolenoidViewModel() { Left = 200, Top = 120, Text = "K3", DILinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K3_DI"), DOLinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K3_DO") };
DiagramViewModel.DirectAddItemCommand.Execute(k3);
Simulate_TankViewModel tank2 = new Simulate_TankViewModel() { Left = 300, Top = 28, Text = "T2", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "T2") };
DiagramViewModel.DirectAddItemCommand.Execute(tank2);
Simulate_SolenoidViewModel k4 = new Simulate_SolenoidViewModel() { Left = 400, Top = 60, Text = "K4", DILinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K4_DI"), DOLinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "K4_DO") };
DiagramViewModel.DirectAddItemCommand.Execute(k4);
Simulate_TankViewModel tank3 = new Simulate_TankViewModel() { Left = 500, Top = 103, ItemWidth = 48, ItemHeight = 60, Text = "T3", LinkPoint = SFCService.LinkPoint.FirstOrDefault(p => p.Name == "T3") };
DiagramViewModel.DirectAddItemCommand.Execute(tank3);
ConnectorViewModel conn1 = new ConnectorViewModel(tank1.Output[0], k1.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(conn1);
ConnectorViewModel conn2 = new ConnectorViewModel(tank1.Output[0], k2.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(conn2);
ConnectorViewModel conn3 = new ConnectorViewModel(tank1.Output[0], k3.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(conn3);
ConnectorViewModel conn4 = new ConnectorViewModel(k1.Output[0], tank2.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(conn4);
ConnectorViewModel conn5 = new ConnectorViewModel(k2.Output[0], tank2.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(conn5);
ConnectorViewModel conn6 = new ConnectorViewModel(k3.Output[0], tank2.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(conn6);
ConnectorViewModel conn7 = new ConnectorViewModel(tank2.Output[1], k4.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(conn7);
ConnectorViewModel conn8 = new ConnectorViewModel(k4.Output[0], tank3.Input[0]);
DiagramViewModel.DirectAddItemCommand.Execute(conn8);
#endregion
DiagramViewModel.ClearSelectedItems();
SFCService.InitData(DiagramViewModel.Items.OfType<SFCNode>().ToList(), DiagramViewModel.Items.OfType<ConnectorViewModel>().ToList(), DiagramViewModel);
readDataTimer.Elapsed += timeCycle;
readDataTimer.Interval = 1000;
readDataTimer.AutoReset = false;
readDataTimer.Start();
}
private void timeCycle(object sender, ElapsedEventArgs e)
{
if (DiagramViewModel != null)
{
SFCService.Execute(DiagramViewModel);
}
readDataTimer.Start();
}
public override void Dispose()
{
base.Dispose();
readDataTimer.Stop();
readDataTimer.Dispose();
foreach (var viewModel in DiagramViewModels)
{
SFCService.DisposeData(viewModel);
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,362 +0,0 @@
<UserControl x:Class="AIStudio.Wpf.ADiagram.Views.ToolBoxControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:views="clr-namespace:AIStudio.Wpf.ADiagram.Views"
xmlns:viewmodels="clr-namespace:AIStudio.Wpf.ADiagram.ViewModels"
xmlns:model="clr-namespace:AIStudio.Wpf.ADiagram.Models"
xmlns:dd="https://astudio.github.io/diagram"
xmlns:conventer="clr-namespace:AIStudio.Wpf.BaseDiagram.Converters;assembly=AIStudio.Wpf.BaseDiagram"
xmlns:command="clr-namespace:AIStudio.Wpf.BaseDiagram.Commands;assembly=AIStudio.Wpf.BaseDiagram"
xmlns:svg="clr-namespace:Svg2XamlTestExtension;assembly=Svg2XamlTestExtension"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<ResourceDictionary>
<conventer:StringPathConverter x:Key="stringPathConverter"/>
<conventer:IntVisibilityConverter x:Key="IntVisibilityConverter"/>
<dd:EnumDescriptionConverter x:Key="EnumDescriptionConverter"/>
<command:CommandReference x:Key="DeleteItemCommandReference" Command="{Binding DeleteItemCommand}"/>
<DataTemplate DataType="{x:Type model:ImageToolBoxData}">
<Grid Width="{Binding Width}" Height="{Binding Height}">
<Rectangle Name="Border"
StrokeThickness="1"
StrokeDashArray="2"
Fill="Transparent"
SnapsToDevicePixels="true"/>
<Image IsHitTestVisible="True"
Stretch="Fill"
Margin="2"
Source="{Binding Icon, Converter={x:Static dd:ImageUrlConverter.Instance}}" />
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Stroke" Value="Gray"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate DataType="{x:Type model:MediaToolBoxData}">
<Grid Width="{Binding Width}" Height="{Binding Height}">
<Rectangle Name="Border"
StrokeThickness="1"
StrokeDashArray="2"
Fill="Transparent"
SnapsToDevicePixels="true"/>
<Image IsHitTestVisible="True"
Stretch="Fill"
Margin="2"
Source="{Binding Text, Converter={x:Static dd:ImageUrlConverter.Instance}}" />
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Stroke" Value="Gray"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate DataType="{x:Type model:TextToolBoxData}">
<Grid Width="{Binding Width}" Height="{Binding Height}">
<Rectangle Name="Border"
StrokeThickness="1"
StrokeDashArray="2"
Fill="Transparent"
SnapsToDevicePixels="true"/>
<Rectangle Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}" Margin="2"/>
<TextBlock Text="{Binding Text}" FontSize="11" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Stroke" Value="Gray"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate DataType="{x:Type model:EllipseTextToolBoxData}">
<Grid Width="{Binding Width}" Height="{Binding Height}">
<Ellipse Name="Border"
StrokeThickness="1"
StrokeDashArray="2"
Fill="Transparent"
SnapsToDevicePixels="true"/>
<Ellipse Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}" Margin="2"/>
<TextBlock Text="{Binding Text}" FontSize="11" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Stroke" Value="Gray"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate DataType="{x:Type model:PathToolBoxData}">
<Grid Width="{Binding Width}" Height="{Binding Height}">
<Rectangle Name="Border"
StrokeThickness="1"
StrokeDashArray="2"
Fill="Transparent"
SnapsToDevicePixels="true"/>
<Path Style="{StaticResource PathItemStyle}" ToolTip="Document" Margin="2"/>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Stroke" Value="Gray"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate DataType="{x:Type model:SvgToolBoxData}">
<Grid Width="{Binding Width}" Height="{Binding Height}">
<Rectangle Name="Border"
StrokeThickness="1"
StrokeDashArray="2"
Fill="Transparent"
SnapsToDevicePixels="true"/>
<svg:PackSvg Width="Auto" Height="Auto" Path="{Binding Icon}" Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}"/>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Stroke" Value="Gray"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate DataType="{x:Type model:DesignerItemToolBoxData}">
<Grid Width="{Binding Width}" Height="{Binding Height}">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="删除" Command="{StaticResource DeleteItemCommandReference}" CommandParameter="{Binding .}"/>
</ContextMenu>
</Grid.ContextMenu>
<Rectangle Name="Border"
StrokeThickness="1"
StrokeDashArray="2"
Fill="Transparent"
SnapsToDevicePixels="true"/>
<Viewbox Stretch="Uniform" DataContext="{Binding DesignerItemViewModel}">
<Grid Width="{Binding ItemWidth}" Height="{Binding ItemHeight}" IsHitTestVisible="False">
<ContentControl Content="{Binding .}" Margin="2"/>
<TextBox Text="{Binding Text}"
IsReadOnly="True"
TextWrapping="Wrap"
Background ="Transparent"
BorderThickness="0"
Margin="5"
Foreground="{Binding FontViewModel.FontColor,Converter={StaticResource ColorBrushConverter}}"
FontSize="{Binding FontViewModel.FontSize}"
FontFamily="{Binding FontViewModel.FontFamily}"
FontWeight="{Binding FontViewModel.FontWeight}"
FontStyle="{Binding FontViewModel.FontStyle}"
FontStretch="{Binding FontViewModel.FontStretch}"
TextDecorations="{Binding FontViewModel.TextDecorations}"
HorizontalContentAlignment="{Binding FontViewModel.HorizontalAlignment}"
VerticalContentAlignment="{Binding FontViewModel.VerticalAlignment}"
TextBlock.LineHeight="{Binding FontViewModel.LineHeight}"/>
</Grid>
</Viewbox>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Stroke" Value="Gray"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate DataType="{x:Type model:FlowchartToolBoxData}">
<Grid Width="{Binding Width}" Height="{Binding Height}">
<Rectangle Name="Border"
StrokeThickness="1"
StrokeDashArray="2"
Fill="Transparent"
SnapsToDevicePixels="true"/>
<Viewbox Stretch="Fill">
<Grid IsHitTestVisible="False">
<ContentControl Style="{StaticResource CustomFlowNodeStyle}" Margin="2"/>
<TextBlock Text="{Binding Text}" Margin="5" Foreground="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" HorizontalAlignment="Left" />
</Grid>
</Viewbox>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Stroke" Value="Gray"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate DataType="{x:Type model:SFCToolBoxData}">
<Grid Width="{Binding Width}" Height="{Binding Height}" ToolTip="{Binding Kind,Converter={StaticResource EnumDescriptionConverter}}">
<Rectangle Name="Border"
StrokeThickness="1"
StrokeDashArray="2"
Fill="Transparent"
SnapsToDevicePixels="true"/>
<Grid IsHitTestVisible="False">
<ContentControl Style="{StaticResource CustomSFCNodeStyle}" Margin="2" />
</Grid>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Stroke" Value="Gray"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate DataType="{x:Type viewmodels:ToolBoxCategory}">
<Grid Visibility="{Binding IsChecked,Converter={StaticResource boolToVisibilityConverter}}">
<Expander Header="{Binding Header}"
IsExpanded="{Binding IsExpanded}"
BorderThickness="0"
Background="Transparent"
Foreground="{DynamicResource Fluent.Ribbon.Brushes.LabelTextBrush}"
Style="{StaticResource DefaultAnimationExpander}">
<ItemsControl ItemsSource="{Binding ToolBoxItems}">
<ItemsControl.Template>
<ControlTemplate TargetType="{x:Type ItemsControl}">
<Border BorderThickness="{TemplateBinding Border.BorderThickness}"
Padding="{TemplateBinding Control.Padding}"
BorderBrush="{TemplateBinding Border.BorderBrush}"
Background="{TemplateBinding Panel.Background}"
SnapsToDevicePixels="True">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
</ScrollViewer>
</Border>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ItemsControl}}, Path=ActualWidth}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type ContentPresenter}">
<Setter Property="Control.Padding"
Value="10" />
<Setter Property="ContentControl.HorizontalContentAlignment"
Value="Stretch" />
<Setter Property="ContentControl.VerticalContentAlignment"
Value="Stretch" />
<Setter Property="ToolTip"
Value="{Binding ToolTip}" />
<Setter Property="dd:DragAndDropProps.EnabledForDrag"
Value="True" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</Expander>
<Button Margin="5" ToolTip="移除" Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}}}" CommandParameter="{Binding .}" Width="16" Height="16" HorizontalAlignment="Right" VerticalAlignment="Top" Foreground="{DynamicResource BlackBrush}" Background="{DynamicResource WhiteBrush}" BorderBrush="Transparent">
<Path Stretch="Fill" Margin="2" Fill="Red" Data="M0.7,0 L5,4.3 L9.3,0 L10,0.7 L5.7,5 L10,9.3 L9.3,10 L5,5.7 L0.7,10 L0,9.3 L4.3,5 L0,0.7 z" ></Path>
</Button>
</Grid>
</DataTemplate>
<DataTemplate DataType="{x:Type viewmodels:MineToolBoxCategory}">
<Grid Visibility="{Binding IsChecked,Converter={StaticResource boolToVisibilityConverter}}">
<Expander Header="{Binding Header}"
IsExpanded="{Binding IsExpanded}"
BorderThickness="0"
Background="Transparent"
Foreground="{DynamicResource Fluent.Ribbon.Brushes.LabelTextBrush}"
Style="{StaticResource DefaultAnimationExpander}">
<Grid>
<Border BorderThickness="1" CornerRadius="5" Margin="5" Padding="10" Visibility="{Binding ToolBoxItems.Count, Converter={StaticResource IntVisibilityConverter}, ConverterParameter='0'}">
<Border.BorderBrush>
<LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,5" EndPoint="5,0" MappingMode="Absolute">
<LinearGradientBrush.GradientStops>
<GradientStop Color="{DynamicResource Fluent.Ribbon.Colors.AccentBaseColor}" Offset="0"/>
<GradientStop Color="{DynamicResource Fluent.Ribbon.Colors.AccentBaseColor}" Offset="0.2"/>
<GradientStop Color="Transparent" Offset="0.4"/>
<GradientStop Color="Transparent" Offset="0.6"/>
<GradientStop Color="{DynamicResource Fluent.Ribbon.Colors.AccentBaseColor}" Offset="0.8"/>
<GradientStop Color="{DynamicResource Fluent.Ribbon.Colors.AccentBaseColor}" Offset="1"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Border.BorderBrush>
<TextBlock Text="添加形状到我的符号" HorizontalAlignment="Center" Foreground="{DynamicResource GrayBrush2}"/>
</Border>
<ItemsControl ItemsSource="{Binding ToolBoxItems}">
<ItemsControl.Template>
<ControlTemplate TargetType="{x:Type ItemsControl}">
<Border BorderThickness="{TemplateBinding Border.BorderThickness}"
Padding="{TemplateBinding Control.Padding}"
BorderBrush="{TemplateBinding Border.BorderBrush}"
Background="{TemplateBinding Panel.Background}"
SnapsToDevicePixels="True">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
</ScrollViewer>
</Border>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ItemsControl}}, Path=ActualWidth}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type ContentPresenter}">
<Setter Property="Control.Padding"
Value="10" />
<Setter Property="ContentControl.HorizontalContentAlignment"
Value="Stretch" />
<Setter Property="ContentControl.VerticalContentAlignment"
Value="Stretch" />
<Setter Property="ToolTip"
Value="{Binding ToolTip}" />
<Setter Property="dd:DragAndDropProps.EnabledForDrag"
Value="True" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</Grid>
</Expander>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top">
<Button Margin="0,5,2,5" ToolTip="导入到我的符号" Command="{Binding DataContext.ImportItemCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}}}" Width="16" Height="16" Foreground="{DynamicResource BlackBrush}" Background="{DynamicResource WhiteBrush}" BorderBrush="Transparent">
<Path Stretch="Fill" Margin="2" Fill="{DynamicResource GrayBrush2}" Data="M14,12L10,8V11H2V13H10V16M20,18V6C20,4.89 19.1,4 18,4H6A2,2 0 0,0 4,6V9H6V6H18V18H6V15H4V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18Z" ></Path>
</Button>
<Button Margin="0,5,2,5" ToolTip="添加到我的符号" Command="{Binding DataContext.AddItemCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}}}" Width="16" Height="16" Foreground="{DynamicResource BlackBrush}" Background="{DynamicResource WhiteBrush}" BorderBrush="Transparent">
<Path Stretch="Fill" Margin="2" Fill="{DynamicResource GrayBrush2}" Data="M938.666667 426.666667h-341.333334V85.333333c0-46.933333-38.4-85.333333-85.333333-85.333333s-85.333333 38.4-85.333333 85.333333v341.333334H85.333333c-46.933333 0-85.333333 38.4-85.333333 85.333333s38.4 85.333333 85.333333 85.333333h341.333334v341.333334c0 46.933333 38.4 85.333333 85.333333 85.333333s85.333333-38.4 85.333333-85.333333v-341.333334h341.333334c46.933333 0 85.333333-38.4 85.333333-85.333333s-38.4-85.333333-85.333333-85.333333z" ></Path>
</Button>
<Button Margin="0,5,5,5" ToolTip="移除" Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}}}" CommandParameter="{Binding .}" Width="16" Height="16" Foreground="{DynamicResource BlackBrush}" Background="{DynamicResource WhiteBrush}" BorderBrush="Transparent">
<Path Stretch="Fill" Margin="2" Fill="Red" Data="M0.7,0 L5,4.3 L9.3,0 L10,0.7 L5.7,5 L10,9.3 L9.3,10 L5,5.7 L0.7,10 L0,9.3 L4.3,5 L0,0.7 z" ></Path>
</Button>
</StackPanel>
</Grid>
</DataTemplate>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Expander x:Name="expanderLeft" ExpandDirection="Left" IsExpanded="{Binding IsExpanded, RelativeSource={RelativeSource AncestorType=views:ToolBoxControl}}" Style="{StaticResource DefaultAutoHideExpander}" Margin="0,0,1,0">
<Expander.Header>
<DockPanel Height="26">
<ToggleButton DockPanel.Dock="Right" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource AncestorType=views:ToolBoxControl}}" Background="{DynamicResource Fluent.Ribbon.Brushes.AccentBaseColorBrush}" Style="{StaticResource DefaultToggleButton}">
<Path Fill="Black" Stretch="Fill" Width="16" Height="16" Margin="10,3" Data="M18.41,7.41L17,6L11,12L17,18L18.41,16.59L13.83,12L18.41,7.41M12.41,7.41L11,6L5,12L11,18L12.41,16.59L7.83,12L12.41,7.41Z"/>
</ToggleButton>
<TextBlock Text="符号库" DockPanel.Dock="Left" VerticalAlignment="Center"/>
</DockPanel>
</Expander.Header>
<Border>
<Grid x:Name="grid" Width="225" MinWidth="100" MaxWidth="500">
<Grid.ContextMenu>
<ContextMenu ItemsSource="{Binding ToolBoxCategory}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="IsCheckable" Value="True" />
<Setter Property="IsChecked" Value="{Binding IsChecked}"/>
</Style>
</ContextMenu.ItemContainerStyle>
<ContextMenu.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}" />
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
</Grid.ContextMenu>
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<ItemsControl x:Name="listbox" ItemsSource="{Binding ToolBoxCategory}" Padding="0,0,0,0" BorderThickness="0">
</ItemsControl>
</ScrollViewer>
</Grid>
</Border>
</Expander>
<dd:BorderResizeThumb Width="1" Margin="-3,0,0,0" ResizeElement="{Binding ElementName=grid}" Cursor="SizeWE" HorizontalAlignment="Right" VerticalAlignment="Stretch" Visibility="{Binding IsExpanded, RelativeSource={RelativeSource AncestorType=views:ToolBoxControl},Converter={StaticResource BooleanToVisibilityConverter}}"/>
</Grid>
</UserControl>

View File

@@ -1,71 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Fluent.Ribbon" Version="8.0.3" />
<PackageReference Include="MahApps.Metro.IconPacks" Version="4.8.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Util.Svg2XamlTestExtension" Version="1.2.5" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Util.DiagramDesigner\Util.DiagramDesigner.csproj" />
</ItemGroup>
<ItemGroup>
<Page Update="Controls\Barcode.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
</Page>
<Page Update="Controls\GradientStopControl.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
</Page>
<Page Update="Controls\MultiSelectComboBox.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
</Page>
<Page Update="Controls\PopupWindow.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
</Page>
<Page Update="Controls\PropertiesView.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
</Page>
<Page Update="Controls\SliderRotation.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
</Page>
<Page Update="Extensions\ViewModels\BarcodeDesignerItemViewModel.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
</Page>
<Page Update="Extensions\ViewModels\OutLineTextDesignerItemViewModel.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
</Page>
<Page Update="Extensions\ViewModels\PathItemViewModel.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
</Page>
<Page Update="Extensions\ViewModels\PersistDesignerItemViewModel.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
</Page>
<Page Update="Extensions\ViewModels\SettingsDesignerItemViewModel.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
</Page>
<Page Update="Extensions\ViewModels\SvgDesignerItemViewModel.xaml">
<XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<ItemGroup>
<Reference Include="zxing.core">
<HintPath>..\AIStudio.Wpf.ADiagram\zxing.core.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

View File

@@ -1,228 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Reflection;
namespace AIStudio.Wpf.BaseDiagram.Controls
{
/// <summary>
/// Interaction logic for PropertiesView.xaml
/// </summary>
public partial class PropertiesView : UserControl
{
#region SelectedObject
public static readonly DependencyProperty SelectedObjectProperty = DependencyProperty.Register("SelectedObject", typeof(object), typeof(PropertiesView), new UIPropertyMetadata(null, OnSelectedObjectChanged));
public object SelectedObject
{
get
{
return (object)GetValue(SelectedObjectProperty);
}
set
{
SetValue(SelectedObjectProperty, value);
}
}
private static void OnSelectedObjectChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
PropertiesView propertyInspector = o as PropertiesView;
if (propertyInspector != null)
propertyInspector.OnSelectedObjectChanged((object)e.OldValue, (object)e.NewValue);
}
protected virtual void OnSelectedObjectChanged(object oldValue, object newValue)
{
// We do not want to process the change now if the grid is initializing (ie. BeginInit/EndInit).
var obj = oldValue as INotifyPropertyChanged;
if (obj != null)
obj.PropertyChanged -= PropertyChanged;
DisplayProperties();
obj = newValue as INotifyPropertyChanged;
if (obj != null)
obj.PropertyChanged += PropertyChanged;
}
#endregion //SelectedObject
public static readonly DependencyProperty NeedBrowsableProperty = DependencyProperty.Register("NeedBrowsable", typeof(bool), typeof(PropertiesView), new UIPropertyMetadata(true));
public bool NeedBrowsable
{
get
{
return (bool)GetValue(NeedBrowsableProperty);
}
set
{
SetValue(NeedBrowsableProperty, value);
}
}
public PropertiesView()
{
InitializeComponent();
this.Loaded += PropertiesView_Loaded;
}
private void PropertiesView_Loaded(object sender, RoutedEventArgs e)
{
DisplayProperties();
}
void PropertyChanged(object sender, PropertyChangedEventArgs e)
{
DisplayProperties();
}
private void DisplayProperties()
{
_panel.Children.Clear();
ClearGrid();
if (SelectedObject != null)
{
int row = 0;
foreach (var prop in SelectedObject.GetType().GetProperties())
{
var attr = prop.GetCustomAttributes(typeof(BrowsableAttribute), true);
if (NeedBrowsable == false && (attr.Length == 0 || (attr[0] as BrowsableAttribute).Browsable))
{
DisplayProperty(prop, row);
row++;
}
else if(NeedBrowsable == true && (attr.Length > 0 && (attr[0] as BrowsableAttribute).Browsable))
{
DisplayProperty(prop, row);
row++;
}
}
_panel.Children.Add(_gridContainer);
}
else
{
_panel.Children.Add(_label);
}
}
private void ClearGrid()
{
_grid.RowDefinitions.Clear();
for (int i = _grid.Children.Count - 1; i >= 0; i--)
{
if (_grid.Children[i] != _vLine && _grid.Children[i] != _splitter)
_grid.Children.RemoveAt(i);
}
}
private void DisplayProperty(PropertyInfo prop, int row)
{
var rowDef = new RowDefinition();
rowDef.Height = new GridLength(Math.Max(20, this.FontSize * 2));
_grid.RowDefinitions.Add(rowDef);
var tb = new TextBlock() { Text = prop.Name };
var displayAttr = prop.GetCustomAttributes(typeof(DisplayNameAttribute), true);
if (displayAttr.Length > 0 )
{
tb.Text = (displayAttr[0] as DisplayNameAttribute).DisplayName;
}
tb.Margin = new Thickness(4);
tb.VerticalAlignment = VerticalAlignment.Center;
Grid.SetColumn(tb, 0);
Grid.SetRow(tb, _grid.RowDefinitions.Count - 1);
_grid.Children.Add(tb);
var line = new Line();
line.Style = (Style)border.Resources["gridHorizontalLineStyle"];
Grid.SetRow(line, row);
_grid.Children.Add(line);
Style style = null;
var styleNameAttr = prop.GetCustomAttributes(typeof(StyleNameAttribute), true);
if (styleNameAttr.Length > 0)
{
style = this.FindResource((styleNameAttr[0] as StyleNameAttribute).Name) as Style;
if (style != null)
{
ContentControl content = new ContentControl();
content.Style = style;
content.DataContext = SelectedObject;
Grid.SetColumn(content, 1);
Grid.SetRow(content, _grid.RowDefinitions.Count - 1);
_grid.Children.Add(content);
}
}
if (style == null)
{
var ed = new TextBox();
ed.PreviewKeyDown += new KeyEventHandler(ed_KeyDown);
ed.Margin = new Thickness(0);
ed.VerticalAlignment = VerticalAlignment.Center;
ed.BorderThickness = new Thickness(0);
Grid.SetColumn(ed, 1);
Grid.SetRow(ed, _grid.RowDefinitions.Count - 1);
var binding = new Binding(prop.Name);
binding.Source = SelectedObject;
binding.ValidatesOnExceptions = true;
binding.Mode = BindingMode.OneWay;
if (prop.CanWrite)
{
var mi = prop.GetSetMethod();
if (mi != null && mi.IsPublic)
binding.Mode = BindingMode.TwoWay;
}
ed.SetBinding(TextBox.TextProperty, binding);
var template = (ControlTemplate)border.Resources["validationErrorTemplate"];
Validation.SetErrorTemplate(ed, template);
_grid.Children.Add(ed);
}
}
void ed_KeyDown(object sender, KeyEventArgs e)
{
var ed = sender as TextBox;
if (ed != null)
{
if (e.Key == Key.Enter)
{
ed.GetBindingExpression(TextBox.TextProperty).UpdateSource();
e.Handled = true;
}
else if (e.Key == Key.Escape)
ed.GetBindingExpression(TextBox.TextProperty).UpdateTarget();
}
}
}
[AttributeUsage(AttributeTargets.Property)]
public class StyleNameAttribute : Attribute
{
private string _name;
public StyleNameAttribute(string name)
{
_name = name;
}
public string Name
{
get { return _name; }
}
}
}

View File

@@ -1,45 +0,0 @@
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
using AIStudio.Wpf.BaseDiagram.Controls;
using Util.DiagramDesigner;
namespace AIStudio.Wpf.BaseDiagram.Converters
{
public class CountShiftConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values != null && values.Length > 2)
{
var diagram = values[0] as Util.DiagramDesigner.DiagramControl;
var zoomValue = (double)values[1];
var pageunit = (PageUnit)values[2];
var unit = Unit.Cm;
if (pageunit > PageUnit.km)
{
unit = Unit.Inch;
}
Vector vector = System.Windows.Media.VisualTreeHelper.GetOffset(diagram);
if (parameter?.ToString() == "Y")
{
var value = 0 - (unit == Unit.Cm? DipHelper.DipToCm(vector.Y - 20) : DipHelper.DipToInch(vector.Y - 20))/ zoomValue;
return value;
}
else
{
var value = 0 - (unit == Unit.Cm ? DipHelper.DipToCm(vector.X - 20) : DipHelper.DipToInch(vector.X - 20)) / zoomValue;
return value;
}
}
return 0;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -1,90 +0,0 @@
using AIStudio.Wpf.BaseDiagram.Services;
using System;
using Util.DiagramDesigner;
using ZXing;
namespace AIStudio.Wpf.BaseDiagram.Extensions.ViewModels
{
public class BarcodeDesignerItemViewModel : DesignerItemViewModelBase
{
private IUIVisualizerService visualiserService;
public BarcodeDesignerItemViewModel() : base()
{
}
public BarcodeDesignerItemViewModel(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer)
{
}
protected override void Init()
{
base.Init();
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase)
{
base.LoadDesignerItemViewModel(parent, designerbase);
Format = (BarcodeFormat)Enum.Parse(typeof(BarcodeFormat), (designerbase as DesignerItemBase).Reserve.ToString());
}
public void AutoSize()
{
ItemWidth = 140;
ItemHeight = 140;
}
protected override void ExecuteEditCommand(object parameter)
{
EditData();
}
public override bool InitData()
{
if (string.IsNullOrEmpty(Icon))
return EditData();
return true;
}
public BarcodeFormat Format { get; set; } = BarcodeFormat.QR_CODE;
private bool _showText;
public override bool ShowText
{
get
{
return false;
}
set
{
SetProperty(ref _showText, value);
}
}
public override bool EditData()
{
if (IsReadOnly == true) return false;
BarcodeDesignerItemData data = new BarcodeDesignerItemData(this);
if (visualiserService.ShowDialog(data) == true)
{
bool needauto = Text == null;
Text = data.Text;
Icon = data.Icon;
Margin = data.Margin;
if (needauto)
{
AutoSize();
}
return true;
}
return false;
}
}
}

View File

@@ -1,24 +0,0 @@
using Util.DiagramDesigner;
namespace AIStudio.Wpf.BaseDiagram.Extensions.ViewModels
{
public class PathItemViewModel : DesignerItemViewModelBase
{
public PathItemViewModel() : base()
{
}
public PathItemViewModel(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer)
{
}
protected override void Init()
{
base.Init();
this.ShowConnectors = false;
}
}
}

View File

@@ -1,52 +0,0 @@
using AIStudio.Wpf.BaseDiagram.Services;
using Util.DiagramDesigner;
using AIStudio.Wpf.BaseDiagram.Extensions.Models;
namespace AIStudio.Wpf.BaseDiagram.Extensions.ViewModels
{
public class PersistDesignerItemViewModel : DesignerItemViewModelBase
{
private IUIVisualizerService visualiserService;
public PersistDesignerItemViewModel(IDiagramViewModel parent, PersistDesignerItem designer) : base(parent, designer)
{
}
public PersistDesignerItemViewModel() : base()
{
}
protected override void Init()
{
base.Init();
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
this.ShowConnectors = false;
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase)
{
base.LoadDesignerItemViewModel(parent, designerbase);
PersistDesignerItem designer = designerbase as PersistDesignerItem;
this.HostUrl = designer.HostUrl;
}
public string HostUrl { get; set; }
protected override void ExecuteEditCommand(object parameter)
{
PersistDesignerItemData data = new PersistDesignerItemData(HostUrl);
if (visualiserService.ShowDialog(data) == true)
{
this.HostUrl = data.HostUrl;
}
}
}
}

View File

@@ -1,51 +0,0 @@
using AIStudio.Wpf.BaseDiagram.Services;
using System;
using Util.DiagramDesigner;
using AIStudio.Wpf.BaseDiagram.Extensions.Models;
namespace AIStudio.Wpf.BaseDiagram.Extensions.ViewModels
{
public class SettingsDesignerItemViewModel : DesignerItemViewModelBase
{
private IUIVisualizerService visualiserService;
public SettingsDesignerItemViewModel(IDiagramViewModel parent, SettingsDesignerItem designer) : base(parent, designer)
{
}
public SettingsDesignerItemViewModel() : base()
{
}
protected override void Init()
{
base.Init();
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
this.ShowConnectors = false;
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase)
{
base.LoadDesignerItemViewModel(parent, designerbase);
SettingsDesignerItem designer = designerbase as SettingsDesignerItem;
this.Setting = designer.Setting;
}
public String Setting{ get; set; }
protected override void ExecuteEditCommand(object parameter)
{
SettingsDesignerItemData data = new SettingsDesignerItemData(Setting);
if (visualiserService.ShowDialog(data) == true)
{
this.Setting = data.Setting1;
}
}
}
}

View File

@@ -1,18 +0,0 @@
using Util.DiagramDesigner;
namespace AIStudio.Wpf.BaseDiagram.Extensions.ViewModels
{
public class SvgDesignerItemViewModel: MediaItemViewModel
{
protected override string Filter { get; set; } = "Svg|*.svg";
public SvgDesignerItemViewModel() : base()
{
}
public SvgDesignerItemViewModel(IDiagramViewModel parent, MediaDesignerItem designer) : base(parent, designer)
{
}
}
}

View File

@@ -1,34 +0,0 @@
using AIStudio.Wpf.BaseDiagram.Controls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace AIStudio.Wpf.BaseDiagram.Services
{
public class WPFUIVisualizerService : IUIVisualizerService
{
#region Public Methods
/// <summary>
/// This method displays a modal dialog associated with the given key.
/// </summary>
/// <param name="dataContextForPopup">Object state to associate with the dialog</param>
/// <returns>True/False if UI is displayed.</returns>
public bool? ShowDialog(object dataContextForPopup)
{
Window win = new PopupWindow();
win.DataContext = dataContextForPopup;
win.Owner = Application.Current.MainWindow;
if (win != null)
return win.ShowDialog();
return false;
}
#endregion
}
}

View File

@@ -1,21 +1,37 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29509.3
# Visual Studio Version 17
VisualStudioVersion = 17.4.33205.214
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Util.DiagramDesigner", "Util.DiagramDesigner\Util.DiagramDesigner.csproj", "{3FC9F09D-83EA-4914-8980-A6B4C3352836}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.Flowchart", "Extensions\AIStudio.Wpf.Flowchart\AIStudio.Wpf.Flowchart.csproj", "{86ED5B40-D185-4AFA-B5BD-BC8E78DB8758}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.ADiagram", "AIStudio.Wpf.ADiagram\AIStudio.Wpf.ADiagram.csproj", "{9D2DCA7D-9E0C-4E6E-ACD9-2CD18C75FE34}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.BaseDiagram", "AIStudio.Wpf.BaseDiagram\AIStudio.Wpf.BaseDiagram.csproj", "{FC7CFBB7-29AE-4660-A94B-B80CF317D3C3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.Flowchart", "AIStudio.Wpf.Flowchart\AIStudio.Wpf.Flowchart.csproj", "{86ED5B40-D185-4AFA-B5BD-BC8E78DB8758}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.Logical", "AIStudio.Wpf.Logical\AIStudio.Wpf.Logical.csproj", "{CC68D39D-7935-4079-9CEB-FC2FD498D511}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.Logical", "Extensions\AIStudio.Wpf.Logical\AIStudio.Wpf.Logical.csproj", "{CC68D39D-7935-4079-9CEB-FC2FD498D511}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{4959F170-02FB-4B7F-8F53-93DAF22713F9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AIStudio.Wpf.SFC", "AIStudio.Wpf.SFC\AIStudio.Wpf.SFC.csproj", "{2AB69067-277E-4EE0-9949-8326A145EEE4}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.SFC", "Extensions\AIStudio.Wpf.SFC\AIStudio.Wpf.SFC.csproj", "{2AB69067-277E-4EE0-9949-8326A145EEE4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.DiagramApp", "AIStudio.Wpf.DiagramApp\AIStudio.Wpf.DiagramApp.csproj", "{4408F718-9C14-4404-A63B-9B785F9D4F35}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.DiagramDesigner", "AIStudio.Wpf.DiagramDesigner\AIStudio.Wpf.DiagramDesigner.csproj", "{EA1D893D-2F50-47AA-80A6-EA297F651CCC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "解决方案项", "解决方案项", "{425E7DBD-25B9-4019-9C84-C37273A7F5C3}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
Directory.Build.Props = Directory.Build.Props
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2BE1891E-16C9-4191-998A-45AEEEEA1F0D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.DiagramDesigner.Additionals", "AIStudio.Wpf.DiagramDesigner.Additionals\AIStudio.Wpf.DiagramDesigner.Additionals.csproj", "{186F34AC-4BC5-40E1-911B-DD3E96AECE6E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.Mind", "Extensions\AIStudio.Wpf.Mind\AIStudio.Wpf.Mind.csproj", "{85C437B9-16D2-4076-ABCD-52029AC232FC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.DiagramDesigner.Serializable", "AIStudio.Wpf.DiagramDesigner.Serializable\AIStudio.Wpf.DiagramDesigner.Serializable.csproj", "{439D0631-D9C2-4D36-BFCE-80DFCCABE9E7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Demos", "Demos", "{62DC8608-D98F-47BB-9F19-ABB0C60B72FF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.DiagramDesigner.Demo", "Demos\AIStudio.Wpf.DiagramDesigner.Demo\AIStudio.Wpf.DiagramDesigner.Demo.csproj", "{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -23,18 +39,6 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3FC9F09D-83EA-4914-8980-A6B4C3352836}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3FC9F09D-83EA-4914-8980-A6B4C3352836}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3FC9F09D-83EA-4914-8980-A6B4C3352836}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3FC9F09D-83EA-4914-8980-A6B4C3352836}.Release|Any CPU.Build.0 = Release|Any CPU
{9D2DCA7D-9E0C-4E6E-ACD9-2CD18C75FE34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9D2DCA7D-9E0C-4E6E-ACD9-2CD18C75FE34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9D2DCA7D-9E0C-4E6E-ACD9-2CD18C75FE34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9D2DCA7D-9E0C-4E6E-ACD9-2CD18C75FE34}.Release|Any CPU.Build.0 = Release|Any CPU
{FC7CFBB7-29AE-4660-A94B-B80CF317D3C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FC7CFBB7-29AE-4660-A94B-B80CF317D3C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FC7CFBB7-29AE-4660-A94B-B80CF317D3C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FC7CFBB7-29AE-4660-A94B-B80CF317D3C3}.Release|Any CPU.Build.0 = Release|Any CPU
{86ED5B40-D185-4AFA-B5BD-BC8E78DB8758}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{86ED5B40-D185-4AFA-B5BD-BC8E78DB8758}.Debug|Any CPU.Build.0 = Debug|Any CPU
{86ED5B40-D185-4AFA-B5BD-BC8E78DB8758}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -47,6 +51,30 @@ Global
{2AB69067-277E-4EE0-9949-8326A145EEE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2AB69067-277E-4EE0-9949-8326A145EEE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2AB69067-277E-4EE0-9949-8326A145EEE4}.Release|Any CPU.Build.0 = Release|Any CPU
{4408F718-9C14-4404-A63B-9B785F9D4F35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4408F718-9C14-4404-A63B-9B785F9D4F35}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4408F718-9C14-4404-A63B-9B785F9D4F35}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4408F718-9C14-4404-A63B-9B785F9D4F35}.Release|Any CPU.Build.0 = Release|Any CPU
{EA1D893D-2F50-47AA-80A6-EA297F651CCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EA1D893D-2F50-47AA-80A6-EA297F651CCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EA1D893D-2F50-47AA-80A6-EA297F651CCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EA1D893D-2F50-47AA-80A6-EA297F651CCC}.Release|Any CPU.Build.0 = Release|Any CPU
{186F34AC-4BC5-40E1-911B-DD3E96AECE6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{186F34AC-4BC5-40E1-911B-DD3E96AECE6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{186F34AC-4BC5-40E1-911B-DD3E96AECE6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{186F34AC-4BC5-40E1-911B-DD3E96AECE6E}.Release|Any CPU.Build.0 = Release|Any CPU
{85C437B9-16D2-4076-ABCD-52029AC232FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{85C437B9-16D2-4076-ABCD-52029AC232FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{85C437B9-16D2-4076-ABCD-52029AC232FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{85C437B9-16D2-4076-ABCD-52029AC232FC}.Release|Any CPU.Build.0 = Release|Any CPU
{439D0631-D9C2-4D36-BFCE-80DFCCABE9E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{439D0631-D9C2-4D36-BFCE-80DFCCABE9E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{439D0631-D9C2-4D36-BFCE-80DFCCABE9E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{439D0631-D9C2-4D36-BFCE-80DFCCABE9E7}.Release|Any CPU.Build.0 = Release|Any CPU
{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -55,6 +83,8 @@ Global
{86ED5B40-D185-4AFA-B5BD-BC8E78DB8758} = {4959F170-02FB-4B7F-8F53-93DAF22713F9}
{CC68D39D-7935-4079-9CEB-FC2FD498D511} = {4959F170-02FB-4B7F-8F53-93DAF22713F9}
{2AB69067-277E-4EE0-9949-8326A145EEE4} = {4959F170-02FB-4B7F-8F53-93DAF22713F9}
{85C437B9-16D2-4076-ABCD-52029AC232FC} = {4959F170-02FB-4B7F-8F53-93DAF22713F9}
{FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6} = {62DC8608-D98F-47BB-9F19-ABB0C60B72FF}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D30FC641-F06C-4E35-AEA5-48A9B6E59CE0}

View File

@@ -2,10 +2,10 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
<ItemGroup>
<Compile Remove="DesignItems\Custom\**" />
<EmbeddedResource Remove="DesignItems\Custom\**" />
@@ -109,6 +109,12 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="AIStudio.Wpf.ColorPicker" Version="1.1.2" />
<PackageReference Include="AIStudio.Wpf.ComeCapture" Version="1.1.0" />
<PackageReference Include="Costura.Fody" Version="5.7.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Dragablz" Version="0.0.3.223" />
<PackageReference Include="Fluent.Ribbon" Version="8.0.3" />
<PackageReference Include="gong-wpf-dragdrop" Version="2.3.2" />
@@ -120,18 +126,14 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AIStudio.Wpf.BaseDiagram\AIStudio.Wpf.BaseDiagram.csproj" />
<ProjectReference Include="..\AIStudio.Wpf.Flowchart\AIStudio.Wpf.Flowchart.csproj" />
<ProjectReference Include="..\AIStudio.Wpf.Logical\AIStudio.Wpf.Logical.csproj" />
<ProjectReference Include="..\AIStudio.Wpf.SFC\AIStudio.Wpf.SFC.csproj" />
<ProjectReference Include="..\Util.DiagramDesigner\Util.DiagramDesigner.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="zxing.core">
<HintPath>zxing.core.dll</HintPath>
</Reference>
</ItemGroup>
<ProjectReference Include="..\AIStudio.Wpf.DiagramDesigner.Additionals\AIStudio.Wpf.DiagramDesigner.Additionals.csproj" />
<ProjectReference Include="..\AIStudio.Wpf.DiagramDesigner.Serializable\AIStudio.Wpf.DiagramDesigner.Serializable.csproj" />
<ProjectReference Include="..\AIStudio.Wpf.DiagramDesigner\AIStudio.Wpf.DiagramDesigner.csproj" />
<ProjectReference Include="..\Extensions\AIStudio.Wpf.Flowchart\AIStudio.Wpf.Flowchart.csproj" />
<ProjectReference Include="..\Extensions\AIStudio.Wpf.Logical\AIStudio.Wpf.Logical.csproj" />
<ProjectReference Include="..\Extensions\AIStudio.Wpf.Mind\AIStudio.Wpf.Mind.csproj" />
<ProjectReference Include="..\Extensions\AIStudio.Wpf.SFC\AIStudio.Wpf.SFC.csproj" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\App.ico" />
@@ -237,7 +239,7 @@
</ItemGroup>
<ItemGroup>
<None Update="DesignItems\Customs\1.json">
<None Update="Images\Gifs\car_chase.gif">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Images\Svgs\account-book.svg">

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,17 +1,19 @@
<Application x:Class="AIStudio.Wpf.ADiagram.App"
<Application x:Class="AIStudio.Wpf.DiagramApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:AIStudio.Wpf.ADiagram"
xmlns:local="clr-namespace:AIStudio.Wpf.DiagramApp"
StartupUri="Views/MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Fluent;component/Themes/Generic.xaml" />
<ResourceDictionary Source="pack://application:,,,/Dragablz;component/Themes/Generic.xaml" />
<ResourceDictionary Source="/AIStudio.Wpf.ADiagram;component/Themes/Generic.xaml" />
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Flowchart;component/ViewModels/FlowNode.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Logical;component/ViewModels/LogicalGateItemViewModel.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.SFC;component/ViewModels/SFCNode.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.DiagramApp;component/Themes/Generic.xaml" />
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Flowchart;component/Themes/FlowNode.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Logical;component/Themes/LogicalGateItemViewModel.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.SFC;component/Themes/SFCNode.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Mind;component/Themes/MindNode.xaml"/>
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Mind;component/Themes/Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

View File

@@ -10,7 +10,7 @@ using System.Windows;
//如果是WinForm假定程序为MyDemo.exe则需要一个MyDemo.exe.config文件
//如果是WebForm则从web.config中读取相关信息
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace AIStudio.Wpf.ADiagram
namespace AIStudio.Wpf.DiagramApp
{
/// <summary>
/// Interaction logic for App.xaml

View File

@@ -0,0 +1 @@
{"Title":null,"DiagramType":0,"DiagramItems":[{"Name":null,"DiagramType":0,"ShowGrid":false,"PhysicalGridCellSize":"0,0","CellHorizontalAlignment":0,"CellVerticalAlignment":0,"PageSizeOrientation":0,"PhysicalPageSize":"0,0","PageSizeType":0,"PhysicalGridMarginSize":"0,0","GridColor":"#00000000","DesignerItems":[{"ModelType":null,"ModelTypeName":"AIStudio.Wpf.DiagramDesigner.DefaultDesignerItemViewModel","SerializableType":null,"SerializableTypeName":"AIStudio.Wpf.DiagramDesigner.DesignerItemBase","SerializableString":"{\"PhysicalLeft\":55.071354166666666,\"PhysicalTop\":10.13635421792666,\"Angle\":0.0,\"ScaleX\":1.0,\"ScaleY\":1.0,\"Margin\":0.0,\"ItemWidth\":14.557291666666666,\"ItemHeight\":14.557291666666666,\"Icon\":null,\"Reserve\":null,\"ItemTypeName\":\"AIStudio.Wpf.DiagramDesigner.DefaultDesignerItemViewModel\",\"ParentId\":\"00000000-0000-0000-0000-000000000000\",\"Id\":\"e400c493-a6e9-4ac6-88b0-387bb35a83bc\",\"ZIndex\":0,\"IsGroup\":false,\"Text\":\"AIStudio\",\"ColorItem\":{\"LineColor\":{\"BrushType\":1,\"Color\":\"#FF808080\",\"GradientStop\":null,\"Offset\":null,\"Image\":null,\"SubType\":0,\"StartPoint\":\"0,0\",\"EndPoint\":\"0,0\",\"Opacity\":1.0,\"LinearOrientation\":0,\"RadialOrientation\":0,\"Angle\":0},\"FillColor\":{\"BrushType\":1,\"Color\":\"#FFFFA500\",\"GradientStop\":null,\"Offset\":null,\"Image\":null,\"SubType\":0,\"StartPoint\":\"0,0\",\"EndPoint\":\"0,0\",\"Opacity\":1.0,\"LinearOrientation\":0,\"RadialOrientation\":0,\"Angle\":0},\"ShadowColor\":\"#00FFFFFF\",\"LineWidth\":1.0,\"LineDashStyle\":0,\"LineAnimation\":0,\"LineAnimationDuration\":1.0},\"FontItem\":{\"FontWeight\":\"Normal\",\"FontStyle\":\"Normal\",\"FontStretch\":\"Normal\",\"Underline\":false,\"Strikethrough\":false,\"OverLine\":false,\"FontColor\":\"#FF000000\",\"FontFamily\":\"Arial\",\"FontSize\":12.0,\"FontObject\":\"Arial, 12pt\",\"TextEffectColor\":\"#00FFFFFF\",\"HighlightColor\":\"#00FFFFFF\",\"FontCase\":0,\"HorizontalAlignment\":1,\"VerticalAlignment\":1,\"LineHeight\":0.0},\"SharpItem\":{\"SourceMarker\":{\"Path\":\"\",\"Width\":10.0,\"Height\":10.0,\"PathStyle\":0,\"SizeStyle\":10},\"SinkMarker\":{\"Path\":\"M 0 -5 10 0 0 5 z\",\"Width\":10.0,\"Height\":10.0,\"PathStyle\":1,\"SizeStyle\":10}}}"}],"Connections":[]}]}

View File

@@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<Costura />
</Weavers>

View File

@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="Costura" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:all>
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="IncludeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 64 bit assembly names to include, delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string">
<xs:annotation>
<xs:documentation>The order of preloaded assemblies, delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
<xs:attribute name="CreateTemporaryAssemblies" type="xs:boolean">
<xs:annotation>
<xs:documentation>This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeDebugSymbols" type="xs:boolean">
<xs:annotation>
<xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeRuntimeReferences" type="xs:boolean">
<xs:annotation>
<xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean">
<xs:annotation>
<xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DisableCompression" type="xs:boolean">
<xs:annotation>
<xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DisableCleanup" type="xs:boolean">
<xs:annotation>
<xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LoadAtModuleInit" type="xs:boolean">
<xs:annotation>
<xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IgnoreSatelliteAssemblies" type="xs:boolean">
<xs:annotation>
<xs:documentation>Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExcludeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeRuntimeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Unmanaged32Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Unmanaged64Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 64 bit assembly names to include, delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="PreloadOrder" type="xs:string">
<xs:annotation>
<xs:documentation>The order of preloaded assemblies, delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 405 B

After

Width:  |  Height:  |  Size: 405 B

View File

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 353 B

View File

Before

Width:  |  Height:  |  Size: 365 B

After

Width:  |  Height:  |  Size: 365 B

View File

Before

Width:  |  Height:  |  Size: 425 B

After

Width:  |  Height:  |  Size: 425 B

View File

Before

Width:  |  Height:  |  Size: 454 B

After

Width:  |  Height:  |  Size: 454 B

View File

Before

Width:  |  Height:  |  Size: 413 B

After

Width:  |  Height:  |  Size: 413 B

View File

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 185 B

View File

Before

Width:  |  Height:  |  Size: 230 B

After

Width:  |  Height:  |  Size: 230 B

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 556 B

After

Width:  |  Height:  |  Size: 556 B

View File

Before

Width:  |  Height:  |  Size: 689 B

After

Width:  |  Height:  |  Size: 689 B

View File

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 185 B

View File

Before

Width:  |  Height:  |  Size: 230 B

After

Width:  |  Height:  |  Size: 230 B

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 643 B

After

Width:  |  Height:  |  Size: 643 B

View File

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 628 B

View File

Before

Width:  |  Height:  |  Size: 743 B

After

Width:  |  Height:  |  Size: 743 B

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 435 B

After

Width:  |  Height:  |  Size: 435 B

View File

Before

Width:  |  Height:  |  Size: 334 B

After

Width:  |  Height:  |  Size: 334 B

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1022 B

After

Width:  |  Height:  |  Size: 1022 B

View File

Before

Width:  |  Height:  |  Size: 4.5 MiB

After

Width:  |  Height:  |  Size: 4.5 MiB

View File

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 185 B

View File

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 228 B

View File

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 185 B

View File

Before

Width:  |  Height:  |  Size: 229 B

After

Width:  |  Height:  |  Size: 229 B

View File

Before

Width:  |  Height:  |  Size: 654 B

After

Width:  |  Height:  |  Size: 654 B

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 743 B

After

Width:  |  Height:  |  Size: 743 B

View File

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 185 B

View File

Before

Width:  |  Height:  |  Size: 231 B

After

Width:  |  Height:  |  Size: 231 B

View File

Before

Width:  |  Height:  |  Size: 730 B

After

Width:  |  Height:  |  Size: 730 B

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 185 B

View File

Before

Width:  |  Height:  |  Size: 225 B

After

Width:  |  Height:  |  Size: 225 B

View File

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 766 B

View File

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 185 B

View File

Before

Width:  |  Height:  |  Size: 229 B

After

Width:  |  Height:  |  Size: 229 B

View File

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Before

Width:  |  Height:  |  Size: 595 B

After

Width:  |  Height:  |  Size: 595 B

View File

Before

Width:  |  Height:  |  Size: 559 B

After

Width:  |  Height:  |  Size: 559 B

View File

Before

Width:  |  Height:  |  Size: 586 B

After

Width:  |  Height:  |  Size: 586 B

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 823 B

After

Width:  |  Height:  |  Size: 823 B

View File

Before

Width:  |  Height:  |  Size: 698 B

After

Width:  |  Height:  |  Size: 698 B

View File

Before

Width:  |  Height:  |  Size: 764 B

After

Width:  |  Height:  |  Size: 764 B

View File

Before

Width:  |  Height:  |  Size: 759 B

After

Width:  |  Height:  |  Size: 759 B

View File

Before

Width:  |  Height:  |  Size: 926 B

After

Width:  |  Height:  |  Size: 926 B

Some files were not shown because too many files have changed in this diff Show More