Compare commits
1089
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bdd9b3a100 | ||
|
|
1a82625f39 | ||
|
|
bcc54ccd8f | ||
|
|
5df13df7fc | ||
|
|
47fd6206f6 | ||
|
|
776f8ed841 | ||
|
|
cf20ca885e | ||
|
|
e2e7a091af | ||
|
|
17e605cfd9 | ||
|
|
80999a8573 | ||
|
|
8deb18fe9c | ||
|
|
bb3688bf7a | ||
|
|
d3c7d54466 | ||
|
|
b844aafcf3 | ||
|
|
5f17dabb0b | ||
|
|
e0fb7927ed | ||
|
|
567ea533a9 | ||
|
|
cb62b0eb3a | ||
|
|
069d3865d4 | ||
|
|
a40ba5243e | ||
|
|
2c7d1af146 | ||
|
|
6bf5bdce2b | ||
|
|
c5c4a571c5 | ||
|
|
9464e3e4e1 | ||
|
|
03b99f1bbf | ||
|
|
d2e9b6f582 | ||
|
|
2bc8a5629f | ||
|
|
95ad2484ef | ||
|
|
9a8f8722bd | ||
|
|
08cf231dfc | ||
|
|
1f13ac3c77 | ||
|
|
d9bea4209c | ||
|
|
159390c094 | ||
|
|
0d3ee53bd5 | ||
|
|
06018303e7 | ||
|
|
51e91cdab0 | ||
|
|
7038c1163f | ||
|
|
812b5cddcc | ||
|
|
caed4635eb | ||
|
|
7043e4e11e | ||
|
|
566dfb7ba8 | ||
|
|
b0238fc0a3 | ||
|
|
47ae6ab4ae | ||
|
|
14716e4ed1 | ||
|
|
095d4aab2b | ||
|
|
4144a8970b | ||
|
|
ec3c0aae0a | ||
|
|
b443cab973 | ||
|
|
2e3b120bb1 | ||
|
|
d640a2f4b6 | ||
|
|
5116767ec7 | ||
|
|
43412cde9e | ||
|
|
d225d97863 | ||
|
|
7983423e2a | ||
|
|
7859ce582a | ||
|
|
3e1013fc12 | ||
|
|
5f7b4443c2 | ||
|
|
57977ae8b6 | ||
|
|
d21d4fb766 | ||
|
|
298d4a9b17 | ||
|
|
be82f1fe0e | ||
|
|
459cb5bb4a | ||
|
|
8d39bf82d2 | ||
|
|
e762aca7fb | ||
|
|
ace0bdb2a6 | ||
|
|
f6e44914fa | ||
|
|
6b6098164a | ||
|
|
6572623313 | ||
|
|
7f4bbcccf2 | ||
|
|
a49a81cff7 | ||
|
|
88fc2d4951 | ||
|
|
2c64b8905d | ||
|
|
dda796b929 | ||
|
|
4fd332490a | ||
|
|
be7c433343 | ||
|
|
6181e6a0f2 | ||
|
|
c5453fff5b | ||
|
|
b9b7fc95b4 | ||
|
|
b8a51409ab | ||
|
|
cebaab8e8b | ||
|
|
76bef24456 | ||
|
|
871b95891d | ||
|
|
f5ddde647a | ||
|
|
d4de7db70d | ||
|
|
ad858266d5 | ||
|
|
8772004e8e | ||
|
|
aec3519ec9 | ||
|
|
20bbbc7741 | ||
|
|
5ee93200ed | ||
|
|
981c399e65 | ||
|
|
96429a8c7a | ||
|
|
e1fc3e7b82 | ||
|
|
498115637a | ||
|
|
2322a145f6 | ||
|
|
53bab003bf | ||
|
|
97fc922321 | ||
|
|
8c32d64f35 | ||
|
|
1dfbf12f46 | ||
|
|
0f9256325c | ||
|
|
93c6ba5e74 | ||
|
|
2d3e14fc6c | ||
|
|
3ad842b02a | ||
|
|
14cfb65b6b | ||
|
|
cd926f559d | ||
|
|
cafa247279 | ||
|
|
e411b80fdc | ||
|
|
ae5e680e35 | ||
|
|
db684afd84 | ||
|
|
dc2ab14412 | ||
|
|
9e28ca5df3 | ||
|
|
dcfc12a849 | ||
|
|
ad3f9b53ad | ||
|
|
e7e0937ae5 | ||
|
|
0325b0214b | ||
|
|
6d616ca4cc | ||
|
|
a2620870ad | ||
|
|
a9ab29fcbb | ||
|
|
65f2c4d4a5 | ||
|
|
2ba5c8277d | ||
|
|
28f3b3f323 | ||
|
|
607dbaacb1 | ||
|
|
656bd36a1d | ||
|
|
1b83bd22b9 | ||
|
|
54eba8509e | ||
|
|
996b88cb2e | ||
|
|
441d950e94 | ||
|
|
59c2afe0e8 | ||
|
|
441cf91ff6 | ||
|
|
41a1b3323f | ||
|
|
4e31493cc8 | ||
|
|
8abe8df823 | ||
|
|
39af5d29c6 | ||
|
|
52d073cb8c | ||
|
|
65a6854cc0 | ||
|
|
ec540bcf20 | ||
|
|
4e9748f4dc | ||
|
|
82da9bc2e7 | ||
|
|
4cc9715f57 | ||
|
|
75f72cb04e | ||
|
|
3d58b8baf2 | ||
|
|
0c2839e6c9 | ||
|
|
0df833ca8a | ||
|
|
82988ce74f | ||
|
|
32fbb2964e | ||
|
|
38d7562bb3 | ||
|
|
a8dd8d98cb | ||
|
|
615383f924 | ||
|
|
25fa494b7b | ||
|
|
8b321e36db | ||
|
|
3822c6f5ab | ||
|
|
21a329b1d3 | ||
|
|
8d669d9f54 | ||
|
|
9a905c6111 | ||
|
|
239bcddfa2 | ||
|
|
cd5e20a3f4 | ||
|
|
518e87e4f1 | ||
|
|
6cd0be4c17 | ||
|
|
04db65f01f | ||
|
|
aa63fe2cb4 | ||
|
|
0593e3484c | ||
|
|
80bb277386 | ||
|
|
ec22661e87 | ||
|
|
80cdc2fb95 | ||
|
|
bfedd4d11b | ||
|
|
f58831f916 | ||
|
|
328d6b7fa7 | ||
|
|
98105cbf21 | ||
|
|
c9c57db7c1 | ||
|
|
7d4f1b2a44 | ||
|
|
7b7d1994c7 | ||
|
|
8b438d8d76 | ||
|
|
7a510a98ad | ||
|
|
66034de880 | ||
|
|
b9ca3e6beb | ||
|
|
9ad0872854 | ||
|
|
e6933922cd | ||
|
|
d6d6d88e20 | ||
|
|
8974d93877 | ||
|
|
7e6bef9008 | ||
|
|
1e2711a616 | ||
|
|
fd81675168 | ||
|
|
3dc347c66a | ||
|
|
8a8f4fa563 | ||
|
|
ed3fc330ab | ||
|
|
9fa025caa4 | ||
|
|
b54f938bd5 | ||
|
|
4efba80fc6 | ||
|
|
c3eab4820f | ||
|
|
a5bb127a1e | ||
|
|
ae1ed99c9f | ||
|
|
fa36932fbc | ||
|
|
9ac3dd07b9 | ||
|
|
4ca28941d0 | ||
|
|
4b2e207ddf | ||
|
|
88055f1c84 | ||
|
|
2f68a9444a | ||
|
|
0ccd711b0f | ||
|
|
63a6cb7afe | ||
|
|
d9fc5482db | ||
|
|
4f06438371 | ||
|
|
5afb5f2419 | ||
|
|
9f467a23b4 | ||
|
|
76dd46b30c | ||
|
|
0c1ddecaf1 | ||
|
|
d36d4733ca | ||
|
|
18dac8fb72 | ||
|
|
fb1db6df1c | ||
|
|
3fb487b67b | ||
|
|
2e1d497aad | ||
|
|
754bd14342 | ||
|
|
c4026c87ce | ||
|
|
e6b8454a94 | ||
|
|
98f68d6b45 | ||
|
|
5ef1bcbdb6 | ||
|
|
7846239be9 | ||
|
|
f8e2d6c86b | ||
|
|
b06f4a5781 | ||
|
|
968faf9200 | ||
|
|
62ceb13385 | ||
|
|
bed0046618 | ||
|
|
8a2287c685 | ||
|
|
3c85440d34 | ||
|
|
7ed21ff08c | ||
|
|
df42ec3d3a | ||
|
|
35b62520c9 | ||
|
|
e6936dc10e | ||
|
|
d5904fe9fa | ||
|
|
20d8fbc389 | ||
|
|
70ccb8b4d8 | ||
|
|
175571072f | ||
|
|
b0e25a35fb | ||
|
|
08e7041bcf | ||
|
|
b58ebcd7a7 | ||
|
|
8eb2472171 | ||
|
|
f73d89f41b | ||
|
|
95848197c5 | ||
|
|
442ac6969f | ||
|
|
3fb2c0aeff | ||
|
|
8ed99092ff | ||
|
|
f393709944 | ||
|
|
527da6bcc5 | ||
|
|
17940d453c | ||
|
|
8d623ae8fa | ||
|
|
c9d3480c58 | ||
|
|
e133b68472 | ||
|
|
9ecfe1e10e | ||
|
|
3a38ca6b61 | ||
|
|
62cb5cdba7 | ||
|
|
1cb0345b37 | ||
|
|
b3e6a3f157 | ||
|
|
6ed831c968 | ||
|
|
3f1d992879 | ||
|
|
c076ebce6f | ||
|
|
56e006318f | ||
|
|
4867b031b9 | ||
|
|
548973cf11 | ||
|
|
9c575d7fbf | ||
|
|
feefbeb5b4 | ||
|
|
a4d8081b73 | ||
|
|
467e51374d | ||
|
|
ec27a5843b | ||
|
|
a6a87cccae | ||
|
|
1d7a2e4a0c | ||
|
|
9ac237a377 | ||
|
|
74d5688936 | ||
|
|
534baa7aa3 | ||
|
|
b11d55c2c7 | ||
|
|
8fb27fc4f1 | ||
|
|
7332bc2a71 | ||
|
|
ae0ebd15f7 | ||
|
|
b8ade55096 | ||
|
|
acc5b2fecd | ||
|
|
e76c2afa08 | ||
|
|
8d249a96f4 | ||
|
|
229bec30cc | ||
|
|
5552a28925 | ||
|
|
3bd5d0e7d3 | ||
|
|
218a14acca | ||
|
|
1f978844c0 | ||
|
|
ca80c1e49d | ||
|
|
9bf66f651a | ||
|
|
a94ebc747a | ||
|
|
77a6aff593 | ||
|
|
f58bc38450 | ||
|
|
bb962ad3b7 | ||
|
|
dbdbda77b3 | ||
|
|
cafdffd647 | ||
|
|
e076410d71 | ||
|
|
0862b265bd | ||
|
|
803bea960d | ||
|
|
1a2c64db84 | ||
|
|
179e673104 | ||
|
|
3ba579e4a0 | ||
|
|
00a2289e92 | ||
|
|
34ad6f040d | ||
|
|
0c827d7167 | ||
|
|
178af644d0 | ||
|
|
2ea5454707 | ||
|
|
f5c5569482 | ||
|
|
a250556f9b | ||
|
|
dac91b094e | ||
|
|
1ef666be9e | ||
|
|
e71795bfe5 | ||
|
|
0d6a8b272a | ||
|
|
5d0b929593 | ||
|
|
94e5e906b1 | ||
|
|
38b985c75f | ||
|
|
49fa937074 | ||
|
|
85ead0b69e | ||
|
|
22c8d6ed9d | ||
|
|
7449456d55 | ||
|
|
2fb1c44ff2 | ||
|
|
71e1cf47df | ||
|
|
13ddcac646 | ||
|
|
3a3dc59275 | ||
|
|
76a841bc84 | ||
|
|
628efe83ca | ||
|
|
17f6f7c3be | ||
|
|
7ad8c986d7 | ||
|
|
470fc6fd07 | ||
|
|
b1f1c6f932 | ||
|
|
902d596c63 | ||
|
|
cf5307d2e2 | ||
|
|
9c663b34c7 | ||
|
|
2ac97aa809 | ||
|
|
ddebe7f8d5 | ||
|
|
6773624cb4 | ||
|
|
1bf118bdb9 | ||
|
|
c31c19ba02 | ||
|
|
05200c437e | ||
|
|
750122e6ea | ||
|
|
8d5c13f6d7 | ||
|
|
1dd399bdb9 | ||
|
|
beba64242d | ||
|
|
3be28f8a11 | ||
|
|
d2b745dd8e | ||
|
|
db55f5b3fd | ||
|
|
420c194f04 | ||
|
|
5cb3955903 | ||
|
|
420d016ee8 | ||
|
|
f803d27882 | ||
|
|
21016a1500 | ||
|
|
8a4ad1c2d4 | ||
|
|
62e562c245 | ||
|
|
d8c389541c | ||
|
|
f13529b339 | ||
|
|
8b195bd6a9 | ||
|
|
082166fc78 | ||
|
|
be6240bf28 | ||
|
|
c776cbcdf1 | ||
|
|
294cc73e36 | ||
|
|
3deb24f89a | ||
|
|
65124248cd | ||
|
|
750ec031d9 | ||
|
|
91b750e1a0 | ||
|
|
b92d9f5a9c | ||
|
|
bcaf1b4830 | ||
|
|
71613cba5d | ||
|
|
d2c21bcca4 | ||
|
|
d756af52d8 | ||
|
|
a6cc2cc325 | ||
|
|
ee89de9621 | ||
|
|
e21d9102a2 | ||
|
|
c4d736b7cc | ||
|
|
5ed7049900 | ||
|
|
6f6112a77c | ||
|
|
cb38a7fe5e | ||
|
|
4c1daf55f2 | ||
|
|
6cace280c9 | ||
|
|
847a4d74d6 | ||
|
|
53c3a51b47 | ||
|
|
b557658760 | ||
|
|
7d03fd4674 | ||
|
|
01ad1993f1 | ||
|
|
f0140e2bd1 | ||
|
|
ed83ae57c5 | ||
|
|
e746d0179f | ||
|
|
6ba2a663b4 | ||
|
|
95f14f9879 | ||
|
|
2933bd24e7 | ||
|
|
73eefe6649 | ||
|
|
0f7ff301c4 | ||
|
|
17c685148e | ||
|
|
54a6c1e402 | ||
|
|
fa57c51786 | ||
|
|
8a9eba9e76 | ||
|
|
59392d8bdc | ||
|
|
45d35ec108 | ||
|
|
a773e42fca | ||
|
|
80697ed65f | ||
|
|
43fd99cea6 | ||
|
|
eafcf016f3 | ||
|
|
5a89a5d43f | ||
|
|
33715395dc | ||
|
|
05982cc2ff | ||
|
|
6706b296c0 | ||
|
|
e4be90b7bc | ||
|
|
9cc9e4b4c9 | ||
|
|
45869401ad | ||
|
|
5a88e8909f | ||
|
|
a4dc7435d0 | ||
|
|
df1689d458 | ||
|
|
76a54f41a7 | ||
|
|
89593b1dac | ||
|
|
dbd6b7a9f7 | ||
|
|
e49fcdebfc | ||
|
|
1ccdcf9bd2 | ||
|
|
60f5359bd9 | ||
|
|
71cc77bee1 | ||
|
|
460b40c9cd | ||
|
|
c2e32c774e | ||
|
|
796d9fa554 | ||
|
|
8a8c6c9997 | ||
|
|
6e420250b4 | ||
|
|
4564f0424c | ||
|
|
099d635d3e | ||
|
|
d372a38e7d | ||
|
|
fc26b95bdb | ||
|
|
44735260ce | ||
|
|
6aa3cd96a6 | ||
|
|
e1eb582804 | ||
|
|
0ad4847972 | ||
|
|
323f2ede25 | ||
|
|
a64c547395 | ||
|
|
40f5079846 | ||
|
|
464dfc6dd1 | ||
|
|
c1b3cdde6d | ||
|
|
e688c4ba25 | ||
|
|
592823aa10 | ||
|
|
5ad871a7e0 | ||
|
|
049bbc8655 | ||
|
|
dcf6df293f | ||
|
|
0dd2245fe6 | ||
|
|
cd750cca2f | ||
|
|
5f2da63339 | ||
|
|
d420128b4b | ||
|
|
2ca5eec8e1 | ||
|
|
214a570ca6 | ||
|
|
8fb021da4c | ||
|
|
439d98f99d | ||
|
|
3c4fe34c1d | ||
|
|
641353585c | ||
|
|
de9a47c2a1 | ||
|
|
e902dd7c07 | ||
|
|
ac7076ee0f | ||
|
|
b5f218b657 | ||
|
|
c468854a76 | ||
|
|
1037a68d96 | ||
|
|
9e84d894a7 | ||
|
|
dbbe11cbbc | ||
|
|
8d287351b7 | ||
|
|
724869948f | ||
|
|
0497693968 | ||
|
|
de90477276 | ||
|
|
8d4af6f347 | ||
|
|
64cb33cdfd | ||
|
|
042488ba79 | ||
|
|
cd50494141 | ||
|
|
f12b2c38f7 | ||
|
|
dbfc06960f | ||
|
|
861aae753e | ||
|
|
ccf99a3105 | ||
|
|
e245ec80c6 | ||
|
|
7564ed7ba6 | ||
|
|
721bfdf5c8 | ||
|
|
f3d9fdca7f | ||
|
|
2b78f46efe | ||
|
|
77555aeebf | ||
|
|
58d34023b7 | ||
|
|
42ac833091 | ||
|
|
94eb2909bc | ||
|
|
c46dea3ae7 | ||
|
|
3160bfd43c | ||
|
|
e1f54cc49f | ||
|
|
8b297ba8a6 | ||
|
|
dcca6d9215 | ||
|
|
0d2099af10 | ||
|
|
ff4dcc39db | ||
|
|
87bc0131cf | ||
|
|
20fce538de | ||
|
|
d2bed417f1 | ||
|
|
8d572a650a | ||
|
|
efc3efcbfb | ||
|
|
56f8d64fc8 | ||
|
|
e93a817d4d | ||
|
|
f9c8c22d5e | ||
|
|
e423562806 | ||
|
|
aa47ce24f4 | ||
|
|
3c51b92e5e | ||
|
|
697b0b3538 | ||
|
|
08b47776ec | ||
|
|
0370d1f582 | ||
|
|
fa5b427d4d | ||
|
|
21102bb991 | ||
|
|
b00b6e8412 | ||
|
|
5b4a9c0129 | ||
|
|
dc2b945230 | ||
|
|
9ff58c9e0b | ||
|
|
df0a38e3c6 | ||
|
|
33b349e333 | ||
|
|
ab14866575 | ||
|
|
0f6a3ffa80 | ||
|
|
fde4b8b16f | ||
|
|
c450eaf339 | ||
|
|
30819bbacd | ||
|
|
fce6e65218 | ||
|
|
9550f97f8e | ||
|
|
bb9c2b13e5 | ||
|
|
aafcf77004 | ||
|
|
89c9e69a03 | ||
|
|
6a072b7814 | ||
|
|
4515f0fc13 | ||
|
|
e7723c108d | ||
|
|
970fc886c6 | ||
|
|
7b093a5623 | ||
|
|
9a2e7ea72b | ||
|
|
8b188c9c75 | ||
|
|
4aed5c15a0 | ||
|
|
305d99d654 | ||
|
|
1029308b2c | ||
|
|
463e3fd0aa | ||
|
|
3ee6e16592 | ||
|
|
2b7ad1ef7d | ||
|
|
4c66ba4038 | ||
|
|
eb1ff6ddda | ||
|
|
ff837fc076 | ||
|
|
5cbddcaaf4 | ||
|
|
24884de4e4 | ||
|
|
efc4668200 | ||
|
|
a90ba0c546 | ||
|
|
d039df5361 | ||
|
|
8d4910fcb0 | ||
|
|
f30d785fb3 | ||
|
|
efdd138379 | ||
|
|
115f83aeb0 | ||
|
|
b93eaadfc2 | ||
|
|
1233f17dc4 | ||
|
|
2a2dbcca83 | ||
|
|
e9070e5cc3 | ||
|
|
7319a9aee4 | ||
|
|
93513100eb | ||
|
|
46cc618300 | ||
|
|
7ac1f2d431 | ||
|
|
d96f124bb3 | ||
|
|
3fd56531da | ||
|
|
83fa635ee9 | ||
|
|
be8dededff | ||
|
|
f318cfe6f0 | ||
|
|
3f311d8603 | ||
|
|
3b13756db9 | ||
|
|
20b3840445 | ||
|
|
2a4d95bd7b | ||
|
|
e8966f6705 | ||
|
|
a20edf7890 | ||
|
|
f1d73421c8 | ||
|
|
97611369c4 | ||
|
|
5ca265fef7 | ||
|
|
38c199f6f9 | ||
|
|
02ce6bf7c0 | ||
|
|
fc3cef37d2 | ||
|
|
d9021ea140 | ||
|
|
ebf03af9c1 | ||
|
|
044e53f2b2 | ||
|
|
01ebd94073 | ||
|
|
e9c7430a48 | ||
|
|
2150ced11f | ||
|
|
ada96d3d83 | ||
|
|
5b4a797719 | ||
|
|
18cf0b5de3 | ||
|
|
cf876aabd2 | ||
|
|
2ced1417ed | ||
|
|
6d45b2c878 | ||
|
|
f5d1014b89 | ||
|
|
13d00ee18e | ||
|
|
c73cf7002f | ||
|
|
739759ddc3 | ||
|
|
e34fc6a1f2 | ||
|
|
6e9bfb61cc | ||
|
|
5634931cc2 | ||
|
|
a7c8b90e9f | ||
|
|
8e058cebbb | ||
|
|
08acc5778a | ||
|
|
2199679d28 | ||
|
|
e730ee1541 | ||
|
|
7c1d0be9c9 | ||
|
|
5ba9352576 | ||
|
|
21ee6b7a65 | ||
|
|
dd85f03328 | ||
|
|
254afc3978 | ||
|
|
ad51719d92 | ||
|
|
e43e0a6850 | ||
|
|
535af59860 | ||
|
|
3f08036139 | ||
|
|
7f31a84000 | ||
|
|
c672a49146 | ||
|
|
e84f87fcda | ||
|
|
070f435a23 | ||
|
|
2fcdfabd3c | ||
|
|
12053b4531 | ||
|
|
1a0b2ee975 | ||
|
|
13b80de703 | ||
|
|
9bd409e672 | ||
|
|
435e47707d | ||
|
|
4da0717729 | ||
|
|
98fe6223b4 | ||
|
|
b4e84c36b8 | ||
|
|
bf92f677fe | ||
|
|
62f26719ba | ||
|
|
beff091699 | ||
|
|
72debd397f | ||
|
|
89901c75f7 | ||
|
|
8a73968f41 | ||
|
|
eb2c3d00ce | ||
|
|
dd62310e59 | ||
|
|
a782d3960a | ||
|
|
d5f91e9bab | ||
|
|
be52e2df96 | ||
|
|
72418d802c | ||
|
|
534361b540 | ||
|
|
77782a8729 | ||
|
|
7dc42fb900 | ||
|
|
da4b5a50a7 | ||
|
|
c8c411aebc | ||
|
|
8b4890560e | ||
|
|
216e08d57c | ||
|
|
f9888a2108 | ||
|
|
f3b178473c | ||
|
|
20c7b07cb9 | ||
|
|
5e4da449ad | ||
|
|
c8d0c647b7 | ||
|
|
e1eedb039c | ||
|
|
c30043d4fc | ||
|
|
58a3340f53 | ||
|
|
1143fa79ae | ||
|
|
56217a68ce | ||
|
|
6df36659ab | ||
|
|
6f599d55c5 | ||
|
|
b91888213b | ||
|
|
10221d636c | ||
|
|
5c9adba751 | ||
|
|
d2af4f224e | ||
|
|
3a029432f8 | ||
|
|
72a5385c57 | ||
|
|
1028866721 | ||
|
|
9bd37c2980 | ||
|
|
00e0bc5ab7 | ||
|
|
e69836b03c | ||
|
|
ae8ba80f67 | ||
|
|
1f3a2af043 | ||
|
|
4917b0c0c4 | ||
|
|
cec1816f82 | ||
|
|
1bc3137d20 | ||
|
|
ed416e5237 | ||
|
|
37d61658d4 | ||
|
|
9d67343e2e | ||
|
|
7477a536da | ||
|
|
59c0f73dd2 | ||
|
|
02c7ac37f5 | ||
|
|
5114f5f1eb | ||
|
|
0a1966d7bd | ||
|
|
9b457299ea | ||
|
|
8b8c0c09df | ||
|
|
eb5f3465c8 | ||
|
|
1487e7889b | ||
|
|
2c0914baf8 | ||
|
|
b75a8105de | ||
|
|
0a827e0eb6 | ||
|
|
98a773700e | ||
|
|
2189c2150e | ||
|
|
92f77bf6d6 | ||
|
|
a5799290c9 | ||
|
|
16d471f12e | ||
|
|
ec0eecde50 | ||
|
|
b649c282e8 | ||
|
|
3e6243a8b7 | ||
|
|
02b29d9553 | ||
|
|
04cec33bf6 | ||
|
|
eee5e5dc8c | ||
|
|
09166ae73c | ||
|
|
52d0c1907f | ||
|
|
5620ba61fa | ||
|
|
63b5507f78 | ||
|
|
1ad8a69717 | ||
|
|
8be072ca52 | ||
|
|
cdea0e96b6 | ||
|
|
bab677c5c2 | ||
|
|
d1fb0e0f0a | ||
|
|
08d854f6f8 | ||
|
|
93e8328940 | ||
|
|
b608fb77b9 | ||
|
|
03c027ab33 | ||
|
|
14de767c52 | ||
|
|
9e90d3a93f | ||
|
|
97fbcbbf58 | ||
|
|
1b77c903f7 | ||
|
|
844a743c6b | ||
|
|
d4cbec50ba | ||
|
|
588d16caf9 | ||
|
|
fc3512a23a | ||
|
|
f8f08fb8ce | ||
|
|
790364832d | ||
|
|
0fb3a74879 | ||
|
|
45e0f50562 | ||
|
|
caf43fedb3 | ||
|
|
1388f459fe | ||
|
|
dddfc4bed5 | ||
|
|
2057cc6b73 | ||
|
|
4e29e88b02 | ||
|
|
aff7961a4e | ||
|
|
76dbf4e216 | ||
|
|
1fc129117f | ||
|
|
f866f5fb2c | ||
|
|
38d6016aec | ||
|
|
b3a2c3a0fc | ||
|
|
c84fd8089a | ||
|
|
2e4c59d3b5 | ||
|
|
5f21b5ab26 | ||
|
|
f8331c1c1c | ||
|
|
3c15dbab9e | ||
|
|
d5eb20854f | ||
|
|
438028506e | ||
|
|
010afcd1e4 | ||
|
|
7df9333fba | ||
|
|
4160420844 | ||
|
|
9f2e8407a0 | ||
|
|
45c64ae44b | ||
|
|
e8748bab70 | ||
|
|
c30f905893 | ||
|
|
8932c232e2 | ||
|
|
295e96098c | ||
|
|
dff3a1aff7 | ||
|
|
c497c02ef9 | ||
|
|
f51360c23d | ||
|
|
2286877fad | ||
|
|
a1810baffa | ||
|
|
6bb45ccc25 | ||
|
|
5f7c0c82e7 | ||
|
|
1d964e5fcc | ||
|
|
85ca2420bd | ||
|
|
c835fe5551 | ||
|
|
9563dbdb6f | ||
|
|
3666752414 | ||
|
|
c842c50361 | ||
|
|
49c6ebf9c7 | ||
|
|
5824564e25 | ||
|
|
e484697f60 | ||
|
|
9d53d7aaa8 | ||
|
|
1feb3215e5 | ||
|
|
581819de9f | ||
|
|
8cc0f3ceb4 | ||
|
|
456687478d | ||
|
|
618f0b1bca | ||
|
|
700b9b3122 | ||
|
|
fc0bdda553 | ||
|
|
1dbe9890f3 | ||
|
|
0f7790e538 | ||
|
|
9c0430a0d8 | ||
|
|
df7631eb3a | ||
|
|
4ce613a82d | ||
|
|
d8bb450a2e | ||
|
|
774d47a86f | ||
|
|
e3318179c1 | ||
|
|
74738ff78c | ||
|
|
53ead401d0 | ||
|
|
0426d2510a | ||
|
|
ef5bbe737c | ||
|
|
50194001d9 | ||
|
|
f696d20060 | ||
|
|
83ddb7c8bf | ||
|
|
7d8c23d014 | ||
|
|
011219d491 | ||
|
|
d4b20876b2 | ||
|
|
785aae3b73 | ||
|
|
91cb245f84 | ||
|
|
0859dd28d5 | ||
|
|
df91e435bb | ||
|
|
15f96e86ac | ||
|
|
a49912bdb1 | ||
|
|
f7a7987831 | ||
|
|
8dae45e10e | ||
|
|
4d616939ad | ||
|
|
e5ad1ac93b | ||
|
|
faffa8a270 | ||
|
|
4a2342c015 | ||
|
|
283a9ebaa1 | ||
|
|
a07aa13358 | ||
|
|
b3ceb6f300 | ||
|
|
111e3d8647 | ||
|
|
606c74f3dc | ||
|
|
c88ac1fcab | ||
|
|
b9ea2087de | ||
|
|
dcadd29791 | ||
|
|
69f7e62e4e | ||
|
|
63abe74aed | ||
|
|
68c6111377 | ||
|
|
32a8b95c32 | ||
|
|
687bc3ed0c | ||
|
|
c71626adaf | ||
|
|
c0c46a1181 | ||
|
|
f0bd10bb12 | ||
|
|
92787ccd4f | ||
|
|
4794e73994 | ||
|
|
fd69bc6376 | ||
|
|
d8e8156cc9 | ||
|
|
fa2896d755 | ||
|
|
a7571a6bb7 | ||
|
|
19dc994616 | ||
|
|
a1a0e319ce | ||
|
|
0ac1fe2b4e | ||
|
|
7cbbb2270b | ||
|
|
ac1bdbe476 | ||
|
|
799fda63e9 | ||
|
|
9d56836c80 | ||
|
|
91dff782a3 | ||
|
|
8a3a0ca6ef | ||
|
|
d393a519f3 | ||
|
|
4dcd018642 | ||
|
|
accd439be8 | ||
|
|
799c7b6fdb | ||
|
|
550be3f8a3 | ||
|
|
264e5d9cd0 | ||
|
|
448dbcdf2f | ||
|
|
284673c200 | ||
|
|
887fde3620 | ||
|
|
b909c82b28 | ||
|
|
0c3ed1e1bf | ||
|
|
4b8f9e031e | ||
|
|
1337fff2dc | ||
|
|
e6d38040e0 | ||
|
|
cbf6b286db | ||
|
|
6fe2e01026 | ||
|
|
147fb6fb30 | ||
|
|
d439d94645 | ||
|
|
2c0e8c90ed | ||
|
|
08945212c7 | ||
|
|
8a91d60c46 | ||
|
|
5e78d54cea | ||
|
|
175d5b8d7f | ||
|
|
e5e6083c49 | ||
|
|
0a44598fb7 | ||
|
|
acd614a20d | ||
|
|
b36a965678 | ||
|
|
59fc7e30d8 | ||
|
|
52f600cb94 | ||
|
|
0bcfb489af | ||
|
|
18234bb713 | ||
|
|
ebffe9b1cb | ||
|
|
b0137f9384 | ||
|
|
8bb227393e | ||
|
|
cd671f9e77 | ||
|
|
f65fefe1ff | ||
|
|
cfcce08047 | ||
|
|
aa6c12e388 | ||
|
|
b34b031fcf | ||
|
|
19dff40664 | ||
|
|
2935bc2c77 | ||
|
|
1a4d20b6e2 | ||
|
|
5c93b55f58 | ||
|
|
6e418b1fc4 | ||
|
|
f81dcc1d82 | ||
|
|
63de7b9aa8 | ||
|
|
49ef7436b2 | ||
|
|
5ac9e40575 | ||
|
|
00619ab2c6 | ||
|
|
5ebef2d27f | ||
|
|
695a725b5f | ||
|
|
6fda6dcabc | ||
|
|
ef824531b8 | ||
|
|
483218ef02 | ||
|
|
4ea85a0644 | ||
|
|
03a992d480 | ||
|
|
4a25dac8ff | ||
|
|
1bcbe382d7 | ||
|
|
4ae4ba15cf | ||
|
|
775d3c67a4 | ||
|
|
ec82370934 | ||
|
|
baf87f63cc | ||
|
|
4c2ef35ac1 | ||
|
|
1b3fe413cb | ||
|
|
1af6a65a9f | ||
|
|
cf57f3ab01 | ||
|
|
af0de8734a | ||
|
|
cd43aa2f42 | ||
|
|
be76fb4001 | ||
|
|
7c7f330a0b | ||
|
|
3d844390e7 | ||
|
|
ea7adb31a6 | ||
|
|
8a563a7729 | ||
|
|
78bcf73f13 | ||
|
|
b5b15b2988 | ||
|
|
1eee432993 | ||
|
|
dc5afadd53 | ||
|
|
643699161a | ||
|
|
ed996cc27e | ||
|
|
7a544495f2 | ||
|
|
f44713eec3 | ||
|
|
dcd795b778 | ||
|
|
08a404beab | ||
|
|
63099d27c5 | ||
|
|
28b78c1345 | ||
|
|
6a4dff5cbc | ||
|
|
5239ed6d15 | ||
|
|
7b878be87d | ||
|
|
f746c9cd8f | ||
|
|
25b8bd8469 | ||
|
|
d1eb7b21d1 | ||
|
|
4ea8d66330 | ||
|
|
ca0bcc49ac | ||
|
|
d516441ff8 | ||
|
|
df58d05b84 | ||
|
|
ca2705421b | ||
|
|
291bb72cf5 | ||
|
|
7f3d1bb199 | ||
|
|
a41d0517d2 | ||
|
|
d09921ee5b | ||
|
|
e88c34e2f4 | ||
|
|
e09aad2a6d | ||
|
|
9500bc4656 | ||
|
|
a13c6a37fa | ||
|
|
1d924d7d40 | ||
|
|
b1e0e74d8a | ||
|
|
c58f639346 | ||
|
|
f0e9b74132 | ||
|
|
9a725de4a9 | ||
|
|
6efa998532 | ||
|
|
2d877877e2 | ||
|
|
e037720115 | ||
|
|
fdd4036797 | ||
|
|
e001d01f15 | ||
|
|
efad9eb0d9 | ||
|
|
f6169c962d | ||
|
|
b073e322d4 | ||
|
|
f901367817 | ||
|
|
e94443ad8a | ||
|
|
2d20ea1196 | ||
|
|
a275a911f6 | ||
|
|
1f08cf0b81 | ||
|
|
2a3f76c3dc | ||
|
|
45c6c10755 | ||
|
|
5a265d4ef6 | ||
|
|
63c12958f7 | ||
|
|
809c16e1e1 | ||
|
|
dc9b72f487 | ||
|
|
2bf0ab226f | ||
|
|
0c2c9bb1e2 | ||
|
|
b006e36d52 | ||
|
|
2392bfa2a7 | ||
|
|
16ef6bde34 | ||
|
|
933909c1e9 | ||
|
|
a9c7e1fa25 | ||
|
|
aee1990243 | ||
|
|
88caba317b | ||
|
|
3843b16587 | ||
|
|
b86ca9fac8 | ||
|
|
1fb82dad92 | ||
|
|
b879245df2 | ||
|
|
224c9c4372 | ||
|
|
c16964c1de | ||
|
|
1d52047559 | ||
|
|
0b9fd8712a | ||
|
|
edf53a91f9 | ||
|
|
5884f282e4 | ||
|
|
b6e368938d | ||
|
|
e7fa371c1b | ||
|
|
270c3b0aae | ||
|
|
27e0cd3b53 | ||
|
|
8ff2ff0c38 | ||
|
|
6c0c89a0dc | ||
|
|
e264f3b3dd | ||
|
|
e3605b647c | ||
|
|
25eff13c41 | ||
|
|
d2493b0331 | ||
|
|
82cede65ef | ||
|
|
3549376f34 | ||
|
|
7b61f7cb86 | ||
|
|
87b5c36e6a | ||
|
|
5c48dbf60e | ||
|
|
cc789ee7e0 | ||
|
|
087870b1ec | ||
|
|
393bc99d9b | ||
|
|
93b40740b5 | ||
|
|
140ec13626 | ||
|
|
2cab985bd0 | ||
|
|
4ab889b43e | ||
|
|
cd52a11d0e | ||
|
|
014ec3924f | ||
|
|
a62ce451c4 | ||
|
|
7badb8ef7b | ||
|
|
4d39805ef4 | ||
|
|
4b1a684d69 | ||
|
|
a22b4de1b6 | ||
|
|
462ed568de | ||
|
|
92bcd46549 | ||
|
|
e22d58101c | ||
|
|
193ede3d55 | ||
|
|
edc4d59f90 | ||
|
|
56e38831f1 | ||
|
|
6a159f773e | ||
|
|
e94e16c9e6 | ||
|
|
e70e5f7cb4 | ||
|
|
3946d26cb4 | ||
|
|
7534fc7c24 | ||
|
|
766562fb7d | ||
|
|
2c1e4e7d26 | ||
|
|
3775913a33 | ||
|
|
42a9ecda27 | ||
|
|
eafa88258f | ||
|
|
9a143bd266 | ||
|
|
b6c9c8cf22 | ||
|
|
f31843f665 | ||
|
|
6e2bf48b43 | ||
|
|
1278a2365d | ||
|
|
3407b51c27 | ||
|
|
adb37826a5 | ||
|
|
0fdcbffcae | ||
|
|
d575220aec | ||
|
|
69de3b038a | ||
|
|
773a1f2d15 | ||
|
|
a4331c8267 | ||
|
|
bfa506911c | ||
|
|
a2432927ee | ||
|
|
126a0e2663 | ||
|
|
f3f6ad4291 | ||
|
|
ffc70efaf4 | ||
|
|
951a62ad06 | ||
|
|
d8d8f24843 | ||
|
|
c75e88c871 | ||
|
|
47af8c11d3 | ||
|
|
6c85732748 | ||
|
|
8cd3b6a7b0 | ||
|
|
d1ef582349 | ||
|
|
6d47789708 | ||
|
|
66a31fc1e9 | ||
|
|
d84c3ca4d8 | ||
|
|
98c8b0e7a8 | ||
|
|
68c4bf5956 | ||
|
|
b131ba01a8 | ||
|
|
f5642a2676 | ||
|
|
1585066b57 | ||
|
|
1ee5724082 | ||
|
|
511d86a186 | ||
|
|
d91ca4b56b | ||
|
|
e14dc37060 | ||
|
|
1e058726d4 | ||
|
|
26982a5729 | ||
|
|
494c6edf76 | ||
|
|
61bfa51fa7 | ||
|
|
81fe244c23 | ||
|
|
98f74fa971 | ||
|
|
bb260426c9 | ||
|
|
02b31634f8 | ||
|
|
35c449bd0c | ||
|
|
2b7f6a8dac | ||
|
|
2a4eeb2d77 | ||
|
|
a08be1ee73 | ||
|
|
21390eaba6 | ||
|
|
5f0c56b19f | ||
|
|
714780d0b6 | ||
|
|
d852e390b3 | ||
|
|
bb2087c002 | ||
|
|
15ac3608c4 | ||
|
|
e4e8c97cfd | ||
|
|
3ef8674caf | ||
|
|
58a2be10aa | ||
|
|
bcae594b3f | ||
|
|
763acec379 | ||
|
|
12bd4e80dd | ||
|
|
4f456e0c40 | ||
|
|
c6ef378bc9 | ||
|
|
9689080387 | ||
|
|
6ecddf07f6 | ||
|
|
89ecf478ba | ||
|
|
d9e7efa15a | ||
|
|
6e6edde77f | ||
|
|
b2c944f9b1 | ||
|
|
852ffd0602 | ||
|
|
a06fe00440 | ||
|
|
8c1c5ed4f0 | ||
|
|
123187aa8a | ||
|
|
644c26355c | ||
|
|
432b288c34 | ||
|
|
f6cec9d769 | ||
|
|
29ece2f91c | ||
|
|
e3aa3f6721 | ||
|
|
b1ccdcb5c1 | ||
|
|
a541ac4945 | ||
|
|
38cbcb6430 | ||
|
|
c593ed903e | ||
|
|
d488f62648 |
+20
-3
@@ -1,8 +1,25 @@
|
||||
TestBenchFramework/bin/
|
||||
TestBenchFramework/obj/
|
||||
Config/bin/
|
||||
Config/obj/
|
||||
DeviceTest/bin/
|
||||
DeviceTest/obj/
|
||||
Dirichlet.Numerics/bin
|
||||
Dirichlet.Numerics/obj
|
||||
GraphLib/bin
|
||||
GraphLib/obj
|
||||
MonitoringDB/bin
|
||||
MonitoringDB/obj
|
||||
Results/bin/
|
||||
Results/obj/
|
||||
ResultsBrowser/bin/
|
||||
ResultsBrowser/obj/
|
||||
TBF/bin/
|
||||
TBF/obj/
|
||||
TBFSetup/Debug/
|
||||
TBFSetup/Release/
|
||||
Users/bin/
|
||||
Users/obj/
|
||||
UserManagement/bin/
|
||||
UserManagement/obj/
|
||||
Doc/
|
||||
*.suo
|
||||
*.suo
|
||||
*.bak
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{743DF7DB-C7B6-42EB-986D-0F485E5588E4}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Config</RootNamespace>
|
||||
<AssemblyName>Config</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;GENESIS;IPERL;LANG_DE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;GENESIS;IPERL;LANG_DE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="FluentNHibernate">
|
||||
<HintPath>..\packages\FluentNHibernate.2.0.3.0\lib\net40\FluentNHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Iesi.Collections">
|
||||
<HintPath>..\packages\Iesi.Collections.4.0.0.4000\lib\net40\Iesi.Collections.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net">
|
||||
<HintPath>..\packages\log4net.2.0.2\lib\net40-full\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MySql.Data">
|
||||
<HintPath>..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate">
|
||||
<HintPath>..\packages\NHibernate.4.0.4.4000\lib\net40\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data.SQLite">
|
||||
<HintPath>..\packages\System.Data.SQLite.1.0.90.0\lib\net40\System.Data.SQLite.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.SQLite.Linq">
|
||||
<HintPath>..\packages\System.Data.SQLite.1.0.90.0\lib\net40\System.Data.SQLite.Linq.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Data.cs" />
|
||||
<Compile Include="DatabaseSettings.cs" />
|
||||
<Compile Include="Entities\BenchPath.cs" />
|
||||
<Compile Include="Entities\Component.cs" />
|
||||
<Compile Include="Entities\ComponentProcedure.cs" />
|
||||
<Compile Include="Entities\ComponentTest.cs" />
|
||||
<Compile Include="Entities\Enums.cs" />
|
||||
<Compile Include="Entities\FeedingPath.cs" />
|
||||
<Compile Include="Entities\Group.cs" />
|
||||
<Compile Include="Entities\HeatMetersPath.cs" />
|
||||
<Compile Include="Entities\IHasItemNr.cs" />
|
||||
<Compile Include="Entities\IHasName.cs" />
|
||||
<Compile Include="Entities\IHasValves.cs" />
|
||||
<Compile Include="Entities\MeasurementCorrection.cs" />
|
||||
<Compile Include="Entities\MetersPath.cs" />
|
||||
<Compile Include="Entities\OutputPath.cs" />
|
||||
<Compile Include="Entities\Procedure.cs" />
|
||||
<Compile Include="Entities\ProcedureHistory.cs" />
|
||||
<Compile Include="Entities\Test.cs" />
|
||||
<Compile Include="Entities\TransitionSequence.cs" />
|
||||
<Compile Include="Entities\TransitionStep.cs" />
|
||||
<Compile Include="Entities\User.cs" />
|
||||
<Compile Include="Entities\VirtualBenchSequence.cs" />
|
||||
<Compile Include="Entities\VirtualBenchStep.cs" />
|
||||
<Compile Include="Entities\Watermeter.cs" />
|
||||
<Compile Include="Entities\WMType.cs" />
|
||||
<Compile Include="FluentCommon.cs" />
|
||||
<Compile Include="Mappings\BenchPathMap.cs" />
|
||||
<Compile Include="Mappings\ComponentMap.cs" />
|
||||
<Compile Include="Mappings\ComponentProcedureMap.cs" />
|
||||
<Compile Include="Mappings\ComponentTestMap.cs" />
|
||||
<Compile Include="Mappings\FeedingPathMap.cs" />
|
||||
<Compile Include="Mappings\GroupMap.cs" />
|
||||
<Compile Include="Mappings\HeatMetersPathMap.cs" />
|
||||
<Compile Include="Mappings\MeasurementCorrectionMap.cs" />
|
||||
<Compile Include="Mappings\MetersPathMap.cs" />
|
||||
<Compile Include="Mappings\OutputPathMap.cs" />
|
||||
<Compile Include="Mappings\ProcedureMap.cs" />
|
||||
<Compile Include="Mappings\TestMap.cs" />
|
||||
<Compile Include="Mappings\TransitionSequenceMap.cs" />
|
||||
<Compile Include="Mappings\TransitionStepMap.cs" />
|
||||
<Compile Include="Mappings\UserMap.cs" />
|
||||
<Compile Include="Mappings\VirtualBenchSequenceMap.cs" />
|
||||
<Compile Include="Mappings\VirtualBenchStepMap.cs" />
|
||||
<Compile Include="Mappings\WatermeterMap.cs" />
|
||||
<Compile Include="Mappings\WMTypeMap.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Resources\Strings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Strings.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Units.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Resources\Strings.cs.resx" />
|
||||
<EmbeddedResource Include="Resources\Strings.de.resx" />
|
||||
<EmbeddedResource Include="Resources\Strings.it.resx" />
|
||||
<EmbeddedResource Include="Resources\Strings.pl.resx" />
|
||||
<EmbeddedResource Include="Resources\Strings.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Resources\Strings.ru.resx" />
|
||||
<EmbeddedResource Include="Resources\Strings.zh-CN.resx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Users\Users.csproj">
|
||||
<Project>{6E5CB0E9-E1B6-4E5D-AC6E-B1049E180F2B}</Project>
|
||||
<Name>Users</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
|
||||
namespace Config
|
||||
{
|
||||
public class Data : Users.GlobalData
|
||||
{
|
||||
public const string AdminUsername = "admin";
|
||||
public const string AdminPassword = "staratura";
|
||||
public const string SQLiteDbFName = "SQLite.db";
|
||||
|
||||
#if MUNICH
|
||||
public const int WMsCount = 3;
|
||||
public const int LineSize = 1;
|
||||
public const int CompoundWMsCount = 1;
|
||||
public const int HeatMetersCount = 0;
|
||||
public const int MaxPartNr = 3;
|
||||
#elif DN100 || BADGER_STREDNA_TRAT || BADGER_VELKA_TRAT
|
||||
public const int WMsCount = 3;
|
||||
public const int LineSize = 3;
|
||||
public const int CompoundWMsCount = 1;
|
||||
public const int HeatMetersCount = 0;
|
||||
public const int MaxPartNr = WMsCount / LineSize;
|
||||
#elif FUZHOU300 || FUZHOU150 || PT200IL || PUCHONG_PT200 || GENESIS || SLM_150 || PETERSBURG_200
|
||||
public const int WMsCount = 6;
|
||||
public const int LineSize = 6;
|
||||
public const int CompoundWMsCount = 3;
|
||||
public const int HeatMetersCount = 0;
|
||||
public const int MaxPartNr = 3;
|
||||
#elif TORINO50 || BADGER_MALA_TRAT || BERLIN
|
||||
public const int WMsCount = 6;
|
||||
public const int LineSize = 6;
|
||||
public const int CompoundWMsCount = 1;
|
||||
public const int HeatMetersCount = 0;
|
||||
public const int MaxPartNr = 1;
|
||||
#elif TORUN_PT50_2015 || CEVAK_PT40_272 || MURES_PT40 || FUZHOU_40 || PETERSBURG_50 || KEMPNO_50 || BAHRAIN_50 || KRAKOW_50
|
||||
public const int WMsCount = 20;
|
||||
public const int LineSize = 10;
|
||||
public const int CompoundWMsCount = 1;
|
||||
public const int HeatMetersCount = 0;
|
||||
public const int MaxPartNr = WMsCount / LineSize;
|
||||
#elif RUM_MOB
|
||||
public const int WMsCount = 8;
|
||||
public const int LineSize = 8;
|
||||
public const int CompoundWMsCount = 1;
|
||||
public const int HeatMetersCount = 0;
|
||||
public const int MaxPartNr = WMsCount / LineSize;
|
||||
#elif TURA_IPERL
|
||||
public const int WMsCount = 40;
|
||||
public const int LineSize = 20;
|
||||
public const int CompoundWMsCount = 1;
|
||||
public const int HeatMetersCount = 0;
|
||||
public const int MaxPartNr = WMsCount / LineSize;
|
||||
#elif TURA_SPECIAL
|
||||
public const int WMsCount = 6;
|
||||
public const int LineSize = 6;
|
||||
public const int CompoundWMsCount = 1;
|
||||
public const int HeatMetersCount = 0;
|
||||
public const int MaxPartNr = WMsCount / LineSize;
|
||||
#elif SLM_50
|
||||
public const int WMsCount = 12;
|
||||
public const int LineSize = 12;
|
||||
public const int CompoundWMsCount = 1;
|
||||
public const int HeatMetersCount = 6;
|
||||
public const int MaxPartNr = WMsCount / LineSize;
|
||||
#elif SLM_END || WARSAW_END
|
||||
public const int WMsCount = 10;
|
||||
public const int LineSize = 5;
|
||||
public const int CompoundWMsCount = 1;
|
||||
public const int HeatMetersCount = 0;
|
||||
public const int MaxPartNr = 4;
|
||||
#elif MALTA_WSD25
|
||||
public const int WMsCount = 6;
|
||||
public const int LineSize = 6;
|
||||
public const int CompoundWMsCount = 0;
|
||||
public const int HeatMetersCount = 0;
|
||||
public const int MaxPartNr = WMsCount / LineSize;
|
||||
#endif
|
||||
|
||||
///
|
||||
/// Database related: This object reference is set after a successful user login
|
||||
///
|
||||
public static DatabaseSettings CurrentBench;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace Config
|
||||
{
|
||||
/// <summary>
|
||||
/// Test bench database settings, contains bench name and settings od several databases
|
||||
/// </summary>
|
||||
public class DatabaseSettings : ICloneable
|
||||
{
|
||||
// Public fields
|
||||
public string BenchName;
|
||||
public bool IsRealBench;
|
||||
public Users.DBSettings ProceduresDBSettings; /// Config database settings
|
||||
public Users.DBSettings WaterMetersDBSettings; /// Results database settings
|
||||
public Users.DBSettings UsersDBSettings; /// Users database settings
|
||||
|
||||
// Constructor
|
||||
public DatabaseSettings()
|
||||
{
|
||||
BenchName = String.Empty; /// Empty string (avoid null)
|
||||
IsRealBench = false;
|
||||
ProceduresDBSettings = new Users.DBSettings(Users.Entities.DBType.MySql, string.Empty);
|
||||
WaterMetersDBSettings = new Users.DBSettings(Users.Entities.DBType.MySql, string.Empty);
|
||||
UsersDBSettings = new Users.DBSettings(Users.Entities.DBType.MySql, string.Empty);
|
||||
}
|
||||
|
||||
public object Clone()
|
||||
{
|
||||
DatabaseSettings result = new DatabaseSettings();
|
||||
|
||||
result.BenchName = BenchName;
|
||||
result.IsRealBench = IsRealBench;
|
||||
result.ProceduresDBSettings = (Users.DBSettings)ProceduresDBSettings.Clone();
|
||||
result.WaterMetersDBSettings = (Users.DBSettings)WaterMetersDBSettings.Clone();
|
||||
result.UsersDBSettings = (Users.DBSettings)ProceduresDBSettings.Clone();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0} config={1} results={2} users={3}",
|
||||
BenchName,
|
||||
ProceduresDBSettings.ConnectionString,
|
||||
WaterMetersDBSettings.ConnectionString,
|
||||
UsersDBSettings.ConnectionString);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class BenchPath : IHasName, IHasItemNr, IHasValves
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string OriName { get; set; } /// Not mapped to database
|
||||
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
|
||||
public virtual float Qto { get; set; } /// Water flow in [m3/h]
|
||||
public virtual string TempMtrUp { get; set; }
|
||||
public virtual string TempMtrDown { get; set; }
|
||||
public virtual string PressMtrUp { get; set; }
|
||||
public virtual string PressMtrDown { get; set; }
|
||||
public virtual string PressMtrDelta { get; set; }
|
||||
public virtual string StopBFValve { get; set; }
|
||||
|
||||
/// Valves
|
||||
public virtual string ValvesOpen { get; set; }
|
||||
public virtual string ValvesClose { get; set; }
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
public BenchPath()
|
||||
{
|
||||
ValvesOpen = string.Empty;
|
||||
ValvesClose = string.Empty;
|
||||
}
|
||||
|
||||
public BenchPath(string name, int itemNr)
|
||||
: this()
|
||||
{
|
||||
Name = name;
|
||||
ItemNr = itemNr;
|
||||
}
|
||||
|
||||
public virtual BenchPath Clone(string name, int itemNr)
|
||||
{
|
||||
BenchPath result = new BenchPath(name, itemNr);
|
||||
|
||||
result.Qfrom = Qfrom;
|
||||
result.Qto = Qto;
|
||||
result.TempMtrUp = TempMtrUp;
|
||||
result.TempMtrDown = TempMtrDown;
|
||||
result.PressMtrUp = PressMtrUp;
|
||||
result.PressMtrDown = PressMtrDown;
|
||||
result.PressMtrDelta = PressMtrDelta;
|
||||
result.StopBFValve = StopBFValve;
|
||||
result.ValvesOpen = ValvesOpen;
|
||||
result.ValvesClose = ValvesClose;
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class Component : IHasName, IHasItemNr
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string ClassName { get; set; }
|
||||
public virtual string ParentName { get; set; }
|
||||
public virtual DebugMode Mode { get; set; }
|
||||
public virtual LogLevel Logging { get; set; }
|
||||
public virtual string Parameters { get; set; }
|
||||
public virtual IList<MeasurementCorrection> Corrections { get; set; }
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
public Component()
|
||||
{
|
||||
Corrections = new List<MeasurementCorrection>();
|
||||
}
|
||||
|
||||
public static Component CreateFromCfg(string name, string className, string parentName, int itemNr,
|
||||
DebugMode debugLevel, LogLevel logLevel, string parameters)
|
||||
{
|
||||
Component result = new Component();
|
||||
result.ItemNr = itemNr;
|
||||
result.Name = name;
|
||||
result.ClassName = className;
|
||||
result.ParentName = parentName;
|
||||
result.Mode = debugLevel;
|
||||
result.Logging = logLevel;
|
||||
result.Parameters = parameters;
|
||||
return result;
|
||||
}
|
||||
|
||||
// Makes a new copy of this object (not just a reference)
|
||||
public virtual Component Clone()
|
||||
{
|
||||
Component result = new Component();
|
||||
result.ItemNr = ItemNr;
|
||||
result.Name = Name;
|
||||
result.ClassName = ClassName;
|
||||
result.ParentName = ParentName;
|
||||
result.Mode = Mode;
|
||||
result.Logging = Logging;
|
||||
result.Parameters = Parameters;
|
||||
return result;
|
||||
}
|
||||
|
||||
public virtual void Export(StreamWriter output)
|
||||
{
|
||||
output.WriteLine(Name);
|
||||
output.WriteLine(ClassName);
|
||||
output.WriteLine(ParentName);
|
||||
output.WriteLine(Mode.ToString());
|
||||
output.WriteLine(Logging.ToString());
|
||||
output.Write(Parameters);
|
||||
|
||||
output.Close();
|
||||
}
|
||||
|
||||
public static Component Import(StreamReader input)
|
||||
{
|
||||
Component result = new Component();
|
||||
|
||||
result.Name = input.ReadLine();
|
||||
result.ClassName = input.ReadLine();
|
||||
result.ParentName = input.ReadLine();
|
||||
|
||||
string line = input.ReadLine();
|
||||
if (line.Equals(DebugMode.DetectedOff.ToString())) result.Mode = DebugMode.DetectedOff;
|
||||
else if (line.Equals(DebugMode.DetectedOn.ToString())) result.Mode = DebugMode.DetectedOn;
|
||||
else if (line.Equals(DebugMode.Normal.ToString())) result.Mode = DebugMode.Normal;
|
||||
else if (line.Equals(DebugMode.AutoDetect.ToString())) result.Mode = DebugMode.AutoDetect;
|
||||
else if (line.Equals(DebugMode.FailureDuringOperation.ToString())) result.Mode = DebugMode.FailureDuringOperation;
|
||||
else if (line.Equals(DebugMode.Off.ToString())) result.Mode = DebugMode.Off;
|
||||
else if (line.Equals(DebugMode.Record.ToString())) result.Mode = DebugMode.Record;
|
||||
else if (line.Equals(DebugMode.Reply.ToString())) result.Mode = DebugMode.Reply;
|
||||
else if (line.Equals(DebugMode.Simulate.ToString())) result.Mode = DebugMode.Simulate;
|
||||
else if (line.Equals(DebugMode.Inherit.ToString())) result.Mode = DebugMode.Inherit;
|
||||
|
||||
line = input.ReadLine();
|
||||
if (line.Equals(LogLevel.Off.ToString())) result.Logging = LogLevel.Off;
|
||||
else if (line.Equals(LogLevel.Fatal.ToString())) result.Logging = LogLevel.Fatal;
|
||||
else if (line.Equals(LogLevel.Error.ToString())) result.Logging = LogLevel.Error;
|
||||
else if (line.Equals(LogLevel.Warn.ToString())) result.Logging = LogLevel.Warn;
|
||||
else if (line.Equals(LogLevel.Info.ToString())) result.Logging = LogLevel.Info;
|
||||
else if (line.Equals(LogLevel.Debug.ToString())) result.Logging = LogLevel.Debug;
|
||||
else if (line.Equals(LogLevel.All.ToString())) result.Logging = LogLevel.All;
|
||||
|
||||
result.Parameters = string.Empty;
|
||||
line = input.ReadLine();
|
||||
while (line != null)
|
||||
{
|
||||
result.Parameters += line;
|
||||
result.Parameters += Environment.NewLine;
|
||||
line = input.ReadLine();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public virtual string ToString(string indent)
|
||||
{
|
||||
string result = string.Empty;
|
||||
|
||||
result += indent + "ItemNr = " + (ItemNr + 1).ToString() + Environment.NewLine;
|
||||
result += indent + "Name = " + Name + Environment.NewLine;
|
||||
result += indent + "ClassName = " + ClassName + Environment.NewLine;
|
||||
if (ParentName != null)
|
||||
{
|
||||
result += indent + "ParentName = " + ParentName + Environment.NewLine;
|
||||
}
|
||||
result += indent + "DebugLevel = " + Mode.ToString() + Environment.NewLine;
|
||||
result += indent + "LogLevel = " + Logging.ToString() + Environment.NewLine;
|
||||
result += indent + "Parameters = " + Parameters + Environment.NewLine;
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class ComponentProcedure
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual string CmpntName { get; set; } /// Component name
|
||||
public virtual string Parameters { get; set; }
|
||||
public virtual Procedure Procedure { get; set; }
|
||||
|
||||
public virtual ComponentProcedure Clone(Procedure newProcedure)
|
||||
{
|
||||
ComponentProcedure result = new ComponentProcedure();
|
||||
result.CmpntName = CmpntName;
|
||||
result.Parameters = Parameters;
|
||||
result.Procedure = newProcedure;
|
||||
return result;
|
||||
}
|
||||
|
||||
public virtual void Export(StreamWriter output)
|
||||
{
|
||||
output.WriteLine(CmpntName);
|
||||
output.WriteLine(Parameters.Replace(Environment.NewLine, "~"));
|
||||
}
|
||||
|
||||
public static ComponentProcedure Import(StreamReader input, Procedure newProcedure)
|
||||
{
|
||||
string firstLine = input.ReadLine();
|
||||
|
||||
if (string.IsNullOrEmpty(firstLine)) return null;
|
||||
|
||||
ComponentProcedure result = new ComponentProcedure();
|
||||
result.CmpntName = firstLine;
|
||||
result.Parameters = input.ReadLine().Replace("~", Environment.NewLine);
|
||||
result.Procedure = newProcedure;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class ComponentTest
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual string CmpntName { get; set; } /// Component name
|
||||
public virtual string Parameters { get; set; }
|
||||
public virtual Test Test { get; set; }
|
||||
|
||||
public virtual ComponentTest Clone()
|
||||
{
|
||||
ComponentTest result = new ComponentTest();
|
||||
result.CmpntName = CmpntName;
|
||||
result.Parameters = Parameters;
|
||||
result.Test = Test;
|
||||
return result;
|
||||
}
|
||||
|
||||
public virtual void Export(StreamWriter output)
|
||||
{
|
||||
output.WriteLine(CmpntName);
|
||||
output.WriteLine(Parameters.Replace(Environment.NewLine, "~"));
|
||||
}
|
||||
|
||||
public static ComponentTest Import(StreamReader input, Test newTest)
|
||||
{
|
||||
string firstLine = input.ReadLine();
|
||||
|
||||
if (string.IsNullOrEmpty(firstLine)) return null;
|
||||
|
||||
ComponentTest result = new ComponentTest();
|
||||
result.CmpntName = firstLine;
|
||||
result.Parameters = input.ReadLine().Replace("~", Environment.NewLine);
|
||||
result.Test = newTest;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,420 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// Helper class to assign descriptions to enum values
|
||||
/// </summary>
|
||||
public class Description : Attribute
|
||||
{
|
||||
public string Text;
|
||||
public Description(string t)
|
||||
{
|
||||
Text = t;
|
||||
}
|
||||
}
|
||||
|
||||
public static class GetDescription
|
||||
{
|
||||
/// Extension method for enum-s
|
||||
public static string ToDescription(this Enum en)
|
||||
{
|
||||
Type type = en.GetType();
|
||||
MemberInfo[] memInfo = type.GetMember(en.ToString());
|
||||
|
||||
if (memInfo != null && memInfo.Length > 0)
|
||||
{
|
||||
object[] attrs = memInfo[0].GetCustomAttributes(typeof(Description), false);
|
||||
if (attrs != null && attrs.Length > 0)
|
||||
return ((Description)attrs[0]).Text;
|
||||
}
|
||||
|
||||
return en.ToString(); /// Return ToString() value in case there is no description
|
||||
}
|
||||
}
|
||||
|
||||
public enum ProcedureState
|
||||
{
|
||||
Active,
|
||||
History,
|
||||
Count,
|
||||
}
|
||||
|
||||
/// <summary> Kind of meters for the procedure / test </summary>
|
||||
public enum MetersKind
|
||||
{
|
||||
#if LANG_DE
|
||||
[Description("Wasserzähler")] Single,
|
||||
[Description("Verbundwasserzähler")] Combined,
|
||||
[Description("Wärmezähler")] HeatMeter,
|
||||
#elif LANG_CS
|
||||
[Description("Vodoměry")] Single,
|
||||
[Description("Kombinované vodoměry")] Combined,
|
||||
[Description("Měřiče tepla")] HeatMeter,
|
||||
#elif LANG_RU
|
||||
[Description("Счетчик")] Single,
|
||||
[Description("Комбинированный счетчик")] Combined,
|
||||
[Description("Счетчик тепла")] HeatMeter,
|
||||
#else
|
||||
[Description("Water meters")] Single,
|
||||
[Description("Compound water meters")] Combined,
|
||||
[Description("Heat meters")] HeatMeter,
|
||||
#endif
|
||||
}
|
||||
|
||||
public enum CompoundMeterId : byte
|
||||
{
|
||||
Single,
|
||||
CompoundMain,
|
||||
CompoundAux,
|
||||
Compound,
|
||||
HeatMeterVolume,
|
||||
HeatMeterEnergy,
|
||||
SingleOrCompound, /// Only used when querying results
|
||||
}
|
||||
|
||||
public enum Medium
|
||||
{
|
||||
[Description("")] NotSpecified,
|
||||
ColdWater,
|
||||
HotWater,
|
||||
Count
|
||||
}
|
||||
|
||||
public enum Mounting
|
||||
{
|
||||
[Description("")] NotSpecified,
|
||||
#if LANG_DE
|
||||
[Description("H")] H, /// horizontal
|
||||
[Description("V")] V, /// vertical
|
||||
[Description("STR")] S, /// standrohre
|
||||
[Description("F")] F, /// fall
|
||||
#else
|
||||
[Description("H")] H, /// horizontal
|
||||
[Description("V")] V, /// vertical
|
||||
[Description("S")] S, /// steig
|
||||
[Description("F")] F, /// fall
|
||||
#endif
|
||||
Count
|
||||
}
|
||||
|
||||
public enum TemperatureClass
|
||||
{
|
||||
[Description("")] NotSpecified,
|
||||
[Description("T30")] T30,
|
||||
[Description("T50")] T50,
|
||||
[Description("T70")] T70,
|
||||
[Description("T90")] T90,
|
||||
[Description("T130")] T130,
|
||||
[Description("T180")] T180,
|
||||
[Description("T30/70")] T30_70,
|
||||
[Description("T30/90")] T30_90,
|
||||
[Description("T30/130")] T30_130,
|
||||
[Description("T30/180")] T30_180,
|
||||
[Description("30")] t30,
|
||||
[Description("50")] t50,
|
||||
[Description("70")] t70,
|
||||
[Description("90")] t90,
|
||||
[Description("130")] t130,
|
||||
[Description("180")] t180,
|
||||
Count
|
||||
}
|
||||
|
||||
public enum FlowProfileSensitivityClass
|
||||
{
|
||||
[Description("")] NotSpecified,
|
||||
[Description("U0")] U0, /// ?
|
||||
[Description("D0")] D0, /// ?
|
||||
Count
|
||||
}
|
||||
|
||||
public enum PressureLossClass
|
||||
{
|
||||
[Description("")] NotSpecified,
|
||||
[Description("dp63")] dp63, /// 0.063 MPa = 0.63 bar, TODO: Change to "Δp63"
|
||||
[Description("dp40")] dp40, /// 0.040 MPa = 0.40 bar
|
||||
[Description("dp25")] dp25, /// 0.025 MPa = 0.25 bar
|
||||
[Description("dp16")] dp16, /// 0.016 MPa = 0.16 bar
|
||||
[Description("dp10")] dp10, /// 0.010 MPa = 0.10 bar
|
||||
Count
|
||||
}
|
||||
|
||||
/// <summary> Maximum Admissible Pressure </summary>
|
||||
public enum MaxAdmissiblePressure
|
||||
{
|
||||
[Description("")] NotSpecified,
|
||||
[Description("MAP6")] MAP6,
|
||||
[Description("MAP10")] MAP10,
|
||||
[Description("MAP16")] MAP16,
|
||||
[Description("MAP25")] MAP25,
|
||||
[Description("MAP40")] MAP40,
|
||||
Count
|
||||
}
|
||||
|
||||
/// <summary> Transition step is finished when this condition is fulfilled </summary>
|
||||
public enum StepCondition
|
||||
{
|
||||
None,
|
||||
Scale1Empty,
|
||||
Scale2Empty,
|
||||
Scale3Empty,
|
||||
AllScalesEmpty,
|
||||
Count
|
||||
}
|
||||
|
||||
public enum Publish : sbyte
|
||||
{
|
||||
#if LANG_DE
|
||||
/// german
|
||||
[Description("nie")] Never = 0,
|
||||
[Description("immer")] Always = 1,
|
||||
[Description("Bildschirm")] OnScreen = 2,
|
||||
[Description("intern")] Internal = 3,
|
||||
#elif LANG_CS
|
||||
/// czech
|
||||
[Description("nikdy")] Never = 0,
|
||||
[Description("vždy")] Always = 1,
|
||||
[Description("na obrazovku")] OnScreen = 2,
|
||||
[Description("interně")] Internal = 3,
|
||||
#elif LANG_SK
|
||||
/// slovak
|
||||
[Description("nikdy")] Never = 0,
|
||||
[Description("vždy")] Always = 1,
|
||||
[Description("na obrazovku")] OnScreen = 2,
|
||||
[Description("interne")] Internal = 3,
|
||||
#elif LANG_PL
|
||||
/// polish
|
||||
[Description("nigdy")] Never = 0,
|
||||
[Description("zawsze")] Always = 1,
|
||||
[Description("na ekranie")] OnScreen = 2,
|
||||
[Description("wewnętrznie")] Internal = 3,
|
||||
#elif LANG_RU
|
||||
/// russian
|
||||
[Description("никогда")] Never = 0,
|
||||
[Description("всегда")] Always = 1,
|
||||
[Description("толька экран")] OnScreen = 2,
|
||||
[Description("внутренно")] Internal = 3,
|
||||
#else
|
||||
/// english
|
||||
[Description("Never")] Never = 0,
|
||||
[Description("Always")] Always = 1,
|
||||
[Description("On screen")] OnScreen = 2,
|
||||
[Description("Internal")] Internal = 3,
|
||||
#endif
|
||||
Count
|
||||
}
|
||||
|
||||
public enum MassMethod : byte
|
||||
{
|
||||
#if LANG_DE
|
||||
/// nemecky
|
||||
[Description("Waage")] Scale,
|
||||
[Description("Spanne")] Spread,
|
||||
[Description("Standardabw.")] StdDev,
|
||||
#elif LANG_CS
|
||||
/// cesky
|
||||
[Description("váhou")] Scale,
|
||||
[Description("max.rozdíl")] Spread,
|
||||
[Description("std.dev.")] StdDev,
|
||||
#else
|
||||
[Description("Scale")] Scale,
|
||||
[Description("Spread")] Spread,
|
||||
[Description("Std.dev.")] StdDev,
|
||||
#endif
|
||||
Count
|
||||
}
|
||||
|
||||
public enum TestRedType
|
||||
{
|
||||
Fix,
|
||||
/// etc.
|
||||
Count,
|
||||
}
|
||||
|
||||
public enum FQC1
|
||||
{
|
||||
FQC1,
|
||||
FQP1,
|
||||
Count,
|
||||
}
|
||||
|
||||
public enum Progress
|
||||
{
|
||||
JustStarted,
|
||||
TransitionBefore,
|
||||
SwitchingFlowDetection,
|
||||
FlowSetting,
|
||||
Aborted, /// Use as an argument when a test was aborted
|
||||
Test,
|
||||
TransitionAfter,
|
||||
Completed,
|
||||
Count,
|
||||
}
|
||||
|
||||
public enum Device
|
||||
{
|
||||
Screen,
|
||||
Printer,
|
||||
Disk,
|
||||
}
|
||||
|
||||
public enum PageOrientation
|
||||
{
|
||||
Portrait,
|
||||
Landscape,
|
||||
Count,
|
||||
}
|
||||
|
||||
public enum ItemCategory
|
||||
{
|
||||
#if LANG_DE
|
||||
[Description("Allgemein")] Other,
|
||||
[Description("Prüfstanddaten")] BenchData,
|
||||
[Description("Prüfstandergebnisse")] BenchResult,
|
||||
[Description("Prüfpunktdaten")] TestData,
|
||||
[Description("Prüfpunktergebnisse")] TestResult,
|
||||
[Description("Wasserzelledaten")] MeterData,
|
||||
[Description("Wasserzelleergebnisse")] MeterResult,
|
||||
#else
|
||||
[Description("Other")] Other,
|
||||
[Description("Bench data")] BenchData,
|
||||
[Description("Bench result")] BenchResult,
|
||||
[Description("Test data")] TestData,
|
||||
[Description("Test result")] TestResult,
|
||||
[Description("Meter data")] MeterData,
|
||||
[Description("Meter result")] MeterResult,
|
||||
#endif
|
||||
Count,
|
||||
}
|
||||
|
||||
/// <summary> Possible modes of operation of components and devices. </summary>
|
||||
public enum DebugMode
|
||||
{
|
||||
#if LANG_DE
|
||||
[Description("Erkennen-aus")] DetectedOff = -2,
|
||||
[Description("Erkennen-ein")] DetectedOn = -1,
|
||||
[Description("Normal")] Normal = 0, /// Normal operation
|
||||
[Description("Auto-erkennen")] AutoDetect, /// The component (device) will be auto-detected
|
||||
[Description("Fehler")] FailureDuringOperation, /// Failure during operation -> disabled
|
||||
[Description("Aus")] Off, /// The component is off
|
||||
[Description("Aufzeichnen")] Record,
|
||||
[Description("Reply")] Reply,
|
||||
[Description("Simuliert")] Simulate, /// Test bench simulation, this mode does not require any hardware
|
||||
[Description("Geerbt")] Inherit,
|
||||
#else
|
||||
[Description("Detected off")] DetectedOff = -2,
|
||||
[Description("Detected on")] DetectedOn = -1,
|
||||
[Description("Normal")] Normal = 0, /// Normal operation
|
||||
[Description("Auto detect")] AutoDetect, /// The component (device) will be auto-detected
|
||||
[Description("Run-time error")] FailureDuringOperation, /// Failure during operation -> disabled
|
||||
[Description("Off")] Off, /// The component is off
|
||||
[Description("Record")] Record,
|
||||
[Description("Reply")] Reply,
|
||||
[Description("Simulate")] Simulate, /// Test bench simulation, this mode does not require any hardware
|
||||
[Description("Inherit")] Inherit,
|
||||
#endif
|
||||
Count,
|
||||
}
|
||||
|
||||
public enum LogLevel
|
||||
{
|
||||
#if LANG_DE
|
||||
[Description("Aus")] Off,
|
||||
[Description("Schwerwiegend")] Fatal,
|
||||
[Description("Fehler")] Error,
|
||||
[Description("Warnung")] Warn,
|
||||
[Description("Info")] Info,
|
||||
[Description("Debug")] Debug,
|
||||
[Description("Alles")] All,
|
||||
#else
|
||||
[Description("Off")] Off,
|
||||
[Description("Fatal")] Fatal,
|
||||
[Description("Error")] Error,
|
||||
[Description("Warn")] Warn,
|
||||
[Description("Info")] Info,
|
||||
[Description("Debug")] Debug,
|
||||
[Description("All")] All,
|
||||
#endif
|
||||
Count,
|
||||
}
|
||||
|
||||
|
||||
/// <summary> Arrangement of tests </summary>
|
||||
public enum TestsArrangement
|
||||
{
|
||||
Rows,
|
||||
Columns,
|
||||
}
|
||||
|
||||
/// <summary> Arrangement of meters </summary>
|
||||
public enum MetersArrangement
|
||||
{
|
||||
Vertically,
|
||||
Horizontally,
|
||||
}
|
||||
|
||||
public enum Alignment
|
||||
{
|
||||
#if LANG_DE
|
||||
[Description("links")] Left,
|
||||
[Description("zentriert")] Center,
|
||||
[Description("rechts")] Right,
|
||||
[Description("angepasst")] Justified,
|
||||
#else
|
||||
[Description("Left")] Left,
|
||||
[Description("Center")] Center,
|
||||
[Description("Right")] Right,
|
||||
[Description("Justified")] Justified,
|
||||
#endif
|
||||
Count
|
||||
}
|
||||
|
||||
public enum ImageRotation
|
||||
{
|
||||
[Description("0 deg")] None,
|
||||
[Description("90 deg")] Deg90,
|
||||
[Description("180 deg")] Deg180,
|
||||
[Description("270 deg")] Deg270,
|
||||
Count
|
||||
}
|
||||
|
||||
public enum CameraDisplayResolution
|
||||
{
|
||||
Small,
|
||||
Medium,
|
||||
Large,
|
||||
// FullScreen,
|
||||
Count,
|
||||
}
|
||||
|
||||
public enum ErrorFlagsMode : sbyte
|
||||
{
|
||||
#if LANG_DE
|
||||
[Description("aus")] Off,
|
||||
[Description("info")] Info,
|
||||
[Description("ein")] On,
|
||||
#elif LANG_CS
|
||||
[Description("vypnuto")] Off,
|
||||
[Description("info")] Info,
|
||||
[Description("zapnuto")] On,
|
||||
#elif LANG_RU
|
||||
[Description("выкл")] Off,
|
||||
[Description("инфо")] Info,
|
||||
[Description("вкл")] On,
|
||||
#elif LANG_PL
|
||||
[Description("nie")] Off,
|
||||
[Description("info")] Info,
|
||||
[Description("tak")] On,
|
||||
#else // LANG_EN
|
||||
[Description("off")] Off,
|
||||
[Description("info")] Info,
|
||||
[Description("on")] On,
|
||||
#endif
|
||||
Count
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class FeedingPath : IHasName, IHasItemNr, IHasValves
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string OriName { get; set; } /// Not mapped to database
|
||||
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
|
||||
public virtual float Qto { get; set; } /// Water flow in [m3/h]
|
||||
public virtual string Pump { get; set; }
|
||||
public virtual string RegulValvesPct { get; set; } /// Positions of regulation valves in % separated by ';'
|
||||
|
||||
/// Valves
|
||||
public virtual string ValvesOpen { get; set; }
|
||||
public virtual string ValvesClose { get; set; }
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
public FeedingPath()
|
||||
{
|
||||
ValvesOpen = string.Empty;
|
||||
ValvesClose = string.Empty;
|
||||
}
|
||||
|
||||
public FeedingPath(string name, int itemNr)
|
||||
: this()
|
||||
{
|
||||
Name = name;
|
||||
ItemNr = itemNr;
|
||||
}
|
||||
|
||||
public virtual FeedingPath Clone(string name, int itemNr)
|
||||
{
|
||||
FeedingPath result = new FeedingPath(name, itemNr);
|
||||
|
||||
result.Qfrom = Qfrom;
|
||||
result.Qto = Qto;
|
||||
result.Pump = Pump;
|
||||
result.RegulValvesPct = RegulValvesPct;
|
||||
result.ValvesOpen = ValvesOpen;
|
||||
result.ValvesClose = ValvesClose;
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class Group
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int Gid { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
|
||||
public Group()
|
||||
{
|
||||
}
|
||||
|
||||
public Group(int gid, string name)
|
||||
{
|
||||
Gid = gid;
|
||||
Name = name;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
///
|
||||
/// Copyright (c) 2016-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class HeatMetersPath : IHasName, IHasItemNr
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string OriName { get; set; } /// Not mapped to database
|
||||
|
||||
public virtual float TempWarmFrom { get; set; } /// Warm temperature range from [°C]
|
||||
public virtual float TempWarmTo { get; set; } /// Warm temperature range to [°C]
|
||||
public virtual float TempColdFrom { get; set; } /// Cold temperature range from [°C]
|
||||
public virtual float TempColdTo { get; set; } /// Cold temperature renge to [°C]
|
||||
|
||||
public virtual string TMeterRefWarm1 { get; set; }
|
||||
public virtual string TMeterRefWarm2 { get; set; }
|
||||
public virtual string TMeterRefCold1 { get; set; }
|
||||
public virtual string TMeterRefCold2 { get; set; }
|
||||
|
||||
public virtual string TMeterWorkWarm1 { get; set; }
|
||||
public virtual string TMeterWorkWarm2 { get; set; }
|
||||
public virtual string TMeterWorkCold1 { get; set; }
|
||||
public virtual string TMeterWorkCold2 { get; set; }
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
public HeatMetersPath()
|
||||
{
|
||||
}
|
||||
|
||||
public HeatMetersPath(string name, int itemNr)
|
||||
: this()
|
||||
{
|
||||
Name = name;
|
||||
ItemNr = itemNr;
|
||||
}
|
||||
|
||||
public virtual HeatMetersPath Clone(string name, int itemNr)
|
||||
{
|
||||
HeatMetersPath result = new HeatMetersPath(name, itemNr);
|
||||
|
||||
result.TempWarmFrom = TempWarmFrom;
|
||||
result.TempWarmTo = TempWarmTo;
|
||||
result.TempColdFrom = TempColdFrom;
|
||||
result.TempColdTo = TempColdTo;
|
||||
|
||||
result.TMeterRefWarm1 = TMeterRefWarm1;
|
||||
result.TMeterRefWarm2 = TMeterRefWarm2;
|
||||
result.TMeterRefCold1 = TMeterRefCold1;
|
||||
result.TMeterRefCold2 = TMeterRefCold2;
|
||||
|
||||
result.TMeterWorkWarm1 = TMeterWorkWarm1;
|
||||
result.TMeterWorkWarm2 = TMeterWorkWarm2;
|
||||
result.TMeterWorkCold1 = TMeterWorkCold1;
|
||||
result.TMeterWorkCold2 = TMeterWorkCold2;
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
namespace TBF.Entities
|
||||
namespace Config.Entities
|
||||
{
|
||||
interface IHasItemNr
|
||||
public interface IHasItemNr
|
||||
{
|
||||
int Id { get; }
|
||||
int ItemNr { get; set; }
|
||||
@@ -0,0 +1,11 @@
|
||||
///
|
||||
/// Copyright (c) 2017 Sensus Metering Systems
|
||||
///
|
||||
namespace Config.Entities
|
||||
{
|
||||
public interface IHasName
|
||||
{
|
||||
int Id { get; }
|
||||
string Name { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
namespace TBF.Entities
|
||||
namespace Config.Entities
|
||||
{
|
||||
public interface IHasValves
|
||||
{
|
||||
@@ -0,0 +1,22 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2018 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class MeasurementCorrection
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int RangeIx { get; set; } /// 0..5
|
||||
public virtual float Measurement { get; set; }
|
||||
public virtual float Correction { get; set; }
|
||||
|
||||
public MeasurementCorrection() { }
|
||||
|
||||
public MeasurementCorrection(int rangeIx)
|
||||
{
|
||||
RangeIx = rangeIx;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,17 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TBF.Entities
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class MetersPath : IHasItemNr
|
||||
public class MetersPath : IHasName, IHasItemNr
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
|
||||
public virtual float Qto { get; set; } /// Water flow in [m3/h]
|
||||
public virtual string OriName { get; set; } /// Not mapped to database
|
||||
|
||||
/// Sensors
|
||||
public virtual string Sensor1 { get; set; }
|
||||
@@ -35,7 +34,6 @@ namespace TBF.Entities
|
||||
public virtual string Sensor18 { get; set; }
|
||||
public virtual string Sensor19 { get; set; }
|
||||
public virtual string Sensor20 { get; set; }
|
||||
#if IPERLST
|
||||
public virtual string Sensor21 { get; set; }
|
||||
public virtual string Sensor22 { get; set; }
|
||||
public virtual string Sensor23 { get; set; }
|
||||
@@ -56,7 +54,6 @@ namespace TBF.Entities
|
||||
public virtual string Sensor38 { get; set; }
|
||||
public virtual string Sensor39 { get; set; }
|
||||
public virtual string Sensor40 { get; set; }
|
||||
#endif
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
@@ -71,62 +68,9 @@ namespace TBF.Entities
|
||||
ItemNr = itemNr;
|
||||
}
|
||||
|
||||
public MetersPath(BenchControl.MetersPath path)
|
||||
: this(path.Name, path.ItemNr)
|
||||
{
|
||||
Qfrom = path.Qfrom;
|
||||
Qto = path.Qto;
|
||||
Sensor1 = (path.RegisterReaders[0] != null) ? path.RegisterReaders[0].Cfg.Name : null;
|
||||
#pragma warning disable
|
||||
if (Program.WMsCount >= 2) Sensor2 = (path.RegisterReaders[1] != null) ? path.RegisterReaders[1].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 3) Sensor3 = (path.RegisterReaders[2] != null) ? path.RegisterReaders[2].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 4) Sensor4 = (path.RegisterReaders[3] != null) ? path.RegisterReaders[3].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 5) Sensor5 = (path.RegisterReaders[4] != null) ? path.RegisterReaders[4].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 6) Sensor6 = (path.RegisterReaders[5] != null) ? path.RegisterReaders[5].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 7) Sensor7 = (path.RegisterReaders[6] != null) ? path.RegisterReaders[6].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 8) Sensor8 = (path.RegisterReaders[7] != null) ? path.RegisterReaders[7].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 9) Sensor9 = (path.RegisterReaders[8] != null) ? path.RegisterReaders[8].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 10) Sensor10 = (path.RegisterReaders[9] != null) ? path.RegisterReaders[9].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 11) Sensor11 = (path.RegisterReaders[10] != null) ? path.RegisterReaders[10].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 12) Sensor12 = (path.RegisterReaders[11] != null) ? path.RegisterReaders[11].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 13) Sensor13 = (path.RegisterReaders[12] != null) ? path.RegisterReaders[12].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 14) Sensor14 = (path.RegisterReaders[13] != null) ? path.RegisterReaders[13].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 15) Sensor15 = (path.RegisterReaders[14] != null) ? path.RegisterReaders[14].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 16) Sensor16 = (path.RegisterReaders[15] != null) ? path.RegisterReaders[15].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 17) Sensor17 = (path.RegisterReaders[16] != null) ? path.RegisterReaders[16].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 18) Sensor18 = (path.RegisterReaders[17] != null) ? path.RegisterReaders[17].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 19) Sensor19 = (path.RegisterReaders[18] != null) ? path.RegisterReaders[18].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 20) Sensor20 = (path.RegisterReaders[19] != null) ? path.RegisterReaders[19].Cfg.Name : null;
|
||||
#if IPERLST
|
||||
if (Program.WMsCount >= 21) Sensor21 = (path.RegisterReaders[20] != null) ? path.RegisterReaders[20].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 22) Sensor22 = (path.RegisterReaders[21] != null) ? path.RegisterReaders[21].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 23) Sensor23 = (path.RegisterReaders[22] != null) ? path.RegisterReaders[22].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 24) Sensor24 = (path.RegisterReaders[23] != null) ? path.RegisterReaders[23].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 25) Sensor25 = (path.RegisterReaders[24] != null) ? path.RegisterReaders[24].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 26) Sensor26 = (path.RegisterReaders[25] != null) ? path.RegisterReaders[25].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 27) Sensor27 = (path.RegisterReaders[26] != null) ? path.RegisterReaders[26].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 28) Sensor28 = (path.RegisterReaders[27] != null) ? path.RegisterReaders[27].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 29) Sensor29 = (path.RegisterReaders[28] != null) ? path.RegisterReaders[28].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 30) Sensor30 = (path.RegisterReaders[29] != null) ? path.RegisterReaders[29].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 31) Sensor31 = (path.RegisterReaders[30] != null) ? path.RegisterReaders[30].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 32) Sensor32 = (path.RegisterReaders[31] != null) ? path.RegisterReaders[31].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 33) Sensor33 = (path.RegisterReaders[32] != null) ? path.RegisterReaders[32].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 34) Sensor34 = (path.RegisterReaders[33] != null) ? path.RegisterReaders[33].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 35) Sensor35 = (path.RegisterReaders[34] != null) ? path.RegisterReaders[34].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 36) Sensor36 = (path.RegisterReaders[35] != null) ? path.RegisterReaders[35].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 37) Sensor37 = (path.RegisterReaders[36] != null) ? path.RegisterReaders[36].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 38) Sensor38 = (path.RegisterReaders[37] != null) ? path.RegisterReaders[37].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 39) Sensor39 = (path.RegisterReaders[38] != null) ? path.RegisterReaders[38].Cfg.Name : null;
|
||||
if (Program.WMsCount >= 40) Sensor40 = (path.RegisterReaders[39] != null) ? path.RegisterReaders[39].Cfg.Name : null;
|
||||
#endif
|
||||
#pragma warning restore
|
||||
}
|
||||
|
||||
public virtual MetersPath Clone(string name, int itemNr)
|
||||
{
|
||||
MetersPath result = new MetersPath(name, itemNr);
|
||||
result.Qfrom = Qfrom;
|
||||
result.Qto = Qto;
|
||||
result.Sensor1 = Sensor1;
|
||||
result.Sensor2 = Sensor2;
|
||||
result.Sensor3 = Sensor3;
|
||||
@@ -147,7 +91,6 @@ namespace TBF.Entities
|
||||
result.Sensor18 = Sensor18;
|
||||
result.Sensor19 = Sensor19;
|
||||
result.Sensor20 = Sensor20;
|
||||
#if IPERLST
|
||||
result.Sensor21 = Sensor21;
|
||||
result.Sensor22 = Sensor22;
|
||||
result.Sensor23 = Sensor23;
|
||||
@@ -168,7 +111,7 @@ namespace TBF.Entities
|
||||
result.Sensor38 = Sensor38;
|
||||
result.Sensor39 = Sensor39;
|
||||
result.Sensor40 = Sensor40;
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -195,7 +138,6 @@ namespace TBF.Entities
|
||||
else if (i == 17) return Sensor18;
|
||||
else if (i == 18) return Sensor19;
|
||||
else if (i == 19) return Sensor20;
|
||||
#if IPERLST
|
||||
else if (i == 20) return Sensor21;
|
||||
else if (i == 21) return Sensor22;
|
||||
else if (i == 22) return Sensor23;
|
||||
@@ -216,7 +158,6 @@ namespace TBF.Entities
|
||||
else if (i == 37) return Sensor38;
|
||||
else if (i == 38) return Sensor39;
|
||||
else if (i == 39) return Sensor40;
|
||||
#endif
|
||||
else return null;
|
||||
}
|
||||
|
||||
@@ -243,7 +184,6 @@ namespace TBF.Entities
|
||||
else if (i == 17) Sensor18 = cmpntName;
|
||||
else if (i == 18) Sensor19 = cmpntName;
|
||||
else if (i == 19) Sensor20 = cmpntName;
|
||||
#if IPERLST
|
||||
else if (i == 20) Sensor21 = cmpntName;
|
||||
else if (i == 21) Sensor22 = cmpntName;
|
||||
else if (i == 22) Sensor23 = cmpntName;
|
||||
@@ -264,7 +204,6 @@ namespace TBF.Entities
|
||||
else if (i == 37) Sensor38 = cmpntName;
|
||||
else if (i == 38) Sensor39 = cmpntName;
|
||||
else if (i == 39) Sensor40 = cmpntName;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class OutputPath : IHasName, IHasItemNr, IHasValves
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string OriName { get; set; } /// Not mapped to database
|
||||
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
|
||||
public virtual float Qto { get; set; } /// Water flow in [m3/h]
|
||||
public virtual string RegulValve { get; set; }
|
||||
public virtual string FlowMeter { get; set; }
|
||||
public virtual float PidCoef { get; set; } /// PID coefficient for the regulation path
|
||||
public virtual string StartValve { get; set; }
|
||||
public virtual string Diverter { get; set; }
|
||||
public virtual string TempDiv { get; set; }
|
||||
public virtual string Scale { get; set; }
|
||||
public virtual string EmptyTankValve { get; set; } /// Not used anywhere
|
||||
|
||||
/// Valves
|
||||
public virtual string ValvesOpen { get; set; }
|
||||
public virtual string ValvesClose { get; set; }
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
public OutputPath()
|
||||
{
|
||||
ValvesOpen = string.Empty;
|
||||
ValvesClose = string.Empty;
|
||||
}
|
||||
|
||||
public OutputPath(string name, int itemNr)
|
||||
: this()
|
||||
{
|
||||
Name = name;
|
||||
ItemNr = itemNr;
|
||||
}
|
||||
|
||||
public virtual OutputPath Clone(string name, int itemNr)
|
||||
{
|
||||
OutputPath result = new OutputPath(name, itemNr);
|
||||
|
||||
result.Name = Name;
|
||||
result.Qfrom = Qfrom;
|
||||
result.Qto = Qto;
|
||||
result.RegulValve = RegulValve;
|
||||
result.FlowMeter = FlowMeter;
|
||||
result.PidCoef = PidCoef;
|
||||
result.StartValve = StartValve;
|
||||
result.Diverter = Diverter;
|
||||
result.TempDiv = TempDiv;
|
||||
result.Scale = Scale;
|
||||
result.EmptyTankValve = EmptyTankValve;
|
||||
result.ValvesOpen = ValvesOpen;
|
||||
result.ValvesClose = ValvesClose;
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,233 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// Stores one test procedure, supports revisions and history log
|
||||
/// </summary>
|
||||
public class Procedure : IHasName, IHasItemNr
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
|
||||
public virtual string Description { get; set; } /// Short description
|
||||
public virtual string CreationUser { get; set; } /// Name of the user who has created or changed this procedure
|
||||
public virtual DateTime CreationTime { get; set; } /// Date and time of the creation or change
|
||||
public virtual string LastChgUser { get; set; } /// Name of the user who has created or changed this procedure
|
||||
public virtual DateTime LastChgTime { get; set; } /// Date and time of the creation or change
|
||||
public virtual string LongDescription { get; set; } /// Long description (notes)
|
||||
|
||||
public virtual ProcedureState ProcedureState { get; set; }
|
||||
public virtual int Revision { get; set; }
|
||||
public virtual int PredecessorId { get; set; }
|
||||
public virtual bool ObtainedByCopy { get; set; } /// Initial version of this procedure was a copy of another procedure
|
||||
///
|
||||
public virtual MetersKind MetersKind { get; set; } /// single / compound / heat meters
|
||||
public virtual string Watermeters { get; set; } /// Water meter name or Id
|
||||
public virtual bool Protected { get; set; } /// true = procedure cannot be changed by a testing specialist
|
||||
public virtual bool MustBeComplete { get; set; } /// true = procedure can be finished just when all tests were finished
|
||||
public virtual bool ManualCtrlDisabled { get; set; } /// true = manual control of valves, etc. is disabled
|
||||
|
||||
public virtual string DataEntry { get; set; } /// Component to use for data entry
|
||||
public virtual string ResultsPrinter { get; set; } /// Component to use for printing the results
|
||||
public virtual string ResultsWriter { get; set; } /// Component to use for saving the results into the file
|
||||
public virtual string TransitionStart { get; set; }
|
||||
public virtual string TransitionEnd { get; set; }
|
||||
|
||||
public virtual string AltProcName { get; set; } /// Alternative procedure name (null or string.Empty = no alt. procedure)
|
||||
public virtual int AltProcPeriod { get; set; } /// Period of alternative procedures (0 = no alt. procedure)
|
||||
|
||||
public virtual IList<ComponentProcedure> MoreParams { get; set; }
|
||||
public virtual IList<Test> Tests { get; set; }
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
public Procedure()
|
||||
{
|
||||
MoreParams = new List<ComponentProcedure>();
|
||||
Tests = new List<Test>();
|
||||
|
||||
///
|
||||
/// Default values
|
||||
///
|
||||
CreationUser = (Users.GlobalData.CurrentUser != null) ? Users.GlobalData.CurrentUser.UserName : null;
|
||||
CreationTime = DateTime.Now;
|
||||
LastChgUser = CreationUser;
|
||||
LastChgTime = CreationTime;
|
||||
MetersKind = Entities.MetersKind.Single;
|
||||
Watermeters = string.Empty;
|
||||
Description = string.Empty;
|
||||
LongDescription = string.Empty;
|
||||
}
|
||||
|
||||
public Procedure(string name, int itemNr)
|
||||
: this()
|
||||
{
|
||||
Name = name;
|
||||
ItemNr = itemNr;
|
||||
}
|
||||
|
||||
public virtual Procedure Clone()
|
||||
{
|
||||
Procedure result = new Procedure();
|
||||
|
||||
result.ItemNr = ItemNr;
|
||||
result.Name = Name;
|
||||
result.Description = Description;
|
||||
result.CreationUser = CreationUser;
|
||||
result.CreationTime = CreationTime;
|
||||
result.LastChgUser = LastChgUser;
|
||||
result.LastChgTime = LastChgTime;
|
||||
result.LongDescription = LongDescription;
|
||||
|
||||
result.ProcedureState = ProcedureState;
|
||||
result.Revision = Revision;
|
||||
result.PredecessorId = Id;
|
||||
result.ObtainedByCopy = ObtainedByCopy;
|
||||
|
||||
result.MetersKind = MetersKind;
|
||||
result.Watermeters = Watermeters;
|
||||
result.Protected = Protected;
|
||||
result.MustBeComplete = MustBeComplete;
|
||||
result.ManualCtrlDisabled = ManualCtrlDisabled;
|
||||
result.DataEntry = DataEntry;
|
||||
result.ResultsPrinter = ResultsPrinter;
|
||||
result.ResultsWriter = ResultsWriter;
|
||||
result.TransitionStart = TransitionStart;
|
||||
result.TransitionEnd = TransitionEnd;
|
||||
|
||||
foreach (var prms in MoreParams) { result.MoreParams.Add(prms.Clone(result)); }
|
||||
foreach (var test in Tests) { result.Tests.Add(test.Clone()); }
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public virtual void Export(StreamWriter output)
|
||||
{
|
||||
output.WriteLine(ItemNr.ToString(CultureInfo.InvariantCulture));
|
||||
output.WriteLine(Name);
|
||||
output.WriteLine(Description);
|
||||
output.WriteLine(CreationUser);
|
||||
output.WriteLine(CreationTime.ToString(CultureInfo.InvariantCulture));
|
||||
output.WriteLine(LastChgUser);
|
||||
output.WriteLine(LastChgTime.ToString(CultureInfo.InvariantCulture));
|
||||
output.WriteLine(MetersKind.ToString());
|
||||
output.WriteLine(Watermeters);
|
||||
output.WriteLine(Protected.ToString());
|
||||
output.WriteLine(MustBeComplete.ToString());
|
||||
output.WriteLine(ManualCtrlDisabled.ToString());
|
||||
output.WriteLine(DataEntry);
|
||||
output.WriteLine(ResultsPrinter);
|
||||
output.WriteLine(ResultsWriter);
|
||||
output.WriteLine(TransitionStart);
|
||||
output.WriteLine(TransitionEnd);
|
||||
|
||||
foreach (var prms in MoreParams) { prms.Export(output); }
|
||||
output.WriteLine();
|
||||
|
||||
foreach (var test in Tests) { test.Export(output); }
|
||||
output.WriteLine();
|
||||
|
||||
output.Close();
|
||||
}
|
||||
|
||||
public static Procedure Import(StreamReader input)
|
||||
{
|
||||
Procedure result = new Procedure();
|
||||
|
||||
result.ItemNr = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
|
||||
result.Name = input.ReadLine();
|
||||
result.Description = input.ReadLine();
|
||||
result.CreationUser = input.ReadLine();
|
||||
result.CreationTime = DateTime.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
|
||||
result.LastChgUser = input.ReadLine();
|
||||
result.LastChgTime = DateTime.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
|
||||
string line = input.ReadLine();
|
||||
result.MetersKind = line.Equals(MetersKind.Single.ToString()) ? MetersKind.Single : (line.Equals(MetersKind.Combined.ToString()) ? MetersKind.Combined : MetersKind.HeatMeter);
|
||||
result.Watermeters = input.ReadLine();
|
||||
result.Protected = bool.Parse(input.ReadLine());
|
||||
result.MustBeComplete = bool.Parse(input.ReadLine());
|
||||
result.ManualCtrlDisabled = bool.Parse(input.ReadLine());
|
||||
result.DataEntry = input.ReadLine();
|
||||
result.ResultsPrinter = input.ReadLine();
|
||||
result.ResultsWriter = input.ReadLine();
|
||||
result.TransitionStart = input.ReadLine();
|
||||
result.TransitionEnd = input.ReadLine();
|
||||
|
||||
while(true)
|
||||
{
|
||||
ComponentProcedure prms = ComponentProcedure.Import(input, result);
|
||||
if (prms == null)
|
||||
break;
|
||||
else
|
||||
result.MoreParams.Add(prms);
|
||||
}
|
||||
|
||||
while (true)
|
||||
{
|
||||
Test tst = Test.Import(input, result);
|
||||
if (tst == null)
|
||||
break;
|
||||
else
|
||||
result.Tests.Add(tst);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public virtual string Compare(StreamReader inp)
|
||||
{
|
||||
System.Text.StringBuilder diff = new System.Text.StringBuilder();
|
||||
const string fmt = "{0} = {1}\r\n (in the file {2})\r\n";
|
||||
string ln;
|
||||
|
||||
ln = inp.ReadLine(); /// skip ItemNr
|
||||
ln = inp.ReadLine(); if (ln != Name) { diff.AppendFormat(fmt, "Name", Name, ln); };
|
||||
ln = inp.ReadLine(); if (ln != Description) { diff.AppendFormat(fmt, "Description", Description, ln); };
|
||||
ln = inp.ReadLine(); /// skip CreationUser
|
||||
ln = inp.ReadLine(); /// skip CreationTime
|
||||
ln = inp.ReadLine(); /// skip LastChgUser
|
||||
ln = inp.ReadLine(); /// skip LastChgTime
|
||||
ln = inp.ReadLine(); if (ln != MetersKind.ToString()) { diff.AppendFormat(fmt, "MetersKind", MetersKind, ln); };
|
||||
ln = inp.ReadLine(); if (ln != Watermeters) { diff.AppendFormat(fmt, "Watermeters", Watermeters, ln); };
|
||||
|
||||
ln = inp.ReadLine(); if (ln != Protected.ToString()) { diff.AppendFormat(fmt, "Protected", Protected, ln); };
|
||||
ln = inp.ReadLine(); if (ln != MustBeComplete.ToString()) { diff.AppendFormat(fmt, "MustBeComplete", MustBeComplete, ln); };
|
||||
ln = inp.ReadLine(); if (ln != ManualCtrlDisabled.ToString()) { diff.AppendFormat(fmt, "ManualCtrlDisabled", ManualCtrlDisabled, ln); };
|
||||
ln = inp.ReadLine(); if (ln != DataEntry) { diff.AppendFormat(fmt, "DataEntry", DataEntry, ln); };
|
||||
ln = inp.ReadLine(); if (ln != ResultsPrinter) { diff.AppendFormat(fmt, "ResultsPrinter", ResultsPrinter, ln); };
|
||||
ln = inp.ReadLine(); if (ln != ResultsWriter) { diff.AppendFormat(fmt, "ResultsWriter", ResultsWriter, ln); };
|
||||
ln = inp.ReadLine(); if (ln != TransitionStart) { diff.AppendFormat(fmt, "TransitionStart", TransitionStart, ln); };
|
||||
ln = inp.ReadLine(); if (ln != TransitionEnd) { diff.AppendFormat(fmt, "TransitionEnd", TransitionEnd, ln); };
|
||||
|
||||
/// TODO Compare componentprocedure-s
|
||||
while (ComponentProcedure.Import(inp, null) != null)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//foreach (var test in Tests)
|
||||
//{
|
||||
// string testDiff = test.Compare(inp);
|
||||
// if (testDiff.Contains(
|
||||
//}
|
||||
|
||||
//bool extraTestsInFile = true;
|
||||
//while (Test.Import(inp, null) != null) { extraTestsInFile = true; }
|
||||
|
||||
return diff.ToString();
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0}, rev.{1}", Name, Revision);
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TBF.Entities
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class ProcedureHistory
|
||||
{
|
||||
@@ -0,0 +1,360 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// Test, consisting of one or more repetitions of the test 'SingleTest'.
|
||||
/// </summary>
|
||||
public class Test : IHasName, IHasItemNr
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual int Part { get; set; } /// Part=0 ... test of all WM-s
|
||||
/// Part>0 ... part of a set of tests with the same Name: subset of WM-s is given by MetersPath
|
||||
public virtual sbyte Publish { get; set; } /// 0=no, 1=in all protocols, 2=on screen, 3=internal
|
||||
public virtual bool DoEvaluate { get; set; }
|
||||
public virtual float Qfrom { get; set; } /// Water flow low limit in [m3/h]
|
||||
public virtual float Qto { get; set; } /// Water flow high limit in [m3/h]
|
||||
public virtual float Volume { get; set; } /// Test volume (target) in [l]
|
||||
public virtual float TstTime { get; set; } /// Test time (estimate) in [s]
|
||||
public virtual string Method { get; set; }
|
||||
public virtual float ErrLimLo { get; set; } /// in [%] (usually < 0) or 1=class1, 2=class2, 3=class3
|
||||
public virtual float ErrLimHi { get; set; } /// in [%] (usually > 0) or -Qn in m3/h
|
||||
public virtual float Uncertainty { get; set; } /// int [%] makes error limits tighter: 0 <= Uncertainty <= abs(ErrLimXx)
|
||||
public virtual int Repeats { get; set; }
|
||||
public virtual bool DoDraining { get; set; }
|
||||
public virtual bool DoZeroing { get; set; }
|
||||
public virtual bool DoControlWaterTemp { get; set; }
|
||||
public virtual float TempLimLo { get; set; } /// Lower limit for the controlled temperature
|
||||
public virtual float TempLimHi { get; set; } /// Upper limit for the controlled temperature
|
||||
public virtual float PumpPower { get; set; } /// Power of the pump in [%] in the range 0 .. 100.0f, use values 0% and 100% for non-FM pumps
|
||||
public virtual int MassRepeats { get; set; } /// Number of mass. measurements at the beginning/end of test, 0 = default (=5)
|
||||
public virtual float MassSpread { get; set; } /// Max spread of mass. measurements at the beginning/end of test, 0 = default
|
||||
public virtual MassMethod MassMethod { get; set; } /// method of mass. measurement at the beginning/end of test: false=slow (precise), true=using immediate mass measurement and evaluation
|
||||
public virtual int TimeBeforeFlow { get; set; } /// Delay time before the start of flow control in [s]
|
||||
public virtual int TimeFlow2Mass { get; set; } /// Delay time from the flow stable to the 1st mass measurement in [s]
|
||||
public virtual int TimePump2StartV { get; set; } /// Delay time from the start of the pump to opening the start valve in [s]
|
||||
public virtual int TimeStop2Mass { get; set; } /// Delay time from the test end (diverted) to the 2nd mass measuremen in [s]
|
||||
public virtual double TolerRed { get; set; } /// = Filter
|
||||
public virtual TestRedType RedType { get; set; }
|
||||
public virtual string FeedingPath { get; set; }
|
||||
public virtual string BenchPath { get; set; }
|
||||
public virtual string OutputPath { get; set; }
|
||||
public virtual string MetersPath { get; set; }
|
||||
#if HEAT_METERS
|
||||
public virtual string HeatMetersPath { get; set; }
|
||||
#endif
|
||||
public virtual string RelTransBefore { get; set; }
|
||||
public virtual string RelTransBetween { get; set; }
|
||||
public virtual string RelTransAfter { get; set; }
|
||||
public virtual string TransitionAfter { get; set; }
|
||||
|
||||
public virtual IList<ComponentTest> MoreParams { get; set; }
|
||||
|
||||
public virtual Procedure Procedure { get; set; }
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
public Test()
|
||||
{
|
||||
MoreParams = new List<ComponentTest>();
|
||||
|
||||
///
|
||||
/// Default values
|
||||
///
|
||||
Publish = (sbyte)Config.Entities.Publish.Always;
|
||||
DoEvaluate = true;
|
||||
Repeats = 1;
|
||||
DoDraining = false;
|
||||
DoZeroing = false;
|
||||
DoControlWaterTemp = false;
|
||||
TempLimLo = 15.0f;
|
||||
TempLimHi = 25.0f;
|
||||
ErrLimLo = -2.0f; /// [%] lower error limit
|
||||
ErrLimHi = 2.0f; /// [%] upper error limit
|
||||
Uncertainty = 0;
|
||||
PumpPower = 60.0f; /// [%]
|
||||
MassRepeats = 0; /// default
|
||||
MassSpread = 0; /// default
|
||||
MassMethod = MassMethod.Scale; /// default
|
||||
TimeBeforeFlow = 10; /// [s] time before the start of flow control in [s]
|
||||
TimeFlow2Mass = 5; /// [s] time from the flow stable to the 1st mass measurement in [s]
|
||||
TimePump2StartV = 1; /// [s] time from the 1st mass measurement to the test start in [s]
|
||||
TimeStop2Mass = 5; /// [s] between the test end and the final mass measurement
|
||||
TolerRed = 0; /// = Filter parameter
|
||||
RelTransBefore = string.Empty;
|
||||
RelTransBetween = string.Empty;
|
||||
RelTransAfter = string.Empty;
|
||||
TransitionAfter = string.Empty;
|
||||
}
|
||||
|
||||
public Test(string name, int itemNr, Procedure procedure)
|
||||
: this()
|
||||
{
|
||||
Name = name;
|
||||
ItemNr = itemNr;
|
||||
Procedure = procedure;
|
||||
}
|
||||
|
||||
// Makes a new copy of this object (not just a reference)
|
||||
public virtual Test Clone()
|
||||
{
|
||||
Test result = new Test(Name, ItemNr, Procedure);
|
||||
|
||||
result.Part = Part;
|
||||
result.Publish = Publish;
|
||||
result.DoEvaluate = DoEvaluate;
|
||||
result.Qfrom = Qfrom;
|
||||
result.Qto = Qto;
|
||||
result.Volume = Volume;
|
||||
result.TstTime = TstTime;
|
||||
result.Method = Method;
|
||||
result.ErrLimLo = ErrLimLo;
|
||||
result.ErrLimHi = ErrLimHi;
|
||||
result.Uncertainty = Uncertainty;
|
||||
result.Repeats = Repeats;
|
||||
result.DoDraining = DoDraining;
|
||||
result.DoZeroing = DoZeroing;
|
||||
result.DoControlWaterTemp = DoControlWaterTemp;
|
||||
result.TempLimLo = TempLimLo;
|
||||
result.TempLimHi = TempLimHi;
|
||||
result.PumpPower = PumpPower;
|
||||
result.MassRepeats = MassRepeats;
|
||||
result.MassSpread = MassSpread;
|
||||
result.MassMethod = MassMethod;
|
||||
result.TimeBeforeFlow = TimeBeforeFlow;
|
||||
result.TimeFlow2Mass = TimeFlow2Mass;
|
||||
result.TimePump2StartV = TimePump2StartV;
|
||||
result.TimeStop2Mass = TimeStop2Mass;
|
||||
result.TolerRed = TolerRed;
|
||||
result.RedType = RedType;
|
||||
result.FeedingPath = FeedingPath;
|
||||
result.BenchPath = BenchPath;
|
||||
result.OutputPath = OutputPath;
|
||||
result.MetersPath = MetersPath;
|
||||
#if HEAT_METERS
|
||||
result.HeatMetersPath = HeatMetersPath;
|
||||
#endif
|
||||
result.RelTransBefore = RelTransBefore;
|
||||
result.RelTransBetween = RelTransBetween;
|
||||
result.RelTransAfter = RelTransAfter;
|
||||
result.TransitionAfter = TransitionAfter;
|
||||
foreach (var prms in MoreParams) { result.MoreParams.Add(prms.Clone()); }
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public virtual void Export(StreamWriter output)
|
||||
{
|
||||
CultureInfo ci = CultureInfo.InvariantCulture;
|
||||
|
||||
output.WriteLine(Name);
|
||||
output.WriteLine(Part.ToString(ci));
|
||||
output.WriteLine(Publish.ToString(ci));
|
||||
output.WriteLine(DoEvaluate.ToString());
|
||||
output.WriteLine(Qfrom.ToString(ci));
|
||||
output.WriteLine(Qto.ToString(ci));
|
||||
output.WriteLine(Volume.ToString(ci));
|
||||
output.WriteLine(TstTime.ToString(ci));
|
||||
output.WriteLine(Method);
|
||||
output.WriteLine(ErrLimLo.ToString(ci));
|
||||
output.WriteLine(ErrLimHi.ToString(ci));
|
||||
output.WriteLine(Uncertainty.ToString(ci));
|
||||
output.WriteLine(Repeats.ToString(ci));
|
||||
output.WriteLine(DoDraining.ToString());
|
||||
output.WriteLine(DoZeroing.ToString());
|
||||
output.WriteLine(DoControlWaterTemp.ToString());
|
||||
output.WriteLine(TempLimLo.ToString(ci));
|
||||
output.WriteLine(TempLimHi.ToString(ci));
|
||||
output.WriteLine(PumpPower.ToString(ci));
|
||||
output.WriteLine(MassRepeats.ToString(ci));
|
||||
output.WriteLine(MassSpread.ToString(ci));
|
||||
output.WriteLine(((byte)MassMethod).ToString(ci));
|
||||
output.WriteLine(TimeBeforeFlow.ToString(ci));
|
||||
output.WriteLine(TimeFlow2Mass.ToString(ci));
|
||||
output.WriteLine(TimePump2StartV.ToString(ci));
|
||||
output.WriteLine(TimeStop2Mass.ToString(ci));
|
||||
output.WriteLine(FeedingPath);
|
||||
output.WriteLine(BenchPath);
|
||||
output.WriteLine(OutputPath);
|
||||
output.WriteLine(MetersPath);
|
||||
output.WriteLine(RelTransBefore);
|
||||
output.WriteLine(RelTransBetween);
|
||||
output.WriteLine(RelTransAfter);
|
||||
output.WriteLine(TransitionAfter);
|
||||
|
||||
foreach (var prms in MoreParams) { prms.Export(output); }
|
||||
output.WriteLine();
|
||||
}
|
||||
|
||||
public static Test Import(StreamReader input, Procedure newProcedure)
|
||||
{
|
||||
string firstLine = input.ReadLine();
|
||||
if (string.IsNullOrEmpty(firstLine))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
CultureInfo ci = CultureInfo.InvariantCulture;
|
||||
Test tst = new Test();
|
||||
|
||||
tst.Name = firstLine;
|
||||
tst.Part = int.Parse(input.ReadLine(), ci);
|
||||
tst.Publish = sbyte.Parse(input.ReadLine(), ci);
|
||||
tst.DoEvaluate = bool.Parse(input.ReadLine());
|
||||
tst.Qfrom = float.Parse(input.ReadLine(), ci);
|
||||
tst.Qto = float.Parse(input.ReadLine(), ci);
|
||||
tst.Volume = float.Parse(input.ReadLine(), ci);
|
||||
tst.TstTime = float.Parse(input.ReadLine(), ci);
|
||||
tst.Method = input.ReadLine();
|
||||
tst.ErrLimLo = float.Parse(input.ReadLine(), ci);
|
||||
tst.ErrLimHi = float.Parse(input.ReadLine(), ci);
|
||||
tst.Uncertainty = float.Parse(input.ReadLine(), ci);
|
||||
tst.Repeats = int.Parse(input.ReadLine(), ci);
|
||||
tst.DoDraining = bool.Parse(input.ReadLine());
|
||||
tst.DoZeroing = bool.Parse(input.ReadLine());
|
||||
tst.DoControlWaterTemp = bool.Parse(input.ReadLine());
|
||||
tst.TempLimLo = float.Parse(input.ReadLine(), ci);
|
||||
tst.TempLimHi = float.Parse(input.ReadLine(), ci);
|
||||
tst.PumpPower = float.Parse(input.ReadLine(), ci);
|
||||
tst.MassRepeats = int.Parse(input.ReadLine(), ci);
|
||||
tst.MassSpread = float.Parse(input.ReadLine(), ci);
|
||||
tst.MassMethod = (MassMethod)byte.Parse(input.ReadLine(), ci);
|
||||
tst.TimeBeforeFlow = int.Parse(input.ReadLine(), ci);
|
||||
tst.TimeFlow2Mass = int.Parse(input.ReadLine(), ci);
|
||||
tst.TimePump2StartV = int.Parse(input.ReadLine(), ci);
|
||||
tst.TimeStop2Mass = int.Parse(input.ReadLine(), ci);
|
||||
tst.FeedingPath = input.ReadLine();
|
||||
tst.BenchPath = input.ReadLine();
|
||||
tst.OutputPath = input.ReadLine();
|
||||
tst.MetersPath = input.ReadLine();
|
||||
tst.RelTransBefore = input.ReadLine();
|
||||
tst.RelTransBetween = input.ReadLine();
|
||||
tst.RelTransAfter = input.ReadLine();
|
||||
tst.TransitionAfter = input.ReadLine();
|
||||
|
||||
while (true)
|
||||
{
|
||||
ComponentTest prms = ComponentTest.Import(input, tst);
|
||||
if (prms == null)
|
||||
break;
|
||||
else
|
||||
tst.MoreParams.Add(prms);
|
||||
}
|
||||
|
||||
tst.Procedure = newProcedure;
|
||||
return tst;
|
||||
}
|
||||
|
||||
public virtual string Compare(StreamReader inp)
|
||||
{
|
||||
System.Text.StringBuilder diff = new System.Text.StringBuilder();
|
||||
string fmt = string.Format("Test {0} : ", Name) + "{0} = {1}\r\n (in the file {2})\r\n";
|
||||
string ln;
|
||||
CultureInfo ci = CultureInfo.InvariantCulture;
|
||||
|
||||
string firstLine = inp.ReadLine();
|
||||
if (string.IsNullOrEmpty(firstLine)) return string.Format("Test {0} is missing in the file\r\n", Name);
|
||||
|
||||
if (Name != firstLine) { diff.AppendFormat(fmt, "Name", Name, firstLine); };
|
||||
ln = inp.ReadLine(); if (ln != Part.ToString(ci)) { diff.AppendFormat(fmt, "Part", Part.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != Publish.ToString(ci)) { diff.AppendFormat(fmt, "Publish", Publish.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != DoEvaluate.ToString(ci)) { diff.AppendFormat(fmt, "Evaluate", DoEvaluate.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != Qfrom.ToString(ci)) { diff.AppendFormat(fmt, "Qfrom", Qfrom.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != Qto.ToString(ci)) { diff.AppendFormat(fmt, "Qto", Qto.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != Volume.ToString(ci)) { diff.AppendFormat(fmt, "Volume", Volume.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != TstTime.ToString(ci)) { diff.AppendFormat(fmt, "TstTime", TstTime.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != Method) { diff.AppendFormat(fmt, "Method", Method, ln); };
|
||||
ln = inp.ReadLine(); if (ln != ErrLimLo.ToString(ci)) { diff.AppendFormat(fmt, "ErrLimLo", ErrLimLo.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != ErrLimHi.ToString(ci)) { diff.AppendFormat(fmt, "ErrLimHi", ErrLimHi.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != Uncertainty.ToString(ci)) { diff.AppendFormat(fmt, "Uncertainty", Uncertainty.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != Repeats.ToString(ci)) { diff.AppendFormat(fmt, "Repeats", Repeats.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != DoDraining.ToString(ci)) { diff.AppendFormat(fmt, "Draining", DoDraining.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != DoZeroing.ToString(ci)) { diff.AppendFormat(fmt, "Zeroing", DoZeroing.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != DoControlWaterTemp.ToString()) { diff.AppendFormat(fmt, "DoControlWaterTemp", DoControlWaterTemp.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != TempLimLo.ToString(ci)) { diff.AppendFormat(fmt, "TempLimLo", TempLimLo.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != TempLimHi.ToString(ci)) { diff.AppendFormat(fmt, "TempLimHi", TempLimHi.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != PumpPower.ToString(ci)) { diff.AppendFormat(fmt, "PumpPower", PumpPower.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != MassRepeats.ToString(ci)) { diff.AppendFormat(fmt, "MassRepeats", MassRepeats.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != MassSpread.ToString(ci)) { diff.AppendFormat(fmt, "MassSpread", MassSpread.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != ((byte)MassMethod).ToString(ci)) { diff.AppendFormat(fmt, "MassMethod", ((byte)MassMethod).ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != TimeBeforeFlow.ToString(ci)) { diff.AppendFormat(fmt, "TimeBeforeFlow", TimeBeforeFlow.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != TimeFlow2Mass.ToString(ci)) { diff.AppendFormat(fmt, "TimeFlow2Mass", TimeFlow2Mass.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != TimePump2StartV.ToString(ci)) { diff.AppendFormat(fmt, "TimePump2StartV", TimePump2StartV.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != TimeStop2Mass.ToString(ci)) { diff.AppendFormat(fmt, "TimeStop2Mass", TimeStop2Mass.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != FeedingPath) { diff.AppendFormat(fmt, "FeedingPath", FeedingPath, ln); };
|
||||
ln = inp.ReadLine(); if (ln != BenchPath) { diff.AppendFormat(fmt, "BenchPath", BenchPath, ln); };
|
||||
ln = inp.ReadLine(); if (ln != OutputPath) { diff.AppendFormat(fmt, "OutputPath", OutputPath, ln); };
|
||||
ln = inp.ReadLine(); if (ln != MetersPath) { diff.AppendFormat(fmt, "MetersPath", MetersPath, ln); };
|
||||
ln = inp.ReadLine(); if (ln != RelTransBefore) { diff.AppendFormat(fmt, "RelTransBefore", RelTransBefore, ln); };
|
||||
ln = inp.ReadLine(); if (ln != RelTransBetween) { diff.AppendFormat(fmt, "RelTransBetween", RelTransBetween, ln); };
|
||||
ln = inp.ReadLine(); if (ln != RelTransAfter) { diff.AppendFormat(fmt, "RelTransAfter", RelTransAfter, ln); };
|
||||
ln = inp.ReadLine(); if (ln != TransitionAfter) { diff.AppendFormat(fmt, "TransitionAfter", TransitionAfter, ln); };
|
||||
|
||||
return diff.ToString();
|
||||
}
|
||||
|
||||
public virtual float GetErrLimLo(float flow)
|
||||
{
|
||||
if (ErrLimLo <= ErrLimHi)
|
||||
{
|
||||
return ErrLimLo; /// Error limit of a water meter
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Metrological class and nominal flow of a heat meter
|
||||
int metrClass = (int)Math.Round(ErrLimLo);
|
||||
float Qp = Math.Abs(ErrLimHi);
|
||||
float Q = Math.Max(flow, 0.00001f); /// to avoid division by zero
|
||||
|
||||
/// Calculate the error limit of a heat meter
|
||||
switch (metrClass)
|
||||
{
|
||||
default:
|
||||
case 1: return -Math.Min(3.5f, 1.0f + 0.01f * Qp / Q);
|
||||
case 2: return -Math.Min(5.0f, 2.0f + 0.02f * Qp / Q);
|
||||
case 3: return -Math.Min(5.0f, 3.0f + 0.05f * Qp / Q);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual float GetErrLimHi(float flow)
|
||||
{
|
||||
if (ErrLimLo <= ErrLimHi)
|
||||
{
|
||||
return ErrLimHi; /// Error limit of a water meter
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Metrological class and nominal flow of a heat meter
|
||||
int metrClass = (int)Math.Round(ErrLimLo);
|
||||
float Qp = Math.Abs(ErrLimHi);
|
||||
float Q = Math.Max(flow, 0.00001f); /// to avoid division by zero
|
||||
|
||||
/// Calculate the error limit of a heat meter
|
||||
switch (metrClass)
|
||||
{
|
||||
default:
|
||||
case 1: return +Math.Min(3.5f, 1.0f + 0.01f * Qp / Q);
|
||||
case 2: return +Math.Min(5.0f, 2.0f + 0.02f * Qp / Q);
|
||||
case 3: return +Math.Min(5.0f, 3.0f + 0.05f * Qp / Q);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
string partStr = (Part > 0) ? string.Format(", part {0}", Part) : string.Empty;
|
||||
|
||||
return string.Format("{0}(P.{1},{2}){3}", Name, ((Publish)Publish).ToString(), DoEvaluate ? "E" : "-", partStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-3
@@ -3,17 +3,18 @@
|
||||
///
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TBF.Entities
|
||||
namespace Config.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// Stores one transition sequence containing a list of transition steps
|
||||
/// </summary>
|
||||
public class TransitionSequence : IHasItemNr
|
||||
public class TransitionSequence : IHasName, IHasItemNr
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string Description { get; set; } /// Short description
|
||||
public virtual string OriName { get; set; } /// Not mapped to database
|
||||
public virtual string Description { get; set; } /// Short description
|
||||
public virtual IList<TransitionStep> TransitionSteps { get; set; }
|
||||
|
||||
public TransitionSequence()
|
||||
@@ -1,10 +1,10 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
/// Copyright (c) 2013-2015, 2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TBF.Entities
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class TransitionStep : IHasItemNr, IHasValves
|
||||
{
|
||||
@@ -12,7 +12,7 @@ namespace TBF.Entities
|
||||
public virtual int ItemNr { get; set; } /// Order of the preparation step
|
||||
public virtual int Duration { get; set; } /// Duration in seconds
|
||||
public virtual string Message { get; set; } /// Message
|
||||
public virtual StepCondition EndCondition { get; set; } /// Condition when transition step is finished (next to the duration)
|
||||
public virtual string EndCondition { get; set; } /// Condition when transition step is finished (next to the duration)
|
||||
public virtual string ValvesOpen { get; set; } /// List of valves to be opened
|
||||
public virtual string ValvesClose { get; set; } /// List of valves to be closed
|
||||
public virtual string RegulValvesPct { get; set; } /// Positions of regulation valves in % separated by ';'
|
||||
@@ -24,8 +24,8 @@ namespace TBF.Entities
|
||||
|
||||
public TransitionStep()
|
||||
{
|
||||
Duration = 5; /// sec.
|
||||
EndCondition = (int)StepCondition.None;
|
||||
Duration = 5; /// sec.
|
||||
EndCondition = "None";
|
||||
}
|
||||
|
||||
public TransitionStep(int itemNr, TransitionSequence sequence)
|
||||
@@ -54,11 +54,11 @@ namespace TBF.Entities
|
||||
result += indent + "ItemNr = " + ItemNr.ToString() + ", ";
|
||||
result += indent + "Duration = " + Duration.ToString() + ", ";
|
||||
result += indent + "Message = " + Message + ", ";
|
||||
result += indent + "EndCondition = " + EndCondition.ToString() + ", ";
|
||||
result += indent + "ValvesOpen = " + ValvesOpen.ToString() + ", ";
|
||||
result += indent + "ValvesClose = " + ValvesClose.ToString() + ", ";
|
||||
result += indent + "RegulValvesPct = " + RegulValvesPct.ToString() + ", ";
|
||||
result += indent + "PumpsWithFMPct = " + RegulValvesPct.ToString() + Environment.NewLine;
|
||||
result += indent + "EndCondition = " + EndCondition + ", ";
|
||||
result += indent + "ValvesOpen = " + ValvesOpen + ", ";
|
||||
result += indent + "ValvesClose = " + ValvesClose + ", ";
|
||||
result += indent + "RegulValvesPct = " + RegulValvesPct + ", ";
|
||||
result += indent + "PumpsWithFMPct = " + PumpWithFMPcts + Environment.NewLine;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class User
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual string UserName { get; set; } /// = name, alias, abbreviation
|
||||
public virtual string FullName { get; set; } /// = description
|
||||
public virtual int Number { get; set; }
|
||||
public virtual string Password { get; set; }
|
||||
public virtual DateTime LastPwChange { get; set; }
|
||||
public virtual IList<Group> Groups { get; set; } //User can be a member of a list of groups
|
||||
|
||||
public User()
|
||||
{
|
||||
Groups = new List<Group>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a group to the user.
|
||||
/// </summary>
|
||||
/// <param name="group">Group to be added</param>
|
||||
public virtual void AddGroup(Group group)
|
||||
{
|
||||
Groups.Add(group);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Encrypts and sets users password.
|
||||
/// </summary>
|
||||
/// <param name="password">Unencrypted password</param>
|
||||
public virtual void SetPassword(string password)
|
||||
{
|
||||
Password = Users.Entities.User.getHash(password);
|
||||
LastPwChange = DateTime.Now;
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-3
@@ -4,14 +4,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TBF.Entities
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class VirtualBenchSequence : IHasItemNr
|
||||
public class VirtualBenchSequence : IHasName, IHasItemNr
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string Description { get; set; } /// Short description
|
||||
public virtual string OriName { get; set; } /// Not mapped to database
|
||||
public virtual string Description { get; set; } /// Short description
|
||||
public virtual IList<VirtualBenchStep> VirtualBenchSteps { get; set; }
|
||||
|
||||
public VirtualBenchSequence()
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TBF.Entities
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class VirtualBenchStep : IHasItemNr
|
||||
{
|
||||
@@ -9,7 +9,7 @@ using System.Text;
|
||||
/// This class holds the watermeter type specific data
|
||||
/// that have all watermaters of the same type in common
|
||||
|
||||
namespace TBF.Entities
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class WMType
|
||||
{
|
||||
@@ -41,7 +41,7 @@ namespace TBF.Entities
|
||||
WMType procedure = new WMType()
|
||||
{
|
||||
CreateTime = DateTime.Now,
|
||||
CreateUserName = User.CurrentUser.Name,
|
||||
CreateUserName = Users.GlobalData.CurrentUser.UserName,
|
||||
CreateDescription = "A default water meter created.",
|
||||
Name = "Watermeter",
|
||||
PulseRate = 1000,
|
||||
@@ -6,11 +6,10 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using TBF;
|
||||
using NHibernate;
|
||||
using FluentNHibernate;
|
||||
|
||||
namespace TBF.Entities
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class Watermeter
|
||||
{
|
||||
@@ -30,7 +29,7 @@ namespace TBF.Entities
|
||||
/// </summary>
|
||||
public static Watermeter LoadBySerialnr(string SerialNr)
|
||||
{
|
||||
IList<Watermeter> ListOfWatermeters = FluentCommon.CreateSession(Database.WaterMeters)
|
||||
IList<Watermeter> ListOfWatermeters = FluentCommon.CreateSession(Users.Entities.DBKind.Results)
|
||||
.CreateQuery("FROM Watermeter WHERE Serial = :SerialNrParameter")
|
||||
.SetParameter("SerialNrParameter", SerialNr)
|
||||
.List<Watermeter>();
|
||||
@@ -0,0 +1,242 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
using FluentNHibernate.Cfg;
|
||||
using FluentNHibernate.Cfg.Db;
|
||||
using NHibernate;
|
||||
using NHibernate.Cfg;
|
||||
using NHibernate.Tool.hbm2ddl;
|
||||
using Config.Resources;
|
||||
|
||||
namespace Config
|
||||
{
|
||||
public static class FluentCommon
|
||||
{
|
||||
/// <summary>
|
||||
/// Session factories for regular sessions.
|
||||
/// </summary>
|
||||
public static ISessionFactory[] SessionFactories = new ISessionFactory[(int)Users.Entities.DBKind.Count];
|
||||
|
||||
/// <summary>
|
||||
/// NHibernate session factory (to create the database session 'SessionFactory')
|
||||
/// </summary>
|
||||
/// <returns>A database session</returns>
|
||||
static ISessionFactory CreateSessionFactory(Users.Entities.DBKind database)
|
||||
{
|
||||
Users.Entities.DBType dbType;
|
||||
string connectionString;
|
||||
|
||||
switch (database)
|
||||
{
|
||||
default:
|
||||
case Users.Entities.DBKind.Config:
|
||||
dbType = Data.CurrentBench.ProceduresDBSettings.DbType;
|
||||
connectionString = Data.CurrentBench.ProceduresDBSettings.ConnectionString;
|
||||
break;
|
||||
case Users.Entities.DBKind.Results:
|
||||
dbType = Data.CurrentBench.WaterMetersDBSettings.DbType;
|
||||
connectionString = Data.CurrentBench.WaterMetersDBSettings.ConnectionString;
|
||||
break;
|
||||
}
|
||||
|
||||
return CreateSessionFactory(database, dbType, connectionString, false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// NHibernate session factory (to create the database session 'SessionFactory')
|
||||
/// </summary>
|
||||
/// <returns>A database session</returns>
|
||||
public static ISessionFactory CreateSessionFactory(Users.Entities.DBKind database, Users.Entities.DBType dbType, string connectionString, bool createDB)
|
||||
{
|
||||
try
|
||||
{
|
||||
FluentConfiguration cfg = Fluently.Configure();
|
||||
|
||||
switch (dbType)
|
||||
{
|
||||
default:
|
||||
case Users.Entities.DBType.SQLite:
|
||||
cfg = cfg.Database(SQLiteConfiguration.Standard.UsingFile(connectionString));
|
||||
break;
|
||||
case Users.Entities.DBType.MySql:
|
||||
cfg = cfg.Database(MySQLConfiguration.Standard.ConnectionString(connectionString));
|
||||
break;
|
||||
}
|
||||
|
||||
switch (database)
|
||||
{
|
||||
default:
|
||||
case Users.Entities.DBKind.Config:
|
||||
cfg = cfg.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Data>());
|
||||
break;
|
||||
case Users.Entities.DBKind.Results:
|
||||
cfg = cfg.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Data>());
|
||||
break;
|
||||
}
|
||||
|
||||
if (createDB)
|
||||
{
|
||||
return cfg.ExposeConfiguration(BuildSchemaCreate).BuildSessionFactory();
|
||||
}
|
||||
else
|
||||
{
|
||||
return cfg.ExposeConfiguration(BuildSchema).BuildSessionFactory();
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
MessageBox.Show(string.Format(Strings.Cannot_open_DB_Cause_0, exc.Message),
|
||||
Strings.Error,
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public delegate void BuildSchemaDlgt(Configuration config);
|
||||
|
||||
static void BuildSchema(Configuration config)
|
||||
{
|
||||
/// This NHibernate tool takes a configuration (with mapping info in)
|
||||
/// and exports a database schema from it
|
||||
new SchemaExport(config).SetOutputFile("db_schema");
|
||||
}
|
||||
|
||||
static void BuildSchemaCreate(Configuration config)
|
||||
{
|
||||
/// This NHibernate tool takes a configuration (with mapping info in)
|
||||
/// and exports a database schema from it
|
||||
new SchemaExport(config).Create(true, true);
|
||||
}
|
||||
|
||||
/// Create a NHibernate session for the given database
|
||||
public static ISession CreateSession(Users.Entities.DBKind database)
|
||||
{
|
||||
int ix = (int)database;
|
||||
if (ix < 0 || ix >= (int)Users.Entities.DBKind.Count) return null;
|
||||
|
||||
if (SessionFactories[ix] == null) SessionFactories[ix] = CreateSessionFactory(database);
|
||||
|
||||
return SessionFactories[ix].OpenSession();
|
||||
}
|
||||
|
||||
public static void SaveToDb(Users.Entities.DBKind database, object obj)
|
||||
{
|
||||
SaveToDb(CreateSession(database), obj);
|
||||
}
|
||||
|
||||
public static void SaveToDb(ISession session, object obj)
|
||||
{
|
||||
using (var transaction = session.BeginTransaction())
|
||||
{
|
||||
try
|
||||
{
|
||||
session.SaveOrUpdate(obj);
|
||||
transaction.Commit();
|
||||
}
|
||||
catch
|
||||
{
|
||||
transaction.Rollback();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void DeleteFromDb(Users.Entities.DBKind database, object obj)
|
||||
{
|
||||
DeleteFromDb(CreateSession(database), obj);
|
||||
}
|
||||
|
||||
public static void DeleteFromDb(ISession session, object obj)
|
||||
{
|
||||
using (var transaction = session.BeginTransaction())
|
||||
{
|
||||
session.Delete(obj);
|
||||
transaction.Commit();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create an empty users database.
|
||||
/// Database contains only the user 'admin' and the control board component 'CB'.
|
||||
/// </summary>
|
||||
/// <param name="dbType">DBType.SQLite or DBType.MySql</param>
|
||||
/// <param name="connectionString">Connection string</param>
|
||||
/// <returns>true=success, false=error</returns>
|
||||
public static bool CreateEmptyConfigDB(Users.Entities.DBType dbType, string connectionString)
|
||||
{
|
||||
ISessionFactory sessionFactory = CreateSessionFactory(Users.Entities.DBKind.Config, dbType, connectionString, true);
|
||||
if (sessionFactory == null) return false;
|
||||
|
||||
/// Populate the database
|
||||
using (var session = sessionFactory.OpenSession())
|
||||
{
|
||||
using (var transaction = session.BeginTransaction())
|
||||
{
|
||||
///
|
||||
/// Prepare all groups
|
||||
///
|
||||
var testers = new Config.Entities.Group((int)Users.Grp.GID.Testers, Strings.Tester);
|
||||
var testingSpecialists = new Config.Entities.Group((int)Users.Grp.GID.TestingSpecialists, Strings.Testing_Specialist);
|
||||
var headOfLab = new Config.Entities.Group((int)Users.Grp.GID.HeadOfLab, Strings.Head_of_Lab);
|
||||
var maintenanceSpecialists = new Config.Entities.Group((int)Users.Grp.GID.MaintenanceSpecialists, Strings.Maintenance_Specialist);
|
||||
var metrologists = new Config.Entities.Group((int)Users.Grp.GID.Metrologists, Strings.Metrologist);
|
||||
var calibrationSpecialists = new Config.Entities.Group((int)Users.Grp.GID.CalibrationSpecialists, Strings.Calibration_Specialist);
|
||||
var administrators = new Config.Entities.Group((int)Users.Grp.GID.Administrators, Strings.Administrator);
|
||||
|
||||
/// Create the user 'admin' add his groups
|
||||
var admin = new Config.Entities.User
|
||||
{
|
||||
UserName = Data.AdminUsername,
|
||||
FullName = Strings.Administrator,
|
||||
LastPwChange = DateTime.Now
|
||||
};
|
||||
admin.SetPassword(Data.AdminPassword);
|
||||
admin.AddGroup(testers);
|
||||
admin.AddGroup(testingSpecialists);
|
||||
admin.AddGroup(headOfLab);
|
||||
admin.AddGroup(maintenanceSpecialists);
|
||||
admin.AddGroup(metrologists);
|
||||
admin.AddGroup(calibrationSpecialists);
|
||||
admin.AddGroup(administrators);
|
||||
|
||||
session.SaveOrUpdate(admin);
|
||||
|
||||
///// Create the control board component
|
||||
//var cmpnt = (new BenchControl.Elde.ControlBoardCfg(new BenchControl.Elde.ControlBoardFactory())).CreateDbEntity();
|
||||
//session.SaveOrUpdate(cmpnt);
|
||||
|
||||
transaction.Commit();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create an empty water meters database
|
||||
/// </summary>
|
||||
/// <param name="dbType">DBType.SQLite or DBType.MySql</param>
|
||||
/// <param name="connectionString">Connection string</param>
|
||||
/// <returns>true=success, false=error</returns>
|
||||
public static bool CreateEmptyResultsDB(Users.Entities.DBType dbType, string connectionString)
|
||||
{
|
||||
ISessionFactory sessionFactory = CreateSessionFactory(Users.Entities.DBKind.Results, dbType, connectionString, true);
|
||||
if (sessionFactory == null) return false;
|
||||
|
||||
/// Populate the database
|
||||
//using (var session = sessionFactory.OpenSession())
|
||||
//{
|
||||
// using (var transaction = session.BeginTransaction())
|
||||
// {
|
||||
// /// Create one component
|
||||
// var cmpnt = (new BenchControl.Elde.ControlBoardCfg("CB", 1)).CreateDbEntity();
|
||||
// session.SaveOrUpdate(cmpnt);
|
||||
// transaction.Commit();
|
||||
// }
|
||||
//}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class BenchPathMap : ClassMap<BenchPath>
|
||||
{
|
||||
@@ -15,10 +15,12 @@ namespace TBF.Mappings
|
||||
Map(x => x.Name);
|
||||
Map(x => x.Qfrom);
|
||||
Map(x => x.Qto);
|
||||
Map(x => x.TempIn);
|
||||
Map(x => x.TempOut);
|
||||
Map(x => x.PressIn);
|
||||
Map(x => x.PressOut);
|
||||
Map(x => x.TempMtrUp).Column("TempIn");
|
||||
Map(x => x.TempMtrDown).Column("TempOut");
|
||||
Map(x => x.PressMtrUp).Column("PressIn");
|
||||
Map(x => x.PressMtrDown).Column("PressOut");
|
||||
Map(x => x.PressMtrDelta);
|
||||
Map(x => x.StopBFValve);
|
||||
Map(x => x.ValvesOpen)
|
||||
.CustomType("StringClob")
|
||||
.CustomSqlType("varchar(8000)");
|
||||
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class ComponentMap : ClassMap<Component>
|
||||
{
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class ComponentProcedureMap : ClassMap<ComponentProcedure>
|
||||
{
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class ComponentTestMap : ClassMap<ComponentTest>
|
||||
{
|
||||
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class FeedingPathMap : ClassMap<FeedingPath>
|
||||
{
|
||||
@@ -16,6 +16,7 @@ namespace TBF.Mappings
|
||||
Map(x => x.Qfrom);
|
||||
Map(x => x.Qto);
|
||||
Map(x => x.Pump);
|
||||
Map(x => x.RegulValvesPct);
|
||||
Map(x => x.ValvesOpen)
|
||||
.CustomType("StringClob")
|
||||
.CustomSqlType("varchar(8000)");
|
||||
@@ -3,7 +3,7 @@
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class GroupMap : ClassMap<Entities.Group>
|
||||
{
|
||||
@@ -0,0 +1,35 @@
|
||||
///
|
||||
/// Copyright (c) 2016 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using Config.Entities;
|
||||
|
||||
namespace Config.Mappings
|
||||
{
|
||||
#if HEAT_METERS
|
||||
class HeatMetersPathMap : ClassMap<HeatMetersPath>
|
||||
{
|
||||
public HeatMetersPathMap()
|
||||
{
|
||||
Id(x => x.Id);
|
||||
Map(x => x.ItemNr);
|
||||
Map(x => x.Name);
|
||||
|
||||
Map(x => x.TempWarmFrom);
|
||||
Map(x => x.TempWarmTo);
|
||||
Map(x => x.TempColdFrom);
|
||||
Map(x => x.TempColdTo);
|
||||
|
||||
Map(x => x.TMeterRefWarm1);
|
||||
Map(x => x.TMeterRefWarm2);
|
||||
Map(x => x.TMeterRefCold1);
|
||||
Map(x => x.TMeterRefCold2);
|
||||
|
||||
Map(x => x.TMeterWorkWarm1);
|
||||
Map(x => x.TMeterWorkWarm2);
|
||||
Map(x => x.TMeterWorkCold1);
|
||||
Map(x => x.TMeterWorkCold2);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
+4
-3
@@ -1,16 +1,17 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
/// Copyright (c) 2013-2018 Sensus Slovensko a.s.
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class MeasurementCorrectionMap : ClassMap<MeasurementCorrection>
|
||||
{
|
||||
public MeasurementCorrectionMap()
|
||||
{
|
||||
Id(x => x.Id);
|
||||
Map(x => x.RangeIx);
|
||||
Map(x => x.Measurement);
|
||||
Map(x => x.Correction);
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using Config.Entities;
|
||||
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class MetersPathMap : ClassMap<MetersPath>
|
||||
{
|
||||
public MetersPathMap()
|
||||
{
|
||||
Id(x => x.Id);
|
||||
Map(x => x.ItemNr);
|
||||
Map(x => x.Name);
|
||||
|
||||
#pragma warning disable
|
||||
if (Config.Data.WMsCount >= 1) Map(x => x.Sensor1);
|
||||
if (Config.Data.WMsCount >= 2) Map(x => x.Sensor2);
|
||||
if (Config.Data.WMsCount >= 3) Map(x => x.Sensor3);
|
||||
if (Config.Data.WMsCount >= 4) Map(x => x.Sensor4);
|
||||
if (Config.Data.WMsCount >= 5) Map(x => x.Sensor5);
|
||||
if (Config.Data.WMsCount >= 6) Map(x => x.Sensor6);
|
||||
if (Config.Data.WMsCount >= 7) Map(x => x.Sensor7);
|
||||
if (Config.Data.WMsCount >= 8) Map(x => x.Sensor8);
|
||||
if (Config.Data.WMsCount >= 9) Map(x => x.Sensor9);
|
||||
if (Config.Data.WMsCount >= 10) Map(x => x.Sensor10);
|
||||
if (Config.Data.WMsCount >= 11) Map(x => x.Sensor11);
|
||||
if (Config.Data.WMsCount >= 12) Map(x => x.Sensor12);
|
||||
if (Config.Data.WMsCount >= 13) Map(x => x.Sensor13);
|
||||
if (Config.Data.WMsCount >= 14) Map(x => x.Sensor14);
|
||||
if (Config.Data.WMsCount >= 15) Map(x => x.Sensor15);
|
||||
if (Config.Data.WMsCount >= 16) Map(x => x.Sensor16);
|
||||
if (Config.Data.WMsCount >= 17) Map(x => x.Sensor17);
|
||||
if (Config.Data.WMsCount >= 18) Map(x => x.Sensor18);
|
||||
if (Config.Data.WMsCount >= 19) Map(x => x.Sensor19);
|
||||
if (Config.Data.WMsCount >= 20) Map(x => x.Sensor20);
|
||||
if (Config.Data.WMsCount >= 21) Map(x => x.Sensor21);
|
||||
if (Config.Data.WMsCount >= 22) Map(x => x.Sensor22);
|
||||
if (Config.Data.WMsCount >= 23) Map(x => x.Sensor23);
|
||||
if (Config.Data.WMsCount >= 24) Map(x => x.Sensor24);
|
||||
if (Config.Data.WMsCount >= 25) Map(x => x.Sensor25);
|
||||
if (Config.Data.WMsCount >= 26) Map(x => x.Sensor26);
|
||||
if (Config.Data.WMsCount >= 27) Map(x => x.Sensor27);
|
||||
if (Config.Data.WMsCount >= 28) Map(x => x.Sensor28);
|
||||
if (Config.Data.WMsCount >= 29) Map(x => x.Sensor29);
|
||||
if (Config.Data.WMsCount >= 30) Map(x => x.Sensor30);
|
||||
if (Config.Data.WMsCount >= 31) Map(x => x.Sensor31);
|
||||
if (Config.Data.WMsCount >= 32) Map(x => x.Sensor32);
|
||||
if (Config.Data.WMsCount >= 33) Map(x => x.Sensor33);
|
||||
if (Config.Data.WMsCount >= 34) Map(x => x.Sensor34);
|
||||
if (Config.Data.WMsCount >= 35) Map(x => x.Sensor35);
|
||||
if (Config.Data.WMsCount >= 36) Map(x => x.Sensor36);
|
||||
if (Config.Data.WMsCount >= 37) Map(x => x.Sensor37);
|
||||
if (Config.Data.WMsCount >= 38) Map(x => x.Sensor38);
|
||||
if (Config.Data.WMsCount >= 39) Map(x => x.Sensor39);
|
||||
if (Config.Data.WMsCount >= 40) Map(x => x.Sensor40);
|
||||
#pragma warning restore
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class OutputPathMap : ClassMap<OutputPath>
|
||||
{
|
||||
@@ -21,7 +21,8 @@ namespace TBF.Mappings
|
||||
Map(x => x.StartValve);
|
||||
Map(x => x.Diverter);
|
||||
Map(x => x.TempDiv);
|
||||
Map(x => x.Balance);
|
||||
Map(x => x.Scale)
|
||||
.Column("Balance");
|
||||
Map(x => x.EmptyTankValve);
|
||||
Map(x => x.ValvesOpen)
|
||||
.CustomType("StringClob")
|
||||
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class ProcedureMap : ClassMap<Procedure>
|
||||
{
|
||||
@@ -28,12 +28,19 @@ namespace TBF.Mappings
|
||||
|
||||
Map(x => x.MetersKind);
|
||||
Map(x => x.Watermeters);
|
||||
Map(x => x.ProtocolTitle);
|
||||
Map(x => x.DataEntry);
|
||||
Map(x => x.Protected);
|
||||
Map(x => x.MustBeComplete);
|
||||
Map(x => x.ManualCtrlDisabled);
|
||||
|
||||
Map(x => x.DataEntry);
|
||||
Map(x => x.ResultsPrinter);
|
||||
Map(x => x.ResultsWriter);
|
||||
Map(x => x.TransitionStart);
|
||||
Map(x => x.TransitionEnd);
|
||||
|
||||
Map(x => x.AltProcName);
|
||||
Map(x => x.AltProcPeriod);
|
||||
|
||||
////Map(x => x.MetrologicalClass);
|
||||
////HasOne(x => x.WMType);
|
||||
HasMany(x => x.MoreParams)
|
||||
@@ -1,11 +1,10 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
/// Author: Milan Hanajik
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class TestMap : ClassMap<Test>
|
||||
{
|
||||
@@ -15,29 +14,46 @@ namespace TBF.Mappings
|
||||
Map(x => x.ItemNr);
|
||||
Map(x => x.Name);
|
||||
Map(x => x.Part);
|
||||
Map(x => x.Publish);
|
||||
Map(x => x.DoEvaluate)
|
||||
.Column("Evaluate");
|
||||
Map(x => x.Qfrom);
|
||||
Map(x => x.Qto);
|
||||
Map(x => x.Volume);
|
||||
Map(x => x.TstTime);
|
||||
Map(x => x.Repeats);
|
||||
Map(x => x.Emptying);
|
||||
Map(x => x.Zeroing);
|
||||
Map(x => x.DoDraining)
|
||||
.Column("Emptying");
|
||||
Map(x => x.DoZeroing)
|
||||
.Column("Zeroing");
|
||||
Map(x => x.DoControlWaterTemp);
|
||||
Map(x => x.TempLimLo);
|
||||
Map(x => x.TempLimHi);
|
||||
Map(x => x.PumpPower);
|
||||
Map(x => x.MassRepeats);
|
||||
Map(x => x.MassSpread);
|
||||
Map(x => x.MassMethod)
|
||||
.CustomType<byte>();
|
||||
Map(x => x.TimeBeforeFlow);
|
||||
Map(x => x.TimeFlow2Mass);
|
||||
Map(x => x.TimeMass2Start);
|
||||
Map(x => x.TimePump2StartV)
|
||||
.Column("TimeMass2Start");
|
||||
Map(x => x.TimeStop2Mass);
|
||||
Map(x => x.Method);
|
||||
Map(x => x.ErrLimLo);
|
||||
Map(x => x.ErrLimHi);
|
||||
Map(x => x.Uncertainty);
|
||||
Map(x => x.TolerRed); /// ???
|
||||
Map(x => x.RedType); /// ???
|
||||
Map(x => x.TolerRed)
|
||||
.Column("TolerRed"); /// ???
|
||||
Map(x => x.RedType); /// ???
|
||||
Map(x => x.FeedingPath);
|
||||
Map(x => x.BenchPath);
|
||||
Map(x => x.OutputPath);
|
||||
Map(x => x.MetersPath);
|
||||
Map(x => x.RelTransBefore);
|
||||
#if HEAT_METERS
|
||||
Map(x => x.HeatMetersPath);
|
||||
#endif
|
||||
Map(x => x.RelTransBefore);
|
||||
Map(x => x.RelTransBetween);
|
||||
Map(x => x.RelTransAfter);
|
||||
Map(x => x.TransitionAfter);
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class TransitionSequenceMap : ClassMap<TransitionSequence>
|
||||
{
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class TransitionStepMap : ClassMap<TransitionStep>
|
||||
{
|
||||
@@ -3,16 +3,17 @@
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class UserMap : ClassMap<Entities.User>
|
||||
{
|
||||
public UserMap()
|
||||
{
|
||||
Id(x => x.Id);
|
||||
Map(x => x.Name);
|
||||
Map(x => x.Password);
|
||||
Map(x => x.Description);
|
||||
Map(x => x.UserName).Column("Name");
|
||||
Map(x => x.Number);
|
||||
Map(x => x.Password);
|
||||
Map(x => x.FullName).Column("Description");
|
||||
Map(x => x.LastPwChange);
|
||||
HasMany(x => x.Groups)
|
||||
.Cascade.All();
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class VirtualBenchSequenceMap : ClassMap<VirtualBenchSequence>
|
||||
{
|
||||
+2
-2
@@ -2,9 +2,9 @@
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
using TBF.Entities;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class VirtualBenchStepMap : ClassMap<VirtualBenchStep>
|
||||
{
|
||||
@@ -3,7 +3,7 @@
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class WMTypeMap : ClassMap<Entities.WMType>
|
||||
{
|
||||
@@ -3,7 +3,7 @@
|
||||
///
|
||||
using FluentNHibernate.Mapping;
|
||||
|
||||
namespace TBF.Mappings
|
||||
namespace Config.Mappings
|
||||
{
|
||||
class WatermeterMap : ClassMap<Entities.Watermeter>
|
||||
{
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Config")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Sensus")]
|
||||
[assembly: AssemblyProduct("Config")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2013 - 2018 Sensus Slovensko a.s.")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("3fc3ff67-7386-4aff-9855-bef33d5fa0d3")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2.18.797.0")]
|
||||
[assembly: AssemblyFileVersion("2.18.797.0")]
|
||||
Generated
+164
@@ -0,0 +1,164 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Config.Resources {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Strings {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Strings() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Config.Resources.Strings", typeof(Strings).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Administrator.
|
||||
/// </summary>
|
||||
internal static string Administrator {
|
||||
get {
|
||||
return ResourceManager.GetString("Administrator", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Calibration Specialist.
|
||||
/// </summary>
|
||||
internal static string Calibration_Specialist {
|
||||
get {
|
||||
return ResourceManager.GetString("Calibration_Specialist", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Cannot open DB Cause 0.
|
||||
/// </summary>
|
||||
internal static string Cannot_open_DB_Cause_0 {
|
||||
get {
|
||||
return ResourceManager.GetString("Cannot_open_DB_Cause_0", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Error.
|
||||
/// </summary>
|
||||
internal static string Error
|
||||
{
|
||||
get
|
||||
{
|
||||
return ResourceManager.GetString("Error", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Failed.
|
||||
/// </summary>
|
||||
internal static string Failed {
|
||||
get {
|
||||
return ResourceManager.GetString("Failed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Head of Lab.
|
||||
/// </summary>
|
||||
internal static string Head_of_Lab {
|
||||
get {
|
||||
return ResourceManager.GetString("Head_of_Lab", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Maintenance Specialist.
|
||||
/// </summary>
|
||||
internal static string Maintenance_Specialist {
|
||||
get {
|
||||
return ResourceManager.GetString("Maintenance_Specialist", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Metrologist.
|
||||
/// </summary>
|
||||
internal static string Metrologist {
|
||||
get {
|
||||
return ResourceManager.GetString("Metrologist", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Passed.
|
||||
/// </summary>
|
||||
internal static string Passed {
|
||||
get {
|
||||
return ResourceManager.GetString("Passed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Tester.
|
||||
/// </summary>
|
||||
internal static string Tester {
|
||||
get {
|
||||
return ResourceManager.GetString("Tester", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Testing Specialist.
|
||||
/// </summary>
|
||||
internal static string Testing_Specialist {
|
||||
get {
|
||||
return ResourceManager.GetString("Testing_Specialist", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -117,7 +117,7 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Activity" xml:space="preserve">
|
||||
<value>Attività</value>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Chyba</value>
|
||||
</data>
|
||||
</root>
|
||||
+23
-20
@@ -117,34 +117,37 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Activity" xml:space="preserve">
|
||||
<value>活动 / Activity</value>
|
||||
<data name="Administrator" xml:space="preserve">
|
||||
<value>Administrator</value>
|
||||
</data>
|
||||
<data name="Ambient_humidity_" xml:space="preserve">
|
||||
<value>空气温度 / Ambient humidity :</value>
|
||||
<data name="Calibration_Specialist" xml:space="preserve">
|
||||
<value>Kalibriertechniker</value>
|
||||
</data>
|
||||
<data name="Ambient_pressure_" xml:space="preserve">
|
||||
<value>大气压强 / Ambient pressure :</value>
|
||||
<data name="Head_of_Lab" xml:space="preserve">
|
||||
<value>Laborleiter</value>
|
||||
</data>
|
||||
<data name="Ambient_temperature_" xml:space="preserve">
|
||||
<value>空气温度 / Ambient temperature :</value>
|
||||
<data name="Maintenance_Specialist" xml:space="preserve">
|
||||
<value>Wartungstechniker</value>
|
||||
</data>
|
||||
<data name="Approval_" xml:space="preserve">
|
||||
<value>审核 / Approval :</value>
|
||||
<data name="Metrologist" xml:space="preserve">
|
||||
<value>Messtechniker</value>
|
||||
</data>
|
||||
<data name="Date_and_time_" xml:space="preserve">
|
||||
<value>日期及时间 / Date and time :</value>
|
||||
<data name="Tester" xml:space="preserve">
|
||||
<value>Prüfer</value>
|
||||
</data>
|
||||
<data name="Page" xml:space="preserve">
|
||||
<value>页面 / Page </value>
|
||||
<data name="Testing_Specialist" xml:space="preserve">
|
||||
<value>Prüftechniker</value>
|
||||
</data>
|
||||
<data name="Procedure_" xml:space="preserve">
|
||||
<value>测试程序 / Procedure :</value>
|
||||
<data name="Failed" xml:space="preserve">
|
||||
<value>NiO</value>
|
||||
</data>
|
||||
<data name="Purchase_order_" xml:space="preserve">
|
||||
<value>采购订单 / Purchase order :</value>
|
||||
<data name="Passed" xml:space="preserve">
|
||||
<value>iO</value>
|
||||
</data>
|
||||
<data name="Tester_" xml:space="preserve">
|
||||
<value>测试者 / Tester :</value>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Fehler</value>
|
||||
</data>
|
||||
<data name="Cannot_open_DB_Cause_0" xml:space="preserve">
|
||||
<value>Datenbank kann nicht geöffnet.\\r\\nUrsache:\\r\\n{0}</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,153 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Administrator" xml:space="preserve">
|
||||
<value>Amministratore</value>
|
||||
</data>
|
||||
<data name="Calibration_Specialist" xml:space="preserve">
|
||||
<value>esperto in calibrazione</value>
|
||||
</data>
|
||||
<data name="Head_of_Lab" xml:space="preserve">
|
||||
<value>capo di laboratorio</value>
|
||||
</data>
|
||||
<data name="Maintenance_Specialist" xml:space="preserve">
|
||||
<value>esperto di manutenzione</value>
|
||||
</data>
|
||||
<data name="Metrologist" xml:space="preserve">
|
||||
<value>metrologo</value>
|
||||
</data>
|
||||
<data name="Tester" xml:space="preserve">
|
||||
<value>tester</value>
|
||||
</data>
|
||||
<data name="Testing_Specialist" xml:space="preserve">
|
||||
<value>esperto di prove </value>
|
||||
</data>
|
||||
<data name="Failed" xml:space="preserve">
|
||||
<value>NOK</value>
|
||||
</data>
|
||||
<data name="Passed" xml:space="preserve">
|
||||
<value>ok</value>
|
||||
</data>
|
||||
<data name="Cannot_open_DB_Cause_0" xml:space="preserve">
|
||||
<value>Impossibile aprire il database\\r\\nCause:\\r\\n{0}</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Errore</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,153 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Administrator" xml:space="preserve">
|
||||
<value>Administrator</value>
|
||||
</data>
|
||||
<data name="Calibration_Specialist" xml:space="preserve">
|
||||
<value>Specjalista ds. kalibracji</value>
|
||||
</data>
|
||||
<data name="Head_of_Lab" xml:space="preserve">
|
||||
<value>Kierownik Laboratorium</value>
|
||||
</data>
|
||||
<data name="Maintenance_Specialist" xml:space="preserve">
|
||||
<value>Konserwator</value>
|
||||
</data>
|
||||
<data name="Metrologist" xml:space="preserve">
|
||||
<value>Metrolog</value>
|
||||
</data>
|
||||
<data name="Tester" xml:space="preserve">
|
||||
<value>Pracownik przeprowadzający testy</value>
|
||||
</data>
|
||||
<data name="Testing_Specialist" xml:space="preserve">
|
||||
<value>Specjalista ds. testów</value>
|
||||
</data>
|
||||
<data name="Failed" xml:space="preserve">
|
||||
<value>Niepowodzenie</value>
|
||||
</data>
|
||||
<data name="Passed" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Cannot_open_DB_Cause_0" xml:space="preserve">
|
||||
<value>Nie można otworzyć \\r\\nCause:\\r\\n{0}</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Błąd</value>
|
||||
</data>
|
||||
</root>
|
||||
+25
-17
@@ -117,29 +117,37 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 13</value>
|
||||
<data name="Administrator" xml:space="preserve">
|
||||
<value>Administrator</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Benutzername</value>
|
||||
<data name="Calibration_Specialist" xml:space="preserve">
|
||||
<value>Calibration Specialist</value>
|
||||
</data>
|
||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>50, 13</value>
|
||||
<data name="Head_of_Lab" xml:space="preserve">
|
||||
<value>Head of Lab</value>
|
||||
</data>
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>Passwort</value>
|
||||
<data name="Maintenance_Specialist" xml:space="preserve">
|
||||
<value>Maintenance Specialist</value>
|
||||
</data>
|
||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>52, 13</value>
|
||||
<data name="Metrologist" xml:space="preserve">
|
||||
<value>Metrologist</value>
|
||||
</data>
|
||||
<data name="label3.Text" xml:space="preserve">
|
||||
<value>Prüfstand</value>
|
||||
<data name="Tester" xml:space="preserve">
|
||||
<value>Tester</value>
|
||||
</data>
|
||||
<data name="cancelButton.Text" xml:space="preserve">
|
||||
<value>Abbrechen</value>
|
||||
<data name="Testing_Specialist" xml:space="preserve">
|
||||
<value>Testing Specialist</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Anmelden am Prüfstand</value>
|
||||
<data name="Failed" xml:space="preserve">
|
||||
<value>NOK</value>
|
||||
</data>
|
||||
<data name="Passed" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Cannot_open_DB_Cause_0" xml:space="preserve">
|
||||
<value>Cannot open database.\\r\\nCause:\\r\\n{0}</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Error</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,153 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Administrator" xml:space="preserve">
|
||||
<value>Администратор</value>
|
||||
</data>
|
||||
<data name="Calibration_Specialist" xml:space="preserve">
|
||||
<value>Специалист по калибровке</value>
|
||||
</data>
|
||||
<data name="Head_of_Lab" xml:space="preserve">
|
||||
<value>Руководитель лаборатории</value>
|
||||
</data>
|
||||
<data name="Maintenance_Specialist" xml:space="preserve">
|
||||
<value>Специалист по техобслуживанию</value>
|
||||
</data>
|
||||
<data name="Metrologist" xml:space="preserve">
|
||||
<value>Метролог</value>
|
||||
</data>
|
||||
<data name="Tester" xml:space="preserve">
|
||||
<value>Контролер</value>
|
||||
</data>
|
||||
<data name="Testing_Specialist" xml:space="preserve">
|
||||
<value>Специалист по тестированию</value>
|
||||
</data>
|
||||
<data name="Failed" xml:space="preserve">
|
||||
<value>NOK</value>
|
||||
</data>
|
||||
<data name="Passed" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Cannot_open_DB_Cause_0" xml:space="preserve">
|
||||
<value>Не удается открыть БД.\\r\\nCause:\\r\\n{0}</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Ошибка</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,128 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 1.3
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">1.3</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1">this is my long string</data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
[base64 mime encoded serialized .NET Framework object]
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
[base64 mime encoded string representing a byte array form of the .NET Framework object]
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>1.3</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Administrator" xml:space="preserve">
|
||||
<value>管理员</value>
|
||||
</data>
|
||||
<data name="Calibration_Specialist" xml:space="preserve">
|
||||
<value>校准专员</value>
|
||||
</data>
|
||||
<data name="Failed" xml:space="preserve">
|
||||
<value>NOK</value>
|
||||
</data>
|
||||
<data name="Head_of_Lab" xml:space="preserve">
|
||||
<value>实验室负责人</value>
|
||||
</data>
|
||||
<data name="Maintenance_Specialist" xml:space="preserve">
|
||||
<value>维护专员</value>
|
||||
</data>
|
||||
<data name="Metrologist" xml:space="preserve">
|
||||
<value>计量者</value>
|
||||
</data>
|
||||
<data name="Passed" xml:space="preserve">
|
||||
<value>好</value>
|
||||
</data>
|
||||
<data name="Tester" xml:space="preserve">
|
||||
<value>测试仪</value>
|
||||
</data>
|
||||
<data name="Testing_Specialist" xml:space="preserve">
|
||||
<value>测试专员</value>
|
||||
</data>
|
||||
</root>
|
||||
+403
@@ -0,0 +1,403 @@
|
||||
///
|
||||
/// Copyright (c) 2016-2017 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using Config.Entities;
|
||||
|
||||
namespace Config
|
||||
{
|
||||
public enum Unit
|
||||
{
|
||||
[Description("---")] None,
|
||||
|
||||
[Description("l")] l, /// * 1 liter
|
||||
[Description("dm3")] dm3, /// 1 dm3 = 1 liter
|
||||
[Description("m3")] m3, /// 1000 l
|
||||
[Description("gal(UK)")] gal_UK, /// 1 gal(UK) = 4.54609 l
|
||||
[Description("gal(US)")] gal_US, /// 1 gal(US) = 3.78541178 l
|
||||
|
||||
[Description("l/h")] lph, /// 1 liter/h
|
||||
[Description("m3/h")] m3ph, /// * 1 m3/h = 1000 l/h
|
||||
|
||||
[Description("g")] g, /// 0.001 kg
|
||||
[Description("kg")] kg, /// * 1 kilogram
|
||||
[Description("t")] t, /// 1000 kg
|
||||
[Description("lb")] lb, /// 0.45359237 kg
|
||||
|
||||
[Description("s")] s, /// * 1 second
|
||||
[Description("min")] min, /// 1 min = 60 s
|
||||
[Description("hr")] hour, /// 1 hour = 60 min = 3600 s
|
||||
[Description("ms")] ms, /// 1 ms = 0.001 s
|
||||
|
||||
[Description("°C")] C, /// * degree Celsius (°C)
|
||||
[Description("°F")] F, /// degree Fahrenheit
|
||||
[Description("K")] K, /// degree Kelvin
|
||||
|
||||
[Description("Pa")] Pa, /// 1 Pa = 0.01 hPa
|
||||
[Description("hPa")] hPa, /// 1 hPa = 100 Pa
|
||||
[Description("kPa")] kPa, /// 1 kPa = 10 HPa
|
||||
[Description("MPa")] MPa, /// 1 MPa = 10000 hPa
|
||||
[Description("mbar")] mbar, /// 1 mbar = 1 hPa = 100 Pa
|
||||
[Description("bar")] bar, /// * 1 Bar = 1000 mbar = 0.1 MPa = 100000 Pa
|
||||
[Description("inHg")] inHg, /// 1 inHg = 33.864 hPa
|
||||
|
||||
[Description("R%")] RPct, /// * 1 R%
|
||||
|
||||
[Description("%")] Pct, /// * 1 %
|
||||
[Description("promile")] Promile, /// 1 promile = 0.1 %
|
||||
|
||||
[Description("mm")] mm, /// * 1 millimeter
|
||||
[Description("cm")] cm, /// 1 cm = 10 mm
|
||||
[Description("m")] m, /// 1 m = 1000 mm
|
||||
[Description("in")] inch, /// 1 inch = 25.4 mm
|
||||
|
||||
[Description("kg/m3")] kgpm3, /// * 1 kg/m3 = 0.001 kg/l
|
||||
[Description("kg/l")] kgpl, /// 1 kg/l = 1000 kg/m3
|
||||
|
||||
[Description("J")] J, /// * 1 Joul
|
||||
[Description("kJ")] kJ, /// 1 kJ = 1000 J
|
||||
[Description("MJ")] MJ, /// 1 MJ = 1000000 J
|
||||
[Description("Wh")] Wh, /// 1 Wh = 3600 J
|
||||
[Description("kWh")] kWh, /// 1 kWh = 3600000 J
|
||||
[Description("MWh")] MWh, /// 1 MWh = 3600000000 J
|
||||
|
||||
[Description("pulse/l")] ppl, /// * 1 pulse/l
|
||||
///
|
||||
[Description("pulse/kWh")] ppkWh, /// * 1 pulse/kWh
|
||||
|
||||
Count
|
||||
}
|
||||
|
||||
public enum Quantity
|
||||
{
|
||||
/// Quantities with units and conversions (double -> double)
|
||||
#if LANG_DE
|
||||
[Description("Volumen")] Volume,
|
||||
[Description("Durchfluss")] Flow,
|
||||
[Description("Masse")] Mass,
|
||||
[Description("Zeit")] Time,
|
||||
[Description("Temperatur")] Temperature,
|
||||
[Description("Druck")] Pressure,
|
||||
[Description("Feuchtigkeit")] Humidity,
|
||||
[Description("Fehler")] Error,
|
||||
[Description("Länge")] Length,
|
||||
[Description("Dichte")] Density,
|
||||
[Description("Energie")] Energy,
|
||||
[Description("Impulse/l")] PulsePerLtr,
|
||||
[Description("Impulse/kWh")] PulsePerKWh,
|
||||
|
||||
/// Quantities without units and conversions
|
||||
[Description("Nummer")] Number,
|
||||
[Description("Text")] String,
|
||||
[Description("Boolean")] Boolean,
|
||||
[Description("Datum und Uhrzeit")] DateTime,
|
||||
#elif LANG_PL
|
||||
[Description("Objętość")] Volume,
|
||||
[Description("Przepływ")] Flow,
|
||||
[Description("Masa")] Mass,
|
||||
[Description("Czas")] Time,
|
||||
[Description("Temperatura")] Temperature,
|
||||
[Description("Ciśnienie")] Pressure,
|
||||
[Description("Wilgotność")] Humidity,
|
||||
[Description("Błąd")] Error,
|
||||
[Description("Długość")] Length,
|
||||
[Description("Gęstość")] Density,
|
||||
[Description("Energia")] Energy,
|
||||
[Description("Impulsy/litr")] PulsePerLtr,
|
||||
[Description("Impulsy/kWh")] PulsePerKWh,
|
||||
|
||||
/// Quantities without units and conversions
|
||||
[Description("Numer")] Number,
|
||||
[Description("Tekst")] String,
|
||||
[Description("Boolean")] Boolean,
|
||||
[Description("Data i czas")] DateTime,
|
||||
#elif LANG_CS
|
||||
[Description("Objem")] Volume,
|
||||
[Description("Průtok")] Flow,
|
||||
[Description("Hmotnost")] Mass,
|
||||
[Description("Čas")] Time,
|
||||
[Description("Teplota")] Temperature,
|
||||
[Description("Tlak")] Pressure,
|
||||
[Description("Vlhkost")] Humidity,
|
||||
[Description("Chyba")] Error,
|
||||
[Description("Délka")] Length,
|
||||
[Description("Hustota")] Density,
|
||||
[Description("Energie")] Energy,
|
||||
[Description("Pulzy/litr")] PulsePerLtr,
|
||||
[Description("Pulzy/kWh")] PulsePerKWh,
|
||||
|
||||
/// Quantities without units and conversions
|
||||
[Description("Počet")] Number,
|
||||
[Description("Text")] String,
|
||||
[Description("Boolean")] Boolean,
|
||||
[Description("Datum a čas")] DateTime,
|
||||
#else
|
||||
[Description("Volume")] Volume,
|
||||
[Description("Flow")] Flow,
|
||||
[Description("Mass")] Mass,
|
||||
[Description("Time")] Time,
|
||||
[Description("Temperature")] Temperature,
|
||||
[Description("Pressure")] Pressure,
|
||||
[Description("Humidity")] Humidity,
|
||||
[Description("Error")] Error,
|
||||
[Description("Length")] Length,
|
||||
[Description("Density")] Density,
|
||||
[Description("Energy")] Energy,
|
||||
[Description("Pulses/liter")] PulsePerLtr,
|
||||
[Description("Pulses/kWh")] PulsePerKWh,
|
||||
|
||||
/// Quantities without units and conversions
|
||||
[Description("Number")] Number,
|
||||
[Description("String")] String,
|
||||
[Description("Boolean")] Boolean,
|
||||
[Description("Date and time")] DateTime,
|
||||
#endif
|
||||
Count,
|
||||
}
|
||||
|
||||
public static class Units
|
||||
{
|
||||
public static bool IsUnitless(Quantity quantity)
|
||||
{
|
||||
return quantity >= Quantity.Number;
|
||||
}
|
||||
|
||||
public static bool IsDefaultUnit(Unit unit)
|
||||
{
|
||||
return unit == Unit.l || unit == Unit.m3ph || unit == Unit.kg || unit == Unit.s || unit == Unit.C || unit == Unit.bar || unit == Unit.RPct ||
|
||||
unit == Unit.Pct || unit == Unit.mm || unit == Unit.kgpm3 || unit == Unit.J || unit == Unit.ppl || unit == Unit.ppkWh;
|
||||
}
|
||||
|
||||
public static bool IsQuantity(Unit units, Quantity quantity)
|
||||
{
|
||||
return (quantity == GetQuantity(units));
|
||||
}
|
||||
|
||||
public static Quantity GetQuantity(Unit units)
|
||||
{
|
||||
switch (units)
|
||||
{
|
||||
case Unit.l:
|
||||
case Unit.dm3:
|
||||
case Unit.m3:
|
||||
case Unit.gal_UK:
|
||||
case Unit.gal_US:
|
||||
return Config.Quantity.Volume;
|
||||
|
||||
case Unit.lph:
|
||||
case Unit.m3ph:
|
||||
return Config.Quantity.Flow;
|
||||
|
||||
case Unit.g:
|
||||
case Unit.kg:
|
||||
case Unit.t:
|
||||
case Unit.lb:
|
||||
return Config.Quantity.Mass;
|
||||
|
||||
case Unit.s:
|
||||
case Unit.min:
|
||||
case Unit.hour:
|
||||
case Unit.ms:
|
||||
return Config.Quantity.Time;
|
||||
|
||||
case Unit.C:
|
||||
case Unit.F:
|
||||
case Unit.K:
|
||||
return Config.Quantity.Temperature;
|
||||
|
||||
case Unit.Pa:
|
||||
case Unit.hPa:
|
||||
case Unit.mbar:
|
||||
case Unit.kPa:
|
||||
case Unit.bar:
|
||||
case Unit.MPa:
|
||||
case Unit.inHg:
|
||||
return Config.Quantity.Pressure;
|
||||
|
||||
case Unit.RPct:
|
||||
return Config.Quantity.Humidity;
|
||||
|
||||
case Unit.Pct:
|
||||
case Unit.Promile:
|
||||
return Config.Quantity.Error;
|
||||
|
||||
case Unit.mm:
|
||||
case Unit.cm:
|
||||
case Unit.m:
|
||||
case Unit.inch:
|
||||
return Config.Quantity.Length;
|
||||
|
||||
case Unit.kgpm3:
|
||||
case Unit.kgpl:
|
||||
return Config.Quantity.Density;
|
||||
|
||||
case Unit.J:
|
||||
case Unit.kJ:
|
||||
case Unit.MJ:
|
||||
case Unit.Wh:
|
||||
case Unit.kWh:
|
||||
case Unit.MWh:
|
||||
return Config.Quantity.Energy;
|
||||
|
||||
case Unit.ppl:
|
||||
return Config.Quantity.PulsePerLtr;
|
||||
|
||||
case Unit.ppkWh:
|
||||
return Config.Quantity.PulsePerKWh;
|
||||
|
||||
default:
|
||||
return Config.Quantity.Number;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsVolume(Unit units) { return IsQuantity(units, Config.Quantity.Volume); }
|
||||
public static bool IsFlow(Unit units) { return IsQuantity(units, Config.Quantity.Flow); }
|
||||
public static bool IsMass(Unit units) { return IsQuantity(units, Config.Quantity.Mass); }
|
||||
public static bool IsTime(Unit units) { return IsQuantity(units, Config.Quantity.Time); }
|
||||
public static bool IsTemperature(Unit units) { return IsQuantity(units, Config.Quantity.Temperature); }
|
||||
public static bool IsPressure(Unit units) { return IsQuantity(units, Config.Quantity.Pressure); }
|
||||
public static bool IsHumidity(Unit units) { return IsQuantity(units, Config.Quantity.Humidity); }
|
||||
public static bool IsError(Unit units) { return IsQuantity(units, Config.Quantity.Error); }
|
||||
public static bool IsLength(Unit units) { return IsQuantity(units, Config.Quantity.Length); }
|
||||
public static bool IsDensity(Unit units) { return IsQuantity(units, Config.Quantity.Density); }
|
||||
public static bool IsEnergy(Unit units) { return IsQuantity(units, Config.Quantity.Energy); }
|
||||
public static bool IsPulsePerLtr(Unit units) { return IsQuantity(units, Config.Quantity.PulsePerLtr); }
|
||||
public static bool IsPulsePerKWh(Unit units) { return IsQuantity(units, Config.Quantity.PulsePerKWh); }
|
||||
|
||||
|
||||
public static double ConvertTo(Unit units, double v)
|
||||
{
|
||||
switch (units)
|
||||
{
|
||||
/// Volume: internal representation in l
|
||||
case Unit.dm3:
|
||||
case Unit.l: return v; /// 1 liter
|
||||
case Unit.m3: return 0.001 * v; /// 1 m3 = 1000 l
|
||||
case Unit.gal_UK: return 0.21996925 * v; /// 1 gal(UK) = 4.54609 l
|
||||
case Unit.gal_US: return 0.26417205 * v; /// 1 gal(US) = 3.78541178 l
|
||||
|
||||
/// Flow: internal representation in m3/h
|
||||
case Unit.lph: return 1000 * v; /// 1 liter/h
|
||||
case Unit.m3ph: return v; /// 1 m3/h = 1000 l/h
|
||||
|
||||
/// Mass: internal representation in kg
|
||||
case Unit.g: return 1000 * v; /// 1 g = 0.001 kg
|
||||
case Unit.kg: return v; /// 1 kilogram
|
||||
case Unit.t: return 0.001 * v; /// 1 t = 1000 kg
|
||||
case Unit.lb: return 2.2046226 * v; /// 1 lb = 0.45359237 kg
|
||||
|
||||
/// Time or duration: internal representation in seconds [s]
|
||||
case Unit.s: return v;
|
||||
case Unit.min: return v / 60;
|
||||
case Unit.hour: return v / 3600;
|
||||
case Unit.ms: return 1000 * v;
|
||||
|
||||
/// Temperature: internal representation in °C
|
||||
case Unit.C: return v; /// degree Celsius (°C)
|
||||
case Unit.F: return 1.8 * v + 32; /// degree Fahrenheit
|
||||
case Unit.K: return v + 273.15; /// degree Kelvin
|
||||
|
||||
/// Pressure: internal representation in bar = 0.1 MPa
|
||||
case Unit.Pa: return 100000 * v; /// 1 hPa = 100 Pa
|
||||
case Unit.hPa: return 1000 * v; /// 1 hPa = 100 Pa
|
||||
case Unit.mbar: return 1000 * v; /// 1 mbar = 1 hPa = 100 Pa
|
||||
case Unit.kPa: return 100 * v; /// 1 kPa = 10 HPa
|
||||
case Unit.bar: return v; /// 1 bar = 1000 mbar = 100000 Pa
|
||||
case Unit.MPa: return 0.1 * v; /// 1 MPa = 10000 hPa
|
||||
case Unit.inHg: return 29.53 * v; /// 1 inHg = 33.864 hPa
|
||||
|
||||
/// Error: internal representation in %
|
||||
case Unit.Pct: return v; /// 1 %
|
||||
case Unit.Promile: return 10 * v; /// 1 promile = 0.1 %
|
||||
|
||||
/// Diameter, length: internal representation in mm
|
||||
case Unit.mm: return v; /// 1 mm
|
||||
case Unit.cm: return 0.1 * v; /// 1 cm = 10 mm
|
||||
case Unit.m: return 0.001 * v; /// 1 m = 1000 mm
|
||||
case Unit.inch: return v / 25.4; /// 1 inch = 25.4 mm
|
||||
|
||||
/// Density: internal representation in kg/m3
|
||||
case Unit.kgpm3: return v;
|
||||
case Unit.kgpl: return 0.001 * v;
|
||||
|
||||
/// Energy, internal representation in Joul
|
||||
case Unit.J: return v; /// 1 Joul
|
||||
case Unit.kJ: return 0.001 * v; /// 1 kJ = 1000 J
|
||||
case Unit.MJ: return 0.000001 * v; /// 1 kJ = 1000000 J
|
||||
case Unit.Wh: return v / 3600.0; /// 1 Wh = 3600 J
|
||||
case Unit.kWh: return v / 3600000.0; /// 1 kWh = 3600000 J
|
||||
case Unit.MWh: return v / 3600000000.0;/// 1 MWh = 3600000000 J
|
||||
|
||||
default: return v;
|
||||
}
|
||||
}
|
||||
|
||||
public static double ConvertFrom(Unit units, double v)
|
||||
{
|
||||
switch (units)
|
||||
{
|
||||
/// Volume: internal representation in l
|
||||
case Unit.dm3:
|
||||
case Unit.l: return v; /// 1 liter
|
||||
case Unit.m3: return 1000 * v; /// 1000 l
|
||||
case Unit.gal_UK: return 4.54609 * v; /// 1 gal(UK) = 4.54609 l
|
||||
case Unit.gal_US: return 3.78541178 * v; /// 1 gal(US) = 3.78541178 l
|
||||
|
||||
/// Flow: internal representation in m3/h
|
||||
case Unit.lph: return 0.001 * v; /// 1 liter/h
|
||||
case Unit.m3ph: return v; /// 1 m3/h = 1000 l/h
|
||||
|
||||
/// Mass: internal representation in kg
|
||||
case Unit.g: return 0.001 * v; /// 1 g = 0.001 kg
|
||||
case Unit.kg: return v; /// 1 kilogram
|
||||
case Unit.t: return 1000 * v; /// 1 t = 1000 kg
|
||||
case Unit.lb: return 0.45359237 * v; /// 1 lb = 0.45359237 kg
|
||||
|
||||
/// Time or duration: internal representation in seconds [s]
|
||||
case Unit.s: return v;
|
||||
case Unit.min: return 60 * v;
|
||||
case Unit.hour: return 3600 * v;
|
||||
case Unit.ms: return v / 1000;
|
||||
|
||||
/// Temperature: internal representation in °C
|
||||
case Unit.C: return v; /// degree Celsius (°C)
|
||||
case Unit.F: return 5 * (v-32) / 9; /// degree Fahrenheit
|
||||
case Unit.K: return v - 273.15; /// degree Kelvin
|
||||
|
||||
/// Pressure: internal representation in bar = 0.1 MPa
|
||||
case Unit.Pa: return 0.00001 * v; /// 1 hPa = 100 Pa
|
||||
case Unit.hPa: return 0.001 * v; /// 1 hPa = 100 Pa
|
||||
case Unit.mbar: return 0.001 * v; /// 1 mbar = 1 hPa = 100 Pa
|
||||
case Unit.kPa: return 0.01 * v; /// 1 kPa = 10 HPa
|
||||
case Unit.bar: return v; /// 1 bar = 1000 mbar = 100000 Pa
|
||||
case Unit.MPa: return 10 * v; /// 1 MPa = 10000 hPa
|
||||
case Unit.inHg: return 0.033864 * v; /// 1 inHg = 33.864 hPa
|
||||
|
||||
/// Error: internal representation in %
|
||||
case Unit.Pct: return v; /// 1 %
|
||||
case Unit.Promile: return 0.1 * v; /// 1 promile = 0.1 %
|
||||
|
||||
/// Diameter, length: internal representation in mm
|
||||
case Unit.mm: return v; /// 1 mm
|
||||
case Unit.cm: return 10 * v; /// 1 cm = 10 mm
|
||||
case Unit.m: return 1000 * v; /// 1 m = 1000 mm
|
||||
case Unit.inch: return 25.4 * v; /// 1 inch = 25.4 mm
|
||||
|
||||
/// Density: internal representation in kg/m3
|
||||
case Unit.kgpm3: return v;
|
||||
case Unit.kgpl: return 1000 * v;
|
||||
|
||||
/// Energy, internal representation in Joul
|
||||
case Unit.J: return v; /// 1 Joul
|
||||
case Unit.kJ: return 1000 * v; /// 1 kJ = 1000 J
|
||||
case Unit.MJ: return 1000000 * v; /// 1 kJ = 1000000 J
|
||||
case Unit.Wh: return 3600 * v; /// 1 Wh = 3600 J
|
||||
case Unit.kWh: return 3600000 * v; /// 1 kWh = 3600000 J
|
||||
case Unit.MWh: return 3600000000 * v; /// 1 kWh = 3600000000 J
|
||||
|
||||
default: return v;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{6D3384DC-4638-4A92-91A8-F39D900377C6}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>DeviceTest</RootNamespace>
|
||||
<AssemblyName>DeviceTest</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject>DeviceTest.Program</StartupObject>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="log4net, Version=1.2.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\log4net.2.0.2\lib\net40-full\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="DeviceTestDlg.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DeviceTestDlg.Designer.cs">
|
||||
<DependentUpon>DeviceTestDlg.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LocalSettings.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="DeviceTestDlg.resx">
|
||||
<DependentUpon>DeviceTestDlg.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="app.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Config\Config.csproj">
|
||||
<Project>{743DF7DB-C7B6-42EB-986D-0F485E5588E4}</Project>
|
||||
<Name>Config</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\TBF\TBF.csproj">
|
||||
<Project>{8648FD92-CDA1-4C3A-B5F9-FE547CE1FA48}</Project>
|
||||
<Name>TBF</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
Generated
+584
@@ -0,0 +1,584 @@
|
||||
namespace DeviceTest
|
||||
{
|
||||
partial class DeviceTestDlg
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.parentClassNameComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.classLabel = new System.Windows.Forms.Label();
|
||||
this.nameLabel = new System.Windows.Forms.Label();
|
||||
this.parentNameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.configureParentButton = new System.Windows.Forms.Button();
|
||||
this.startButton = new System.Windows.Forms.Button();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.configureComponent1Button = new System.Windows.Forms.Button();
|
||||
this.componentNameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.component1ClassNameComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.radioButton4 = new System.Windows.Forms.RadioButton();
|
||||
this.radioButton3 = new System.Windows.Forms.RadioButton();
|
||||
this.radioButton2 = new System.Windows.Forms.RadioButton();
|
||||
this.radioButton1 = new System.Windows.Forms.RadioButton();
|
||||
this.radioButton0 = new System.Windows.Forms.RadioButton();
|
||||
this.stopButton = new System.Windows.Forms.Button();
|
||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||
this.configureComponent2Button = new System.Windows.Forms.Button();
|
||||
this.component2NameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.component2ClassNameComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.radioButton24 = new System.Windows.Forms.RadioButton();
|
||||
this.radioButton23 = new System.Windows.Forms.RadioButton();
|
||||
this.radioButton22 = new System.Windows.Forms.RadioButton();
|
||||
this.radioButton21 = new System.Windows.Forms.RadioButton();
|
||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||
this.radioButton34 = new System.Windows.Forms.RadioButton();
|
||||
this.radioButton33 = new System.Windows.Forms.RadioButton();
|
||||
this.radioButton32 = new System.Windows.Forms.RadioButton();
|
||||
this.radioButton31 = new System.Windows.Forms.RadioButton();
|
||||
this.groupBox5 = new System.Windows.Forms.GroupBox();
|
||||
this.configureComponent3Button = new System.Windows.Forms.Button();
|
||||
this.component3NameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.component3ClassNameComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.groupBox3.SuspendLayout();
|
||||
this.groupBox4.SuspendLayout();
|
||||
this.groupBox5.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// parentClassNameComboBox
|
||||
//
|
||||
this.parentClassNameComboBox.FormattingEnabled = true;
|
||||
this.parentClassNameComboBox.Location = new System.Drawing.Point(77, 19);
|
||||
this.parentClassNameComboBox.Name = "parentClassNameComboBox";
|
||||
this.parentClassNameComboBox.Size = new System.Drawing.Size(299, 21);
|
||||
this.parentClassNameComboBox.TabIndex = 0;
|
||||
//
|
||||
// classLabel
|
||||
//
|
||||
this.classLabel.AutoSize = true;
|
||||
this.classLabel.Location = new System.Drawing.Point(11, 22);
|
||||
this.classLabel.Name = "classLabel";
|
||||
this.classLabel.Size = new System.Drawing.Size(32, 13);
|
||||
this.classLabel.TabIndex = 1;
|
||||
this.classLabel.Text = "Class";
|
||||
//
|
||||
// nameLabel
|
||||
//
|
||||
this.nameLabel.AutoSize = true;
|
||||
this.nameLabel.Location = new System.Drawing.Point(11, 47);
|
||||
this.nameLabel.Name = "nameLabel";
|
||||
this.nameLabel.Size = new System.Drawing.Size(35, 13);
|
||||
this.nameLabel.TabIndex = 2;
|
||||
this.nameLabel.Text = "Name";
|
||||
//
|
||||
// parentNameTextBox
|
||||
//
|
||||
this.parentNameTextBox.Enabled = false;
|
||||
this.parentNameTextBox.Location = new System.Drawing.Point(77, 44);
|
||||
this.parentNameTextBox.Name = "parentNameTextBox";
|
||||
this.parentNameTextBox.Size = new System.Drawing.Size(299, 20);
|
||||
this.parentNameTextBox.TabIndex = 3;
|
||||
//
|
||||
// configureParentButton
|
||||
//
|
||||
this.configureParentButton.Location = new System.Drawing.Point(395, 19);
|
||||
this.configureParentButton.Name = "configureParentButton";
|
||||
this.configureParentButton.Size = new System.Drawing.Size(73, 45);
|
||||
this.configureParentButton.TabIndex = 4;
|
||||
this.configureParentButton.Text = "Configure";
|
||||
this.configureParentButton.UseVisualStyleBackColor = true;
|
||||
this.configureParentButton.Click += new System.EventHandler(this.configureParentButton_Click);
|
||||
//
|
||||
// startButton
|
||||
//
|
||||
this.startButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.startButton.Location = new System.Drawing.Point(520, 19);
|
||||
this.startButton.Name = "startButton";
|
||||
this.startButton.Size = new System.Drawing.Size(73, 45);
|
||||
this.startButton.TabIndex = 7;
|
||||
this.startButton.Text = "Start";
|
||||
this.startButton.UseVisualStyleBackColor = true;
|
||||
this.startButton.Click += new System.EventHandler(this.startButton_Click);
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.configureParentButton);
|
||||
this.groupBox1.Controls.Add(this.parentNameTextBox);
|
||||
this.groupBox1.Controls.Add(this.nameLabel);
|
||||
this.groupBox1.Controls.Add(this.classLabel);
|
||||
this.groupBox1.Controls.Add(this.parentClassNameComboBox);
|
||||
this.groupBox1.Location = new System.Drawing.Point(12, 12);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(486, 75);
|
||||
this.groupBox1.TabIndex = 8;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Parent component";
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Controls.Add(this.configureComponent1Button);
|
||||
this.groupBox2.Controls.Add(this.componentNameTextBox);
|
||||
this.groupBox2.Controls.Add(this.label1);
|
||||
this.groupBox2.Controls.Add(this.label2);
|
||||
this.groupBox2.Controls.Add(this.component1ClassNameComboBox);
|
||||
this.groupBox2.Location = new System.Drawing.Point(12, 93);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(486, 75);
|
||||
this.groupBox2.TabIndex = 9;
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "Component 1";
|
||||
//
|
||||
// configureComponentButton
|
||||
//
|
||||
this.configureComponent1Button.Location = new System.Drawing.Point(395, 19);
|
||||
this.configureComponent1Button.Name = "configureComponentButton";
|
||||
this.configureComponent1Button.Size = new System.Drawing.Size(73, 45);
|
||||
this.configureComponent1Button.TabIndex = 4;
|
||||
this.configureComponent1Button.Text = "Configure";
|
||||
this.configureComponent1Button.UseVisualStyleBackColor = true;
|
||||
this.configureComponent1Button.Click += new System.EventHandler(this.configureComponent1Button_Click);
|
||||
//
|
||||
// componentNameTextBox
|
||||
//
|
||||
this.componentNameTextBox.Enabled = false;
|
||||
this.componentNameTextBox.Location = new System.Drawing.Point(77, 44);
|
||||
this.componentNameTextBox.Name = "componentNameTextBox";
|
||||
this.componentNameTextBox.Size = new System.Drawing.Size(299, 20);
|
||||
this.componentNameTextBox.TabIndex = 3;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(11, 47);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(35, 13);
|
||||
this.label1.TabIndex = 2;
|
||||
this.label1.Text = "Name";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(11, 22);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(32, 13);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "Class";
|
||||
//
|
||||
// componentClassNameComboBox
|
||||
//
|
||||
this.component1ClassNameComboBox.FormattingEnabled = true;
|
||||
this.component1ClassNameComboBox.Location = new System.Drawing.Point(77, 19);
|
||||
this.component1ClassNameComboBox.Name = "componentClassNameComboBox";
|
||||
this.component1ClassNameComboBox.Size = new System.Drawing.Size(299, 21);
|
||||
this.component1ClassNameComboBox.TabIndex = 0;
|
||||
//
|
||||
// radioButton4
|
||||
//
|
||||
this.radioButton4.AutoSize = true;
|
||||
this.radioButton4.Location = new System.Drawing.Point(13, 118);
|
||||
this.radioButton4.Name = "radioButton4";
|
||||
this.radioButton4.Size = new System.Drawing.Size(51, 17);
|
||||
this.radioButton4.TabIndex = 9;
|
||||
this.radioButton4.TabStop = true;
|
||||
this.radioButton4.Text = "spare";
|
||||
this.radioButton4.UseVisualStyleBackColor = true;
|
||||
this.radioButton4.CheckedChanged += new System.EventHandler(this.radioButton4_CheckedChanged);
|
||||
//
|
||||
// radioButton3
|
||||
//
|
||||
this.radioButton3.AutoSize = true;
|
||||
this.radioButton3.Location = new System.Drawing.Point(13, 95);
|
||||
this.radioButton3.Name = "radioButton3";
|
||||
this.radioButton3.Size = new System.Drawing.Size(51, 17);
|
||||
this.radioButton3.TabIndex = 8;
|
||||
this.radioButton3.TabStop = true;
|
||||
this.radioButton3.Text = "spare";
|
||||
this.radioButton3.UseVisualStyleBackColor = true;
|
||||
this.radioButton3.CheckedChanged += new System.EventHandler(this.radioButton3_CheckedChanged);
|
||||
//
|
||||
// radioButton2
|
||||
//
|
||||
this.radioButton2.AutoSize = true;
|
||||
this.radioButton2.Location = new System.Drawing.Point(13, 72);
|
||||
this.radioButton2.Name = "radioButton2";
|
||||
this.radioButton2.Size = new System.Drawing.Size(51, 17);
|
||||
this.radioButton2.TabIndex = 7;
|
||||
this.radioButton2.TabStop = true;
|
||||
this.radioButton2.Text = "spare";
|
||||
this.radioButton2.UseVisualStyleBackColor = true;
|
||||
this.radioButton2.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged);
|
||||
//
|
||||
// radioButton1
|
||||
//
|
||||
this.radioButton1.AutoSize = true;
|
||||
this.radioButton1.Location = new System.Drawing.Point(13, 49);
|
||||
this.radioButton1.Name = "radioButton1";
|
||||
this.radioButton1.Size = new System.Drawing.Size(106, 17);
|
||||
this.radioButton1.TabIndex = 6;
|
||||
this.radioButton1.TabStop = true;
|
||||
this.radioButton1.Text = "ReadPressureOp";
|
||||
this.radioButton1.UseVisualStyleBackColor = true;
|
||||
this.radioButton1.CheckedChanged += new System.EventHandler(this.radioButton1_CheckedChanged);
|
||||
//
|
||||
// radioButton0
|
||||
//
|
||||
this.radioButton0.AutoSize = true;
|
||||
this.radioButton0.Location = new System.Drawing.Point(13, 26);
|
||||
this.radioButton0.Name = "radioButton0";
|
||||
this.radioButton0.Size = new System.Drawing.Size(94, 17);
|
||||
this.radioButton0.TabIndex = 5;
|
||||
this.radioButton0.TabStop = true;
|
||||
this.radioButton0.Text = "Stop operation";
|
||||
this.radioButton0.UseVisualStyleBackColor = true;
|
||||
this.radioButton0.CheckedChanged += new System.EventHandler(this.radioButton0_CheckedChanged);
|
||||
//
|
||||
// stopButton
|
||||
//
|
||||
this.stopButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.stopButton.Location = new System.Drawing.Point(520, 77);
|
||||
this.stopButton.Name = "stopButton";
|
||||
this.stopButton.Size = new System.Drawing.Size(73, 45);
|
||||
this.stopButton.TabIndex = 10;
|
||||
this.stopButton.Text = "Stop";
|
||||
this.stopButton.UseVisualStyleBackColor = true;
|
||||
this.stopButton.Click += new System.EventHandler(this.stopButton_Click);
|
||||
//
|
||||
// groupBox3
|
||||
//
|
||||
this.groupBox3.Controls.Add(this.configureComponent2Button);
|
||||
this.groupBox3.Controls.Add(this.component2NameTextBox);
|
||||
this.groupBox3.Controls.Add(this.label3);
|
||||
this.groupBox3.Controls.Add(this.label4);
|
||||
this.groupBox3.Controls.Add(this.component2ClassNameComboBox);
|
||||
this.groupBox3.Location = new System.Drawing.Point(12, 174);
|
||||
this.groupBox3.Name = "groupBox3";
|
||||
this.groupBox3.Size = new System.Drawing.Size(486, 75);
|
||||
this.groupBox3.TabIndex = 11;
|
||||
this.groupBox3.TabStop = false;
|
||||
this.groupBox3.Text = "Component 2";
|
||||
//
|
||||
// configureComponent2Button
|
||||
//
|
||||
this.configureComponent2Button.Location = new System.Drawing.Point(395, 19);
|
||||
this.configureComponent2Button.Name = "configureComponent2Button";
|
||||
this.configureComponent2Button.Size = new System.Drawing.Size(73, 45);
|
||||
this.configureComponent2Button.TabIndex = 4;
|
||||
this.configureComponent2Button.Text = "Configure";
|
||||
this.configureComponent2Button.UseVisualStyleBackColor = true;
|
||||
this.configureComponent2Button.Click += new System.EventHandler(this.configureComponent2Button_Click);
|
||||
//
|
||||
// component2NameTextBox
|
||||
//
|
||||
this.component2NameTextBox.Enabled = false;
|
||||
this.component2NameTextBox.Location = new System.Drawing.Point(77, 44);
|
||||
this.component2NameTextBox.Name = "component2NameTextBox";
|
||||
this.component2NameTextBox.Size = new System.Drawing.Size(299, 20);
|
||||
this.component2NameTextBox.TabIndex = 3;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(11, 47);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(35, 13);
|
||||
this.label3.TabIndex = 2;
|
||||
this.label3.Text = "Name";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(11, 22);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(32, 13);
|
||||
this.label4.TabIndex = 1;
|
||||
this.label4.Text = "Class";
|
||||
//
|
||||
// component2ClassNameComboBox
|
||||
//
|
||||
this.component2ClassNameComboBox.FormattingEnabled = true;
|
||||
this.component2ClassNameComboBox.Location = new System.Drawing.Point(77, 19);
|
||||
this.component2ClassNameComboBox.Name = "component2ClassNameComboBox";
|
||||
this.component2ClassNameComboBox.Size = new System.Drawing.Size(299, 21);
|
||||
this.component2ClassNameComboBox.TabIndex = 0;
|
||||
//
|
||||
// radioButton24
|
||||
//
|
||||
this.radioButton24.AutoSize = true;
|
||||
this.radioButton24.Location = new System.Drawing.Point(212, 118);
|
||||
this.radioButton24.Name = "radioButton24";
|
||||
this.radioButton24.Size = new System.Drawing.Size(51, 17);
|
||||
this.radioButton24.TabIndex = 9;
|
||||
this.radioButton24.TabStop = true;
|
||||
this.radioButton24.Text = "spare";
|
||||
this.radioButton24.UseVisualStyleBackColor = true;
|
||||
this.radioButton24.CheckedChanged += new System.EventHandler(this.radioButton24_CheckedChanged);
|
||||
//
|
||||
// radioButton23
|
||||
//
|
||||
this.radioButton23.AutoSize = true;
|
||||
this.radioButton23.Location = new System.Drawing.Point(212, 95);
|
||||
this.radioButton23.Name = "radioButton23";
|
||||
this.radioButton23.Size = new System.Drawing.Size(51, 17);
|
||||
this.radioButton23.TabIndex = 8;
|
||||
this.radioButton23.TabStop = true;
|
||||
this.radioButton23.Text = "spare";
|
||||
this.radioButton23.UseVisualStyleBackColor = true;
|
||||
this.radioButton23.CheckedChanged += new System.EventHandler(this.radioButton23_CheckedChanged);
|
||||
//
|
||||
// radioButton22
|
||||
//
|
||||
this.radioButton22.AutoSize = true;
|
||||
this.radioButton22.Location = new System.Drawing.Point(212, 72);
|
||||
this.radioButton22.Name = "radioButton22";
|
||||
this.radioButton22.Size = new System.Drawing.Size(51, 17);
|
||||
this.radioButton22.TabIndex = 7;
|
||||
this.radioButton22.TabStop = true;
|
||||
this.radioButton22.Text = "spare";
|
||||
this.radioButton22.UseVisualStyleBackColor = true;
|
||||
this.radioButton22.CheckedChanged += new System.EventHandler(this.radioButton22_CheckedChanged);
|
||||
//
|
||||
// radioButton21
|
||||
//
|
||||
this.radioButton21.AutoSize = true;
|
||||
this.radioButton21.Location = new System.Drawing.Point(212, 49);
|
||||
this.radioButton21.Name = "radioButton21";
|
||||
this.radioButton21.Size = new System.Drawing.Size(106, 17);
|
||||
this.radioButton21.TabIndex = 6;
|
||||
this.radioButton21.TabStop = true;
|
||||
this.radioButton21.Text = "ReadPressureOp";
|
||||
this.radioButton21.UseVisualStyleBackColor = true;
|
||||
this.radioButton21.CheckedChanged += new System.EventHandler(this.radioButton21_CheckedChanged);
|
||||
//
|
||||
// groupBox4
|
||||
//
|
||||
this.groupBox4.Controls.Add(this.radioButton34);
|
||||
this.groupBox4.Controls.Add(this.radioButton33);
|
||||
this.groupBox4.Controls.Add(this.radioButton32);
|
||||
this.groupBox4.Controls.Add(this.radioButton31);
|
||||
this.groupBox4.Controls.Add(this.radioButton24);
|
||||
this.groupBox4.Controls.Add(this.radioButton4);
|
||||
this.groupBox4.Controls.Add(this.radioButton23);
|
||||
this.groupBox4.Controls.Add(this.radioButton0);
|
||||
this.groupBox4.Controls.Add(this.radioButton22);
|
||||
this.groupBox4.Controls.Add(this.radioButton3);
|
||||
this.groupBox4.Controls.Add(this.radioButton21);
|
||||
this.groupBox4.Controls.Add(this.radioButton1);
|
||||
this.groupBox4.Controls.Add(this.radioButton2);
|
||||
this.groupBox4.Location = new System.Drawing.Point(12, 349);
|
||||
this.groupBox4.Name = "groupBox4";
|
||||
this.groupBox4.Size = new System.Drawing.Size(581, 145);
|
||||
this.groupBox4.TabIndex = 12;
|
||||
this.groupBox4.TabStop = false;
|
||||
this.groupBox4.Text = "Operations";
|
||||
//
|
||||
// radioButton34
|
||||
//
|
||||
this.radioButton34.AutoSize = true;
|
||||
this.radioButton34.Location = new System.Drawing.Point(405, 118);
|
||||
this.radioButton34.Name = "radioButton34";
|
||||
this.radioButton34.Size = new System.Drawing.Size(51, 17);
|
||||
this.radioButton34.TabIndex = 13;
|
||||
this.radioButton34.TabStop = true;
|
||||
this.radioButton34.Text = "spare";
|
||||
this.radioButton34.UseVisualStyleBackColor = true;
|
||||
this.radioButton34.CheckedChanged += new System.EventHandler(this.radioButton34_CheckedChanged);
|
||||
//
|
||||
// radioButton33
|
||||
//
|
||||
this.radioButton33.AutoSize = true;
|
||||
this.radioButton33.Location = new System.Drawing.Point(405, 95);
|
||||
this.radioButton33.Name = "radioButton33";
|
||||
this.radioButton33.Size = new System.Drawing.Size(51, 17);
|
||||
this.radioButton33.TabIndex = 12;
|
||||
this.radioButton33.TabStop = true;
|
||||
this.radioButton33.Text = "spare";
|
||||
this.radioButton33.UseVisualStyleBackColor = true;
|
||||
this.radioButton33.CheckedChanged += new System.EventHandler(this.radioButton33_CheckedChanged);
|
||||
//
|
||||
// radioButton32
|
||||
//
|
||||
this.radioButton32.AutoSize = true;
|
||||
this.radioButton32.Location = new System.Drawing.Point(405, 72);
|
||||
this.radioButton32.Name = "radioButton32";
|
||||
this.radioButton32.Size = new System.Drawing.Size(51, 17);
|
||||
this.radioButton32.TabIndex = 11;
|
||||
this.radioButton32.TabStop = true;
|
||||
this.radioButton32.Text = "spare";
|
||||
this.radioButton32.UseVisualStyleBackColor = true;
|
||||
this.radioButton32.CheckedChanged += new System.EventHandler(this.radioButton32_CheckedChanged);
|
||||
//
|
||||
// radioButton31
|
||||
//
|
||||
this.radioButton31.AutoSize = true;
|
||||
this.radioButton31.Location = new System.Drawing.Point(405, 49);
|
||||
this.radioButton31.Name = "radioButton31";
|
||||
this.radioButton31.Size = new System.Drawing.Size(106, 17);
|
||||
this.radioButton31.TabIndex = 10;
|
||||
this.radioButton31.TabStop = true;
|
||||
this.radioButton31.Text = "ReadPressureOp";
|
||||
this.radioButton31.UseVisualStyleBackColor = true;
|
||||
this.radioButton31.CheckedChanged += new System.EventHandler(this.radioButton31_CheckedChanged);
|
||||
//
|
||||
// groupBox5
|
||||
//
|
||||
this.groupBox5.Controls.Add(this.configureComponent3Button);
|
||||
this.groupBox5.Controls.Add(this.component3NameTextBox);
|
||||
this.groupBox5.Controls.Add(this.label5);
|
||||
this.groupBox5.Controls.Add(this.label6);
|
||||
this.groupBox5.Controls.Add(this.component3ClassNameComboBox);
|
||||
this.groupBox5.Location = new System.Drawing.Point(12, 255);
|
||||
this.groupBox5.Name = "groupBox5";
|
||||
this.groupBox5.Size = new System.Drawing.Size(486, 75);
|
||||
this.groupBox5.TabIndex = 13;
|
||||
this.groupBox5.TabStop = false;
|
||||
this.groupBox5.Text = "Component 3";
|
||||
//
|
||||
// configureComponent3Button
|
||||
//
|
||||
this.configureComponent3Button.Location = new System.Drawing.Point(395, 19);
|
||||
this.configureComponent3Button.Name = "configureComponent3Button";
|
||||
this.configureComponent3Button.Size = new System.Drawing.Size(73, 45);
|
||||
this.configureComponent3Button.TabIndex = 4;
|
||||
this.configureComponent3Button.Text = "Configure";
|
||||
this.configureComponent3Button.UseVisualStyleBackColor = true;
|
||||
this.configureComponent3Button.Click += new System.EventHandler(this.configureComponent3Button_Click);
|
||||
//
|
||||
// component3NameTextBox
|
||||
//
|
||||
this.component3NameTextBox.Enabled = false;
|
||||
this.component3NameTextBox.Location = new System.Drawing.Point(77, 44);
|
||||
this.component3NameTextBox.Name = "component3NameTextBox";
|
||||
this.component3NameTextBox.Size = new System.Drawing.Size(299, 20);
|
||||
this.component3NameTextBox.TabIndex = 3;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(11, 47);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(35, 13);
|
||||
this.label5.TabIndex = 2;
|
||||
this.label5.Text = "Name";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(11, 22);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(32, 13);
|
||||
this.label6.TabIndex = 1;
|
||||
this.label6.Text = "Class";
|
||||
//
|
||||
// component3ClassNameComboBox
|
||||
//
|
||||
this.component3ClassNameComboBox.FormattingEnabled = true;
|
||||
this.component3ClassNameComboBox.Location = new System.Drawing.Point(77, 19);
|
||||
this.component3ClassNameComboBox.Name = "component3ClassNameComboBox";
|
||||
this.component3ClassNameComboBox.Size = new System.Drawing.Size(299, 21);
|
||||
this.component3ClassNameComboBox.TabIndex = 0;
|
||||
//
|
||||
// DeviceTestDlg
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(613, 502);
|
||||
this.Controls.Add(this.groupBox5);
|
||||
this.Controls.Add(this.groupBox4);
|
||||
this.Controls.Add(this.groupBox3);
|
||||
this.Controls.Add(this.stopButton);
|
||||
this.Controls.Add(this.groupBox2);
|
||||
this.Controls.Add(this.startButton);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Name = "DeviceTestDlg";
|
||||
this.Text = "Device test";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DeviceTestDlg_FormClosing);
|
||||
this.Load += new System.EventHandler(this.DeviceTestDlg_Load);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox2.PerformLayout();
|
||||
this.groupBox3.ResumeLayout(false);
|
||||
this.groupBox3.PerformLayout();
|
||||
this.groupBox4.ResumeLayout(false);
|
||||
this.groupBox4.PerformLayout();
|
||||
this.groupBox5.ResumeLayout(false);
|
||||
this.groupBox5.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ComboBox parentClassNameComboBox;
|
||||
private System.Windows.Forms.Label classLabel;
|
||||
private System.Windows.Forms.Label nameLabel;
|
||||
private System.Windows.Forms.TextBox parentNameTextBox;
|
||||
private System.Windows.Forms.Button configureParentButton;
|
||||
private System.Windows.Forms.Button startButton;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
private System.Windows.Forms.Button configureComponent1Button;
|
||||
private System.Windows.Forms.TextBox componentNameTextBox;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.ComboBox component1ClassNameComboBox;
|
||||
private System.Windows.Forms.RadioButton radioButton4;
|
||||
private System.Windows.Forms.RadioButton radioButton3;
|
||||
private System.Windows.Forms.RadioButton radioButton2;
|
||||
private System.Windows.Forms.RadioButton radioButton1;
|
||||
private System.Windows.Forms.RadioButton radioButton0;
|
||||
private System.Windows.Forms.Button stopButton;
|
||||
private System.Windows.Forms.GroupBox groupBox3;
|
||||
private System.Windows.Forms.RadioButton radioButton24;
|
||||
private System.Windows.Forms.RadioButton radioButton23;
|
||||
private System.Windows.Forms.RadioButton radioButton22;
|
||||
private System.Windows.Forms.RadioButton radioButton21;
|
||||
private System.Windows.Forms.Button configureComponent2Button;
|
||||
private System.Windows.Forms.TextBox component2NameTextBox;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.ComboBox component2ClassNameComboBox;
|
||||
private System.Windows.Forms.GroupBox groupBox4;
|
||||
private System.Windows.Forms.GroupBox groupBox5;
|
||||
private System.Windows.Forms.Button configureComponent3Button;
|
||||
private System.Windows.Forms.TextBox component3NameTextBox;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.ComboBox component3ClassNameComboBox;
|
||||
private System.Windows.Forms.RadioButton radioButton34;
|
||||
private System.Windows.Forms.RadioButton radioButton33;
|
||||
private System.Windows.Forms.RadioButton radioButton32;
|
||||
private System.Windows.Forms.RadioButton radioButton31;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,835 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using TBF.BenchControl;
|
||||
using TBF.BenchControl.Generic;
|
||||
using TBF.BenchControl.GenericDevices;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
|
||||
namespace DeviceTest
|
||||
{
|
||||
public partial class DeviceTestDlg : Form
|
||||
{
|
||||
IList<string> compClasses;
|
||||
|
||||
IComponentFactory parentFactory;
|
||||
IComponentFactory component1Factory;
|
||||
IComponentFactory component2Factory;
|
||||
IComponentFactory component3Factory;
|
||||
|
||||
IComponentCfg parentCfg;
|
||||
IComponentCfg component1Cfg;
|
||||
IComponentCfg component2Cfg;
|
||||
IComponentCfg component3Cfg;
|
||||
|
||||
static IList<TBF.BenchControl.Generic.IDevice> tbfDevices;
|
||||
static IList<TBF.BenchControl.Generic.IComponent> tbfComponents;
|
||||
static TBF.BenchControl.Generic.IComponent tbfComponent1forOp;
|
||||
static TBF.BenchControl.Generic.IComponent tbfComponent2forOp;
|
||||
static TBF.BenchControl.Generic.IComponent tbfComponent3forOp;
|
||||
|
||||
static Thread workerThread;
|
||||
static bool workerThreadRunning;
|
||||
|
||||
|
||||
static int activeOperationId;
|
||||
|
||||
static IOperation operation1;
|
||||
static IOperation operation2;
|
||||
static IOperation operation3;
|
||||
static IOperation operation4;
|
||||
|
||||
static IOperation operation21;
|
||||
static IOperation operation22;
|
||||
static IOperation operation23;
|
||||
static IOperation operation24;
|
||||
|
||||
static IOperation operation31;
|
||||
static IOperation operation32;
|
||||
static IOperation operation33;
|
||||
static IOperation operation34;
|
||||
|
||||
|
||||
static TBF.Boxes.FloatBox floatBox;
|
||||
static Event evnt;
|
||||
|
||||
|
||||
static DeviceTestDlg()
|
||||
{
|
||||
floatBox = new TBF.Boxes.FloatBox();
|
||||
floatBox.Format = "F2";
|
||||
}
|
||||
|
||||
public DeviceTestDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
compClasses = new List<string>();
|
||||
radioButton0.Checked = true;
|
||||
stopButton.Enabled = false;
|
||||
|
||||
foreach (var componentFactory in TbfComponents.Factories)
|
||||
{
|
||||
compClasses.Add(componentFactory.ClassName);
|
||||
}
|
||||
|
||||
tbfComponents = new List<TBF.BenchControl.Generic.IComponent>();
|
||||
tbfDevices = new List<IDevice>();
|
||||
}
|
||||
|
||||
private void DeviceTestDlg_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
foreach (var clName in compClasses)
|
||||
{
|
||||
parentClassNameComboBox.Items.Add(clName);
|
||||
component1ClassNameComboBox.Items.Add(clName);
|
||||
component2ClassNameComboBox.Items.Add(clName);
|
||||
component3ClassNameComboBox.Items.Add(clName);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Program.LocalSettings.ParentClassName) &&
|
||||
!string.IsNullOrEmpty(Program.LocalSettings.ParentName) &&
|
||||
!string.IsNullOrEmpty(Program.LocalSettings.ParentSettings))
|
||||
{
|
||||
FactoryFromClassName(Program.LocalSettings.ParentClassName, ref parentFactory);
|
||||
|
||||
using (var reader = new StringReader(Program.LocalSettings.ParentSettings))
|
||||
{
|
||||
IComponentCfg config = (IComponentCfg)(new XmlSerializer(parentFactory.DefaultConfig().GetType())).Deserialize(reader);
|
||||
config.Name = Program.LocalSettings.ParentName;
|
||||
config.ParentName = string.Empty;
|
||||
config.ItemNr = 0;
|
||||
config.DebugLevel = Config.Entities.DebugMode.Normal;
|
||||
config.LogLevel = Config.Entities.LogLevel.Debug;
|
||||
config.Corrections = null;
|
||||
config.Factory = parentFactory;
|
||||
parentCfg = config;
|
||||
}
|
||||
|
||||
parentClassNameComboBox.Text = Program.LocalSettings.ParentClassName;
|
||||
parentNameTextBox.Text = Program.LocalSettings.ParentName;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
parentFactory = null;
|
||||
parentCfg = null;
|
||||
parentClassNameComboBox.Text = string.Empty;
|
||||
parentNameTextBox.Text = string.Empty;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Program.LocalSettings.ComponentClassName) &&
|
||||
!string.IsNullOrEmpty(Program.LocalSettings.ComponentName) &&
|
||||
!string.IsNullOrEmpty(Program.LocalSettings.ComponentSettings))
|
||||
{
|
||||
FactoryFromClassName(Program.LocalSettings.ComponentClassName, ref component1Factory);
|
||||
|
||||
using (var reader = new StringReader(Program.LocalSettings.ComponentSettings))
|
||||
{
|
||||
IComponentCfg config = (IComponentCfg)(new XmlSerializer(component1Factory.DefaultConfig().GetType())).Deserialize(reader);
|
||||
config.Name = Program.LocalSettings.ComponentName;
|
||||
config.ParentName = string.IsNullOrEmpty(Program.LocalSettings.ComponentParentName) ? string.Empty : Program.LocalSettings.ComponentParentName;
|
||||
config.ItemNr = 1;
|
||||
config.DebugLevel = Config.Entities.DebugMode.Normal;
|
||||
config.LogLevel = Config.Entities.LogLevel.Debug;
|
||||
config.Corrections = null;
|
||||
config.Factory = component1Factory;
|
||||
component1Cfg = config;
|
||||
}
|
||||
|
||||
component1ClassNameComboBox.Text = Program.LocalSettings.ComponentClassName;
|
||||
componentNameTextBox.Text = Program.LocalSettings.ComponentName;
|
||||
|
||||
UpdateOperations(component1ClassNameComboBox.Text);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
component1Factory = null;
|
||||
component1Cfg = null;
|
||||
component1ClassNameComboBox.Text = string.Empty;
|
||||
componentNameTextBox.Text = string.Empty;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Program.LocalSettings.Component2ClassName) &&
|
||||
!string.IsNullOrEmpty(Program.LocalSettings.Component2Name) &&
|
||||
!string.IsNullOrEmpty(Program.LocalSettings.Component2Settings))
|
||||
{
|
||||
FactoryFromClassName(Program.LocalSettings.Component2ClassName, ref component2Factory);
|
||||
|
||||
using (var reader = new StringReader(Program.LocalSettings.Component2Settings))
|
||||
{
|
||||
IComponentCfg config = (IComponentCfg)(new XmlSerializer(component2Factory.DefaultConfig().GetType())).Deserialize(reader);
|
||||
config.Name = Program.LocalSettings.Component2Name;
|
||||
config.ParentName = string.IsNullOrEmpty(Program.LocalSettings.Component2ParentName) ? string.Empty : Program.LocalSettings.Component2ParentName;
|
||||
config.ItemNr = 2;
|
||||
config.DebugLevel = Config.Entities.DebugMode.Normal;
|
||||
config.LogLevel = Config.Entities.LogLevel.Debug;
|
||||
config.Corrections = null;
|
||||
config.Factory = component2Factory;
|
||||
component2Cfg = config;
|
||||
}
|
||||
|
||||
component2ClassNameComboBox.Text = Program.LocalSettings.Component2ClassName;
|
||||
component2NameTextBox.Text = Program.LocalSettings.Component2Name;
|
||||
|
||||
UpdateOperations2(component2ClassNameComboBox.Text);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
component2Factory = null;
|
||||
component2Cfg = null;
|
||||
component2ClassNameComboBox.Text = string.Empty;
|
||||
component2NameTextBox.Text = string.Empty;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Program.LocalSettings.Component3ClassName) &&
|
||||
!string.IsNullOrEmpty(Program.LocalSettings.Component3Name) &&
|
||||
!string.IsNullOrEmpty(Program.LocalSettings.Component3Settings))
|
||||
{
|
||||
FactoryFromClassName(Program.LocalSettings.Component3ClassName, ref component3Factory);
|
||||
|
||||
using (var reader = new StringReader(Program.LocalSettings.Component3Settings))
|
||||
{
|
||||
IComponentCfg config = (IComponentCfg)(new XmlSerializer(component3Factory.DefaultConfig().GetType())).Deserialize(reader);
|
||||
config.Name = Program.LocalSettings.Component3Name;
|
||||
config.ParentName = string.IsNullOrEmpty(Program.LocalSettings.Component3ParentName) ? string.Empty : Program.LocalSettings.Component3ParentName;
|
||||
config.ItemNr = 3;
|
||||
config.DebugLevel = Config.Entities.DebugMode.Normal;
|
||||
config.LogLevel = Config.Entities.LogLevel.Debug;
|
||||
config.Corrections = null;
|
||||
config.Factory = component3Factory;
|
||||
component3Cfg = config;
|
||||
}
|
||||
|
||||
component3ClassNameComboBox.Text = Program.LocalSettings.Component3ClassName;
|
||||
component3NameTextBox.Text = Program.LocalSettings.Component3Name;
|
||||
|
||||
UpdateOperations3(component3ClassNameComboBox.Text);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
component3Factory = null;
|
||||
component3Cfg = null;
|
||||
component3ClassNameComboBox.Text = string.Empty;
|
||||
component3NameTextBox.Text = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
void SaveSettings()
|
||||
{
|
||||
Program.LocalSettings.ParentClassName = parentClassNameComboBox.Text;
|
||||
Program.LocalSettings.ParentName = parentNameTextBox.Text;
|
||||
Program.LocalSettings.ParentSettings = (parentCfg != null) ? parentCfg.CreateDbEntity().Parameters : string.Empty;
|
||||
|
||||
Program.LocalSettings.ComponentClassName = component1ClassNameComboBox.Text;
|
||||
Program.LocalSettings.ComponentName = componentNameTextBox.Text;
|
||||
Program.LocalSettings.ComponentParentName = (component1Cfg != null) ? component1Cfg.ParentName : string.Empty;
|
||||
Program.LocalSettings.ComponentSettings = (component1Cfg != null) ? component1Cfg.CreateDbEntity().Parameters : string.Empty;
|
||||
|
||||
Program.LocalSettings.Component2ClassName = component2ClassNameComboBox.Text;
|
||||
Program.LocalSettings.Component2Name = component2NameTextBox.Text;
|
||||
Program.LocalSettings.Component2ParentName = (component2Cfg != null) ? component2Cfg.ParentName : string.Empty;
|
||||
Program.LocalSettings.Component2Settings = (component2Cfg != null) ? component2Cfg.CreateDbEntity().Parameters : string.Empty;
|
||||
|
||||
Program.LocalSettings.Component3ClassName = component3ClassNameComboBox.Text;
|
||||
Program.LocalSettings.Component3Name = component3NameTextBox.Text;
|
||||
Program.LocalSettings.Component3ParentName = (component3Cfg != null) ? component3Cfg.ParentName : string.Empty;
|
||||
Program.LocalSettings.Component3Settings = (component3Cfg != null) ? component3Cfg.CreateDbEntity().Parameters : string.Empty;
|
||||
|
||||
Program.LocalSettings.Save();
|
||||
}
|
||||
|
||||
|
||||
void UpdateOperations(string className)
|
||||
{
|
||||
if (className == "Keithley.TempMeter") radioButton1.Text = "ReadPressureOp";
|
||||
else if (className == "Network.Camera.CLP1611") radioButton1.Text = "Livestream";
|
||||
else if (className == "Network.Camera.Roi") radioButton1.Text = "RoiDetection";
|
||||
else if (className == "Modbus.Easytherm")
|
||||
{
|
||||
radioButton1.Text = "SetTemperature(10)";
|
||||
radioButton2.Text = "SetTemperature(20)";
|
||||
}
|
||||
else if (className == "Modbus.TankSelector")
|
||||
{
|
||||
radioButton1.Text = "SelectTank 1";
|
||||
radioButton2.Text = "SelectTank 2";
|
||||
radioButton3.Text = "SelectTank 3";
|
||||
radioButton4.Text = "SelectTank -";
|
||||
}
|
||||
else radioButton1.Text = "spare";
|
||||
}
|
||||
///
|
||||
void UpdateOperations2(string className)
|
||||
{
|
||||
if (className == "Keithley.TempMeter") radioButton21.Text = "ReadPressureOp";
|
||||
else if (className == "Network.Camera.CLP1611") radioButton21.Text = "Livestream";
|
||||
else if (className == "Network.Camera.Roi") radioButton21.Text = "RoiDetection";
|
||||
else if (className == "Modbus.Easytherm")
|
||||
{
|
||||
radioButton21.Text = "SetTemperature(10)";
|
||||
radioButton22.Text = "SetTemperature(20)";
|
||||
}
|
||||
else if (className == "Modbus.TankSelector")
|
||||
{
|
||||
radioButton21.Text = "SelectTank 1";
|
||||
radioButton22.Text = "SelectTank 2";
|
||||
radioButton23.Text = "SelectTank 3";
|
||||
radioButton24.Text = "SelectTank -";
|
||||
}
|
||||
else radioButton21.Text = "spare";
|
||||
}
|
||||
///
|
||||
void UpdateOperations3(string className)
|
||||
{
|
||||
if (className == "Keithley.TempMeter") radioButton31.Text = "ReadPressureOp";
|
||||
else if (className == "Network.Camera.CLP1611") radioButton31.Text = "Livestream";
|
||||
else if (className == "Network.Camera.Roi") radioButton31.Text = "RoiDetection";
|
||||
else if (className == "Modbus.Easytherm")
|
||||
{
|
||||
radioButton31.Text = "SetTemperature(10)";
|
||||
radioButton32.Text = "SetTemperature(20)";
|
||||
}
|
||||
else if (className == "Modbus.TankSelector")
|
||||
{
|
||||
radioButton31.Text = "SelectTank 1";
|
||||
radioButton32.Text = "SelectTank 2";
|
||||
radioButton33.Text = "SelectTank 3";
|
||||
radioButton34.Text = "SelectTank -";
|
||||
}
|
||||
else radioButton31.Text = "spare";
|
||||
}
|
||||
|
||||
|
||||
int GetActiveOperationId()
|
||||
{
|
||||
if (radioButton1.Checked) { return 1; }
|
||||
else if (radioButton2.Checked) { return 2; }
|
||||
else if (radioButton3.Checked) { return 3; }
|
||||
else if (radioButton4.Checked) { return 4; }
|
||||
else if (radioButton21.Checked) { return 21; }
|
||||
else if (radioButton22.Checked) { return 22; }
|
||||
else if (radioButton23.Checked) { return 23; }
|
||||
else if (radioButton24.Checked) { return 24; }
|
||||
else if (radioButton31.Checked) { return 31; }
|
||||
else if (radioButton32.Checked) { return 32; }
|
||||
else if (radioButton33.Checked) { return 33; }
|
||||
else if (radioButton34.Checked) { return 34; }
|
||||
else return 0; /// stopOperationRadioButton.Checked
|
||||
}
|
||||
|
||||
|
||||
private void radioButton0_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
private void radioButton1_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
private void radioButton2_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
private void radioButton3_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
private void radioButton4_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
///
|
||||
private void radioButton21_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
private void radioButton22_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
private void radioButton23_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
private void radioButton24_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
///
|
||||
private void radioButton31_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
private void radioButton32_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
private void radioButton33_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
private void radioButton34_CheckedChanged(object sender, EventArgs e) { activeOperationId = GetActiveOperationId(); }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Updates component factory
|
||||
/// </summary>
|
||||
/// <param name="className">Component class name</param>
|
||||
/// <param name="factory">Reference to a factory</param>
|
||||
/// <returns>true when factory changed</returns>
|
||||
bool FactoryFromClassName(string className, ref IComponentFactory factory)
|
||||
{
|
||||
foreach (var fac in TbfComponents.Factories)
|
||||
{
|
||||
if (className == fac.ClassName)
|
||||
{
|
||||
if (factory != fac)
|
||||
{
|
||||
factory = fac;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (factory != null)
|
||||
{
|
||||
factory = null;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void configureParentButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
bool factoryChanged = FactoryFromClassName(parentClassNameComboBox.Text, ref parentFactory);
|
||||
if (parentFactory == null)
|
||||
{
|
||||
MessageBox.Show("Invalid parent class", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
}
|
||||
|
||||
if (factoryChanged || parentCfg == null)
|
||||
{
|
||||
parentCfg = parentFactory.DefaultConfig();
|
||||
}
|
||||
IComponentCfgCtrl cfgControl = parentCfg.GetControl();
|
||||
cfgControl.Config = parentCfg;
|
||||
cfgControl.Config.ItemNr = 0;
|
||||
|
||||
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
|
||||
cfgForm.TbfComponents = new List<Config.Entities.Component>();
|
||||
|
||||
cfgForm.ComponentCfgCtrl = cfgControl;
|
||||
cfgForm.UnlockAfterStart = true;
|
||||
DialogResult dr = cfgForm.ShowDialog();
|
||||
if (dr != DialogResult.OK) return;
|
||||
|
||||
parentNameTextBox.Text = parentCfg.Name;
|
||||
}
|
||||
|
||||
|
||||
private void configureComponent1Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
bool factoryChanged = FactoryFromClassName(component1ClassNameComboBox.Text, ref component1Factory);
|
||||
if (component1Factory == null)
|
||||
{
|
||||
MessageBox.Show("Invalid component class", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
}
|
||||
|
||||
if (factoryChanged || component1Cfg == null)
|
||||
{
|
||||
component1Cfg = component1Factory.DefaultConfig();
|
||||
}
|
||||
IComponentCfgCtrl cfgControl = component1Cfg.GetControl();
|
||||
cfgControl.Config = component1Cfg;
|
||||
cfgControl.Config.ItemNr = 1;
|
||||
|
||||
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
|
||||
///
|
||||
IList<Config.Entities.Component> compEntities = new List<Config.Entities.Component>();
|
||||
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
|
||||
cfgForm.TbfComponents = compEntities;
|
||||
|
||||
cfgForm.ComponentCfgCtrl = cfgControl;
|
||||
cfgForm.UnlockAfterStart = true;
|
||||
DialogResult dr = cfgForm.ShowDialog();
|
||||
if (dr != DialogResult.OK) return;
|
||||
|
||||
componentNameTextBox.Text = component1Cfg.Name;
|
||||
|
||||
UpdateOperations(component1ClassNameComboBox.Text);
|
||||
}
|
||||
|
||||
|
||||
private void configureComponent2Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
bool factoryChanged = FactoryFromClassName(component2ClassNameComboBox.Text, ref component2Factory);
|
||||
if (component2Factory == null)
|
||||
{
|
||||
MessageBox.Show("Invalid component class", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
}
|
||||
|
||||
if (factoryChanged || component2Cfg == null)
|
||||
{
|
||||
component2Cfg = component2Factory.DefaultConfig();
|
||||
}
|
||||
IComponentCfgCtrl cfgControl = component2Cfg.GetControl();
|
||||
cfgControl.Config = component2Cfg;
|
||||
cfgControl.Config.ItemNr = 1;
|
||||
|
||||
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
|
||||
///
|
||||
IList<Config.Entities.Component> compEntities = new List<Config.Entities.Component>();
|
||||
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
|
||||
if (component1Factory != null && component1Cfg != null) compEntities.Add(component1Cfg.CreateDbEntity());
|
||||
cfgForm.TbfComponents = compEntities;
|
||||
|
||||
cfgForm.ComponentCfgCtrl = cfgControl;
|
||||
cfgForm.UnlockAfterStart = true;
|
||||
DialogResult dr = cfgForm.ShowDialog();
|
||||
if (dr != DialogResult.OK) return;
|
||||
|
||||
component2NameTextBox.Text = component2Cfg.Name;
|
||||
|
||||
UpdateOperations2(component2ClassNameComboBox.Text);
|
||||
}
|
||||
|
||||
|
||||
private void configureComponent3Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
bool factoryChanged = FactoryFromClassName(component3ClassNameComboBox.Text, ref component3Factory);
|
||||
if (component3Factory == null)
|
||||
{
|
||||
MessageBox.Show("Invalid component class", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
}
|
||||
|
||||
if (factoryChanged || component3Cfg == null)
|
||||
{
|
||||
component3Cfg = component3Factory.DefaultConfig();
|
||||
}
|
||||
IComponentCfgCtrl cfgControl = component3Cfg.GetControl();
|
||||
cfgControl.Config = component3Cfg;
|
||||
cfgControl.Config.ItemNr = 1;
|
||||
|
||||
TBF.ComponentParametersDlg cfgForm = new TBF.ComponentParametersDlg();
|
||||
///
|
||||
IList<Config.Entities.Component> compEntities = new List<Config.Entities.Component>();
|
||||
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
|
||||
if (component1Factory != null && component1Cfg != null) compEntities.Add(component1Cfg.CreateDbEntity());
|
||||
if (component2Factory != null && component2Cfg != null) compEntities.Add(component2Cfg.CreateDbEntity());
|
||||
cfgForm.TbfComponents = compEntities;
|
||||
|
||||
cfgForm.ComponentCfgCtrl = cfgControl;
|
||||
cfgForm.UnlockAfterStart = true;
|
||||
DialogResult dr = cfgForm.ShowDialog();
|
||||
if (dr != DialogResult.OK) return;
|
||||
|
||||
component3NameTextBox.Text = component3Cfg.Name;
|
||||
|
||||
UpdateOperations3(component3ClassNameComboBox.Text);
|
||||
}
|
||||
|
||||
|
||||
private void startButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
tbfComponents.Clear();
|
||||
tbfDevices.Clear();
|
||||
tbfComponent1forOp = null;
|
||||
operation1 = null;
|
||||
operation2 = null;
|
||||
operation3 = null;
|
||||
operation4 = null;
|
||||
tbfComponent2forOp = null;
|
||||
operation21 = null;
|
||||
operation22 = null;
|
||||
operation23 = null;
|
||||
operation24 = null;
|
||||
tbfComponent3forOp = null;
|
||||
operation31 = null;
|
||||
operation32 = null;
|
||||
operation33 = null;
|
||||
operation34 = null;
|
||||
workerThreadRunning = false;
|
||||
|
||||
string initializedDeviceName = "none";
|
||||
try
|
||||
{
|
||||
if (parentFactory != null && parentCfg != null)
|
||||
{
|
||||
TBF.BenchControl.Generic.IComponent component = parentFactory.GetComponent(parentCfg, tbfComponents);
|
||||
tbfComponents.Add(component);
|
||||
IDevice dev = component as IDevice;
|
||||
if (dev != null)
|
||||
{
|
||||
initializedDeviceName = dev.Name;
|
||||
dev.Initialize();
|
||||
tbfDevices.Add(dev);
|
||||
}
|
||||
}
|
||||
if (component1Factory != null && component1Cfg != null)
|
||||
{
|
||||
TBF.BenchControl.Generic.IComponent component = component1Factory.GetComponent(component1Cfg, tbfComponents);
|
||||
tbfComponents.Add(component);
|
||||
tbfComponent1forOp = component;
|
||||
IDevice dev = component as IDevice;
|
||||
if (dev != null)
|
||||
{
|
||||
initializedDeviceName = dev.Name;
|
||||
dev.Initialize();
|
||||
tbfDevices.Add(dev);
|
||||
}
|
||||
}
|
||||
if (component2Factory != null && component2Cfg != null)
|
||||
{
|
||||
TBF.BenchControl.Generic.IComponent component2 = component2Factory.GetComponent(component2Cfg, tbfComponents);
|
||||
tbfComponents.Add(component2);
|
||||
tbfComponent2forOp = component2;
|
||||
IDevice dev = component2 as IDevice;
|
||||
if (dev != null)
|
||||
{
|
||||
initializedDeviceName = dev.Name;
|
||||
dev.Initialize();
|
||||
tbfDevices.Add(dev);
|
||||
}
|
||||
}
|
||||
if (component3Factory != null && component3Cfg != null)
|
||||
{
|
||||
TBF.BenchControl.Generic.IComponent component3 = component3Factory.GetComponent(component3Cfg, tbfComponents);
|
||||
tbfComponents.Add(component3);
|
||||
tbfComponent3forOp = component3;
|
||||
IDevice dev = component3 as IDevice;
|
||||
if (dev != null)
|
||||
{
|
||||
initializedDeviceName = dev.Name;
|
||||
dev.Initialize();
|
||||
tbfDevices.Add(dev);
|
||||
}
|
||||
}
|
||||
|
||||
if (tbfComponents.Count == 0) throw new Exception("There are no components");
|
||||
|
||||
SaveSettings(); /// Save settings after successful initialization
|
||||
|
||||
workerThread = new Thread(Worker);
|
||||
workerThread.CurrentCulture = Thread.CurrentThread.CurrentCulture;
|
||||
workerThread.CurrentUICulture = Thread.CurrentThread.CurrentUICulture;
|
||||
workerThreadRunning = true;
|
||||
workerThread.Start();
|
||||
|
||||
startButton.Enabled = false;
|
||||
stopButton.Enabled = true;
|
||||
configureComponent2Button.Enabled = false;
|
||||
configureComponent1Button.Enabled = false;
|
||||
configureParentButton.Enabled = false;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
workerThreadRunning = false;
|
||||
workerThread = null;
|
||||
|
||||
MessageBox.Show(exc.Message,
|
||||
string.Format("'{0}' initialization failed", initializedDeviceName),
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
|
||||
foreach (var dev in tbfDevices) dev.StopDevice();
|
||||
tbfDevices.Clear();
|
||||
|
||||
startButton.Enabled = true;
|
||||
stopButton.Enabled = false;
|
||||
configureComponent2Button.Enabled = true;
|
||||
configureComponent1Button.Enabled = true;
|
||||
configureParentButton.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void Worker()
|
||||
{
|
||||
int activeOperationLocal = 0;
|
||||
int previousOperation = 0;
|
||||
|
||||
|
||||
if (tbfComponent1forOp is TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter)
|
||||
{
|
||||
operation1 = (tbfComponent1forOp as TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter).ReadPressureOp(ref floatBox);
|
||||
}
|
||||
else if (tbfComponent1forOp is TBF.BenchControl.Network.Camera.CLP1611.Camera)
|
||||
{
|
||||
operation1 = (tbfComponent1forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(false);
|
||||
operation2 = (tbfComponent1forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(true);
|
||||
}
|
||||
else if (tbfComponent1forOp is TBF.BenchControl.Network.Camera.Roi.Roi)
|
||||
{
|
||||
operation1 = (tbfComponent1forOp as TBF.BenchControl.Network.Camera.Roi.Roi).RoiDetectionOp();
|
||||
}
|
||||
else if (tbfComponent1forOp is TBF.BenchControl.Modbus.Easytherm.Easytherm)
|
||||
{
|
||||
operation1 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
|
||||
operation2 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
|
||||
}
|
||||
else if (tbfComponent1forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector)
|
||||
{
|
||||
//operation1 = (tbfComponent1forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(1);
|
||||
//operation2 = (tbfComponent1forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(2);
|
||||
//operation3 = (tbfComponent1forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(3);
|
||||
//operation4 = (tbfComponent1forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(0);
|
||||
}
|
||||
|
||||
|
||||
if (tbfComponent2forOp is TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter)
|
||||
{
|
||||
operation21 = (tbfComponent2forOp as TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter).ReadPressureOp(ref floatBox);
|
||||
}
|
||||
else if (tbfComponent2forOp is TBF.BenchControl.Network.Camera.CLP1611.Camera)
|
||||
{
|
||||
operation21 = (tbfComponent2forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(false);
|
||||
operation22 = (tbfComponent2forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(true);
|
||||
}
|
||||
else if (tbfComponent2forOp is TBF.BenchControl.Network.Camera.Roi.Roi)
|
||||
{
|
||||
operation21 = (tbfComponent2forOp as TBF.BenchControl.Network.Camera.Roi.Roi).RoiDetectionOp();
|
||||
}
|
||||
else if (tbfComponent2forOp is TBF.BenchControl.Modbus.Easytherm.Easytherm)
|
||||
{
|
||||
operation21 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
|
||||
operation22 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
|
||||
}
|
||||
else if (tbfComponent2forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector)
|
||||
{
|
||||
//operation21 = (tbfComponent2forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(1);
|
||||
//operation22 = (tbfComponent2forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(2);
|
||||
//operation23 = (tbfComponent2forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(3);
|
||||
//operation24 = (tbfComponent2forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(0);
|
||||
}
|
||||
|
||||
|
||||
if (tbfComponent3forOp is TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter)
|
||||
{
|
||||
operation31 = (tbfComponent3forOp as TBF.BenchControl.Modbus.PressureMeter.Meret.PressureMeter).ReadPressureOp(ref floatBox);
|
||||
}
|
||||
else if (tbfComponent3forOp is TBF.BenchControl.Network.Camera.CLP1611.Camera)
|
||||
{
|
||||
operation31 = (tbfComponent3forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(false);
|
||||
operation33 = (tbfComponent3forOp as TBF.BenchControl.Network.Camera.CLP1611.Camera).LiveStreamOp(true);
|
||||
}
|
||||
else if (tbfComponent3forOp is TBF.BenchControl.Network.Camera.Roi.Roi)
|
||||
{
|
||||
operation31 = (tbfComponent3forOp as TBF.BenchControl.Network.Camera.Roi.Roi).RoiDetectionOp();
|
||||
}
|
||||
else if (tbfComponent3forOp is TBF.BenchControl.Modbus.Easytherm.Easytherm)
|
||||
{
|
||||
operation31 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
|
||||
operation32 = (tbfComponent1forOp as TBF.BenchControl.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
|
||||
}
|
||||
else if (tbfComponent3forOp is TBF.BenchControl.Modbus.TankSelector.TankSelector)
|
||||
{
|
||||
//operation31 = (tbfComponent3forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(1);
|
||||
//operation32 = (tbfComponent3forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(2);
|
||||
//operation33 = (tbfComponent3forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(3);
|
||||
//operation34 = (tbfComponent3forOp as TBF.BenchControl.Modbus.TankSelector.TankSelector).SelectTankOp(0);
|
||||
}
|
||||
|
||||
|
||||
while (workerThreadRunning)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
|
||||
if (workerThreadRunning)
|
||||
{
|
||||
foreach (var d in tbfDevices) d.RunDeviceBefore();
|
||||
|
||||
if (tbfComponent1forOp != null)
|
||||
{
|
||||
previousOperation = activeOperationLocal;
|
||||
activeOperationLocal = activeOperationId;
|
||||
if (previousOperation == 0 && activeOperationLocal != 0)
|
||||
{
|
||||
switch (activeOperationLocal)
|
||||
{
|
||||
case 1: if (operation1 != null) operation1.Start(); Debug.WriteLine("op1.Start()"); break;
|
||||
case 2: if (operation2 != null) operation2.Start(); Debug.WriteLine("op2.Start()"); break;
|
||||
case 3: if (operation3 != null) operation3.Start(); Debug.WriteLine("op3.Start()"); break;
|
||||
case 4: if (operation4 != null) operation4.Start(); Debug.WriteLine("op4.Start()"); break;
|
||||
case 21: if (operation21 != null) operation21.Start(); Debug.WriteLine("op21.Start()"); break;
|
||||
case 22: if (operation22 != null) operation22.Start(); Debug.WriteLine("op22.Start()"); break;
|
||||
case 23: if (operation23 != null) operation23.Start(); Debug.WriteLine("op23.Start()"); break;
|
||||
case 24: if (operation24 != null) operation24.Start(); Debug.WriteLine("op24.Start()"); break;
|
||||
case 31: if (operation31 != null) operation31.Start(); Debug.WriteLine("op31.Start()"); break;
|
||||
case 32: if (operation32 != null) operation32.Start(); Debug.WriteLine("op32.Start()"); break;
|
||||
case 33: if (operation33 != null) operation33.Start(); Debug.WriteLine("op33.Start()"); break;
|
||||
case 34: if (operation34 != null) operation34.Start(); Debug.WriteLine("op34.Start()"); break;
|
||||
}
|
||||
}
|
||||
else if (previousOperation == activeOperationLocal && activeOperationLocal != 0)
|
||||
{
|
||||
switch (activeOperationLocal)
|
||||
{
|
||||
case 1: if (operation1 != null) evnt = operation1.Run(); Debug.WriteLine("op1.Run() -> {0}", evnt); break;
|
||||
case 2: if (operation2 != null) evnt = operation2.Run(); Debug.WriteLine("op2.Run() -> {0}", evnt); break;
|
||||
case 3: if (operation3 != null) evnt = operation3.Run(); Debug.WriteLine("op3.Run() -> {0}", evnt); break;
|
||||
case 4: if (operation4 != null) evnt = operation4.Run(); Debug.WriteLine("op4.Run() -> {0}", evnt); break;
|
||||
case 21: if (operation21 != null) evnt = operation21.Run(); Debug.WriteLine("op21.Run() -> {0}", evnt); break;
|
||||
case 22: if (operation22 != null) evnt = operation22.Run(); Debug.WriteLine("op22.Run() -> {0}", evnt); break;
|
||||
case 23: if (operation23 != null) evnt = operation23.Run(); Debug.WriteLine("op23.Run() -> {0}", evnt); break;
|
||||
case 24: if (operation24 != null) evnt = operation24.Run(); Debug.WriteLine("op24.Run() -> {0}", evnt); break;
|
||||
case 31: if (operation31 != null) evnt = operation31.Run(); Debug.WriteLine("op31.Run() -> {0}", evnt); break;
|
||||
case 32: if (operation32 != null) evnt = operation32.Run(); Debug.WriteLine("op32.Run() -> {0}", evnt); break;
|
||||
case 33: if (operation33 != null) evnt = operation33.Run(); Debug.WriteLine("op33.Run() -> {0}", evnt); break;
|
||||
case 34: if (operation34 != null) evnt = operation34.Run(); Debug.WriteLine("op34.Run() -> {0}", evnt); break;
|
||||
default: evnt = Event.None; break;
|
||||
}
|
||||
}
|
||||
else if (previousOperation != 0 && activeOperationLocal == 0)
|
||||
{
|
||||
switch (previousOperation)
|
||||
{
|
||||
case 1: if (operation1 != null) operation1.Stop(); Debug.WriteLine("op1.Stop()"); break;
|
||||
case 2: if (operation2 != null) operation2.Stop(); Debug.WriteLine("op2.Stop()"); break;
|
||||
case 3: if (operation3 != null) operation3.Stop(); Debug.WriteLine("op3.Stop()"); break;
|
||||
case 4: if (operation4 != null) operation4.Stop(); Debug.WriteLine("op4.Stop()"); break;
|
||||
case 21: if (operation21 != null) operation21.Stop(); Debug.WriteLine("op21.Stop()"); break;
|
||||
case 22: if (operation22 != null) operation22.Stop(); Debug.WriteLine("op22.Stop()"); break;
|
||||
case 23: if (operation23 != null) operation23.Stop(); Debug.WriteLine("op23.Stop()"); break;
|
||||
case 24: if (operation24 != null) operation24.Stop(); Debug.WriteLine("op24.Stop()"); break;
|
||||
case 31: if (operation31 != null) operation31.Stop(); Debug.WriteLine("op31.Stop()"); break;
|
||||
case 32: if (operation32 != null) operation32.Stop(); Debug.WriteLine("op32.Stop()"); break;
|
||||
case 33: if (operation33 != null) operation33.Stop(); Debug.WriteLine("op33.Stop()"); break;
|
||||
case 34: if (operation34 != null) operation34.Stop(); Debug.WriteLine("op34.Stop()"); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var d in tbfDevices) d.RunDeviceAfter();
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var d in tbfDevices) d.StopDevice();
|
||||
}
|
||||
|
||||
private void stopButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
workerThreadRunning = false;
|
||||
workerThread.Join(5000);
|
||||
workerThread = null;
|
||||
|
||||
Cursor = Cursors.Default;
|
||||
|
||||
startButton.Enabled = true;
|
||||
stopButton.Enabled = false;
|
||||
configureParentButton.Enabled = true;
|
||||
configureComponent1Button.Enabled = true;
|
||||
configureComponent2Button.Enabled = true;
|
||||
configureComponent3Button.Enabled = true;
|
||||
}
|
||||
|
||||
private void DeviceTestDlg_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
if (workerThread != null)
|
||||
{
|
||||
workerThreadRunning = false;
|
||||
workerThread.Join(3000);
|
||||
workerThread = null;
|
||||
}
|
||||
|
||||
Cursor = Cursors.Default;
|
||||
|
||||
SaveSettings();
|
||||
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace DeviceTest
|
||||
{
|
||||
/// <summary>
|
||||
/// Class to be serialized to an XML file...
|
||||
/// </summary>
|
||||
[XmlRootAttribute("DeviceTest")]
|
||||
public class LocalSettings
|
||||
{
|
||||
public string ParentClassName;
|
||||
public string ParentName;
|
||||
public string ParentSettings;
|
||||
|
||||
public string ComponentClassName;
|
||||
public string ComponentName;
|
||||
public string ComponentParentName;
|
||||
public string ComponentSettings;
|
||||
|
||||
public string Component2ClassName;
|
||||
public string Component2Name;
|
||||
public string Component2ParentName;
|
||||
public string Component2Settings;
|
||||
|
||||
public string Component3ClassName;
|
||||
public string Component3Name;
|
||||
public string Component3ParentName;
|
||||
public string Component3Settings;
|
||||
|
||||
public LocalSettings()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load public fields of this class from the XML file.
|
||||
/// </summary>
|
||||
/// <returns>LocalSettings object or null when Load() fails</returns>
|
||||
public static LocalSettings Load(string fileName)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (TextReader reader = new StreamReader(fileName))
|
||||
{
|
||||
LocalSettings ls = (new XmlSerializer(typeof(LocalSettings))).Deserialize(reader) as LocalSettings;
|
||||
// Copy the settings just in case De-serialize() completes OK
|
||||
return ls;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
string msg = e.Message;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save public fields of this class to the XML file.
|
||||
/// </summary>
|
||||
public void Save()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (TextWriter writer = new StreamWriter(Program.LocalSettingsFileName))
|
||||
{
|
||||
(new XmlSerializer(typeof(LocalSettings))).Serialize(writer, this);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
string msg = e.Message;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates history stored in a string array by a new latest string.
|
||||
/// </summary>
|
||||
/// <param name="lastStrValue">Last entered string</param>
|
||||
/// <returns>true = updated and saved</returns>
|
||||
public bool UpdateHistory(string lastStrValue, ref string[] history)
|
||||
{
|
||||
const int MaxHistoryLen = 10;
|
||||
|
||||
if (string.IsNullOrEmpty(lastStrValue)) return false;
|
||||
|
||||
int currentHistoryLength = (history != null) ? history.Length : 0;
|
||||
|
||||
int match = -1;
|
||||
for (int i = 0; i < currentHistoryLength; i++)
|
||||
{
|
||||
if (history[i] == lastStrValue)
|
||||
{
|
||||
match = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (match >= 0 || currentHistoryLength >= MaxHistoryLen)
|
||||
{
|
||||
/// History does not have to be extended (because of a match) or should not be extended (because of the lenght)
|
||||
if (match < 0) match = currentHistoryLength - 1;
|
||||
|
||||
for (int j = match; j > 0; j--)
|
||||
{
|
||||
history[j] = history[j - 1];
|
||||
}
|
||||
history[0] = lastStrValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
/// History will be extended, new item inserted at the beginning
|
||||
string[] newHistory = new string[currentHistoryLength + 1];
|
||||
newHistory[0] = lastStrValue;
|
||||
for (int j = 1; j <= currentHistoryLength; j++)
|
||||
{
|
||||
newHistory[j] = history[j - 1];
|
||||
}
|
||||
history = newHistory;
|
||||
}
|
||||
Save();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
///
|
||||
/// Copyright (c) 2016-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using log4net;
|
||||
|
||||
namespace DeviceTest
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// Program information
|
||||
public static string Version; /// version string
|
||||
public static DateTime BuildDateTime; /// date and time of program build
|
||||
|
||||
/// log4net
|
||||
static ILog log;
|
||||
const string log4netConfigFName = "log4netConfig.xml";
|
||||
|
||||
/// Local settings
|
||||
public static readonly string LocAppDataDir;
|
||||
public static readonly string LocalSettingsFileName;
|
||||
public static readonly string LocalSettingsBackupName;
|
||||
public static LocalSettings LocalSettings;
|
||||
|
||||
static Program()
|
||||
{
|
||||
/// Program version string
|
||||
System.Reflection.Assembly thisAssembly = System.Reflection.Assembly.GetExecutingAssembly();
|
||||
Version ver = thisAssembly.GetName().Version;
|
||||
Version = string.Format("{0}.{1}.{2}", ver.Major, ver.Minor, ver.Build);
|
||||
BuildDateTime = new System.IO.FileInfo(thisAssembly.Location).LastWriteTime;
|
||||
|
||||
/// Local program configuration directory including the trailing backslash
|
||||
LocAppDataDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) +
|
||||
Path.DirectorySeparatorChar + "TestBenchFramework" + Path.DirectorySeparatorChar;
|
||||
LocalSettingsFileName = LocAppDataDir + "DeviceTest.xml";
|
||||
LocalSettingsBackupName = LocAppDataDir + "DeviceTest.backup.xml";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
///
|
||||
/// Load the local settings
|
||||
///
|
||||
Program.LocalSettings = LocalSettings.Load(Program.LocalSettingsFileName);
|
||||
if (Program.LocalSettings == null)
|
||||
{
|
||||
/// Loading local seetings from regular config file failed. Use the backup
|
||||
Program.LocalSettings = LocalSettings.Load(Program.LocalSettingsBackupName);
|
||||
if (Program.LocalSettings == null)
|
||||
{
|
||||
MessageBox.Show("Na tomto počítači nebol tento program ani raz spustený.\r\nPoužijú sa základné nastavenia.", "Upozornenie", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
Program.LocalSettings = new LocalSettings();
|
||||
Directory.CreateDirectory(LocAppDataDir);
|
||||
Program.LocalSettings.Save();
|
||||
}
|
||||
else
|
||||
{
|
||||
LocalSettings.Save(); /// Save the settings to overwrite the wrong file
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Loading local seetings from the regular config file was successful. Update the backup
|
||||
File.Copy(Program.LocalSettingsFileName, Program.LocalSettingsBackupName, true);
|
||||
}
|
||||
|
||||
/// Configure and start logging
|
||||
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(LocAppDataDir + log4netConfigFName));
|
||||
log = LogManager.GetLogger(typeof(Program));
|
||||
log.Fatal("--------------------------------------------------------------------------------");
|
||||
log.Fatal(string.Format("TBF ver.{0}", Version));
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
try
|
||||
{
|
||||
DeviceTestDlg dlg = new DeviceTestDlg();
|
||||
Application.Run(dlg);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
LogException(log, "Exception in Application.Run(DeviceTestDlg)", exc);
|
||||
MessageBox.Show("Program havaroval:" +
|
||||
Environment.NewLine + Environment.NewLine + exc.Message +
|
||||
((exc.InnerException == null) ? string.Empty : (Environment.NewLine + exc.InnerException.Message)) +
|
||||
Environment.NewLine + exc.StackTrace,
|
||||
"Pozor!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
|
||||
static void LogException(ILog log, string description, Exception e)
|
||||
{
|
||||
log.FatalFormat("---------------( {0} )---------------", description);
|
||||
log.FatalFormat("Message : {0}", e.Message);
|
||||
if (e.InnerException != null)
|
||||
{
|
||||
log.FatalFormat("InnerMessage : {0}", e.InnerException.Message);
|
||||
}
|
||||
log.FatalFormat("StackTrace : {0}{1}", Environment.NewLine, e.StackTrace);
|
||||
log.Fatal("--------------------------------------");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("DeviceTest")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("DeviceTest")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("a3e8ad92-6617-4f5c-88ce-346d28120fb7")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace DeviceTest.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DeviceTest.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace DeviceTest.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{439D0878-C76E-452B-B17D-209A89E91D36}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Dirichlet.Numerics</RootNamespace>
|
||||
<AssemblyName>Dirichlet.Numerics</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Numerics" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Int128.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="UInt128.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Dirichlet.Numerics")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Dirichlet.Numerics")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("a588abc0-c631-4475-9eab-4163d9f81fed")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,13 @@
|
||||
Copyright 2014 Rick Sladkey
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
|
||||
|
||||
/* Copyright (c) 2008-2014 DI Zimmermann Stephan (stefan.zimmermann@tele2.at)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
namespace GraphLib
|
||||
{
|
||||
public class BackBuffer
|
||||
{
|
||||
private Graphics graphics;
|
||||
private Bitmap memoryBitmap;
|
||||
private int width;
|
||||
private int height;
|
||||
|
||||
public BackBuffer()
|
||||
{
|
||||
width = 0;
|
||||
height = 0;
|
||||
}
|
||||
|
||||
public bool Init(Graphics g, int width, int height)
|
||||
{
|
||||
if (memoryBitmap != null)
|
||||
{
|
||||
memoryBitmap.Dispose();
|
||||
memoryBitmap = null;
|
||||
}
|
||||
|
||||
if (graphics != null)
|
||||
{
|
||||
graphics.Dispose();
|
||||
graphics = null;
|
||||
}
|
||||
|
||||
if (width == 0 || height == 0)
|
||||
return false;
|
||||
|
||||
if ((width != this.width) || (height != this.height) || graphics == null)
|
||||
{
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
|
||||
memoryBitmap = new Bitmap(width, height);
|
||||
graphics = Graphics.FromImage(memoryBitmap);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Render(Graphics g)
|
||||
{
|
||||
if (memoryBitmap != null)
|
||||
{
|
||||
g.DrawImage(memoryBitmap,
|
||||
new Rectangle(0, 0, width, height),
|
||||
0, 0, width, height,
|
||||
GraphicsUnit.Pixel);
|
||||
}
|
||||
}
|
||||
|
||||
public bool CanDoubleBuffer() { return graphics != null; }
|
||||
|
||||
public Graphics Graphics { get { return graphics; } }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,254 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
|
||||
/* Copyright (c) 2008-2014 DI Zimmermann Stephan (stefan.zimmermann@tele2.at)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace GraphLib
|
||||
{
|
||||
public class DataSource
|
||||
{
|
||||
public delegate String OnDrawXAxisLabelEvent(DataSource src, int idx);
|
||||
public delegate String OnDrawYAxisLabelEvent(DataSource src, float value);
|
||||
|
||||
public OnDrawXAxisLabelEvent OnRenderXAxisLabel = null;
|
||||
public OnDrawYAxisLabelEvent OnRenderYAxisLabel = null;
|
||||
|
||||
private PointF[] samples = null;
|
||||
private int length = 0;
|
||||
|
||||
private String name = String.Empty;
|
||||
private int downSample = 1;
|
||||
private Color color = Color.Black;
|
||||
|
||||
public float VisibleDataRange_X = 0;
|
||||
public float DY = 0;
|
||||
public float YD0 = -200;
|
||||
public float YD1 = 200;
|
||||
public float Cur_YD0 = -200;
|
||||
public float Cur_YD1 = 200;
|
||||
|
||||
public float grid_distance_y = 200; // grid distance in units ( draw a horizontal line every 200 units )
|
||||
|
||||
public float off_Y = 0;
|
||||
public float grid_off_y = 0;
|
||||
|
||||
public bool yFlip = true;
|
||||
|
||||
public bool Active = true;
|
||||
|
||||
public float XAutoScaleOffset = 100;
|
||||
|
||||
public float CurGraphHeight = 1.0f;
|
||||
|
||||
public float CurGraphWidth = 1.0f;
|
||||
|
||||
private bool autoScaleY = false;
|
||||
private bool autoScaleX = false;
|
||||
|
||||
|
||||
public bool AutoScaleY
|
||||
{
|
||||
get { return autoScaleY; }
|
||||
set { autoScaleY = value; }
|
||||
}
|
||||
|
||||
public bool AutoScaleX
|
||||
{
|
||||
get { return autoScaleX; }
|
||||
set { autoScaleX = value; }
|
||||
}
|
||||
|
||||
public PointF[] Samples
|
||||
{
|
||||
get { return samples; }
|
||||
set
|
||||
{
|
||||
samples = value;
|
||||
length = samples.Length;
|
||||
}
|
||||
}
|
||||
|
||||
public float XMin
|
||||
{
|
||||
get
|
||||
{
|
||||
float x_min = float.MaxValue;
|
||||
if (samples != null && samples.Length > 0)
|
||||
{
|
||||
foreach (PointF p in samples) if (p.X < x_min) x_min=p.X;
|
||||
}
|
||||
return x_min;
|
||||
}
|
||||
}
|
||||
|
||||
public float XMax
|
||||
{
|
||||
get
|
||||
{
|
||||
float x_max = float.MinValue;
|
||||
if (samples != null && samples.Length > 0)
|
||||
{
|
||||
foreach (PointF p in samples) if (p.X > x_max) x_max = p.X;
|
||||
}
|
||||
return x_max;
|
||||
}
|
||||
}
|
||||
|
||||
public float YMin
|
||||
{
|
||||
get
|
||||
{
|
||||
float y_min = float.MaxValue;
|
||||
if (samples != null && samples.Length > 0)
|
||||
{
|
||||
foreach (PointF p in samples) if (p.Y < y_min) y_min = p.Y;
|
||||
}
|
||||
return y_min;
|
||||
}
|
||||
}
|
||||
|
||||
public float YMax
|
||||
{
|
||||
get
|
||||
{
|
||||
float y_max = float.MinValue;
|
||||
if (samples.Length > 0)
|
||||
{
|
||||
foreach (PointF p in samples) if (p.Y > y_max) y_max = p.Y;
|
||||
}
|
||||
return y_max;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetDisplayRangeY(float y_start, float y_end)
|
||||
{
|
||||
YD0 = y_start;
|
||||
YD1 = y_end;
|
||||
}
|
||||
|
||||
public void SetGridDistanceY(float grid_dist_y_units)
|
||||
{
|
||||
grid_distance_y = grid_dist_y_units;
|
||||
}
|
||||
|
||||
public void SetGridOriginY(float off_y)
|
||||
{
|
||||
grid_off_y = off_y;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Load Samples from a file. Returns loaded points count.
|
||||
/// </summary>
|
||||
/// <param name="pathName">File pathname</param>
|
||||
/// <returns>Loaded points count</returns>
|
||||
public int LoadSamples(string pathName, out float yMin, out float yMax)
|
||||
{
|
||||
yMin = float.MaxValue;
|
||||
yMax = float.MinValue;
|
||||
try
|
||||
{
|
||||
Int64 size = new FileInfo(pathName).Length;
|
||||
if ((size % 8) != 0) return 0;
|
||||
int samplesCount = (int)(size / 8L) - 1;
|
||||
if (samplesCount <= 0) return 0;
|
||||
|
||||
PointF[] newSamples = new PointF[samplesCount];
|
||||
using (BinaryReader reader = new BinaryReader(File.Open(pathName, FileMode.Open)))
|
||||
{
|
||||
for (int i = 0; i < samplesCount; i++)
|
||||
{
|
||||
newSamples[i].X = reader.ReadSingle();
|
||||
newSamples[i].Y = reader.ReadSingle();
|
||||
}
|
||||
yMin = reader.ReadSingle();
|
||||
yMax = reader.ReadSingle();
|
||||
}
|
||||
|
||||
Samples = newSamples;
|
||||
return samplesCount;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Category("Properties")] // Take this out, and you will soon have problems with serialization;
|
||||
[DefaultValue(typeof(string), "")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
||||
public String Name
|
||||
{
|
||||
get { return name; }
|
||||
set { name = value; }
|
||||
}
|
||||
|
||||
[Category("Properties")] // Take this out, and you will soon have problems with serialization;
|
||||
[DefaultValue(typeof(Color), "")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
||||
public Color GraphColor
|
||||
{
|
||||
get { return color; }
|
||||
set { color = value; }
|
||||
}
|
||||
|
||||
[Category("Properties")] // Take this out, and you will soon have problems with serialization;
|
||||
[DefaultValue(typeof(int), "0")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
||||
public int Length
|
||||
{
|
||||
get { return length; }
|
||||
set
|
||||
{
|
||||
length = value;
|
||||
if (length != 0)
|
||||
{
|
||||
samples = new PointF[length];
|
||||
}
|
||||
else
|
||||
{
|
||||
// length is 0
|
||||
if (samples != null)
|
||||
{
|
||||
samples = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Category("Properties")] // Take this out, and you will soon have problems with serialization;
|
||||
[DefaultValue(typeof(int), "1")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
||||
public int Downsampling
|
||||
{
|
||||
get { return downSample; }
|
||||
set { downSample = value; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ClassLibrary1</RootNamespace>
|
||||
<AssemblyName>GraphLib</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Design" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="PlotterGraphPaneEx.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PlotterGraphPaneEx.Designer.cs">
|
||||
<DependentUpon>PlotterGraphPaneEx.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PlotterDisplayEx.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PlotterDisplayEx.designer.cs">
|
||||
<DependentUpon>PlotterDisplayEx.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BackBuffer.cs" />
|
||||
<Compile Include="PlotterGraphSelectCurvesForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PlotterGraphSelectCurvesForm.Designer.cs">
|
||||
<DependentUpon>PlotterGraphSelectCurvesForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="DataSource.cs" />
|
||||
<Compile Include="PrintPreviewForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PrintPreviewForm.Designer.cs">
|
||||
<DependentUpon>PrintPreviewForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PrecisionTimer.cs" />
|
||||
<Compile Include="Utils.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="PlotterGraphPaneEx.resx">
|
||||
<DependentUpon>PlotterGraphPaneEx.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="PlotterDisplayEx.resx">
|
||||
<DependentUpon>PlotterDisplayEx.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="PlotterGraphSelectCurvesForm.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>PlotterGraphSelectCurvesForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="PrintPreviewForm.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>PrintPreviewForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual Studio 2005
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GraphLib", "GraphLib.csproj", "{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0C0A1F4D-1363-4544-A7C5-196C76D26CCA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,404 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Threading;
|
||||
using System.ComponentModel.Design;
|
||||
using System.Drawing.Drawing2D;
|
||||
|
||||
|
||||
/* Copyright (c) 2008-2014 DI Zimmermann Stephan (stefan.zimmermann@tele2.at)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
namespace GraphLib
|
||||
{
|
||||
public partial class PlotterDisplayEx : UserControl
|
||||
{
|
||||
#region MEMBERS
|
||||
|
||||
delegate void InvokeVoidFuncDelegate();
|
||||
|
||||
PlotterGraphSelectCurvesForm GraphPropertiesForm = null;
|
||||
PrintPreviewForm printPreviewForm = null;
|
||||
|
||||
private PrecisionTimer.Timer mTimer = null;
|
||||
private float play_speed = 0.5f;
|
||||
private float play_speed_max = 10f;
|
||||
private float play_speed_min = 0.5f;
|
||||
|
||||
private bool paused = false;
|
||||
private bool isRunning = false;
|
||||
|
||||
#endregion
|
||||
|
||||
#region CONSTRUCTOR
|
||||
|
||||
public PlotterDisplayEx()
|
||||
{
|
||||
InitializeComponent();
|
||||
mTimer = new PrecisionTimer.Timer();
|
||||
mTimer.Period = 50; // 20 fps
|
||||
mTimer.Tick += new EventHandler(OnTimerTick);
|
||||
play_speed = 0.5f; // 20x10 = 200 values per second == sample frequency
|
||||
mTimer.Start();
|
||||
isRunning = false;
|
||||
}
|
||||
|
||||
void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
||||
{
|
||||
String text = e.ClickedItem.Text;
|
||||
foreach (DataSource s in gPane.Sources)
|
||||
{
|
||||
if (s.Name == text)
|
||||
{
|
||||
s.Active ^= true;
|
||||
gPane.Invalidate();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region PROPERTIES
|
||||
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
||||
[Editor(typeof(System.ComponentModel.Design.CollectionEditor),
|
||||
typeof(System.Drawing.Design.UITypeEditor))]
|
||||
public IList<DataSource> DataSources
|
||||
{
|
||||
get { return gPane.Sources; }
|
||||
}
|
||||
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
||||
[Editor(typeof(System.ComponentModel.Design.CollectionEditor),
|
||||
typeof(System.Drawing.Design.UITypeEditor))]
|
||||
public PlotterGraphPaneEx.LayoutMode PanelLayout
|
||||
{
|
||||
get { return gPane.layout; }
|
||||
set { gPane.layout = value; }
|
||||
}
|
||||
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
||||
[Editor(typeof(System.ComponentModel.Design.CollectionEditor),
|
||||
typeof(System.Drawing.Design.UITypeEditor))]
|
||||
public SmoothingMode Smoothing
|
||||
{
|
||||
get { return gPane.smoothing; }
|
||||
set { gPane.smoothing = value; }
|
||||
}
|
||||
|
||||
[Category("Playback")]
|
||||
[DefaultValue(typeof(bool), "true")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
||||
public bool ShowMovingGrid
|
||||
{
|
||||
get { return gPane.hasMovingGrid; }
|
||||
set { gPane.hasMovingGrid = value; }
|
||||
}
|
||||
|
||||
|
||||
[Category("Properties")]
|
||||
[DefaultValue(typeof(Color), "")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
||||
public Color BackgroundColorTop
|
||||
{
|
||||
get { return gPane.BgndColorTop; }
|
||||
set { gPane.BgndColorTop = value; }
|
||||
}
|
||||
|
||||
[Category("Properties")]
|
||||
[DefaultValue(typeof(Color), "")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
||||
public Color BackgroundColorBot
|
||||
{
|
||||
get { return gPane.BgndColorBot; }
|
||||
set { gPane.BgndColorBot = value; }
|
||||
}
|
||||
|
||||
[Category("Properties")]
|
||||
[DefaultValue(typeof(Color), "")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
||||
public Color DashedGridColor
|
||||
{
|
||||
get { return gPane.MinorGridColor; }
|
||||
set { gPane.MinorGridColor = value; }
|
||||
}
|
||||
|
||||
[Category("Properties")]
|
||||
[DefaultValue(typeof(Color), "")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
||||
public Color SolidGridColor
|
||||
{
|
||||
get { return gPane.MajorGridColor; }
|
||||
set { gPane.MajorGridColor = value; }
|
||||
}
|
||||
|
||||
|
||||
public bool DoubleBuffering
|
||||
{
|
||||
get { return gPane.useDoubleBuffer; }
|
||||
set { gPane.useDoubleBuffer = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region PUBLIC METHODS
|
||||
|
||||
public void SetDisplayRangeX(float x_start, float x_end )
|
||||
{
|
||||
gPane.XD0 = x_start;
|
||||
gPane.XD1 = x_end;
|
||||
gPane.CurXD0 = gPane.XD0;
|
||||
gPane.CurXD1 = gPane.XD1;
|
||||
}
|
||||
|
||||
public void SetGridDistanceX(float grid_dist_x_samples)
|
||||
{
|
||||
gPane.grid_distance_x = grid_dist_x_samples;
|
||||
}
|
||||
|
||||
public void SetGridOriginX(float off_x)
|
||||
{
|
||||
gPane.grid_off_x = off_x;
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region PRIVATE METHODS
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
paused = true;
|
||||
|
||||
if (mTimer.IsRunning)
|
||||
{
|
||||
mTimer.Stop();
|
||||
mTimer.Dispose();
|
||||
}
|
||||
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
if (isRunning == false && paused == false)
|
||||
{
|
||||
gPane.starting_idx = 0;
|
||||
paused = false;
|
||||
isRunning = true;
|
||||
// mTimer.Start();
|
||||
tb1.Buttons[0].ImageIndex = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (paused == false)
|
||||
{
|
||||
//mTimer.Stop();
|
||||
paused = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// mTimer.Start();
|
||||
paused = false;
|
||||
}
|
||||
|
||||
if (paused)
|
||||
{
|
||||
|
||||
tb1.Buttons[0].ImageIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
tb1.Buttons[0].ImageIndex = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
if (isRunning)
|
||||
{
|
||||
// mTimer.Stop();
|
||||
isRunning = false;
|
||||
paused = false;
|
||||
hScrollBar1.Value = 0;
|
||||
tb1.Buttons[0].ImageIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void tb1_ButtonClick(object sender, ToolBarButtonClickEventArgs e)
|
||||
{
|
||||
bool pushed = e.Button.Pushed;
|
||||
switch (e.Button.Tag.ToString().ToLower())
|
||||
{
|
||||
case "play":
|
||||
|
||||
Start();
|
||||
|
||||
break;
|
||||
|
||||
case "stop":
|
||||
|
||||
Stop();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void SetPlayPanelVisible()
|
||||
{
|
||||
panel1.Visible = true;
|
||||
tb1.Buttons[0].Visible = true;
|
||||
tb1.Buttons[1].Visible = true;
|
||||
}
|
||||
|
||||
private void SetPlayPanelInvisible()
|
||||
{
|
||||
panel1.Visible = false;
|
||||
tb1.Buttons[0].Visible = false;
|
||||
tb1.Buttons[1].Visible = false;
|
||||
|
||||
}
|
||||
|
||||
private void UpdateControl()
|
||||
{
|
||||
try
|
||||
{
|
||||
bool AllAutoscaled = true;
|
||||
|
||||
foreach (DataSource s in gPane.Sources)
|
||||
{
|
||||
AllAutoscaled &= s.AutoScaleX;
|
||||
}
|
||||
|
||||
|
||||
if (AllAutoscaled == true)
|
||||
{
|
||||
if (panel1.Visible == true)
|
||||
{
|
||||
this.Invoke(new MethodInvoker(SetPlayPanelInvisible));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (panel1.Visible == false)
|
||||
{
|
||||
this.Invoke(new MethodInvoker(SetPlayPanelVisible));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdatePlayback()
|
||||
{
|
||||
if (!paused && isRunning == true)
|
||||
{
|
||||
try
|
||||
{
|
||||
gPane.starting_idx += play_speed;
|
||||
UpdateScrollBar();
|
||||
gPane.Invalidate();
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTimerTick(object sender, EventArgs e)
|
||||
{
|
||||
UpdateControl();
|
||||
|
||||
UpdatePlayback();
|
||||
}
|
||||
|
||||
private void UpdateScrollBar()
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new MethodInvoker(UpdateScrollBar));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gPane.Sources.Count > 0)
|
||||
{
|
||||
if (gPane.starting_idx > gPane.Sources[0].Length)
|
||||
{
|
||||
hScrollBar1.Value = 10000;
|
||||
}
|
||||
else if (gPane.starting_idx >= 0)
|
||||
{
|
||||
hScrollBar1.Value = 10000 * (int)gPane.starting_idx / gPane.Sources[0].Length;
|
||||
}
|
||||
else
|
||||
{
|
||||
hScrollBar1.Value = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
hScrollBar1.Value = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnScrollbarScroll(object sender, ScrollEventArgs e)
|
||||
{
|
||||
if (gPane.Sources.Count > 0)
|
||||
{
|
||||
int val = hScrollBar1.Value;
|
||||
|
||||
int maxLen = 0;
|
||||
foreach (var s in DataSources)
|
||||
{
|
||||
if (s.Length > maxLen) maxLen = s.Length;
|
||||
}
|
||||
|
||||
gPane.starting_idx = (int)(maxLen * (float)val / 10000.0f);
|
||||
gPane.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void selectGraphsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (GraphPropertiesForm == null)
|
||||
{
|
||||
GraphPropertiesForm = new PlotterGraphSelectCurvesForm();
|
||||
}
|
||||
|
||||
GraphPropertiesForm.GraphPanel = this.gPane;
|
||||
GraphPropertiesForm.Show();
|
||||
// GraphPropertiesForm.BringToFront();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Generated
+201
@@ -0,0 +1,201 @@
|
||||
namespace GraphLib
|
||||
{
|
||||
partial class PlotterDisplayEx
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PlotterDisplayEx));
|
||||
this.tb1 = new System.Windows.Forms.ToolBar();
|
||||
this.tbbSave = new System.Windows.Forms.ToolBarButton();
|
||||
this.tbbOpen = new System.Windows.Forms.ToolBarButton();
|
||||
this.imgList1 = new System.Windows.Forms.ImageList(this.components);
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.lb_Position = new System.Windows.Forms.Label();
|
||||
this.hScrollBar1 = new System.Windows.Forms.HScrollBar();
|
||||
this.gPane = new GraphLib.PlotterGraphPaneEx();
|
||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.selectGraphsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.contextMenuStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tb1
|
||||
//
|
||||
this.tb1.Appearance = System.Windows.Forms.ToolBarAppearance.Flat;
|
||||
this.tb1.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] {
|
||||
this.tbbSave,
|
||||
this.tbbOpen});
|
||||
this.tb1.ButtonSize = new System.Drawing.Size(16, 16);
|
||||
this.tb1.Divider = false;
|
||||
this.tb1.Dock = System.Windows.Forms.DockStyle.None;
|
||||
this.tb1.DropDownArrows = true;
|
||||
this.tb1.ImageList = this.imgList1;
|
||||
this.tb1.Location = new System.Drawing.Point(11, 5);
|
||||
this.tb1.Name = "tb1";
|
||||
this.tb1.ShowToolTips = true;
|
||||
this.tb1.Size = new System.Drawing.Size(80, 26);
|
||||
this.tb1.TabIndex = 1;
|
||||
this.tb1.Visible = false;
|
||||
this.tb1.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.tb1_ButtonClick);
|
||||
//
|
||||
// tbbSave
|
||||
//
|
||||
this.tbbSave.ImageIndex = 0;
|
||||
this.tbbSave.Name = "tbbSave";
|
||||
this.tbbSave.Tag = "play";
|
||||
//
|
||||
// tbbOpen
|
||||
//
|
||||
this.tbbOpen.ImageIndex = 1;
|
||||
this.tbbOpen.Name = "tbbOpen";
|
||||
this.tbbOpen.Tag = "stop";
|
||||
//
|
||||
// imgList1
|
||||
//
|
||||
this.imgList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgList1.ImageStream")));
|
||||
this.imgList1.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imgList1.Images.SetKeyName(0, "media-playback-start.png");
|
||||
this.imgList1.Images.SetKeyName(1, "media-playback-stop.png");
|
||||
this.imgList1.Images.SetKeyName(2, "media-playback-pause.png");
|
||||
this.imgList1.Images.SetKeyName(3, "printer.png");
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer1.IsSplitterFixed = true;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.BackColor = System.Drawing.SystemColors.ControlDarkDark;
|
||||
this.splitContainer1.Panel1.Controls.Add(this.tb1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.panel1);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.Transparent;
|
||||
this.splitContainer1.Panel2.Controls.Add(this.gPane);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(598, 339);
|
||||
this.splitContainer1.SplitterDistance = 34;
|
||||
this.splitContainer1.TabIndex = 2;
|
||||
this.splitContainer1.TabStop = false;
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.lb_Position);
|
||||
this.panel1.Controls.Add(this.hScrollBar1);
|
||||
this.panel1.Location = new System.Drawing.Point(99, 3);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(496, 28);
|
||||
this.panel1.TabIndex = 7;
|
||||
//
|
||||
// lb_Position
|
||||
//
|
||||
this.lb_Position.AutoSize = true;
|
||||
this.lb_Position.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.lb_Position.Location = new System.Drawing.Point(6, 8);
|
||||
this.lb_Position.Name = "lb_Position";
|
||||
this.lb_Position.Size = new System.Drawing.Size(44, 13);
|
||||
this.lb_Position.TabIndex = 3;
|
||||
this.lb_Position.Text = "Position";
|
||||
//
|
||||
// hScrollBar1
|
||||
//
|
||||
this.hScrollBar1.Location = new System.Drawing.Point(57, 10);
|
||||
this.hScrollBar1.Maximum = 10000;
|
||||
this.hScrollBar1.Name = "hScrollBar1";
|
||||
this.hScrollBar1.Size = new System.Drawing.Size(118, 10);
|
||||
this.hScrollBar1.TabIndex = 4;
|
||||
this.hScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.OnScrollbarScroll);
|
||||
//
|
||||
// gPane
|
||||
//
|
||||
this.gPane.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.gPane.Location = new System.Drawing.Point(0, 0);
|
||||
this.gPane.Name = "gPane";
|
||||
this.gPane.Size = new System.Drawing.Size(598, 301);
|
||||
this.gPane.TabIndex = 1;
|
||||
//
|
||||
// contextMenuStrip1
|
||||
//
|
||||
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.selectGraphsToolStripMenuItem,
|
||||
this.toolStripSeparator1});
|
||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||
this.contextMenuStrip1.Size = new System.Drawing.Size(117, 32);
|
||||
//
|
||||
// selectGraphsToolStripMenuItem
|
||||
//
|
||||
this.selectGraphsToolStripMenuItem.Name = "selectGraphsToolStripMenuItem";
|
||||
this.selectGraphsToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
|
||||
this.selectGraphsToolStripMenuItem.Text = "Options";
|
||||
this.selectGraphsToolStripMenuItem.Click += new System.EventHandler(this.selectGraphsToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(113, 6);
|
||||
//
|
||||
// PlotterDisplayEx
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.Transparent;
|
||||
this.ContextMenuStrip = this.contextMenuStrip1;
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Name = "PlotterDisplayEx";
|
||||
this.Size = new System.Drawing.Size(598, 339);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.PerformLayout();
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.contextMenuStrip1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolBar tb1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.ToolBarButton tbbSave;
|
||||
private System.Windows.Forms.ToolBarButton tbbOpen;
|
||||
private System.Windows.Forms.HScrollBar hScrollBar1;
|
||||
private PlotterGraphPaneEx gPane;
|
||||
private System.Windows.Forms.Label lb_Position;
|
||||
public System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem selectGraphsToolStripMenuItem;
|
||||
private System.Windows.Forms.ImageList imgList1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="imgList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="imgList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACI
|
||||
DgAAAk1TRnQBSQFMAgEBBAEAARQBAAEUAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABIAMAAQEBAAEgBgABIP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AKgADAQECwAABtgGV
|
||||
AU8B/QHKAZgBWQH/AcoBlwFZAf8BygGXAVkB/wHKAZcBWQH/AcoBlwFYAf8ByQGXAVgB/wHJAZcBWAH/
|
||||
AcoBmAFZAf8BtgGUAU8B/RQAAxQBHAMRARcDAgEDrAADTgGZA10B0gNMAf8BxwGVAVUB/wH5AfcB9gH/
|
||||
AfkB8QHsAf8B+QHxAesB/wH4AfAB6QH/AfcB7QHmAf8B9AHqAeEB/wHyAegB3gH/AfoB+AH2Af8BxwGU
|
||||
AVUB/wMYAf8DWAHRA0QBeggAAxUBHQFiAlgB6QM6AWEDDQESAwABASwAAxsBJgMbASYDGwEmAxsBJgMb
|
||||
ASYDGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEmEAADGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEm
|
||||
AxsBJgMbASYDGwEmAxsBJgMbASYIAANUAf0DpwH/A7UB/wOBAf8BrwGsAaoB/wHFAcABvQH/AcUBwAG9
|
||||
Af8BxQHAAb0B/wHFAcABvQH/AcUBwAG9Af8BxQHAAb0B/wGtAaoBqAH/AyAB/wO1Af8DmwH/AxcB/wgA
|
||||
AxUBHQNNAfoBOgIrAfwDXwHgAysBQgMNARIoAAMbASYDKwH8AYACgQH/AYACgQH/AYACgQH/AYACgQH/
|
||||
AYACgQH/AYACgQH/AYACgQH/AYACgQH/AYACgQH/AxsBJhAAAxsBJgMrAfwBgAKBAf8BgAKBAf8BgAKB
|
||||
Af8DIwE0AxsBJgMrAfwBgAKBAf8BgAKBAf8BgAKBAf8DIwE0CAADZAH/A7UB/wO1Af8DlQH/A4EB/wOB
|
||||
Af8DbQH/A2IB/wNVAf8DRgH/AzcB/wM2Af8DYgH/A7UB/wO1Af8DGQH/CAADFQEdAV8CSgH7AfkB+gH5
|
||||
Af8DfwH+AV8BUwFSAfsDVQGyAx0BKgMIAQsgAAMbASYDQAH9IP8DQAH9AxsBJgMAAQEMAAMbASYDQAH9
|
||||
AfwB/QH8Bf8DQAH9AxsBJgMbASYDQAH9AfwB/QH8Bf8DQAH9AxsBJgMAAQEEAANpAf8DuwH/A7sB/wON
|
||||
Af8D1AH/A7kB/wO5Af8DuQH/A7kB/wO5Af8DuQH/A9MB/wODAf8DuwH/A7sB/wMeAf8IAAMVAR0DKwH8
|
||||
AfoC+wH/AfUC9gH/AfkC+gH/ATsBLgEtAfwBbQJRAfcDQgF2AxYBHgMFAQcYAAMbASYDQAH9BP8B1QHb
|
||||
AdgB/wHUAdsB1wH/AdQB2wHYAf8B0wHbAdcB/wHRAdkB1QH/Ac8B1wHTBf8DQAH9AxsBJgMBAQIMAAMb
|
||||
ASYDQAH9AeIB5QHkAf8B2AHfAdwB/wNAAf0DGwEmAxsBJgNAAf0D8wH/AfcB+AH3Af8DQAH9AxsBJgMB
|
||||
AQIEAANuAf8D1wH/A9cB/wOXAf8D2AH/A78B/wO/Af8DvwH/A78B/wO/Af8DvwH/A9cB/wOOAf8D1wH/
|
||||
A9cB/wMzAf8IAAMWAR4DKwH8A/sB/wHTAdoB1wH/AdoB3wHcAf8B9gH3AfYB/wHyAvMB/wE6AisB/AFg
|
||||
AlkB6wMzAVMDEgEZAwQBBRAAAxsBJgNAAf0E/wHaAeAB3QH/AdsB4QHeAf8B3QHiAeAB/wHdAeIB4AH/
|
||||
AdsB4QHeAf8B2AHeAdsF/wNAAf0DGwEmAwEBAgwAAxsBJgNAAf0B4gHmAeQB/wHcAeIB3wH/A0AB/QMb
|
||||
ASYDGwEmA0AB/QHvAfEB8AH/AfAB8wHxAf8DQAH9AxsBJgMBAQIEAANyAf8D+QH/A/kB/wOrAf8D3wH/
|
||||
A8sB/wPLAf8DywH/A8sB/wPLAf8DywH/A98B/wOjAf8D+QH/A/kB/wNVAf8IAAMWAR4DKwH8A/sB/wHf
|
||||
AeQB4QH/Ad4B4wHhAf8B3gHjAeAB/wHjAecB5QH/AfQC9QH/A38B/gGRAkAB/QNWAbYDJgE5AxABFQwA
|
||||
AxsBJgNAAf0E/wHdAeMB4AH/AeEB5gHjAf8B5AHpAecB/wHmAeoB6AH/AeUB6QHnAf8B4gHnAeQF/wNA
|
||||
Af0DGwEmAwEBAgwAAxsBJgNAAf0B5AHoAeUB/wHeAeMB4QH/A0AB/QMbASYDGwEmA0AB/QHsAe8B7gH/
|
||||
AecB6wHpAf8DQAH9AxsBJgMBAQIEAANqAfkD/AH/A/wB/wPLAf8D8gH/A/IB/wPyAf8D8gH/A/IB/wPy
|
||||
Af8D8gH/A/IB/wPGAf8D/AH/A/wB/wNwAf4IAAMWAR4DKwH8A/sB/wHqAe4B7AH/AewB7wHuAf8B7AHv
|
||||
Ae4B/wHrAe4B7QH/AekB7AHrAf8DfwH+AToCKwH8AVgCVgG7Ax0BKgMGAQgMAAMbASYDQAH9BP8B3wHk
|
||||
AeEB/wHkAekB5gH/AeoB7QHrAf8B7gHxAe8B/wHvAfEB8AH/AewB7wHuBf8DQAH9AxsBJgMBAQIMAAMb
|
||||
ASYDQAH9AesB7QHsAf8B3QHjAeAB/wNAAf0DGwEmAxsBJgNAAf0B7QHwAe8B/wHfAeQB4QH/A0AB/QMb
|
||||
ASYDAQECBAADXQTSAf8D6AH/A3EB/wNxAf8DcQH/A3EB/wNxAf8DcQH/A3EB/wNxAf8DcQH/A3EB/wPo
|
||||
Af8DxAH/A1wB3AgAAxYBHgMrAfwD+wH/AfUC9gH/AfoB+wH6Af8D+QH/Ad0C3gH/AWoCRwH5A10B7QE6
|
||||
AjkBYAMNAREUAAMbASYDQAH9BP8B3AHiAd8B/wHkAegB5gH/AesB7gHtAf8B8gH0AfMB/wH3AvgB/wH2
|
||||
AfgB9wX/A0AB/QMbASYDAQECDAADGwEmA0AB/QHyAfQB8wH/AdoB3wHdAf8DQAH9AxsBJgMcASgDQAH9
|
||||
AfMB9QH0Af8B1gHdAdkB/wNAAf0DGwEmAwEBAgQAAy0BRQOaAf8DzAH/AccBiwFCAf8B+QH0Ae0B/wH+
|
||||
AegB2AH/Af4B6AHXAf8B/QHlAdMB/wH8AeQB0QH/AfoB4AHHAf8B+QHdAcMB/wH6AfQB7QH/AccBhQE+
|
||||
Af8DwwH/A2gB/wMtAUUIAAMWAR4DKwH8A/sB/wHwAfMB8gH/AeYC6AH/A00B+gFiAlIB9AFRAk8BpQMU
|
||||
ARwDAAEBGAADGwEmA0AB/QT/AdgB3wHcAf8B4AHlAeMB/wHoAesB6gH/Ae8B8gHwAf8B9wH4AfcB/wP9
|
||||
Bf8DQAH9AxsBJgMBAQIMAAMbASYDQAH9A/wB/wHVAdsB2AH/A0AB/QMbASYDHAEoA0AB/QP8Af8B0gHa
|
||||
AdYB/wNAAf0DGwEmAwEBAggAAzsBYwNqAfMBxQGJAUAB/wH5AfQB7wH/Af4B5wHXAf8B/QHnAdUB/wH8
|
||||
AeYB0gH/AfsB4QHMAf8B+AHcAcIB/wH2AdoBvQH/AfoB9AHvAf8BxAGDATwB/wNdAfMDOwFjDAADFgEe
|
||||
AysB/AP7Af8BPgIyAfwDTQH6AVoCVwG9AxgBIgMCAQMgAAMbASYDQAH9IP8DQAH9AxsBJgMBAQIMAAMb
|
||||
ASYDQAH9CP8DQAH9AxsBJgMcASgDQAH9CP8DQAH9AxsBJgMBAQIMAAMHAQkBlgF6AUcC+QH0AfAB/wH8
|
||||
AeYB0wH/Af0B5wHTAf8B+wHjAc0B/wH6AeAByAH/AfUB1gG7Af8B8wHUAbUB/wH4AfQB8AH/AZUBagFH
|
||||
AfkDBwEJEAADFgEeA0AB/QFbAjIB+wFgAlwB1AMjATMDBwEKKAADGwEmAysB/AEpAS0BKwH/ASkBLQEr
|
||||
Af8BKQEtASsB/wEpAS0BKwH/ASkBLQErAf8BKQEtASsB/wEpAS0BKwH/ASkBLQErAf8BKQEtASsB/wMb
|
||||
ASYDAQECDAADGwEmAWMBVwFVAf4BKQEtASsB/wEpAS0BKwH/ASkBLQErAf8DGwEmAxwBKAFjAVcBVQH+
|
||||
ASkBLQErAf8BKQEtASsB/wEpAS0BKwH/AxsBJgMBAQIQAAGSAXoBUQH3AfkB9QHxAf8B/AHjAc8B/wH8
|
||||
AeQBzwH/AfoB4QHKAf8B+QHdAcQB/wH0AekB3wH/AfcB8gHsAf8B9QHvAekB/wGZAV8BRQH7FAADFgEf
|
||||
AV4CWgHYAygBPQMNAREwAAMbASYDGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEm
|
||||
AxsBJgMAAQEMAAMbASYDGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEmAxsBJgMbASYDGwEmAxsBJgMA
|
||||
AQEQAAGJAWoBSQH2AfkB9QHxAf8B/AHjAc0B/wH7AeMBzQH/AfkB4AHIAf8B+AHcAcIB/wH9AfsB+AH/
|
||||
AfwB5gHNAf8B4gG2AYQB/wJUAVIBphQAAxYBHwMRARcDAgEDuAABngF1AU0B+gH3AfIB7AH/AfgB9AHu
|
||||
Af8B+AHzAe0B/wH4AfMB7QH/AfgB8gHsAf8B8gHmAdcB/wHiAbIBcQH/AZABcQFiAfYDBQEHFAADAwEE
|
||||
wAADOgFgAlgBVgG7AbEBfwFPAf4ByAGMAUMB/wGSAX8BUQH3AZIBfwFRAfcBrgF/AUwB/gNOAZQUAAFC
|
||||
AU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/gQAB3wX/AeABBwHHBf8CAAHBAf8BwAED
|
||||
AcABAwIAAcAB/wHAAQMBwAEDAgABwAE/AcABAQHAAQECAAHAAQ8BwAEBAcABAQIAAcABAwHAAQEBwAEB
|
||||
AgABwAEBAcABAQHAAQECAAHAAQEBwAEBAcABAQIAAcABBwHAAQEBwAEBAgABwAEPAcABAQHAAQEBgAEB
|
||||
AcABPwHAAQEBwAEBAcABAwHAAf8BwAEBAcABAQHgAQcBwwH/AcABAQHAAQEB4AEHAccF/wHgAQcB3wX/
|
||||
AeABHws=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>84, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
Generated
+46
@@ -0,0 +1,46 @@
|
||||
namespace GraphLib
|
||||
{
|
||||
partial class PlotterGraphPaneEx
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// PlotterGraphPane
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Name = "PlotterGraphPane";
|
||||
this.Size = new System.Drawing.Size(409, 150);
|
||||
this.Load += new System.EventHandler(this.OnLoadControl);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
+365
@@ -0,0 +1,365 @@
|
||||
namespace GraphLib
|
||||
{
|
||||
partial class PlotterGraphSelectCurvesForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.lb_Graphs = new System.Windows.Forms.CheckedListBox();
|
||||
this.gB_SelectedGraph = new System.Windows.Forms.GroupBox();
|
||||
this.cb_X_AutoScale = new System.Windows.Forms.CheckBox();
|
||||
this.tb_GraphName = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.cbDownSampling = new System.Windows.Forms.ComboBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.btn_GraphColor = new System.Windows.Forms.Button();
|
||||
this.cb_Y_AutoScale = new System.Windows.Forms.CheckBox();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.bt_MinorGridColor = new System.Windows.Forms.Button();
|
||||
this.bt_bg_col_bot = new System.Windows.Forms.Button();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.bt_MajorGridColor = new System.Windows.Forms.Button();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.bt_bg_col_top = new System.Windows.Forms.Button();
|
||||
this.btn_AutoScaleAll = new System.Windows.Forms.Button();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.cb_Layout = new System.Windows.Forms.ComboBox();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.gB_SelectedGraph.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lb_Graphs);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.gB_SelectedGraph);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.groupBox1);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.button1);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(395, 431);
|
||||
this.splitContainer1.SplitterDistance = 171;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// lb_Graphs
|
||||
//
|
||||
this.lb_Graphs.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lb_Graphs.FormattingEnabled = true;
|
||||
this.lb_Graphs.Location = new System.Drawing.Point(0, 0);
|
||||
this.lb_Graphs.Name = "lb_Graphs";
|
||||
this.lb_Graphs.Size = new System.Drawing.Size(171, 424);
|
||||
this.lb_Graphs.TabIndex = 0;
|
||||
this.lb_Graphs.SelectedIndexChanged += new System.EventHandler(this.checkedListBox1_SelectedIndexChanged_1);
|
||||
//
|
||||
// gB_SelectedGraph
|
||||
//
|
||||
this.gB_SelectedGraph.Controls.Add(this.cb_X_AutoScale);
|
||||
this.gB_SelectedGraph.Controls.Add(this.tb_GraphName);
|
||||
this.gB_SelectedGraph.Controls.Add(this.label3);
|
||||
this.gB_SelectedGraph.Controls.Add(this.cbDownSampling);
|
||||
this.gB_SelectedGraph.Controls.Add(this.label2);
|
||||
this.gB_SelectedGraph.Controls.Add(this.btn_GraphColor);
|
||||
this.gB_SelectedGraph.Controls.Add(this.cb_Y_AutoScale);
|
||||
this.gB_SelectedGraph.Location = new System.Drawing.Point(6, 232);
|
||||
this.gB_SelectedGraph.Name = "gB_SelectedGraph";
|
||||
this.gB_SelectedGraph.Size = new System.Drawing.Size(206, 158);
|
||||
this.gB_SelectedGraph.TabIndex = 6;
|
||||
this.gB_SelectedGraph.TabStop = false;
|
||||
this.gB_SelectedGraph.Text = "Selected Graph Options";
|
||||
this.gB_SelectedGraph.Visible = false;
|
||||
//
|
||||
// cb_X_AutoScale
|
||||
//
|
||||
this.cb_X_AutoScale.AutoSize = true;
|
||||
this.cb_X_AutoScale.Location = new System.Drawing.Point(12, 102);
|
||||
this.cb_X_AutoScale.Name = "cb_X_AutoScale";
|
||||
this.cb_X_AutoScale.Size = new System.Drawing.Size(93, 17);
|
||||
this.cb_X_AutoScale.TabIndex = 8;
|
||||
this.cb_X_AutoScale.Text = "X AutoScaling";
|
||||
this.cb_X_AutoScale.UseVisualStyleBackColor = true;
|
||||
this.cb_X_AutoScale.CheckedChanged += new System.EventHandler(this.cb_X_AutoScale_CheckedChanged);
|
||||
//
|
||||
// tb_GraphName
|
||||
//
|
||||
this.tb_GraphName.Location = new System.Drawing.Point(12, 24);
|
||||
this.tb_GraphName.Name = "tb_GraphName";
|
||||
this.tb_GraphName.Size = new System.Drawing.Size(167, 20);
|
||||
this.tb_GraphName.TabIndex = 7;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(52, 133);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(76, 13);
|
||||
this.label3.TabIndex = 6;
|
||||
this.label3.Text = "Downsampling";
|
||||
//
|
||||
// cbDownSampling
|
||||
//
|
||||
this.cbDownSampling.FormattingEnabled = true;
|
||||
this.cbDownSampling.Items.AddRange(new object[] {
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6"});
|
||||
this.cbDownSampling.Location = new System.Drawing.Point(7, 130);
|
||||
this.cbDownSampling.Name = "cbDownSampling";
|
||||
this.cbDownSampling.Size = new System.Drawing.Size(39, 21);
|
||||
this.cbDownSampling.TabIndex = 5;
|
||||
this.cbDownSampling.Text = "1";
|
||||
this.cbDownSampling.SelectedIndexChanged += new System.EventHandler(this.OnDownsamplingChanged);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(57, 55);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(63, 13);
|
||||
this.label2.TabIndex = 4;
|
||||
this.label2.Text = "Graph Color";
|
||||
//
|
||||
// btn_GraphColor
|
||||
//
|
||||
this.btn_GraphColor.Location = new System.Drawing.Point(11, 50);
|
||||
this.btn_GraphColor.Name = "btn_GraphColor";
|
||||
this.btn_GraphColor.Size = new System.Drawing.Size(26, 23);
|
||||
this.btn_GraphColor.TabIndex = 3;
|
||||
this.btn_GraphColor.UseVisualStyleBackColor = true;
|
||||
this.btn_GraphColor.Click += new System.EventHandler(this.btn_GraphColor_Click);
|
||||
//
|
||||
// cb_Y_AutoScale
|
||||
//
|
||||
this.cb_Y_AutoScale.AutoSize = true;
|
||||
this.cb_Y_AutoScale.Location = new System.Drawing.Point(12, 79);
|
||||
this.cb_Y_AutoScale.Name = "cb_Y_AutoScale";
|
||||
this.cb_Y_AutoScale.Size = new System.Drawing.Size(93, 17);
|
||||
this.cb_Y_AutoScale.TabIndex = 2;
|
||||
this.cb_Y_AutoScale.Text = "Y AutoScaling";
|
||||
this.cb_Y_AutoScale.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.label7);
|
||||
this.groupBox1.Controls.Add(this.label5);
|
||||
this.groupBox1.Controls.Add(this.bt_MinorGridColor);
|
||||
this.groupBox1.Controls.Add(this.bt_bg_col_bot);
|
||||
this.groupBox1.Controls.Add(this.label6);
|
||||
this.groupBox1.Controls.Add(this.bt_MajorGridColor);
|
||||
this.groupBox1.Controls.Add(this.label4);
|
||||
this.groupBox1.Controls.Add(this.bt_bg_col_top);
|
||||
this.groupBox1.Controls.Add(this.btn_AutoScaleAll);
|
||||
this.groupBox1.Controls.Add(this.label1);
|
||||
this.groupBox1.Controls.Add(this.cb_Layout);
|
||||
this.groupBox1.Location = new System.Drawing.Point(6, 5);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(206, 221);
|
||||
this.groupBox1.TabIndex = 4;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "General Options";
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(57, 194);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(82, 13);
|
||||
this.label7.TabIndex = 10;
|
||||
this.label7.Text = "Minor Grid Color";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(57, 136);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(128, 13);
|
||||
this.label5.TabIndex = 8;
|
||||
this.label5.Text = "Background Color Bottom";
|
||||
//
|
||||
// bt_MinorGridColor
|
||||
//
|
||||
this.bt_MinorGridColor.Location = new System.Drawing.Point(11, 189);
|
||||
this.bt_MinorGridColor.Name = "bt_MinorGridColor";
|
||||
this.bt_MinorGridColor.Size = new System.Drawing.Size(26, 23);
|
||||
this.bt_MinorGridColor.TabIndex = 9;
|
||||
this.bt_MinorGridColor.UseVisualStyleBackColor = true;
|
||||
this.bt_MinorGridColor.Click += new System.EventHandler(this.bt_MinorGridColor_Click);
|
||||
//
|
||||
// bt_bg_col_bot
|
||||
//
|
||||
this.bt_bg_col_bot.Location = new System.Drawing.Point(11, 131);
|
||||
this.bt_bg_col_bot.Name = "bt_bg_col_bot";
|
||||
this.bt_bg_col_bot.Size = new System.Drawing.Size(26, 23);
|
||||
this.bt_bg_col_bot.TabIndex = 7;
|
||||
this.bt_bg_col_bot.UseVisualStyleBackColor = true;
|
||||
this.bt_bg_col_bot.Click += new System.EventHandler(this.bt_bg_col_bot_Click);
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(57, 165);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(82, 13);
|
||||
this.label6.TabIndex = 8;
|
||||
this.label6.Text = "Major Grid Color";
|
||||
//
|
||||
// bt_MajorGridColor
|
||||
//
|
||||
this.bt_MajorGridColor.Location = new System.Drawing.Point(11, 160);
|
||||
this.bt_MajorGridColor.Name = "bt_MajorGridColor";
|
||||
this.bt_MajorGridColor.Size = new System.Drawing.Size(26, 23);
|
||||
this.bt_MajorGridColor.TabIndex = 7;
|
||||
this.bt_MajorGridColor.UseVisualStyleBackColor = true;
|
||||
this.bt_MajorGridColor.Click += new System.EventHandler(this.bt_MajorGridColor_Click);
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(57, 107);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(114, 13);
|
||||
this.label4.TabIndex = 6;
|
||||
this.label4.Text = "Background Color Top";
|
||||
//
|
||||
// bt_bg_col_top
|
||||
//
|
||||
this.bt_bg_col_top.Location = new System.Drawing.Point(11, 102);
|
||||
this.bt_bg_col_top.Name = "bt_bg_col_top";
|
||||
this.bt_bg_col_top.Size = new System.Drawing.Size(26, 23);
|
||||
this.bt_bg_col_top.TabIndex = 5;
|
||||
this.bt_bg_col_top.UseVisualStyleBackColor = true;
|
||||
this.bt_bg_col_top.Click += new System.EventHandler(this.bt_bg_col_top_Click);
|
||||
//
|
||||
// btn_AutoScaleAll
|
||||
//
|
||||
this.btn_AutoScaleAll.Location = new System.Drawing.Point(11, 69);
|
||||
this.btn_AutoScaleAll.Name = "btn_AutoScaleAll";
|
||||
this.btn_AutoScaleAll.Size = new System.Drawing.Size(167, 25);
|
||||
this.btn_AutoScaleAll.TabIndex = 4;
|
||||
this.btn_AutoScaleAll.Text = "Auto Scale All";
|
||||
this.btn_AutoScaleAll.UseVisualStyleBackColor = true;
|
||||
this.btn_AutoScaleAll.Click += new System.EventHandler(this.OnButtonAutoScallOnClicked);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(9, 26);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(39, 13);
|
||||
this.label1.TabIndex = 3;
|
||||
this.label1.Text = "Layout";
|
||||
//
|
||||
// cb_Layout
|
||||
//
|
||||
this.cb_Layout.FormattingEnabled = true;
|
||||
this.cb_Layout.Items.AddRange(new object[] {
|
||||
"Normal",
|
||||
"Stacked",
|
||||
"Tiles - Fill Vertical",
|
||||
"Tiles - Fill Horizontal",
|
||||
"Vertically"});
|
||||
this.cb_Layout.Location = new System.Drawing.Point(11, 42);
|
||||
this.cb_Layout.Name = "cb_Layout";
|
||||
this.cb_Layout.Size = new System.Drawing.Size(168, 21);
|
||||
this.cb_Layout.TabIndex = 2;
|
||||
this.cb_Layout.Text = "Select";
|
||||
this.cb_Layout.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(66, 396);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(68, 23);
|
||||
this.button1.TabIndex = 0;
|
||||
this.button1.Text = "Exit";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// PlotterGraphSelectCurvesForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(395, 431);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.MinimumSize = new System.Drawing.Size(16, 246);
|
||||
this.Name = "PlotterGraphSelectCurvesForm";
|
||||
this.Text = "Graph Properties";
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.gB_SelectedGraph.ResumeLayout(false);
|
||||
this.gB_SelectedGraph.PerformLayout();
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.CheckedListBox lb_Graphs;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox cb_Layout;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button btn_GraphColor;
|
||||
private System.Windows.Forms.CheckBox cb_Y_AutoScale;
|
||||
private System.Windows.Forms.Button btn_AutoScaleAll;
|
||||
private System.Windows.Forms.GroupBox gB_SelectedGraph;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.ComboBox cbDownSampling;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Button bt_bg_col_top;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Button bt_bg_col_bot;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Button bt_MinorGridColor;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Button bt_MajorGridColor;
|
||||
private System.Windows.Forms.TextBox tb_GraphName;
|
||||
private System.Windows.Forms.CheckBox cb_X_AutoScale;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,369 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
/* Copyright (c) 2008-2014 DI Zimmermann Stephan (stefan.zimmermann@tele2.at)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
namespace GraphLib
|
||||
{
|
||||
public partial class PlotterGraphSelectCurvesForm : Form
|
||||
{
|
||||
private int selectetGraphIndex = -1;
|
||||
|
||||
private PlotterGraphPaneEx gpane = null;
|
||||
|
||||
public PlotterGraphSelectCurvesForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
FormClosing += new FormClosingEventHandler(OnFormClosing);
|
||||
lb_Graphs.SelectedIndexChanged += new EventHandler(OnSelectedGraphIndexChanged);
|
||||
VisibleChanged += new EventHandler(OnVisibleChanged);
|
||||
tb_GraphName.TextChanged += new EventHandler(tb_GraphName_TextChanged);
|
||||
}
|
||||
|
||||
void tb_GraphName_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
||||
{
|
||||
DataSource src = gpane.Sources[selectetGraphIndex];
|
||||
String Text = tb_GraphName.Text;
|
||||
|
||||
if (String.IsNullOrEmpty(Text) == false)
|
||||
{
|
||||
src.Name = Text;
|
||||
gpane.Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public PlotterGraphPaneEx GraphPanel
|
||||
{
|
||||
set
|
||||
{
|
||||
gpane = value;
|
||||
if (gpane != null)
|
||||
{
|
||||
this.lb_Graphs.Items.Clear();
|
||||
|
||||
foreach (DataSource s in gpane.Sources)
|
||||
{
|
||||
if (s.Active)
|
||||
{
|
||||
this.lb_Graphs.Items.Add(s.Name, CheckState.Checked);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.lb_Graphs.Items.Add(s.Name, CheckState.Unchecked);
|
||||
}
|
||||
}
|
||||
|
||||
UpdateAllCheckedState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAllCheckedState()
|
||||
{
|
||||
int AutoScaleOn = 0;
|
||||
|
||||
foreach (DataSource src in gpane.Sources)
|
||||
{
|
||||
if (src.AutoScaleY)
|
||||
{
|
||||
AutoScaleOn++;
|
||||
}
|
||||
}
|
||||
|
||||
if (AutoScaleOn == 0)
|
||||
{
|
||||
btn_AutoScaleAll.Visible = true;
|
||||
btn_AutoScaleAll.Text = "Auto Y-Scale all Graphs";
|
||||
}
|
||||
else
|
||||
{
|
||||
btn_AutoScaleAll.Visible = true;
|
||||
btn_AutoScaleAll.Text = "Normal Y-Scale all Graphs";
|
||||
}
|
||||
}
|
||||
|
||||
void OnVisibleChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (this.Visible == true)
|
||||
{
|
||||
selectetGraphIndex = -1;
|
||||
gB_SelectedGraph.Visible = false;
|
||||
|
||||
if (gpane != null)
|
||||
{
|
||||
UpdateAllCheckedState();
|
||||
|
||||
if (gpane.layout == PlotterGraphPaneEx.LayoutMode.NORMAL)
|
||||
{
|
||||
cb_Layout.SelectedIndex = 0;
|
||||
}
|
||||
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.STACKED)
|
||||
{
|
||||
cb_Layout.SelectedIndex = 1;
|
||||
}
|
||||
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.TILES_HOR)
|
||||
{
|
||||
cb_Layout.SelectedIndex = 2;
|
||||
}
|
||||
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.TILES_VER)
|
||||
{
|
||||
cb_Layout.SelectedIndex = 3;
|
||||
}
|
||||
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.VERTICAL_ARRANGED)
|
||||
{
|
||||
cb_Layout.SelectedIndex = 4;
|
||||
}
|
||||
|
||||
bt_bg_col_top.BackColor = gpane.BgndColorTop;
|
||||
bt_bg_col_bot.BackColor = gpane.BgndColorBot;
|
||||
bt_MajorGridColor.BackColor = gpane.MajorGridColor;
|
||||
bt_MinorGridColor.BackColor = gpane.MinorGridColor;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void OnSelectedGraphIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (gpane != null)
|
||||
{
|
||||
for (int i = 0; i < gpane.Sources.Count; i++)
|
||||
{
|
||||
if (lb_Graphs.CheckedIndices.Contains(i))
|
||||
{
|
||||
gpane.Sources[i].Active = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
gpane.Sources[i].Active = false;
|
||||
}
|
||||
}
|
||||
gpane.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
void OnFormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
this.Hide();
|
||||
e.Cancel = true;
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Hide();
|
||||
}
|
||||
|
||||
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cb_Layout.SelectedIndex == 0)
|
||||
{
|
||||
gpane.layout = PlotterGraphPaneEx.LayoutMode.NORMAL;
|
||||
}
|
||||
if (cb_Layout.SelectedIndex == 1)
|
||||
{
|
||||
gpane.layout = PlotterGraphPaneEx.LayoutMode.STACKED;
|
||||
}
|
||||
|
||||
if (cb_Layout.SelectedIndex == 2)
|
||||
{
|
||||
gpane.layout = PlotterGraphPaneEx.LayoutMode.TILES_VER;
|
||||
}
|
||||
if (cb_Layout.SelectedIndex == 3)
|
||||
{
|
||||
gpane.layout = PlotterGraphPaneEx.LayoutMode.TILES_HOR;
|
||||
}
|
||||
if (cb_Layout.SelectedIndex == 4)
|
||||
{
|
||||
gpane.layout = PlotterGraphPaneEx.LayoutMode.VERTICAL_ARRANGED;
|
||||
}
|
||||
gpane.Invalidate();
|
||||
}
|
||||
|
||||
private void checkedListBox1_SelectedIndexChanged_1(object sender, EventArgs e)
|
||||
{
|
||||
selectetGraphIndex = lb_Graphs.SelectedIndex;
|
||||
|
||||
UpdateSelectedGraphInfo();
|
||||
gB_SelectedGraph.Visible = true;
|
||||
}
|
||||
|
||||
private void UpdateSelectedGraphInfo()
|
||||
{
|
||||
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
||||
{
|
||||
DataSource src = gpane.Sources[selectetGraphIndex];
|
||||
btn_GraphColor.BackColor = src.GraphColor;
|
||||
|
||||
cb_Y_AutoScale.Checked = src.AutoScaleY;
|
||||
cb_X_AutoScale.Checked = src.AutoScaleX;
|
||||
|
||||
cbDownSampling.SelectedIndex = (src.Downsampling - 1);
|
||||
tb_GraphName.Text = src.Name;
|
||||
}
|
||||
}
|
||||
|
||||
private void btn_GraphColor_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
||||
{
|
||||
DataSource src = gpane.Sources[selectetGraphIndex];
|
||||
ColorDialog d = new ColorDialog();
|
||||
if (d.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
btn_GraphColor.BackColor = d.Color;
|
||||
src.GraphColor = d.Color;
|
||||
gpane.Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void OnButtonAutoScallOnClicked(object sender, EventArgs e)
|
||||
{
|
||||
int AutoScaleOn = 0;
|
||||
|
||||
foreach (DataSource src in gpane.Sources)
|
||||
{
|
||||
if (src.AutoScaleY)
|
||||
{
|
||||
AutoScaleOn++;
|
||||
}
|
||||
}
|
||||
|
||||
if (AutoScaleOn == 0)
|
||||
{
|
||||
btn_AutoScaleAll.Text = "Normal scale for all graphs";
|
||||
foreach (DataSource src in gpane.Sources)
|
||||
{
|
||||
src.AutoScaleY = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
btn_AutoScaleAll.Text = "Auto scale for all graphs";
|
||||
foreach (DataSource src in gpane.Sources)
|
||||
{
|
||||
src.AutoScaleY = false;
|
||||
}
|
||||
}
|
||||
|
||||
UpdateSelectedGraphInfo();
|
||||
gpane.Invalidate();
|
||||
}
|
||||
|
||||
private void OnDownsamplingChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
||||
{
|
||||
DataSource src = gpane.Sources[selectetGraphIndex];
|
||||
|
||||
src.Downsampling = (cbDownSampling.SelectedIndex + 1);
|
||||
}
|
||||
|
||||
gpane.Invalidate();
|
||||
}
|
||||
|
||||
private void bt_bg_col_top_Click(object sender, EventArgs e)
|
||||
{
|
||||
ColorDialog d = new ColorDialog();
|
||||
if (d.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
bt_bg_col_top.BackColor = d.Color;
|
||||
gpane.BgndColorTop = d.Color;
|
||||
|
||||
gpane.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void bt_bg_col_bot_Click(object sender, EventArgs e)
|
||||
{
|
||||
ColorDialog d = new ColorDialog();
|
||||
if (d.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
bt_bg_col_bot.BackColor = d.Color;
|
||||
gpane.BgndColorBot = d.Color;
|
||||
gpane.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void bt_MajorGridColor_Click(object sender, EventArgs e)
|
||||
{
|
||||
ColorDialog d = new ColorDialog();
|
||||
if (d.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
bt_MajorGridColor.BackColor = d.Color;
|
||||
gpane.MajorGridColor = d.Color;
|
||||
gpane.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void bt_MinorGridColor_Click(object sender, EventArgs e)
|
||||
{
|
||||
ColorDialog d = new ColorDialog();
|
||||
if (d.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
bt_MinorGridColor.BackColor = d.Color;
|
||||
gpane.MinorGridColor = d.Color;
|
||||
gpane.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void cb_Y_AutoScale_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
||||
{
|
||||
DataSource src = gpane.Sources[selectetGraphIndex];
|
||||
|
||||
src.AutoScaleY = cb_Y_AutoScale.Checked;
|
||||
|
||||
UpdateAllCheckedState();
|
||||
|
||||
gpane.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void cb_X_AutoScale_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
||||
{
|
||||
DataSource src = gpane.Sources[selectetGraphIndex];
|
||||
|
||||
src.AutoScaleX = cb_X_AutoScale.Checked;
|
||||
|
||||
UpdateAllCheckedState();
|
||||
|
||||
gpane.Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,490 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
#region License
|
||||
|
||||
/*
|
||||
* Based on the work of Leslie Sanford
|
||||
*/
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
namespace PrecisionTimer
|
||||
{
|
||||
public enum Mode
|
||||
{
|
||||
OneShot,
|
||||
Periodic
|
||||
};
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct TimerCaps
|
||||
{
|
||||
public int periodMin;
|
||||
public int periodMax;
|
||||
}
|
||||
|
||||
|
||||
public sealed class Timer : IComponent
|
||||
{
|
||||
private delegate void TimeProc(int id, int msg, int user, int param1, int param2);
|
||||
|
||||
private delegate void EventRaiser(EventArgs e);
|
||||
|
||||
[DllImport("winmm.dll")]
|
||||
private static extern int timeGetDevCaps(ref TimerCaps caps,
|
||||
int sizeOfTimerCaps);
|
||||
|
||||
[DllImport("winmm.dll")]
|
||||
private static extern int timeSetEvent(int delay,
|
||||
int resolution,
|
||||
TimeProc proc,
|
||||
int user,
|
||||
int mode);
|
||||
|
||||
[DllImport("winmm.dll")]
|
||||
private static extern int timeKillEvent(int id);
|
||||
|
||||
private const int TIMERR_NOERROR = 0;
|
||||
|
||||
private int timerID;
|
||||
|
||||
private volatile Mode mode;
|
||||
|
||||
private volatile int period;
|
||||
|
||||
private volatile int resolution;
|
||||
|
||||
private TimeProc timeProcPeriodic;
|
||||
|
||||
private TimeProc timeProcOneShot;
|
||||
|
||||
private EventRaiser tickRaiser;
|
||||
|
||||
private bool running = false;
|
||||
|
||||
private volatile bool disposed = false;
|
||||
|
||||
private ISynchronizeInvoke synchronizingObject = null;
|
||||
|
||||
private ISite site = null;
|
||||
|
||||
private static TimerCaps caps;
|
||||
|
||||
public event EventHandler Started;
|
||||
|
||||
public event EventHandler Stopped;
|
||||
|
||||
public event EventHandler Tick;
|
||||
|
||||
static Timer()
|
||||
{
|
||||
// Get multimedia timer capabilities.
|
||||
timeGetDevCaps(ref caps, Marshal.SizeOf(caps));
|
||||
}
|
||||
|
||||
|
||||
public Timer(IContainer container)
|
||||
{
|
||||
|
||||
container.Add(this);
|
||||
|
||||
Initialize();
|
||||
}
|
||||
|
||||
|
||||
public Timer()
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
~Timer()
|
||||
{
|
||||
if(IsRunning)
|
||||
{
|
||||
// Stop and destroy timer.
|
||||
timeKillEvent(timerID);
|
||||
}
|
||||
}
|
||||
|
||||
private void Initialize()
|
||||
{
|
||||
this.mode = Mode.Periodic;
|
||||
this.period = Capabilities.periodMin;
|
||||
this.resolution = 1;
|
||||
|
||||
running = false;
|
||||
|
||||
timeProcPeriodic = new TimeProc(TimerPeriodicEventCallback);
|
||||
timeProcOneShot = new TimeProc(TimerOneShotEventCallback);
|
||||
tickRaiser = new EventRaiser(OnTick);
|
||||
}
|
||||
|
||||
|
||||
public void Start()
|
||||
{
|
||||
|
||||
if(disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("Timer");
|
||||
}
|
||||
|
||||
if(IsRunning)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(Mode == Mode.Periodic)
|
||||
{
|
||||
timerID = timeSetEvent(Period, Resolution, timeProcPeriodic, 0, (int)Mode);
|
||||
}
|
||||
else
|
||||
{
|
||||
timerID = timeSetEvent(Period, Resolution, timeProcOneShot, 0, (int)Mode);
|
||||
}
|
||||
|
||||
if(timerID != 0)
|
||||
{
|
||||
running = true;
|
||||
|
||||
if(SynchronizingObject != null && SynchronizingObject.InvokeRequired)
|
||||
{
|
||||
SynchronizingObject.BeginInvoke(
|
||||
new EventRaiser(OnStarted),
|
||||
new object[] { EventArgs.Empty });
|
||||
}
|
||||
else
|
||||
{
|
||||
OnStarted(EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new TimerException("Unable to start timer.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
|
||||
if(disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("Timer");
|
||||
}
|
||||
|
||||
if(!running)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int result = timeKillEvent(timerID);
|
||||
|
||||
Debug.Assert(result == TIMERR_NOERROR);
|
||||
|
||||
running = false;
|
||||
|
||||
if(SynchronizingObject != null && SynchronizingObject.InvokeRequired)
|
||||
{
|
||||
SynchronizingObject.BeginInvoke(
|
||||
new EventRaiser(OnStopped),
|
||||
new object[] { EventArgs.Empty });
|
||||
}
|
||||
else
|
||||
{
|
||||
OnStopped(EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void TimerPeriodicEventCallback(int id, int msg, int user, int param1, int param2)
|
||||
{
|
||||
if(synchronizingObject != null)
|
||||
{
|
||||
synchronizingObject.BeginInvoke(tickRaiser, new object[] { EventArgs.Empty });
|
||||
}
|
||||
else
|
||||
{
|
||||
OnTick(EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
private void TimerOneShotEventCallback(int id, int msg, int user, int param1, int param2)
|
||||
{
|
||||
if(synchronizingObject != null)
|
||||
{
|
||||
synchronizingObject.BeginInvoke(tickRaiser, new object[] { EventArgs.Empty });
|
||||
Stop();
|
||||
}
|
||||
else
|
||||
{
|
||||
OnTick(EventArgs.Empty);
|
||||
Stop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Raises the Disposed event.
|
||||
private void OnDisposed(EventArgs e)
|
||||
{
|
||||
EventHandler handler = Disposed;
|
||||
|
||||
if(handler != null)
|
||||
{
|
||||
handler(this, e);
|
||||
}
|
||||
}
|
||||
|
||||
// Raises the Started event.
|
||||
private void OnStarted(EventArgs e)
|
||||
{
|
||||
EventHandler handler = Started;
|
||||
|
||||
if(handler != null)
|
||||
{
|
||||
handler(this, e);
|
||||
}
|
||||
}
|
||||
|
||||
// Raises the Stopped event.
|
||||
private void OnStopped(EventArgs e)
|
||||
{
|
||||
EventHandler handler = Stopped;
|
||||
|
||||
if(handler != null)
|
||||
{
|
||||
handler(this, e);
|
||||
}
|
||||
}
|
||||
|
||||
// Raises the Tick event.
|
||||
private void OnTick(EventArgs e)
|
||||
{
|
||||
EventHandler handler = Tick;
|
||||
|
||||
if(handler != null)
|
||||
{
|
||||
handler(this, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the object used to marshal event-handler calls.
|
||||
/// </summary>
|
||||
public ISynchronizeInvoke SynchronizingObject
|
||||
{
|
||||
get
|
||||
{
|
||||
#region Require
|
||||
|
||||
if(disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("Timer");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
return synchronizingObject;
|
||||
}
|
||||
set
|
||||
{
|
||||
#region Require
|
||||
|
||||
if(disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("Timer");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
synchronizingObject = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public int Period
|
||||
{
|
||||
get
|
||||
{
|
||||
#region Require
|
||||
|
||||
if(disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("Timer");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
return period;
|
||||
}
|
||||
set
|
||||
{
|
||||
#region Require
|
||||
|
||||
if(disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("Timer");
|
||||
}
|
||||
else if(value < Capabilities.periodMin || value > Capabilities.periodMax)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Period", value,
|
||||
"Multimedia Timer period out of range.");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
period = value;
|
||||
|
||||
if(IsRunning)
|
||||
{
|
||||
Stop();
|
||||
Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public int Resolution
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
if(disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("Timer");
|
||||
}
|
||||
|
||||
return resolution;
|
||||
}
|
||||
set
|
||||
{
|
||||
if(disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("Timer");
|
||||
}
|
||||
else if(value < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Resolution", value,
|
||||
"timer resolution out of range.");
|
||||
}
|
||||
|
||||
resolution = value;
|
||||
|
||||
if(IsRunning)
|
||||
{
|
||||
Stop();
|
||||
Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Mode Mode
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
if(disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("Timer");
|
||||
}
|
||||
|
||||
|
||||
return mode;
|
||||
}
|
||||
set
|
||||
{
|
||||
|
||||
if(disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("Timer");
|
||||
}
|
||||
|
||||
|
||||
mode = value;
|
||||
|
||||
if(IsRunning)
|
||||
{
|
||||
Stop();
|
||||
Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether the Timer is running.
|
||||
/// </summary>
|
||||
public bool IsRunning
|
||||
{
|
||||
get
|
||||
{
|
||||
return running;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the timer capabilities.
|
||||
/// </summary>
|
||||
public static TimerCaps Capabilities
|
||||
{
|
||||
get
|
||||
{
|
||||
return caps;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public event System.EventHandler Disposed;
|
||||
|
||||
public ISite Site
|
||||
{
|
||||
get
|
||||
{
|
||||
return site;
|
||||
}
|
||||
set
|
||||
{
|
||||
site = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
if(disposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(IsRunning)
|
||||
{
|
||||
Stop();
|
||||
}
|
||||
|
||||
disposed = true;
|
||||
|
||||
OnDisposed(EventArgs.Empty);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class TimerException : ApplicationException
|
||||
{
|
||||
public TimerException(string message) : base(message)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
Generated
+264
@@ -0,0 +1,264 @@
|
||||
namespace GraphLib
|
||||
{
|
||||
partial class PrintPreviewForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.printPreviewCtrl = new System.Windows.Forms.PrintPreviewControl();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.rb_Unscaled = new System.Windows.Forms.RadioButton();
|
||||
this.rb_BestFit = new System.Windows.Forms.RadioButton();
|
||||
this.rb_Scale = new System.Windows.Forms.RadioButton();
|
||||
this.cb_PrintBackground = new System.Windows.Forms.CheckBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.cb_Printer = new System.Windows.Forms.ComboBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.cb_Orientation = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.cb_PaperSize = new System.Windows.Forms.ComboBox();
|
||||
this.bt_Cancel = new System.Windows.Forms.Button();
|
||||
this.bt_print = new System.Windows.Forms.Button();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// printPreviewCtrl
|
||||
//
|
||||
this.printPreviewCtrl.BackColor = System.Drawing.SystemColors.ControlLight;
|
||||
this.printPreviewCtrl.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.printPreviewCtrl.Location = new System.Drawing.Point(0, 0);
|
||||
this.printPreviewCtrl.Name = "printPreviewCtrl";
|
||||
this.printPreviewCtrl.Size = new System.Drawing.Size(453, 501);
|
||||
this.printPreviewCtrl.TabIndex = 1;
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer1.IsSplitterFixed = true;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.printPreviewCtrl);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.groupBox1);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.cb_PrintBackground);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.label3);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.cb_Printer);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.label2);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.cb_Orientation);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.label1);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.cb_PaperSize);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.bt_Cancel);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.bt_print);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(681, 501);
|
||||
this.splitContainer1.SplitterDistance = 453;
|
||||
this.splitContainer1.TabIndex = 2;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.rb_Unscaled);
|
||||
this.groupBox1.Controls.Add(this.rb_BestFit);
|
||||
this.groupBox1.Controls.Add(this.rb_Scale);
|
||||
this.groupBox1.Location = new System.Drawing.Point(18, 188);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(93, 93);
|
||||
this.groupBox1.TabIndex = 12;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Scaling";
|
||||
//
|
||||
// rb_Unscaled
|
||||
//
|
||||
this.rb_Unscaled.AutoSize = true;
|
||||
this.rb_Unscaled.Location = new System.Drawing.Point(13, 19);
|
||||
this.rb_Unscaled.Name = "rb_Unscaled";
|
||||
this.rb_Unscaled.Size = new System.Drawing.Size(70, 17);
|
||||
this.rb_Unscaled.TabIndex = 8;
|
||||
this.rb_Unscaled.TabStop = true;
|
||||
this.rb_Unscaled.Text = "Unscaled";
|
||||
this.rb_Unscaled.UseVisualStyleBackColor = true;
|
||||
this.rb_Unscaled.CheckedChanged += new System.EventHandler(this.rb_Unscaled_CheckedChanged);
|
||||
//
|
||||
// rb_BestFit
|
||||
//
|
||||
this.rb_BestFit.AutoSize = true;
|
||||
this.rb_BestFit.Location = new System.Drawing.Point(13, 65);
|
||||
this.rb_BestFit.Name = "rb_BestFit";
|
||||
this.rb_BestFit.Size = new System.Drawing.Size(60, 17);
|
||||
this.rb_BestFit.TabIndex = 6;
|
||||
this.rb_BestFit.TabStop = true;
|
||||
this.rb_BestFit.Text = "Best Fit";
|
||||
this.rb_BestFit.UseVisualStyleBackColor = true;
|
||||
this.rb_BestFit.CheckedChanged += new System.EventHandler(this.rb_BestFit_CheckedChanged);
|
||||
//
|
||||
// rb_Scale
|
||||
//
|
||||
this.rb_Scale.AutoSize = true;
|
||||
this.rb_Scale.Location = new System.Drawing.Point(13, 42);
|
||||
this.rb_Scale.Name = "rb_Scale";
|
||||
this.rb_Scale.Size = new System.Drawing.Size(52, 17);
|
||||
this.rb_Scale.TabIndex = 7;
|
||||
this.rb_Scale.TabStop = true;
|
||||
this.rb_Scale.Text = "Scale";
|
||||
this.rb_Scale.UseVisualStyleBackColor = true;
|
||||
this.rb_Scale.CheckedChanged += new System.EventHandler(this.rb_Scale_CheckedChanged);
|
||||
//
|
||||
// cb_PrintBackground
|
||||
//
|
||||
this.cb_PrintBackground.AutoSize = true;
|
||||
this.cb_PrintBackground.Location = new System.Drawing.Point(22, 321);
|
||||
this.cb_PrintBackground.Name = "cb_PrintBackground";
|
||||
this.cb_PrintBackground.Size = new System.Drawing.Size(108, 17);
|
||||
this.cb_PrintBackground.TabIndex = 11;
|
||||
this.cb_PrintBackground.Text = "Print Background";
|
||||
this.cb_PrintBackground.UseVisualStyleBackColor = true;
|
||||
this.cb_PrintBackground.Visible = false;
|
||||
this.cb_PrintBackground.CheckedChanged += new System.EventHandler(this.cb_PrintBackground_CheckedChanged);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(19, 29);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(37, 13);
|
||||
this.label3.TabIndex = 10;
|
||||
this.label3.Text = "Printer";
|
||||
//
|
||||
// cb_Printer
|
||||
//
|
||||
this.cb_Printer.FormattingEnabled = true;
|
||||
this.cb_Printer.Location = new System.Drawing.Point(18, 45);
|
||||
this.cb_Printer.Name = "cb_Printer";
|
||||
this.cb_Printer.Size = new System.Drawing.Size(195, 21);
|
||||
this.cb_Printer.TabIndex = 9;
|
||||
this.cb_Printer.SelectedIndexChanged += new System.EventHandler(this.cb_Printer_SelectedIndexChanged);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(19, 134);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(58, 13);
|
||||
this.label2.TabIndex = 5;
|
||||
this.label2.Text = "Orientation";
|
||||
//
|
||||
// cb_Orientation
|
||||
//
|
||||
this.cb_Orientation.FormattingEnabled = true;
|
||||
this.cb_Orientation.Items.AddRange(new object[] {
|
||||
"Portrait",
|
||||
"Landscape"});
|
||||
this.cb_Orientation.Location = new System.Drawing.Point(18, 150);
|
||||
this.cb_Orientation.Name = "cb_Orientation";
|
||||
this.cb_Orientation.Size = new System.Drawing.Size(93, 21);
|
||||
this.cb_Orientation.TabIndex = 4;
|
||||
this.cb_Orientation.SelectedIndexChanged += new System.EventHandler(this.cb_Orientation_SelectedIndexChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(19, 81);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(58, 13);
|
||||
this.label1.TabIndex = 3;
|
||||
this.label1.Text = "Paper Size";
|
||||
//
|
||||
// cb_PaperSize
|
||||
//
|
||||
this.cb_PaperSize.FormattingEnabled = true;
|
||||
this.cb_PaperSize.Location = new System.Drawing.Point(18, 97);
|
||||
this.cb_PaperSize.Name = "cb_PaperSize";
|
||||
this.cb_PaperSize.Size = new System.Drawing.Size(93, 21);
|
||||
this.cb_PaperSize.TabIndex = 2;
|
||||
this.cb_PaperSize.SelectedIndexChanged += new System.EventHandler(this.cb_PaperSize_SelectedIndexChanged);
|
||||
//
|
||||
// bt_Cancel
|
||||
//
|
||||
this.bt_Cancel.Location = new System.Drawing.Point(118, 450);
|
||||
this.bt_Cancel.Name = "bt_Cancel";
|
||||
this.bt_Cancel.Size = new System.Drawing.Size(69, 26);
|
||||
this.bt_Cancel.TabIndex = 1;
|
||||
this.bt_Cancel.Text = "Cancel";
|
||||
this.bt_Cancel.UseVisualStyleBackColor = true;
|
||||
this.bt_Cancel.Click += new System.EventHandler(this.bt_Cancel_Click);
|
||||
//
|
||||
// bt_print
|
||||
//
|
||||
this.bt_print.Location = new System.Drawing.Point(22, 450);
|
||||
this.bt_print.Name = "bt_print";
|
||||
this.bt_print.Size = new System.Drawing.Size(69, 26);
|
||||
this.bt_print.TabIndex = 0;
|
||||
this.bt_print.Text = "Print";
|
||||
this.bt_print.UseVisualStyleBackColor = true;
|
||||
this.bt_print.Click += new System.EventHandler(this.bt_print_Click);
|
||||
//
|
||||
// PrintPreviewForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(681, 501);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.MaximumSize = new System.Drawing.Size(697, 537);
|
||||
this.MinimumSize = new System.Drawing.Size(697, 537);
|
||||
this.Name = "PrintPreviewForm";
|
||||
this.Text = "PrintPreviewForm";
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.PerformLayout();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PrintPreviewControl printPreviewCtrl;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.Button bt_Cancel;
|
||||
private System.Windows.Forms.Button bt_print;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox cb_PaperSize;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.ComboBox cb_Orientation;
|
||||
private System.Windows.Forms.RadioButton rb_Scale;
|
||||
private System.Windows.Forms.RadioButton rb_BestFit;
|
||||
private System.Windows.Forms.RadioButton rb_Unscaled;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.ComboBox cb_Printer;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.CheckBox cb_PrintBackground;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,336 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing.Printing;
|
||||
|
||||
namespace GraphLib
|
||||
{
|
||||
public partial class PrintPreviewForm : Form
|
||||
{
|
||||
private PrintDocument printDoc = new PrintDocument();
|
||||
private PlotterGraphPaneEx gpane = null;
|
||||
private String strDefaultPrinter = String.Empty;
|
||||
|
||||
private bool bBestScale = false;
|
||||
private bool bPageScale = false;
|
||||
private bool bUnscaled = false;
|
||||
private bool bLandscape = false;
|
||||
private int selPrinterIndex = -1;
|
||||
|
||||
public PrintPreviewForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
printPreviewCtrl.Zoom = 1;
|
||||
rb_BestFit.Checked = true;
|
||||
rb_Scale.Checked = false;
|
||||
rb_Unscaled.Checked = false;
|
||||
cb_Orientation.SelectedIndex = 0;
|
||||
printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
|
||||
this.VisibleChanged += new EventHandler(OnVisibleChanged);
|
||||
FormClosing += new FormClosingEventHandler(OnFormClosing);
|
||||
}
|
||||
|
||||
void FillInInstalledPrinters()
|
||||
{
|
||||
strDefaultPrinter = printDoc.PrinterSettings.PrinterName;
|
||||
cb_Printer.Items.Clear();
|
||||
foreach (String strPrinter in PrinterSettings.InstalledPrinters)
|
||||
{
|
||||
cb_Printer.Items.Add(strPrinter);
|
||||
|
||||
if (strPrinter == strDefaultPrinter)
|
||||
{
|
||||
cb_Printer.SelectedIndex = cb_Printer.Items.IndexOf(strPrinter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OnVisibleChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (this.Visible)
|
||||
{
|
||||
bLandscape = cb_Orientation.SelectedIndex == 1;
|
||||
|
||||
FillInInstalledPrinters();
|
||||
|
||||
FillInPaperSizes();
|
||||
|
||||
UpdateScaleRadioButtons();
|
||||
|
||||
InvalidatePrintPreview();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void OnFormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
this.Hide();
|
||||
e.Cancel = true;
|
||||
}
|
||||
|
||||
void UpdateScaleRadioButtons()
|
||||
{
|
||||
bBestScale = rb_BestFit.Checked;
|
||||
bPageScale = rb_Scale.Checked;
|
||||
bUnscaled = rb_Unscaled.Checked;
|
||||
}
|
||||
|
||||
double AutoZoomPreview()
|
||||
{
|
||||
float zoom = 1.0f;
|
||||
float step = 0.05f;
|
||||
|
||||
float PaperWidth = printDoc.DefaultPageSettings.PaperSize.Width;
|
||||
float PaperHeight = printDoc.DefaultPageSettings.PaperSize.Height;
|
||||
|
||||
if (bLandscape)
|
||||
{
|
||||
PaperHeight = printDoc.DefaultPageSettings.PaperSize.Width * zoom;
|
||||
PaperWidth = printDoc.DefaultPageSettings.PaperSize.Height * zoom;
|
||||
}
|
||||
|
||||
while (zoom > 0.1f)
|
||||
{
|
||||
double CurW = PaperWidth * zoom;
|
||||
double CurH = PaperHeight * zoom;
|
||||
|
||||
if (splitContainer1.Panel1.Width < (CurW+10) || splitContainer1.Panel1.Height < (CurH+10))
|
||||
{
|
||||
zoom -= step;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return zoom;
|
||||
}
|
||||
|
||||
void FillInPaperSizes()
|
||||
{
|
||||
cb_PaperSize.Items.Clear();
|
||||
|
||||
foreach (PaperSize s in printDoc.PrinterSettings.PaperSizes)
|
||||
{
|
||||
cb_PaperSize.Items.Add(s.PaperName.ToString());
|
||||
}
|
||||
|
||||
if (cb_PaperSize.SelectedIndex == -1 || cb_PaperSize.SelectedIndex >= cb_PaperSize.Items.Count)
|
||||
{
|
||||
int idx = cb_PaperSize.Items.IndexOf(printDoc.DefaultPageSettings.PaperSize.PaperName);
|
||||
|
||||
if (idx >= 0 && idx < cb_PaperSize.Items.Count)
|
||||
{
|
||||
cb_PaperSize.SelectedIndex = idx;
|
||||
}
|
||||
else
|
||||
{
|
||||
cb_PaperSize.SelectedIndex = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void InvalidatePrintPreview()
|
||||
{
|
||||
printDoc.DefaultPageSettings.Landscape = bLandscape;
|
||||
printPreviewCtrl.Document = printDoc;
|
||||
printPreviewCtrl.Document.DocumentName = "Preview";
|
||||
printPreviewCtrl.Zoom = AutoZoomPreview();
|
||||
printPreviewCtrl.InvalidatePreview();
|
||||
}
|
||||
|
||||
|
||||
public PlotterGraphPaneEx GraphPanel
|
||||
{
|
||||
set
|
||||
{
|
||||
gpane = value;
|
||||
}
|
||||
}
|
||||
|
||||
private void AutoScaleDocument(ref float w, ref float h, ref float x, ref float y)
|
||||
{
|
||||
float CurGraphWidth = gpane.Width;
|
||||
float CurGraphHeight = gpane.Height;
|
||||
float CurPaperWidth = printDoc.DefaultPageSettings.PaperSize.Width;
|
||||
float CurPaperHeight = printDoc.DefaultPageSettings.PaperSize.Height;
|
||||
|
||||
if (bLandscape)
|
||||
{
|
||||
CurPaperWidth = printDoc.DefaultPageSettings.PaperSize.Height;
|
||||
CurPaperHeight = printDoc.DefaultPageSettings.PaperSize.Width;
|
||||
}
|
||||
|
||||
if (bUnscaled)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
if (bPageScale) // scale to page
|
||||
{
|
||||
CurGraphWidth = CurPaperWidth;
|
||||
CurGraphHeight = CurPaperHeight;
|
||||
}
|
||||
|
||||
if (bBestScale) // scale to best fit
|
||||
{
|
||||
float zoom = 1.0f;
|
||||
float step = 0.05f;
|
||||
|
||||
if (CurGraphWidth > (CurPaperWidth ) || CurGraphHeight > (CurPaperHeight ))
|
||||
{
|
||||
// scale down
|
||||
while ((zoom * gpane.Width > CurPaperWidth || zoom * gpane.Height > CurPaperHeight) && zoom > step)
|
||||
{
|
||||
zoom -= step;
|
||||
}
|
||||
zoom -= step;
|
||||
|
||||
}
|
||||
else if (CurGraphWidth < CurPaperWidth && CurGraphHeight < CurPaperHeight)
|
||||
{
|
||||
// scale up
|
||||
while (((zoom+step) * gpane.Width < CurPaperWidth && (zoom+step) * gpane.Height < CurPaperHeight) && zoom > step)
|
||||
{
|
||||
zoom += step;
|
||||
}
|
||||
|
||||
}
|
||||
CurGraphWidth = zoom * gpane.Width;
|
||||
CurGraphHeight = zoom * gpane.Height;
|
||||
}
|
||||
|
||||
w = CurGraphWidth;
|
||||
h = CurGraphHeight;
|
||||
|
||||
// center print
|
||||
x = (CurPaperWidth - w) / 2.0f;
|
||||
y = (CurPaperHeight - h) / 2.0f;
|
||||
}
|
||||
|
||||
private void printDoc_PrintPage(object sender, PrintPageEventArgs e)
|
||||
{
|
||||
if (gpane != null)
|
||||
{
|
||||
float x=0, y=0, w=gpane.Width, h=gpane.Height;
|
||||
|
||||
AutoScaleDocument(ref w, ref h, ref x, ref y);
|
||||
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
||||
//gpane.PaintControl(e.Graphics, w, h,x,y,cb_PrintBackground.Checked);
|
||||
gpane.PaintControl(e.Graphics, w, h, x, y, false);
|
||||
}
|
||||
}
|
||||
|
||||
private void bt_print_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (printDoc != null)
|
||||
{
|
||||
printDoc.Print();
|
||||
this.Hide();
|
||||
}
|
||||
}
|
||||
|
||||
private void bt_Cancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Hide();
|
||||
}
|
||||
|
||||
private void cb_PaperSize_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cb_PaperSize.SelectedIndex >= 0 && cb_PaperSize.SelectedIndex < cb_PaperSize.Items.Count)
|
||||
{
|
||||
|
||||
foreach (PaperSize s in printDoc.PrinterSettings.PaperSizes)
|
||||
{
|
||||
if (s.PaperName == (string)cb_PaperSize.Items[cb_PaperSize.SelectedIndex])
|
||||
{
|
||||
printDoc.DefaultPageSettings.PaperSize = s;
|
||||
InvalidatePrintPreview();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void rb_BestFit_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (rb_BestFit.Checked)
|
||||
{
|
||||
rb_Scale.Checked = !rb_BestFit.Checked;
|
||||
rb_Unscaled.Checked = !rb_BestFit.Checked;
|
||||
}
|
||||
|
||||
UpdateScaleRadioButtons();
|
||||
InvalidatePrintPreview();
|
||||
}
|
||||
|
||||
private void rb_Scale_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (rb_Scale.Checked)
|
||||
{
|
||||
rb_BestFit.Checked = !rb_Scale.Checked;
|
||||
rb_Unscaled.Checked = !rb_Scale.Checked;
|
||||
}
|
||||
|
||||
UpdateScaleRadioButtons();
|
||||
InvalidatePrintPreview();
|
||||
}
|
||||
|
||||
private void rb_Unscaled_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (rb_Unscaled.Checked)
|
||||
{
|
||||
rb_Scale.Checked = !rb_Unscaled.Checked;
|
||||
rb_BestFit.Checked = !rb_Unscaled.Checked;
|
||||
}
|
||||
|
||||
UpdateScaleRadioButtons();
|
||||
InvalidatePrintPreview();
|
||||
}
|
||||
|
||||
private void cb_Printer_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
selPrinterIndex = cb_Printer.SelectedIndex;
|
||||
|
||||
if (selPrinterIndex >= 0 && selPrinterIndex < cb_Printer.Items.Count)
|
||||
{
|
||||
printDoc.PrinterSettings.PrinterName = (string)cb_Printer.Items[selPrinterIndex];
|
||||
this.Text = "Print Preview - " + printDoc.PrinterSettings.PrinterName;
|
||||
}
|
||||
|
||||
FillInPaperSizes();
|
||||
|
||||
InvalidatePrintPreview();
|
||||
}
|
||||
|
||||
private void cb_Orientation_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cb_Orientation.SelectedIndex == 0)
|
||||
{
|
||||
bLandscape = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
bLandscape = true;
|
||||
}
|
||||
|
||||
InvalidatePrintPreview();
|
||||
}
|
||||
|
||||
private void cb_PrintBackground_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
InvalidatePrintPreview();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,35 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("GraphLibrary")]
|
||||
[assembly: AssemblyDescription("Library for easy and simple graph drawing")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("GraphLibrary")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2014 ZIMMERMANN STEPHAN")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("b23e30ac-c4b8-4863-90d0-cf0ad837c050")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.0.1")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.1")]
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Dieser Code wurde von einem Tool generiert.
|
||||
// Laufzeitversion:4.0.30319.18408
|
||||
//
|
||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||
// der Code erneut generiert wird.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ClassLibrary1.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
|
||||
/// </summary>
|
||||
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
|
||||
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
|
||||
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
|
||||
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ClassLibrary1.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
|
||||
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
|
||||
namespace GraphLib
|
||||
{
|
||||
public class Utilities
|
||||
{
|
||||
/// <summary>
|
||||
/// returns the most significant decimal digit
|
||||
/// 250 -> 100
|
||||
/// 350 -> 100
|
||||
/// 12 -> 10
|
||||
/// 5 -> 1
|
||||
/// 0.5 .> 0.1
|
||||
/// .....
|
||||
/// </summary>
|
||||
/// <param name="Value"></param>
|
||||
/// <returns></returns>
|
||||
static public float MostSignificantDigit(float Value)
|
||||
{
|
||||
float n = 1;
|
||||
|
||||
float val_abs = Math.Abs(Value);
|
||||
float sig = 1.0f * Math.Sign(Value);
|
||||
|
||||
if (val_abs > 1)
|
||||
{
|
||||
while (n < val_abs)
|
||||
{
|
||||
n *= 10.0f;
|
||||
}
|
||||
|
||||
return (float)((int)(sig * n / 10));
|
||||
}
|
||||
else // n <= 1
|
||||
{
|
||||
while (n > val_abs)
|
||||
{
|
||||
n /= 10.0f;
|
||||
}
|
||||
|
||||
return sig * n;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace MonitoringDB.Entities
|
||||
{
|
||||
public class Part
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string OraDBType { get; set; }
|
||||
public virtual string Description { get; set; }
|
||||
public virtual CodeType CodeType { get; set; }
|
||||
public virtual CodeForm CodeForm { get; set; }
|
||||
public virtual CodeLocation CodeLocation { get; set; }
|
||||
public virtual LifetimeManagement LifetimeManagement { get; set; }
|
||||
public virtual int StepNumber { get; set; }
|
||||
|
||||
public virtual Process Process { get; set; }
|
||||
public virtual Workstep Workstep { get; set; }
|
||||
|
||||
|
||||
protected Part()
|
||||
{
|
||||
Name = string.Empty;
|
||||
Description = string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor used when the part is added to a process
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="codeType"></param>
|
||||
/// <param name="codeForm"></param>
|
||||
/// <param name="process"></param>
|
||||
public Part(string name, Process process, CodeType codeType, CodeForm codeForm, CodeLocation codeLocation)
|
||||
{
|
||||
Name = name;
|
||||
OraDBType = string.Empty;
|
||||
Description = string.Empty;
|
||||
CodeType = codeType;
|
||||
CodeForm = codeForm;
|
||||
CodeLocation = codeLocation;
|
||||
StepNumber = 0;
|
||||
|
||||
Process = process;
|
||||
Workstep = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a copy of a part (1) belongig to another process, (2) not assigned to any workstep yet.
|
||||
/// </summary>
|
||||
/// <param name="process">Process owning the cloned part</param>
|
||||
/// <returns>Cloned part</returns>
|
||||
public virtual Part Clone(Process owningProcess)
|
||||
{
|
||||
Part rslt = new Part(Name, owningProcess, CodeType, CodeForm, CodeLocation);
|
||||
rslt.OraDBType = OraDBType;
|
||||
rslt.Description = Description;
|
||||
rslt.LifetimeManagement = LifetimeManagement;
|
||||
return rslt;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0} step={1} ({2})", Name, StepNumber, Description);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace MonitoringDB.Entities
|
||||
{
|
||||
public class Process
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string Description { get; set; }
|
||||
public virtual ReleaseStatus ReleaseStatus { get; set; }
|
||||
public virtual DateTime TimeStamp { get; set; }
|
||||
public virtual string UserName { get; set; }
|
||||
|
||||
public virtual IList<Part> Parts { get; set; }
|
||||
public virtual IList<Workstep> Worksteps { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Default (private) constructor inicializing lists
|
||||
/// </summary>
|
||||
protected Process()
|
||||
{
|
||||
Parts = new List<Part>();
|
||||
Worksteps = new List<Workstep>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor used when this process is created
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
public Process(string name)
|
||||
: this()
|
||||
{
|
||||
Name = name;
|
||||
Description = string.Empty;
|
||||
ReleaseStatus = ReleaseStatus.In_preparation;
|
||||
TimeStamp = DateTime.Now;
|
||||
UserName = "admin";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a copy of a process with a new name
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
public virtual Process Clone(string name)
|
||||
{
|
||||
Process rslt = new Process(name);
|
||||
rslt.Description = Description;
|
||||
|
||||
foreach (var part in Parts) rslt.Parts.Add(part.Clone(rslt));
|
||||
foreach (var workstep in Worksteps) rslt.Worksteps.Add(workstep.Clone(rslt));
|
||||
|
||||
return rslt;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0} '{1}' ({2}) {3} {4}",
|
||||
ItemNr,
|
||||
Name,
|
||||
TimeStamp.Date.ToShortDateString(),
|
||||
(Description == null) ? string.Empty : Description,
|
||||
ReleaseStatus);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace MonitoringDB.Entities
|
||||
{
|
||||
public class Record
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual string Code { get; set; }
|
||||
public virtual DateTime TimeStamp { get; set; }
|
||||
|
||||
public virtual Part Part { get; set; }
|
||||
public virtual ReferenceRecord ReferenceRecord { get; set; }
|
||||
|
||||
|
||||
protected Record()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor used when a part barcode is scanned
|
||||
/// </summary>
|
||||
/// <param name="partId">Part</param>
|
||||
/// <param name="referenceRecordId">Reference record</param>
|
||||
/// <param name="code">Scanned barcode</param>
|
||||
public Record(Part part, ReferenceRecord referenceRecord, string code)
|
||||
{
|
||||
Part = part;
|
||||
ReferenceRecord = referenceRecord;
|
||||
Code = code;
|
||||
TimeStamp = DateTime.Now;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a copy of a process with a new name
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
public virtual Record Clone(Process newProcess, ReferenceRecord newRR)
|
||||
{
|
||||
Part newPart = null;
|
||||
foreach (var pt in newProcess.Parts)
|
||||
{
|
||||
if (Part.Name == pt.Name)
|
||||
{
|
||||
newPart = pt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Record rslt = new Record(newPart, newRR, Code);
|
||||
rslt.TimeStamp = TimeStamp;
|
||||
|
||||
return rslt;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("code={0} part={1} description='{2}'", Code, Part.Name, Part.Description);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace MonitoringDB.Entities
|
||||
{
|
||||
public class ReferenceRecord
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual string Code { get; set; }
|
||||
public virtual DateTime TimeStamp { get; set; }
|
||||
public virtual string UserName { get; set; }
|
||||
public virtual string Workplace { get; set; }
|
||||
public virtual int Result { get; set; } /// 0 = No error (OK), >0 = Error code
|
||||
|
||||
public virtual Process Process { get; set; }
|
||||
public virtual Workstep Workstep { get; set; }
|
||||
public virtual IList<Record> Records { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Default (private) constructor inicializing lists
|
||||
/// </summary>
|
||||
protected ReferenceRecord()
|
||||
{
|
||||
Records = new List<Record>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor used when reference barcode is scanned
|
||||
/// </summary>
|
||||
/// <param name="process">Process</param>
|
||||
/// <param name="workstep">Workstep</param>
|
||||
/// <param name="code">Scanned barcode</param>
|
||||
public ReferenceRecord(Process process, Workstep workstep, string code,
|
||||
string userName, string workplace, int result)
|
||||
{
|
||||
Process = process;
|
||||
Workstep = workstep;
|
||||
Code = code;
|
||||
TimeStamp = DateTime.Now;
|
||||
UserName = userName;
|
||||
Workplace = workplace;
|
||||
Result = result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a copy of a process with a new name
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <returns></returns>
|
||||
public virtual ReferenceRecord Clone(Process newProcess)
|
||||
{
|
||||
Workstep newWorkstep = null;
|
||||
foreach (var ws in newProcess.Worksteps)
|
||||
{
|
||||
if (Workstep.Name == ws.Name)
|
||||
{
|
||||
newWorkstep = ws;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ReferenceRecord rslt = new ReferenceRecord(newProcess, newWorkstep,
|
||||
Code, UserName, Workplace, Result);
|
||||
rslt.TimeStamp = TimeStamp;
|
||||
|
||||
rslt.Records = new List<Record>();
|
||||
foreach (var record in Records)
|
||||
{
|
||||
rslt.Records.Add(record.Clone(newProcess, rslt));
|
||||
}
|
||||
|
||||
return rslt;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("code={0} part={1} description='{2}' step='{3}' workplace='{4}' user={5} time={6:dd.MM.yyyy HH:mm:ss}",
|
||||
(Code != null) ? Code : "<none>",
|
||||
Workstep.ReferencePart.Name,
|
||||
Workstep.ReferencePart.Description,
|
||||
Workstep.Name,
|
||||
Workplace,
|
||||
UserName,
|
||||
TimeStamp);
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user