\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1417B.pdf 221
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1466.pdf
222
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1306.pdf
223
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\535.pdf
224
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
225
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\817B.pdf
226
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1146.pdf
227
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
228
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
229
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
230
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe
231
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
232
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.dll
233
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
234
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
235
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
236
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.pdb
237
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
238
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ResolveAssemblyReference.cache
239
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
240
+C:\Users\tum\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
241
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
242
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Sample.sdf
243
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\011A.pdf
244
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
245
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034.pdf
246
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
247
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
248
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1466.pdf
249
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1306.pdf
250
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\535.pdf
251
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
252
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\817B.pdf
253
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1146.pdf
254
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
255
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
256
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
257
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe
258
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
259
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.dll
260
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
261
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
262
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
263
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.pdb
264
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
265
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ResolveAssemblyReference.cache
266
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
267
+C:\Users\Public\Documents\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
268
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
269
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Sample.sdf
270
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\011A.pdf
271
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
272
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034.pdf
273
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
274
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
275
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1466.pdf
276
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1306.pdf
277
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\535.pdf
278
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
279
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\817B.pdf
280
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1146.pdf
281
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
282
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
283
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
284
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe
285
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
286
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.dll
287
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
288
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
289
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
290
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
291
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csprojResolveAssemblyReference.cache
292
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
293
+C:\Users\tum\Desktop\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
294
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
295
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Sample.sdf
296
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\011A.pdf
297
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
298
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034.pdf
299
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
300
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
301
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1466.pdf
302
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1306.pdf
303
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\535.pdf
304
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
305
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\817B.pdf
306
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\agreements\1146.pdf
307
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
308
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
309
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
310
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.exe
311
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
312
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfLocalization.dll
313
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
314
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
315
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
316
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
317
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csprojResolveAssemblyReference.cache
318
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
319
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\OBAppSrc\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
320
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
321
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\Sample.sdf
322
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\011A.pdf
323
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
324
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\1034.pdf
325
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
326
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
327
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\1466.pdf
328
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\1306.pdf
329
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\535.pdf
330
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
331
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\817B.pdf
332
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\agreements\1146.pdf
333
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
334
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
335
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
336
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\WpfApplication19.exe
337
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
338
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\WpfLocalization.dll
339
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
340
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
341
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
342
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csprojResolveAssemblyReference.cache
343
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
344
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\MITUTOYO\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
345
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
346
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\Sample.sdf
347
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\011A.pdf
348
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
349
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1034.pdf
350
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
351
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
352
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1466.pdf
353
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1306.pdf
354
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\535.pdf
355
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
356
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\817B.pdf
357
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1146.pdf
358
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
359
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
360
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
361
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfApplication19.exe
362
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
363
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfLocalization.dll
364
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
365
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\Newtonsoft.Json.pdb
366
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\Newtonsoft.Json.xml
367
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csprojResolveAssemblyReference.cache
368
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
369
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
370
+C:\Users\tum\Desktop\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
371
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
372
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\Sample.sdf
373
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\011A.pdf
374
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
375
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1034.pdf
376
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
377
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
378
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1466.pdf
379
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1306.pdf
380
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\535.pdf
381
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
382
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\817B.pdf
383
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1146.pdf
384
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
385
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
386
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
387
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfApplication19.exe
388
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
389
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfLocalization.dll
390
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
391
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfApplication19.exe.config
392
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
393
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.CoreCompileInputs.cache
394
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.CopyComplete
395
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
396
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
397
+D:\backup from hd\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csprojAssemblyReference.cache
398
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\OperatingDatabase.sdf
399
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\Sample.sdf
400
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\011A.pdf
401
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1031A.pdf
402
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1034.pdf
403
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1034A.pdf
404
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1417B.pdf
405
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1466.pdf
406
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1306.pdf
407
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\535.pdf
408
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1176A.pdf
409
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\817B.pdf
410
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\agreements\1146.pdf
411
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\sounds\Tornado_Siren.mp3
412
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
413
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\ConsoleApplication1.pdb
414
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfApplication19.exe
415
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\Newtonsoft.Json.dll
416
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfLocalization.dll
417
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfApplication19.pdb
418
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\WpfApplication19.exe.config
419
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Debug\th-TH\WpfApplication19.resources.dll
420
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csprojAssemblyReference.cache
421
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.CoreCompileInputs.cache
422
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.CopyComplete
423
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.exe
424
+D:\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.pdb
425
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csprojAssemblyReference.cache
426
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Debug\ConsoleApplication1.csproj.CoreCompileInputs.cache

BIN
ConsoleApplication1/obj/x86/Debug/ConsoleApplication1.csprojAssemblyReference.cache


BIN
ConsoleApplication1/obj/x86/Debug/ConsoleApplication1.csprojResolveAssemblyReference.cache


BIN
ConsoleApplication1/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache


BIN
ConsoleApplication1/obj/x86/Debug/ResolveAssemblyReference.cache


+ 36 - 0
ConsoleApplication1/obj/x86/Release/ConsoleApplication1.csproj.FileListAbsolute.txt

@@ -0,0 +1,36 @@
1
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\ConsoleApplication1.exe
2
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\ConsoleApplication1.pdb
3
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\WpfApplication19.exe
4
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\WpfLocalization.dll
5
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\WpfApplication19.pdb
6
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\WpfLocalization.pdb
7
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\bin\Release\th-TH\WpfApplication19.resources.dll
8
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Release\ResolveAssemblyReference.cache
9
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Release\ConsoleApplication1.exe
10
+C:\Users\tum\Documents\Visual Studio 2010\Projects\WpfApplication19\ConsoleApplication1\obj\x86\Release\ConsoleApplication1.pdb
11
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\OperatingDatabase.sdf
12
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\Sample.sdf
13
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\011A.pdf
14
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\1031A.pdf
15
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\1034.pdf
16
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\1034A.pdf
17
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\1417B.pdf
18
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\1466.pdf
19
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\1306.pdf
20
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\535.pdf
21
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\1176A.pdf
22
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\817B.pdf
23
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\agreements\1146.pdf
24
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\sounds\Tornado_Siren.mp3
25
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\ConsoleApplication1.exe
26
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\ConsoleApplication1.pdb
27
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\WpfApplication19.exe
28
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\WpfLocalization.dll
29
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\WpfApplication19.pdb
30
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\WpfApplication19.exe.config
31
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\WpfLocalization.pdb
32
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\bin\Release\th-TH\WpfApplication19.resources.dll
33
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Release\ConsoleApplication1.csproj.CopyComplete
34
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Release\ConsoleApplication1.exe
35
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Release\ConsoleApplication1.pdb
36
+E:\lenovo\lenovo\fix-master\lab\OBAppSrc\RH2\ConsoleApplication1\obj\x86\Release\ConsoleApplication1.csprojAssemblyReference.cache

BIN
ConsoleApplication1/obj/x86/Release/ConsoleApplication1.csprojAssemblyReference.cache


BIN
ConsoleApplication1/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache


BIN
ConsoleApplication1/obj/x86/Release/ResolveAssemblyReference.cache


+ 0 - 0
ConsoleApplication1/obj/x86/Release/build.force


+ 657 - 0
Installer/Installer.vdproj

@@ -0,0 +1,657 @@
1
+"DeployProject"
2
+{
3
+"VSVersion" = "3:800"
4
+"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
5
+"IsWebType" = "8:FALSE"
6
+"ProjectName" = "8:Installer"
7
+"LanguageId" = "3:1033"
8
+"CodePage" = "3:1252"
9
+"UILanguageId" = "3:1033"
10
+"SccProjectName" = "8:"
11
+"SccLocalPath" = "8:"
12
+"SccAuxPath" = "8:"
13
+"SccProvider" = "8:"
14
+    "Hierarchy"
15
+    {
16
+    }
17
+    "Configurations"
18
+    {
19
+        "Debug"
20
+        {
21
+        "DisplayName" = "8:Debug"
22
+        "IsDebugOnly" = "11:TRUE"
23
+        "IsReleaseOnly" = "11:FALSE"
24
+        "OutputFilename" = "8:Debug\\Installer.msi"
25
+        "PackageFilesAs" = "3:2"
26
+        "PackageFileSize" = "3:-2147483648"
27
+        "CabType" = "3:1"
28
+        "Compression" = "3:2"
29
+        "SignOutput" = "11:FALSE"
30
+        "CertificateFile" = "8:"
31
+        "PrivateKeyFile" = "8:"
32
+        "TimeStampServer" = "8:"
33
+        "InstallerBootstrapper" = "3:2"
34
+        }
35
+        "Release"
36
+        {
37
+        "DisplayName" = "8:Release"
38
+        "IsDebugOnly" = "11:FALSE"
39
+        "IsReleaseOnly" = "11:TRUE"
40
+        "OutputFilename" = "8:Release\\Installer.msi"
41
+        "PackageFilesAs" = "3:2"
42
+        "PackageFileSize" = "3:-2147483648"
43
+        "CabType" = "3:1"
44
+        "Compression" = "3:2"
45
+        "SignOutput" = "11:FALSE"
46
+        "CertificateFile" = "8:"
47
+        "PrivateKeyFile" = "8:"
48
+        "TimeStampServer" = "8:"
49
+        "InstallerBootstrapper" = "3:2"
50
+        }
51
+    }
52
+    "Deployable"
53
+    {
54
+        "CustomAction"
55
+        {
56
+        }
57
+        "DefaultFeature"
58
+        {
59
+        "Name" = "8:DefaultFeature"
60
+        "Title" = "8:"
61
+        "Description" = "8:"
62
+        }
63
+        "ExternalPersistence"
64
+        {
65
+            "LaunchCondition"
66
+            {
67
+                "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_ADC5996ED9114B30A04870F2C0A33E11"
68
+                {
69
+                "Name" = "8:.NET Framework"
70
+                "Message" = "8:[VSDNETMSG]"
71
+                "FrameworkVersion" = "8:.NETFramework,Version=v4.0,Profile=Client"
72
+                "AllowLaterVersions" = "11:FALSE"
73
+                "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=131000"
74
+                }
75
+            }
76
+        }
77
+        "File"
78
+        {
79
+        }
80
+        "FileType"
81
+        {
82
+        }
83
+        "Folder"
84
+        {
85
+            "{1525181F-901A-416C-8A58-119130FE478E}:_518C3E908B604769819DC4C3063C76AA"
86
+            {
87
+            "Name" = "8:#1916"
88
+            "AlwaysCreate" = "11:FALSE"
89
+            "Condition" = "8:"
90
+            "Transitive" = "11:FALSE"
91
+            "Property" = "8:DesktopFolder"
92
+                "Folders"
93
+                {
94
+                }
95
+            }
96
+            "{3C67513D-01DD-4637-8A68-80971EB9504F}:_A309BED3485C4559AD97A44689513CE1"
97
+            {
98
+            "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]"
99
+            "Name" = "8:#1925"
100
+            "AlwaysCreate" = "11:FALSE"
101
+            "Condition" = "8:"
102
+            "Transitive" = "11:FALSE"
103
+            "Property" = "8:TARGETDIR"
104
+                "Folders"
105
+                {
106
+                }
107
+            }
108
+            "{1525181F-901A-416C-8A58-119130FE478E}:_D19228114934400BAC000FD15C52AC59"
109
+            {
110
+            "Name" = "8:#1919"
111
+            "AlwaysCreate" = "11:FALSE"
112
+            "Condition" = "8:"
113
+            "Transitive" = "11:FALSE"
114
+            "Property" = "8:ProgramMenuFolder"
115
+                "Folders"
116
+                {
117
+                }
118
+            }
119
+        }
120
+        "LaunchCondition"
121
+        {
122
+        }
123
+        "Locator"
124
+        {
125
+        }
126
+        "MsiBootstrapper"
127
+        {
128
+        "LangId" = "3:1033"
129
+        "RequiresElevation" = "11:FALSE"
130
+        }
131
+        "Product"
132
+        {
133
+        "Name" = "8:Microsoft Visual Studio"
134
+        "ProductName" = "8:Installer"
135
+        "ProductCode" = "8:{A2FE76BF-75BD-4CAA-9B7B-F55402CA4E28}"
136
+        "PackageCode" = "8:{1D44CD3B-EE67-436D-B20F-B31D35634171}"
137
+        "UpgradeCode" = "8:{A593D260-C52D-4974-8735-94A50F134765}"
138
+        "AspNetVersion" = "8:4.0.30319.0"
139
+        "RestartWWWService" = "11:FALSE"
140
+        "RemovePreviousVersions" = "11:FALSE"
141
+        "DetectNewerInstalledVersion" = "11:TRUE"
142
+        "InstallAllUsers" = "11:FALSE"
143
+        "ProductVersion" = "8:1.0.0"
144
+        "Manufacturer" = "8:Microsoft"
145
+        "ARPHELPTELEPHONE" = "8:"
146
+        "ARPHELPLINK" = "8:"
147
+        "Title" = "8:Installer"
148
+        "Subject" = "8:"
149
+        "ARPCONTACT" = "8:Microsoft"
150
+        "Keywords" = "8:"
151
+        "ARPCOMMENTS" = "8:"
152
+        "ARPURLINFOABOUT" = "8:"
153
+        "ARPPRODUCTICON" = "8:"
154
+        "ARPIconIndex" = "3:0"
155
+        "SearchPath" = "8:"
156
+        "UseSystemSearchPath" = "11:TRUE"
157
+        "TargetPlatform" = "3:0"
158
+        "PreBuildEvent" = "8:"
159
+        "PostBuildEvent" = "8:"
160
+        "RunPostBuildEvent" = "3:0"
161
+        }
162
+        "Registry"
163
+        {
164
+            "HKLM"
165
+            {
166
+                "Keys"
167
+                {
168
+                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_9CA54B101AD241B7B3B80F76C3C2CA69"
169
+                    {
170
+                    "Name" = "8:Software"
171
+                    "Condition" = "8:"
172
+                    "AlwaysCreate" = "11:FALSE"
173
+                    "DeleteAtUninstall" = "11:FALSE"
174
+                    "Transitive" = "11:FALSE"
175
+                        "Keys"
176
+                        {
177
+                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_327377DBDC164368A0AC841EB043ADC8"
178
+                            {
179
+                            "Name" = "8:[Manufacturer]"
180
+                            "Condition" = "8:"
181
+                            "AlwaysCreate" = "11:FALSE"
182
+                            "DeleteAtUninstall" = "11:FALSE"
183
+                            "Transitive" = "11:FALSE"
184
+                                "Keys"
185
+                                {
186
+                                }
187
+                                "Values"
188
+                                {
189
+                                }
190
+                            }
191
+                        }
192
+                        "Values"
193
+                        {
194
+                        }
195
+                    }
196
+                }
197
+            }
198
+            "HKCU"
199
+            {
200
+                "Keys"
201
+                {
202
+                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_EE189DF3053D4BFD8098F01818ED8DEA"
203
+                    {
204
+                    "Name" = "8:Software"
205
+                    "Condition" = "8:"
206
+                    "AlwaysCreate" = "11:FALSE"
207
+                    "DeleteAtUninstall" = "11:FALSE"
208
+                    "Transitive" = "11:FALSE"
209
+                        "Keys"
210
+                        {
211
+                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D226EB39301B4AA0ACD6EF88C867F62B"
212
+                            {
213
+                            "Name" = "8:[Manufacturer]"
214
+                            "Condition" = "8:"
215
+                            "AlwaysCreate" = "11:FALSE"
216
+                            "DeleteAtUninstall" = "11:FALSE"
217
+                            "Transitive" = "11:FALSE"
218
+                                "Keys"
219
+                                {
220
+                                }
221
+                                "Values"
222
+                                {
223
+                                }
224
+                            }
225
+                        }
226
+                        "Values"
227
+                        {
228
+                        }
229
+                    }
230
+                }
231
+            }
232
+            "HKCR"
233
+            {
234
+                "Keys"
235
+                {
236
+                }
237
+            }
238
+            "HKU"
239
+            {
240
+                "Keys"
241
+                {
242
+                }
243
+            }
244
+            "HKPU"
245
+            {
246
+                "Keys"
247
+                {
248
+                }
249
+            }
250
+        }
251
+        "Sequences"
252
+        {
253
+        }
254
+        "Shortcut"
255
+        {
256
+        }
257
+        "UserInterface"
258
+        {
259
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_1B43C07C57D64B268117544C14201C01"
260
+            {
261
+            "Name" = "8:#1900"
262
+            "Sequence" = "3:2"
263
+            "Attributes" = "3:1"
264
+                "Dialogs"
265
+                {
266
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_DB68643BA49D478DAE15B0FC5BFA7828"
267
+                    {
268
+                    "Sequence" = "3:300"
269
+                    "DisplayName" = "8:Confirm Installation"
270
+                    "UseDynamicProperties" = "11:TRUE"
271
+                    "IsDependency" = "11:FALSE"
272
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"
273
+                        "Properties"
274
+                        {
275
+                            "BannerBitmap"
276
+                            {
277
+                            "Name" = "8:BannerBitmap"
278
+                            "DisplayName" = "8:#1001"
279
+                            "Description" = "8:#1101"
280
+                            "Type" = "3:8"
281
+                            "ContextData" = "8:Bitmap"
282
+                            "Attributes" = "3:4"
283
+                            "Setting" = "3:1"
284
+                            "UsePlugInResources" = "11:TRUE"
285
+                            }
286
+                        }
287
+                    }
288
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E1CAB0376DB34653B97A0E49E0D9DA4E"
289
+                    {
290
+                    "Sequence" = "3:100"
291
+                    "DisplayName" = "8:Welcome"
292
+                    "UseDynamicProperties" = "11:TRUE"
293
+                    "IsDependency" = "11:FALSE"
294
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"
295
+                        "Properties"
296
+                        {
297
+                            "BannerBitmap"
298
+                            {
299
+                            "Name" = "8:BannerBitmap"
300
+                            "DisplayName" = "8:#1001"
301
+                            "Description" = "8:#1101"
302
+                            "Type" = "3:8"
303
+                            "ContextData" = "8:Bitmap"
304
+                            "Attributes" = "3:4"
305
+                            "Setting" = "3:1"
306
+                            "UsePlugInResources" = "11:TRUE"
307
+                            }
308
+                            "CopyrightWarning"
309
+                            {
310
+                            "Name" = "8:CopyrightWarning"
311
+                            "DisplayName" = "8:#1002"
312
+                            "Description" = "8:#1102"
313
+                            "Type" = "3:3"
314
+                            "ContextData" = "8:"
315
+                            "Attributes" = "3:0"
316
+                            "Setting" = "3:1"
317
+                            "Value" = "8:#1202"
318
+                            "DefaultValue" = "8:#1202"
319
+                            "UsePlugInResources" = "11:TRUE"
320
+                            }
321
+                            "Welcome"
322
+                            {
323
+                            "Name" = "8:Welcome"
324
+                            "DisplayName" = "8:#1003"
325
+                            "Description" = "8:#1103"
326
+                            "Type" = "3:3"
327
+                            "ContextData" = "8:"
328
+                            "Attributes" = "3:0"
329
+                            "Setting" = "3:1"
330
+                            "Value" = "8:#1203"
331
+                            "DefaultValue" = "8:#1203"
332
+                            "UsePlugInResources" = "11:TRUE"
333
+                            }
334
+                        }
335
+                    }
336
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_EE027430484D42CC8A495D1099623A72"
337
+                    {
338
+                    "Sequence" = "3:200"
339
+                    "DisplayName" = "8:Installation Folder"
340
+                    "UseDynamicProperties" = "11:TRUE"
341
+                    "IsDependency" = "11:FALSE"
342
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"
343
+                        "Properties"
344
+                        {
345
+                            "BannerBitmap"
346
+                            {
347
+                            "Name" = "8:BannerBitmap"
348
+                            "DisplayName" = "8:#1001"
349
+                            "Description" = "8:#1101"
350
+                            "Type" = "3:8"
351
+                            "ContextData" = "8:Bitmap"
352
+                            "Attributes" = "3:4"
353
+                            "Setting" = "3:1"
354
+                            "UsePlugInResources" = "11:TRUE"
355
+                            }
356
+                        }
357
+                    }
358
+                }
359
+            }
360
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_5097B2F5FEF547B3BF8C58FCE551A347"
361
+            {
362
+            "Name" = "8:#1902"
363
+            "Sequence" = "3:2"
364
+            "Attributes" = "3:3"
365
+                "Dialogs"
366
+                {
367
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_23F1C0F3828B4FA99590221693EA4280"
368
+                    {
369
+                    "Sequence" = "3:100"
370
+                    "DisplayName" = "8:Finished"
371
+                    "UseDynamicProperties" = "11:TRUE"
372
+                    "IsDependency" = "11:FALSE"
373
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"
374
+                        "Properties"
375
+                        {
376
+                            "BannerBitmap"
377
+                            {
378
+                            "Name" = "8:BannerBitmap"
379
+                            "DisplayName" = "8:#1001"
380
+                            "Description" = "8:#1101"
381
+                            "Type" = "3:8"
382
+                            "ContextData" = "8:Bitmap"
383
+                            "Attributes" = "3:4"
384
+                            "Setting" = "3:1"
385
+                            "UsePlugInResources" = "11:TRUE"
386
+                            }
387
+                        }
388
+                    }
389
+                }
390
+            }
391
+            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_6A24DC08B0E1456FADD35D2122EABF14"
392
+            {
393
+            "UseDynamicProperties" = "11:FALSE"
394
+            "IsDependency" = "11:FALSE"
395
+            "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
396
+            }
397
+            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_78869D62B3E34470AE0DB69F4624D919"
398
+            {
399
+            "UseDynamicProperties" = "11:FALSE"
400
+            "IsDependency" = "11:FALSE"
401
+            "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
402
+            }
403
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_78FFDF7EDE4F41B4941630AADA8F4D2A"
404
+            {
405
+            "Name" = "8:#1900"
406
+            "Sequence" = "3:1"
407
+            "Attributes" = "3:1"
408
+                "Dialogs"
409
+                {
410
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_88BD6388040245DB9B0AB808EDC484CD"
411
+                    {
412
+                    "Sequence" = "3:300"
413
+                    "DisplayName" = "8:Confirm Installation"
414
+                    "UseDynamicProperties" = "11:TRUE"
415
+                    "IsDependency" = "11:FALSE"
416
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"
417
+                        "Properties"
418
+                        {
419
+                            "BannerBitmap"
420
+                            {
421
+                            "Name" = "8:BannerBitmap"
422
+                            "DisplayName" = "8:#1001"
423
+                            "Description" = "8:#1101"
424
+                            "Type" = "3:8"
425
+                            "ContextData" = "8:Bitmap"
426
+                            "Attributes" = "3:4"
427
+                            "Setting" = "3:1"
428
+                            "UsePlugInResources" = "11:TRUE"
429
+                            }
430
+                        }
431
+                    }
432
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_991DFFDEA6164E47BBB8A955DC35674E"
433
+                    {
434
+                    "Sequence" = "3:100"
435
+                    "DisplayName" = "8:Welcome"
436
+                    "UseDynamicProperties" = "11:TRUE"
437
+                    "IsDependency" = "11:FALSE"
438
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"
439
+                        "Properties"
440
+                        {
441
+                            "BannerBitmap"
442
+                            {
443
+                            "Name" = "8:BannerBitmap"
444
+                            "DisplayName" = "8:#1001"
445
+                            "Description" = "8:#1101"
446
+                            "Type" = "3:8"
447
+                            "ContextData" = "8:Bitmap"
448
+                            "Attributes" = "3:4"
449
+                            "Setting" = "3:1"
450
+                            "UsePlugInResources" = "11:TRUE"
451
+                            }
452
+                            "CopyrightWarning"
453
+                            {
454
+                            "Name" = "8:CopyrightWarning"
455
+                            "DisplayName" = "8:#1002"
456
+                            "Description" = "8:#1102"
457
+                            "Type" = "3:3"
458
+                            "ContextData" = "8:"
459
+                            "Attributes" = "3:0"
460
+                            "Setting" = "3:1"
461
+                            "Value" = "8:#1202"
462
+                            "DefaultValue" = "8:#1202"
463
+                            "UsePlugInResources" = "11:TRUE"
464
+                            }
465
+                            "Welcome"
466
+                            {
467
+                            "Name" = "8:Welcome"
468
+                            "DisplayName" = "8:#1003"
469
+                            "Description" = "8:#1103"
470
+                            "Type" = "3:3"
471
+                            "ContextData" = "8:"
472
+                            "Attributes" = "3:0"
473
+                            "Setting" = "3:1"
474
+                            "Value" = "8:#1203"
475
+                            "DefaultValue" = "8:#1203"
476
+                            "UsePlugInResources" = "11:TRUE"
477
+                            }
478
+                        }
479
+                    }
480
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D6B6A068C55141CFA80755CB6C2B9E02"
481
+                    {
482
+                    "Sequence" = "3:200"
483
+                    "DisplayName" = "8:Installation Folder"
484
+                    "UseDynamicProperties" = "11:TRUE"
485
+                    "IsDependency" = "11:FALSE"
486
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"
487
+                        "Properties"
488
+                        {
489
+                            "BannerBitmap"
490
+                            {
491
+                            "Name" = "8:BannerBitmap"
492
+                            "DisplayName" = "8:#1001"
493
+                            "Description" = "8:#1101"
494
+                            "Type" = "3:8"
495
+                            "ContextData" = "8:Bitmap"
496
+                            "Attributes" = "3:4"
497
+                            "Setting" = "3:1"
498
+                            "UsePlugInResources" = "11:TRUE"
499
+                            }
500
+                            "InstallAllUsersVisible"
501
+                            {
502
+                            "Name" = "8:InstallAllUsersVisible"
503
+                            "DisplayName" = "8:#1059"
504
+                            "Description" = "8:#1159"
505
+                            "Type" = "3:5"
506
+                            "ContextData" = "8:1;True=1;False=0"
507
+                            "Attributes" = "3:0"
508
+                            "Setting" = "3:0"
509
+                            "Value" = "3:1"
510
+                            "DefaultValue" = "3:1"
511
+                            "UsePlugInResources" = "11:TRUE"
512
+                            }
513
+                        }
514
+                    }
515
+                }
516
+            }
517
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_C3B447D264C045F18D733156219AC184"
518
+            {
519
+            "Name" = "8:#1901"
520
+            "Sequence" = "3:2"
521
+            "Attributes" = "3:2"
522
+                "Dialogs"
523
+                {
524
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_061770F644254753B46044F272DA1095"
525
+                    {
526
+                    "Sequence" = "3:100"
527
+                    "DisplayName" = "8:Progress"
528
+                    "UseDynamicProperties" = "11:TRUE"
529
+                    "IsDependency" = "11:FALSE"
530
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"
531
+                        "Properties"
532
+                        {
533
+                            "BannerBitmap"
534
+                            {
535
+                            "Name" = "8:BannerBitmap"
536
+                            "DisplayName" = "8:#1001"
537
+                            "Description" = "8:#1101"
538
+                            "Type" = "3:8"
539
+                            "ContextData" = "8:Bitmap"
540
+                            "Attributes" = "3:4"
541
+                            "Setting" = "3:1"
542
+                            "UsePlugInResources" = "11:TRUE"
543
+                            }
544
+                            "ShowProgress"
545
+                            {
546
+                            "Name" = "8:ShowProgress"
547
+                            "DisplayName" = "8:#1009"
548
+                            "Description" = "8:#1109"
549
+                            "Type" = "3:5"
550
+                            "ContextData" = "8:1;True=1;False=0"
551
+                            "Attributes" = "3:0"
552
+                            "Setting" = "3:0"
553
+                            "Value" = "3:1"
554
+                            "DefaultValue" = "3:1"
555
+                            "UsePlugInResources" = "11:TRUE"
556
+                            }
557
+                        }
558
+                    }
559
+                }
560
+            }
561
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_DB5F4FE5F80748EABA37CF226A32110E"
562
+            {
563
+            "Name" = "8:#1901"
564
+            "Sequence" = "3:1"
565
+            "Attributes" = "3:2"
566
+                "Dialogs"
567
+                {
568
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_94A4513DDC19480B9F5A45C093BB8B9E"
569
+                    {
570
+                    "Sequence" = "3:100"
571
+                    "DisplayName" = "8:Progress"
572
+                    "UseDynamicProperties" = "11:TRUE"
573
+                    "IsDependency" = "11:FALSE"
574
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"
575
+                        "Properties"
576
+                        {
577
+                            "BannerBitmap"
578
+                            {
579
+                            "Name" = "8:BannerBitmap"
580
+                            "DisplayName" = "8:#1001"
581
+                            "Description" = "8:#1101"
582
+                            "Type" = "3:8"
583
+                            "ContextData" = "8:Bitmap"
584
+                            "Attributes" = "3:4"
585
+                            "Setting" = "3:1"
586
+                            "UsePlugInResources" = "11:TRUE"
587
+                            }
588
+                            "ShowProgress"
589
+                            {
590
+                            "Name" = "8:ShowProgress"
591
+                            "DisplayName" = "8:#1009"
592
+                            "Description" = "8:#1109"
593
+                            "Type" = "3:5"
594
+                            "ContextData" = "8:1;True=1;False=0"
595
+                            "Attributes" = "3:0"
596
+                            "Setting" = "3:0"
597
+                            "Value" = "3:1"
598
+                            "DefaultValue" = "3:1"
599
+                            "UsePlugInResources" = "11:TRUE"
600
+                            }
601
+                        }
602
+                    }
603
+                }
604
+            }
605
+            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_F2B34CB6F43342A2AD80019DAEC17850"
606
+            {
607
+            "Name" = "8:#1902"
608
+            "Sequence" = "3:1"
609
+            "Attributes" = "3:3"
610
+                "Dialogs"
611
+                {
612
+                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_7D07497734394C5CBA19A7860A7DA397"
613
+                    {
614
+                    "Sequence" = "3:100"
615
+                    "DisplayName" = "8:Finished"
616
+                    "UseDynamicProperties" = "11:TRUE"
617
+                    "IsDependency" = "11:FALSE"
618
+                    "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"
619
+                        "Properties"
620
+                        {
621
+                            "BannerBitmap"
622
+                            {
623
+                            "Name" = "8:BannerBitmap"
624
+                            "DisplayName" = "8:#1001"
625
+                            "Description" = "8:#1101"
626
+                            "Type" = "3:8"
627
+                            "ContextData" = "8:Bitmap"
628
+                            "Attributes" = "3:4"
629
+                            "Setting" = "3:1"
630
+                            "UsePlugInResources" = "11:TRUE"
631
+                            }
632
+                            "UpdateText"
633
+                            {
634
+                            "Name" = "8:UpdateText"
635
+                            "DisplayName" = "8:#1058"
636
+                            "Description" = "8:#1158"
637
+                            "Type" = "3:15"
638
+                            "ContextData" = "8:"
639
+                            "Attributes" = "3:0"
640
+                            "Setting" = "3:1"
641
+                            "Value" = "8:#1258"
642
+                            "DefaultValue" = "8:#1258"
643
+                            "UsePlugInResources" = "11:TRUE"
644
+                            }
645
+                        }
646
+                    }
647
+                }
648
+            }
649
+        }
650
+        "MergeModule"
651
+        {
652
+        }
653
+        "ProjectOutput"
654
+        {
655
+        }
656
+    }
657
+}

BIN
OBSystem/Debug/OBSystem.msi


BIN
OBSystem/Debug/setup.exe


File diff suppressed because it is too large
+ 1073 - 0
OBSystem/OBSystem.vdproj


BIN
OBSystemInstaller/Debug/OBSystemInstaller.msi


BIN
OBSystemInstaller/Debug/setup.exe


File diff suppressed because it is too large
+ 1008 - 0
OBSystemInstaller/OBSystemInstaller.vdproj


BIN
UpgradeLog.htm


File diff suppressed because it is too large
+ 274 - 0
UpgradeLog2.htm


+ 12 - 0
WpfApplication19/About.xaml

@@ -0,0 +1,12 @@
1
+<Window
2
+	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+	x:Class="WpfApplication19.Window1"
5
+	x:Name="AboutWindow"
6
+	Title="About"
7
+	Width="532" Height="522" WindowStartupLocation="CenterScreen">
8
+
9
+	<Grid x:Name="LayoutRoot" HorizontalAlignment="Left" Width="526">
10
+		<Image Margin="8,0,11,1" Source="simplico_about.png"/>
11
+	</Grid>
12
+</Window>

+ 27 - 0
WpfApplication19/About.xaml.cs

@@ -0,0 +1,27 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Text;
4
+using System.Windows;
5
+using System.Windows.Controls;
6
+using System.Windows.Data;
7
+using System.Windows.Documents;
8
+using System.Windows.Input;
9
+using System.Windows.Media;
10
+using System.Windows.Media.Imaging;
11
+using System.Windows.Shapes;
12
+
13
+namespace WpfApplication19
14
+{
15
+	/// <summary>
16
+	/// Interaction logic for Window1.xaml
17
+	/// </summary>
18
+	public partial class Window1 : Window
19
+	{
20
+		public Window1()
21
+		{
22
+			this.InitializeComponent();
23
+			
24
+			// Insert code required on object creation below this point.
25
+		}
26
+	}
27
+}

+ 14 - 0
WpfApplication19/Alert.xaml

@@ -0,0 +1,14 @@
1
+<Window x:Class="WpfApplication19.Alert"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="Alert" Height="257" Width="510">
5
+    <Grid>
6
+		<TextBlock Height="43" HorizontalAlignment="Left" Margin="12,34,0,0" Name="MainWarningMsg" Text="TextBlock" VerticalAlignment="Top" Width="464" TextAlignment="Center" FontSize="26" Foreground="#FFFF0A0A" />
7
+		<TextBlock Height="23" HorizontalAlignment="Left" Margin="69,94,0,0" Name="textBlock2" Text="Please replace new measurement header, because it exceeds the limit" VerticalAlignment="Top" Width="344" />
8
+		<TextBlock Height="23" HorizontalAlignment="Left" Margin="123,123,0,0" Name="textBlock3" Text="If header replaced successful, press OK" VerticalAlignment="Top" Width="219" />
9
+		<Button Content="OK" Height="39" HorizontalAlignment="Right" Margin="0,152,120,0" Name="ChangeBtn" VerticalAlignment="Top" Width="120" FontSize="24" Click="ChangeBtn_Click" />
10
+		<Button Content="Stop Alert" Height="39" HorizontalAlignment="Left" Margin="96,152,0,0" Name="stopAlert" VerticalAlignment="Top" Width="132" FontWeight="Normal" FontSize="20" Click="stopAlert_Click" />
11
+		<MediaElement Height="44" HorizontalAlignment="Left" Margin="366,174,0,0" Name="warningSound" VerticalAlignment="Top" Width="122" Source="sounds/Tornado_Siren.mp3" LoadedBehavior="Manual" Volume="1" />
12
+	</Grid>
13
+
14
+</Window>

+ 44 - 0
WpfApplication19/Alert.xaml.cs

@@ -0,0 +1,44 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+
14
+namespace WpfApplication19
15
+{
16
+	/// <summary>
17
+	/// Interaction logic for Alert.xaml
18
+	/// </summary>
19
+	public partial class Alert : Window
20
+	{
21
+		public Alert()
22
+		{
23
+			InitializeComponent();
24
+			warningSound.Play();
25
+		}
26
+		public void SetAlertMsg(string msg){
27
+			MainWarningMsg.Text = msg;
28
+		}
29
+
30
+		private void ChangeBtn_Click(object sender, RoutedEventArgs e)
31
+		{
32
+			//Application.Current.MainWindow.Show();
33
+			var w = (MainWindow)Application.Current.MainWindow;
34
+			//var s = ((ComboBoxItem)DateTimeCB.SelectedItem).Content.ToString();
35
+			w.ResetHeaderUsage();			
36
+			Close();
37
+		}
38
+
39
+		private void stopAlert_Click(object sender, RoutedEventArgs e)
40
+		{
41
+			warningSound.Stop();
42
+		}
43
+	}
44
+}

+ 47 - 0
WpfApplication19/App.config

@@ -0,0 +1,47 @@
1
+<?xml version="1.0"?>
2
+<configuration>
3
+  <configSections>
4
+  </configSections>
5
+  
6
+  <appSettings>
7
+    
8
+    
9
+    <add key="machinePort" value="COM3"/>
10
+   
11
+    <add key="configDbCS" value="Data Source=192.168.0.253;User ID=user1;Password=1234; Initial Catalog=MGT_Config"/>
12
+    <add key="masterDbCS" value="Data Source=192.168.0.253;User ID=user1;Password=1234; Initial Catalog=MGT_Master"/>
13
+    <add key="tranDbCS" value="Data Source=192.168.0.253;User ID=user1;Password=1234; Initial Catalog=MGT_Trans"/>
14
+    <add key="productionDbCS" value="Data Source=192.168.0.253;User ID=user1;Password=1234; Initial Catalog=OB2011DB;Connection Timeout=7200"/>
15
+    <add key="operatingDbCs" value="Data Source=|DataDirectory|\OperatingDatabase.sdf"/>
16
+    
17
+    <add key="baudRate" value="9600"/>
18
+    <add key="rlMax" value="100"/>
19
+    <add key="rlMin" value="50"/>
20
+    <add key="dataBits" value="8"/>
21
+    <add key="stopBits" value="One"/>
22
+    <add key="parity" value="None"/>
23
+    <add key="webServerURL" value="http://127.0.0.1:3000"/>
24
+    <add key="currentMachine" value="1"/>
25
+    <add key="ClientSettingsProvider.ServiceUri" value=""/>
26
+  </appSettings>
27
+  <connectionStrings>
28
+    <add name="labEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\sqlexpress;Initial Catalog=lab;User ID=user1;Password=1234;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/>
29
+    <add name="WpfApplication19.Properties.Settings.OperatingDatabaseConnectionString" connectionString="Data Source=|DataDirectory|\OperatingDatabase.sdf" providerName="Microsoft.SqlServerCe.Client.3.5"/>
30
+    <add name="WpfApplication19.Properties.Settings.SampleConnectionString" connectionString="Data Source=|DataDirectory|\Sample.sdf" providerName="Microsoft.SqlServerCe.Client.3.5"/>
31
+  </connectionStrings>
32
+  <startup>
33
+    
34
+  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/></startup>
35
+  <system.web>
36
+    <membership defaultProvider="ClientAuthenticationMembershipProvider">
37
+      <providers>
38
+        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/>
39
+      </providers>
40
+    </membership>
41
+    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
42
+      <providers>
43
+        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/>
44
+      </providers>
45
+    </roleManager>
46
+  </system.web>
47
+</configuration>

+ 14 - 0
WpfApplication19/App.xaml

@@ -0,0 +1,14 @@
1
+<Application x:Class="WpfApplication19.App"
2
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+             StartupUri="MainWindow.xaml">
5
+    <Application.Resources>
6
+         
7
+    	<ResourceDictionary>
8
+    		<ResourceDictionary.MergedDictionaries>
9
+    			<ResourceDictionary Source="Simple Styles.xaml"/>
10
+    		</ResourceDictionary.MergedDictionaries>
11
+    	</ResourceDictionary>
12
+         
13
+    </Application.Resources>
14
+</Application>

+ 16 - 0
WpfApplication19/App.xaml.cs

@@ -0,0 +1,16 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Configuration;
4
+using System.Data;
5
+using System.Linq;
6
+using System.Windows;
7
+
8
+namespace WpfApplication19
9
+{
10
+    /// <summary>
11
+    /// Interaction logic for App.xaml
12
+    /// </summary>
13
+    public partial class App : Application
14
+    {
15
+    }
16
+}

+ 115 - 0
WpfApplication19/Authentication.cs

@@ -0,0 +1,115 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.IO;
6
+using System.Security.Cryptography;
7
+namespace WpfApplication19
8
+{
9
+  class Authentication
10
+  {
11
+     static byte[] encryptStringToBytes_AES(string plainText, byte[] Key, byte[] IV)
12
+        {
13
+            // Check arguments.
14
+            if (plainText == null || plainText.Length <= 0)
15
+                throw new ArgumentNullException("plainText");
16
+            if (Key == null || Key.Length <= 0)
17
+                throw new ArgumentNullException("Key");
18
+            if (IV == null || IV.Length <= 0)
19
+                throw new ArgumentNullException("IV");
20
+
21
+            // Declare the stream used to encrypt to an in memory
22
+            // array of bytes.
23
+            MemoryStream msEncrypt = null;
24
+
25
+            // Declare the RijndaelManaged object
26
+            // used to encrypt the data.
27
+            RijndaelManaged aesAlg = null;
28
+
29
+            try
30
+            {
31
+                // Create a RijndaelManaged object
32
+                // with the specified key and IV.
33
+                aesAlg = new RijndaelManaged();
34
+                aesAlg.Key = Key;
35
+                aesAlg.IV = IV;
36
+
37
+                // Create an encrypto to perform the stream transform.
38
+                ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
39
+
40
+                // Create the streams used for encryption.
41
+                msEncrypt = new MemoryStream();
42
+                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
43
+                {
44
+                    using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
45
+                    {
46
+                        //Write all data to the stream.
47
+                        swEncrypt.Write(plainText);
48
+                    }
49
+                }
50
+            }
51
+            finally
52
+            {
53
+                // Clear the RijndaelManaged object.
54
+                if (aesAlg != null)
55
+                    aesAlg.Clear();
56
+            }
57
+
58
+            // Return the encrypted bytes from the memory stream.
59
+            return msEncrypt.ToArray();
60
+        }
61
+
62
+        static string decryptStringFromBytes_AES(byte[] cipherText, byte[] Key, byte[] IV)
63
+        {
64
+            // Check arguments.
65
+            if (cipherText == null || cipherText.Length <= 0)
66
+                throw new ArgumentNullException("cipherText");
67
+            if (Key == null || Key.Length <= 0)
68
+                throw new ArgumentNullException("Key");
69
+            if (IV == null || IV.Length <= 0)
70
+                throw new ArgumentNullException("IV");
71
+
72
+            // Declare the RijndaelManaged object
73
+            // used to decrypt the data.
74
+            RijndaelManaged aesAlg = null;
75
+
76
+            // Declare the string used to hold
77
+            // the decrypted text.
78
+            string plaintext = null;
79
+
80
+            try
81
+            {
82
+                // Create a RijndaelManaged object
83
+                // with the specified key and IV.
84
+                aesAlg = new RijndaelManaged();
85
+                aesAlg.Key = Key;
86
+                aesAlg.IV = IV;
87
+
88
+                // Create a decrytor to perform the stream transform.
89
+                ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
90
+                // Create the streams used for decryption.
91
+                using (MemoryStream msDecrypt = new MemoryStream(cipherText))
92
+                {
93
+                    using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
94
+                    {
95
+                        using (StreamReader srDecrypt = new StreamReader(csDecrypt))
96
+
97
+                            // Read the decrypted bytes from the decrypting stream
98
+                            // and place them in a string.
99
+                            plaintext = srDecrypt.ReadToEnd();
100
+                    }
101
+                }
102
+            }
103
+            finally
104
+            {
105
+                // Clear the RijndaelManaged object.
106
+                if (aesAlg != null)
107
+                    aesAlg.Clear();
108
+            }
109
+
110
+            return plaintext;
111
+        }
112
+
113
+
114
+  }
115
+}

+ 10 - 0
WpfApplication19/ChooseRecord.xaml

@@ -0,0 +1,10 @@
1
+<Window x:Class="WpfApplication19.ChooseRecord"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="ChooseRecord" Height="136" Width="441" Name="ChooseRecordWindow">
5
+    <Grid>
6
+        <Label Content="Record Date Time" Height="28" HorizontalAlignment="Left" Margin="28,37,0,0" Name="label1" VerticalAlignment="Top" />
7
+        <ComboBox Height="23" HorizontalAlignment="Left" Margin="139,37,0,0" Name="DateTimeCB" VerticalAlignment="Top" Width="120" />
8
+        <Button Content="OK" Height="23" HorizontalAlignment="Left" Margin="280,37,0,0" Name="PreviewBtn" VerticalAlignment="Top" Width="75" Click="PreviewBtn_Click" />
9
+    </Grid>
10
+</Window>

+ 61 - 0
WpfApplication19/ChooseRecord.xaml.cs

@@ -0,0 +1,61 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+using System.Data.Sql;
14
+using System.Data.SqlClient;
15
+
16
+namespace WpfApplication19
17
+{
18
+    /// <summary>
19
+    /// Interaction logic for ChooseRecord.xaml
20
+    /// </summary>
21
+    public partial class ChooseRecord : Window
22
+    {
23
+        private SqlConnection _proConn;
24
+        public ChooseRecord(string lotNo)
25
+        {
26
+            InitializeComponent();
27
+            this.LotNo = lotNo;
28
+            try
29
+            {
30
+                _proConn = Utils.createSqlConnection("productionDbCS");
31
+            }
32
+            catch (SqlException se)
33
+            {
34
+                MessageBox.Show("productionDbCS : ", se.Message);
35
+            }
36
+            SetupObject();
37
+            //LotNoLabel.Content = LotNo;
38
+        }
39
+        private void SetupObject()
40
+        {
41
+            SqlDataReader reader = Utils.Query(_proConn, "select updated_at from data where lot_no = '"+this.LotNo+"' group by updated_at");
42
+            while (reader.Read())
43
+            {
44
+                
45
+                DateTimeCB.Items.Add(new ComboBoxItem() { Tag = "a", Content = reader["updated_at"].ToString() });
46
+            }
47
+            reader.Close();
48
+            //DateTimeCB.ItemsSource = 
49
+        }
50
+        public string LotNo { get; set; }
51
+
52
+        private void PreviewBtn_Click(object sender, RoutedEventArgs e)
53
+        {
54
+            Application.Current.MainWindow.Show();
55
+            var w = (MainWindow)Application.Current.MainWindow;
56
+            var s = ((ComboBoxItem)DateTimeCB.SelectedItem).Content.ToString();
57
+            w.setFilterLogData(((ComboBoxItem)DateTimeCB.SelectedItem).Content.ToString());
58
+            Close();
59
+        }
60
+    }
61
+}

+ 21 - 0
WpfApplication19/ChooseRecord2.xaml

@@ -0,0 +1,21 @@
1
+<Window x:Class="WpfApplication19.ChooseRecord2"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="ChooseRecord2" Height="291" Width="517" Loaded="Window_Loaded">
5
+    <Grid>
6
+		<Grid.RowDefinitions>
7
+			<RowDefinition Height="207*" />
8
+			<RowDefinition Height="45*" />
9
+		</Grid.RowDefinitions>
10
+		<DataGrid  AutoGenerateColumns="False" Name="chooseGrid" CanUserAddRows="False">
11
+			<DataGrid.Columns>
12
+				<DataGridTextColumn Header="Lot No." Width="*" Binding="{Binding lotNo}" IsReadOnly="True" />
13
+				<DataGridTextColumn Header="Code" Width="*" Binding="{Binding code}" IsReadOnly="True" />
14
+				<DataGridTextColumn Header="Date"  Width="*" Binding="{Binding date}" IsReadOnly="True" />
15
+				<DataGridTextColumn Header="Average" Width="*" Binding="{Binding avg}" IsReadOnly="True" />
16
+			</DataGrid.Columns>
17
+		</DataGrid>
18
+		<Button Content="Select" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="420,10,0,0" Name="selectBtn" VerticalAlignment="Top" Width="75" Click="selectBtn_Click" />
19
+		<Button Content="Cancel" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="329,10,0,0" Name="cancel" VerticalAlignment="Top" Width="75" Click="cancel_Click" />
20
+	</Grid>
21
+</Window>

+ 105 - 0
WpfApplication19/ChooseRecord2.xaml.cs

@@ -0,0 +1,105 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+using System.Data.Sql;
14
+using System.Data.SqlClient;
15
+using System.Collections.ObjectModel;
16
+using System.Windows.Interop;
17
+using System.Runtime.InteropServices;
18
+namespace WpfApplication19
19
+{
20
+	/// <summary>
21
+	/// Interaction logic for ChooseRecord2.xaml
22
+	/// </summary>
23
+	public partial class ChooseRecord2 : Window
24
+	{
25
+		private string _lotNo;
26
+		private SqlConnection _proConn;
27
+		private ObservableCollection<RecordSelection> _recordList = new ObservableCollection<RecordSelection>();
28
+		
29
+		private const int GWL_STYLE = -16;
30
+		private const int WS_SYSMENU = 0x80000;
31
+		[DllImport("user32.dll", SetLastError = true)]
32
+		private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
33
+		[DllImport("user32.dll")]
34
+		private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
35
+
36
+
37
+		public ChooseRecord2(string lotNo)
38
+		{
39
+			
40
+			InitializeComponent();
41
+			
42
+			_lotNo = lotNo;
43
+			try
44
+			{
45
+				_proConn = Utils.createSqlConnection("productionDbCS");
46
+			}
47
+			catch (SqlException se)
48
+			{
49
+				MessageBox.Show("productionDbCS : ", se.Message);
50
+			}
51
+			setUpGrid();
52
+		}
53
+		private void setUpGrid(){
54
+			/*
55
+			SqlDataReader reader = Utils.Query(_proConn, "select * from data where lot_no = '" + this.LotNo + "' group by updated_at");
56
+			while (reader.Read())
57
+			{
58
+
59
+				DateTimeCB.Items.Add(new ComboBoxItem() { Tag = "a", Content = reader["updated_at"].ToString() });
60
+			}
61
+			reader.Close();*/
62
+			SqlDataReader reader = Utils.Query(_proConn, "select * from lot_summary where lot_no = '"+_lotNo+"' order by created_at desc");
63
+			while(reader.Read()){
64
+					
65
+					_recordList.Add(new RecordSelection(){ lotNo = reader["lot_no"].ToString(), 
66
+					code = reader["code"].ToString(),
67
+					date = Convert.ToDateTime(reader["created_at"]),
68
+					avg = Convert.ToDouble(reader["avg"])});
69
+			}
70
+			chooseGrid.ItemsSource = _recordList;
71
+			reader.Close();
72
+		}
73
+
74
+		private void selectBtn_Click(object sender, RoutedEventArgs e)
75
+		{
76
+			RecordSelection r =  chooseGrid.SelectedItem as RecordSelection;
77
+			var w = (MainWindow)Application.Current.MainWindow;
78
+			try{
79
+			w.setFilterLogData(r.date.ToString());
80
+			Close();
81
+			}catch{
82
+				MessageBox.Show("Please Select A Record");
83
+			}
84
+		}
85
+
86
+		private void Window_Loaded(object sender, RoutedEventArgs e)
87
+		{
88
+			var hwnd = new WindowInteropHelper(this).Handle;
89
+			SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
90
+
91
+		}
92
+
93
+		private void cancel_Click(object sender, RoutedEventArgs e)
94
+		{
95
+			Close();
96
+		}
97
+		
98
+	}
99
+	class RecordSelection{
100
+		public string lotNo { get; set; }
101
+		public string code { get; set; }
102
+		public DateTime date { get; set; }
103
+		public double avg { get; set; }
104
+	}
105
+}

+ 21 - 0
WpfApplication19/ChooseRecord3.xaml

@@ -0,0 +1,21 @@
1
+<Window x:Class="WpfApplication19.ChooseRecord3"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="ChooseRecord3" Height="291" Width="517" Loaded="Window_Loaded">
5
+    <Grid>
6
+		<Grid.RowDefinitions>
7
+			<RowDefinition Height="207*" />
8
+			<RowDefinition Height="45*" />
9
+		</Grid.RowDefinitions>
10
+		<DataGrid  AutoGenerateColumns="False" Name="chooseGrid" CanUserAddRows="False">
11
+			<DataGrid.Columns>
12
+				<DataGridTextColumn Header="Lot No." Width="*" Binding="{Binding lotNo}" IsReadOnly="True" />
13
+				<DataGridTextColumn Header="Code" Width="*" Binding="{Binding code}" IsReadOnly="True" />
14
+				<DataGridTextColumn Header="Date"  Width="*" Binding="{Binding date}" IsReadOnly="True" />
15
+				<DataGridTextColumn Header="Average" Width="*" Binding="{Binding avg}" IsReadOnly="True" />
16
+			</DataGrid.Columns>
17
+		</DataGrid>
18
+		<Button Content="Select" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="420,10,0,0" Name="selectBtn" VerticalAlignment="Top" Width="75" Click="selectBtn_Click" />
19
+		<Button Content="Cancel" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="329,10,0,0" Name="cancel" VerticalAlignment="Top" Width="75" Click="cancel_Click" />
20
+	</Grid>
21
+</Window>

+ 106 - 0
WpfApplication19/ChooseRecord3.xaml.cs

@@ -0,0 +1,106 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+using System.Data.Sql;
14
+using System.Data.SqlClient;
15
+using System.Collections.ObjectModel;
16
+using System.Windows.Interop;
17
+using System.Runtime.InteropServices;
18
+namespace WpfApplication19
19
+{
20
+	/// <summary>
21
+	/// Interaction logic for ChooseRecord2.xaml
22
+	/// </summary>
23
+	public partial class ChooseRecord3 : Window
24
+	{
25
+		private string _lotNo;
26
+		private SqlConnection _proConn;
27
+		private ObservableCollection<RecordSelection> _recordList = new ObservableCollection<RecordSelection>();
28
+		
29
+		private const int GWL_STYLE = -16;
30
+		private const int WS_SYSMENU = 0x80000;
31
+		[DllImport("user32.dll", SetLastError = true)]
32
+		private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
33
+		[DllImport("user32.dll")]
34
+		private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
35
+
36
+
37
+		public ChooseRecord3(string lotNo)
38
+		{
39
+			
40
+			InitializeComponent();
41
+			
42
+			_lotNo = lotNo;
43
+			try
44
+			{
45
+				_proConn = Utils.createSqlConnection("productionDbCS");
46
+			}
47
+			catch (SqlException se)
48
+			{
49
+				MessageBox.Show("productionDbCS : ", se.Message);
50
+			}
51
+			setUpGrid();
52
+		}
53
+		private void setUpGrid(){
54
+			/*
55
+			SqlDataReader reader = Utils.Query(_proConn, "select * from data where lot_no = '" + this.LotNo + "' group by updated_at");
56
+			while (reader.Read())
57
+			{
58
+
59
+				DateTimeCB.Items.Add(new ComboBoxItem() { Tag = "a", Content = reader["updated_at"].ToString() });
60
+			}
61
+			reader.Close();*/
62
+			SqlDataReader reader = Utils.Query(_proConn, "select * from lot_summary_rl where lot_no = '"+_lotNo+"' order by created_at desc");
63
+			while(reader.Read()){
64
+					
65
+					_recordList.Add(new RecordSelection(){ lotNo = reader["lot_no"].ToString(), 
66
+					code = reader["code"].ToString(),
67
+					date = Convert.ToDateTime(reader["created_at"]),
68
+					avg = Convert.ToDouble(reader["avg"])});
69
+			}
70
+			chooseGrid.ItemsSource = _recordList;
71
+			reader.Close();
72
+		}
73
+
74
+		private void selectBtn_Click(object sender, RoutedEventArgs e)
75
+		{
76
+			RecordSelection r =  chooseGrid.SelectedItem as RecordSelection;
77
+			var w = (MainWindow)Application.Current.MainWindow;
78
+			try{
79
+			w._rlWindow.setFilterLogData(r.date.ToString());
80
+			Close();
81
+			}catch{
82
+				MessageBox.Show("Please Select A Record");
83
+			}
84
+		}
85
+
86
+		private void Window_Loaded(object sender, RoutedEventArgs e)
87
+		{
88
+			var hwnd = new WindowInteropHelper(this).Handle;
89
+			SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
90
+
91
+		}
92
+
93
+		private void cancel_Click(object sender, RoutedEventArgs e)
94
+		{
95
+			Close();
96
+		}
97
+		
98
+	}
99
+    /*
100
+	class RecordSelection{
101
+		public string lotNo { get; set; }
102
+		public string code { get; set; }
103
+		public DateTime date { get; set; }
104
+		public double avg { get; set; }
105
+	}*/
106
+}

+ 119 - 0
WpfApplication19/DailyCheck.xaml

@@ -0,0 +1,119 @@
1
+<Window x:Class="WpfApplication19.DailyCheck"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="DailyCheck" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="351" SizeToContent="WidthAndHeight" ResizeMode="CanResize" WindowStartupLocation="CenterScreen" WindowState="Maximized" Closed="Window_Closed">
5
+	<Window.Resources>
6
+		<Style TargetType="{x:Type DataGridCell}">
7
+			<Style.Triggers>
8
+				<Trigger Property="DataGridCell.IsFocused" Value="True">
9
+					<Setter Property="Background" Value="#ff0000" />
10
+					<Setter Property="Foreground" Value="#ffffff" />
11
+				</Trigger>
12
+				
13
+
14
+			</Style.Triggers>
15
+			<Setter Property="FontSize" Value="20" />
16
+		</Style>
17
+		<Style x:Key="DatePickerStyle1" TargetType="{x:Type DatePicker}">
18
+			<Setter Property="Foreground" Value="#FF333333"/>
19
+			<Setter Property="IsTodayHighlighted" Value="True"/>
20
+			<Setter Property="SelectedDateFormat" Value="Short"/>
21
+			<Setter Property="Background" Value="Transparent"/>
22
+			<Setter Property="Padding" Value="2"/>
23
+			<Setter Property="BorderBrush">
24
+				<Setter.Value>
25
+					<LinearGradientBrush EndPoint=".5,0" StartPoint=".5,1">
26
+						<GradientStop Color="#FFA3AEB9" Offset="0"/>
27
+						<GradientStop Color="#FF8399A9" Offset="0.375"/>
28
+						<GradientStop Color="#FF718597" Offset="0.375"/>
29
+						<GradientStop Color="#FF617584" Offset="1"/>
30
+					</LinearGradientBrush>
31
+				</Setter.Value>
32
+			</Setter>
33
+			<Setter Property="BorderThickness" Value="1"/>
34
+			<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
35
+			<Setter Property="Template">
36
+				<Setter.Value>
37
+					<ControlTemplate TargetType="{x:Type DatePicker}">
38
+						<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}">
39
+							<VisualStateManager.VisualStateGroups>
40
+								<VisualStateGroup x:Name="CommonStates">
41
+									<VisualState x:Name="Normal"/>
42
+									<VisualState x:Name="Disabled">
43
+										<Storyboard>
44
+											<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_DisabledVisual"/>
45
+										</Storyboard>
46
+									</VisualState>
47
+								</VisualStateGroup>
48
+							</VisualStateManager.VisualStateGroups>
49
+							<Grid x:Name="PART_Root" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
50
+								<Grid.Resources>
51
+									<SolidColorBrush x:Key="DisabledBrush" Color="#A5FFFFFF"/>
52
+									<ControlTemplate x:Key="DropDownButtonTemplate" TargetType="{x:Type Button}">
53
+										<Grid>
54
+											<VisualStateManager.VisualStateGroups>
55
+												<VisualStateGroup x:Name="CommonStates">
56
+													<VisualStateGroup.Transitions>
57
+														<VisualTransition GeneratedDuration="0"/>
58
+														<VisualTransition GeneratedDuration="0:0:0.1" To="MouseOver"/>
59
+														<VisualTransition GeneratedDuration="0:0:0.1" To="Pressed"/>
60
+													</VisualStateGroup.Transitions>
61
+													<VisualState x:Name="Normal"/>
62
+													<VisualState x:Name="MouseOver"/>
63
+													<VisualState x:Name="Pressed"/>
64
+													<VisualState x:Name="Disabled"/>
65
+												</VisualStateGroup>
66
+											</VisualStateManager.VisualStateGroups>
67
+											<Image Grid.ColumnSpan="1" Grid.RowSpan="1" Source="ical2.png" Margin="0,0,1,0.298"/>
68
+										</Grid>
69
+									</ControlTemplate>
70
+								</Grid.Resources>
71
+								<Grid.ColumnDefinitions>
72
+									<ColumnDefinition Width="*"/>
73
+									<ColumnDefinition Width="Auto"/>
74
+								</Grid.ColumnDefinitions>
75
+								<Button x:Name="PART_Button" Grid.Column="1" Foreground="{TemplateBinding Foreground}" Focusable="False" HorizontalAlignment="Left" Margin="3,0,3,0" Grid.Row="0" Template="{StaticResource DropDownButtonTemplate}" VerticalAlignment="Top" Width="30"/>
76
+								<DatePickerTextBox x:Name="PART_TextBox" Grid.Column="0" Foreground="{TemplateBinding Foreground}" Focusable="{TemplateBinding Focusable}" HorizontalContentAlignment="Stretch" Grid.Row="0" VerticalContentAlignment="Stretch" FontSize="16"/>
77
+								<Grid x:Name="PART_DisabledVisual" Grid.ColumnSpan="2" Grid.Column="0" IsHitTestVisible="False" Opacity="0" Grid.Row="0">
78
+									<Grid.ColumnDefinitions>
79
+										<ColumnDefinition Width="*"/>
80
+										<ColumnDefinition Width="Auto"/>
81
+									</Grid.ColumnDefinitions>
82
+									<Rectangle Grid.Column="0" Fill="#A5FFFFFF" RadiusY="1" Grid.Row="0" RadiusX="1"/>
83
+									<Rectangle Grid.Column="1" Fill="#A5FFFFFF" Height="18" Margin="3,0,3,0" RadiusY="1" Grid.Row="0" RadiusX="1" Width="19"/>
84
+									<Popup x:Name="PART_Popup" AllowsTransparency="True" Placement="Bottom" PlacementTarget="{Binding ElementName=PART_TextBox}" StaysOpen="False"/>
85
+								</Grid>
86
+							</Grid>
87
+						</Border>
88
+					</ControlTemplate>
89
+				</Setter.Value>
90
+			</Setter>
91
+		</Style>
92
+	</Window.Resources>
93
+	<Viewbox>
94
+	<Grid Width="800" Height="311">
95
+		<Button Content="Save" Height="32" HorizontalAlignment="Left" Margin="673,175,0,0" Name="saveBtn" VerticalAlignment="Top" Width="81" Click="saveBtn_Click" />
96
+		<TextBlock Height="94" HorizontalAlignment="Left" Margin="646,67,0,0" Name="measureBlock" Text="00.00" VerticalAlignment="Top" Width="142" Background="#FF1A0202" Foreground="#FFF21919" TextAlignment="Center" FontSize="56" Padding="0,8" />
97
+		<DataGrid AutoGenerateColumns="False" Height="187" HorizontalAlignment="Left" Margin="41,67,0,0" Name="dailyCheckGrid" VerticalAlignment="Top" Width="561" CanUserAddRows="False"  CanUserReorderColumns="False" CanUserSortColumns="False" Focusable="True"  SelectedValuePath="P1" SelectionUnit="FullRow" GotFocus="dailyCheckGrid_GotFocus"  Loaded="dailyCheckGrid_Loaded">
98
+			<DataGrid.Columns>
99
+				<DataGridTextColumn Header="Header" Width="*" Binding="{Binding header}" IsReadOnly="True"/>
100
+				<DataGridTextColumn Header="P1" Width="*" Binding="{Binding p1, StringFormat=0.00}" IsReadOnly="True" />
101
+				<DataGridTextColumn Header="P2" Width="*" Binding="{Binding p2, StringFormat=0.00}" IsReadOnly="True"/>
102
+				<DataGridTextColumn Header="P3"  Width="*" Binding="{Binding p3, StringFormat=0.00}" IsReadOnly="True"/>
103
+				<DataGridTextColumn Header="Avg"  Width="*" Binding="{Binding avg, StringFormat=0.00}" IsReadOnly="True"/>
104
+				<DataGridTextColumn Header="Result"  Width="*" Binding="{Binding result}" IsReadOnly="True"/>
105
+			</DataGrid.Columns>
106
+		</DataGrid>
107
+		<Button Content="Commit" Height="23" HorizontalAlignment="Left" Margin="527,268,0,0" Name="commitBtn" VerticalAlignment="Top" Width="75" Click="commitBtn_Click" />
108
+		<DatePicker Height="29" HorizontalAlignment="Left" Margin="233.725,24.683,0,0" Name="datePicker" VerticalAlignment="Top" Width="142" Text="hello" SelectedDateChanged="datePicker_SelectedDateChanged" Style="{DynamicResource DatePickerStyle1}" RenderTransformOrigin="0.509,-0.966" />
109
+		<ComboBox Height="29.858" HorizontalAlignment="Left" Margin="41,24.254,0,0" Name="shiftCB" VerticalAlignment="Top" Width="172.853" SelectedIndex="0" FontSize="16">
110
+			<ComboBoxItem Content="Day ( 08.00 - 20.00 )" Tag="day" />
111
+			<ComboBoxItem Content="Night ( 20.00 - 08.00 )" Tag="night" />
112
+		</ComboBox>
113
+		<TextBlock Height="23" HorizontalAlignment="Left" Margin="41,269,0,0" Name="textBlock1" Text="Standard values,  OB :" VerticalAlignment="Top" Foreground="#CA000000" />
114
+		<TextBlock Height="23" HorizontalAlignment="Left" Margin="164,268,0,0" Name="textBlock2" Text="0.59 - 0.70" VerticalAlignment="Top" Foreground="#FF3063F0" FontWeight="Bold" FontSize="14" />
115
+		<TextBlock Foreground="#CA000000" Height="23" HorizontalAlignment="Left" Margin="265,270,0,0" Name="textBlock4" Text="OC :" VerticalAlignment="Top" />
116
+		<TextBlock FontSize="14" FontWeight="Bold" Foreground="#FF3063F0" Height="23" HorizontalAlignment="Left" Margin="297,268,0,0" Name="textBlock3" Text="0.28 - 0.37" VerticalAlignment="Top" />
117
+	</Grid>
118
+	</Viewbox>
119
+</Window>

+ 293 - 0
WpfApplication19/DailyCheck.xaml.cs

@@ -0,0 +1,293 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+using System.Collections.ObjectModel;
14
+using System.Data.SqlClient;
15
+using System.Data;
16
+namespace WpfApplication19
17
+{
18
+	/// <summary>
19
+	/// Interaction logic for DailyCheck.xaml
20
+	/// </summary>
21
+	public partial class DailyCheck : Window
22
+	{
23
+		ObservableCollection<DailyChecker> _dailyChecks = new ObservableCollection<DailyChecker>();
24
+		DataGridCellInfo _cell;
25
+		DataGridColumn _col;
26
+		DailyChecker _item;
27
+		SqlConnection _proConn;
28
+		DateTime _now, _tomorrow;
29
+		string _shift;
30
+		public DailyCheck()
31
+		{
32
+			InitializeComponent();
33
+
34
+			//nowLabel.Content = String.Format("{0:dd/MM/yyyy}", DateTime.Now);
35
+			//var test = DateTime.Now + 1;
36
+			_now  = DateTime.Now.Date;
37
+			_tomorrow = _now.AddDays(1);
38
+			var c = DateTime.Now.AddDays(1);
39
+
40
+			var hr = DateTime.Now.TimeOfDay.Hours;
41
+			//shiftCB.SelectionChanged -= shiftCB_SelectionChanged;
42
+			if(hr >= 8 && hr <= 19){
43
+				_shift = "day";
44
+				shiftCB.SelectedIndex = 0;
45
+			}else{
46
+				_shift = "night";
47
+				shiftCB.SelectedIndex = 1;
48
+			}
49
+			
50
+
51
+			datePicker.SelectedDateChanged -= datePicker_SelectedDateChanged;
52
+			datePicker.SelectedDate  =_now;
53
+			datePicker.SelectedDateChanged += datePicker_SelectedDateChanged;
54
+
55
+			shiftCB.SelectionChanged += shiftCB_SelectionChanged;
56
+			try
57
+			{
58
+				_proConn = Utils.createSqlConnection("productionDbCS");
59
+			
60
+			}
61
+			catch (SqlException se)
62
+			{
63
+				MessageBox.Show("productionDbCS : ", se.Message);
64
+			}
65
+			//var w = (MainWindow)Application.Current.MainWindow;
66
+			//_proConn = w.proConn;
67
+			initDataGrid();
68
+			//dailyCheckGrid.Focus();
69
+
70
+
71
+		}
72
+		void initDataGrid(){
73
+			setGrid(_now, _tomorrow, _shift);
74
+			
75
+		
76
+		}
77
+
78
+		private void setGrid(DateTime from, DateTime to, string shift)
79
+		{
80
+			var id = Utils.getSetting("currentMachine");
81
+			var sql = string.Format("select * from daily_checks where created_at >= '{0:yyyy-MM-dd}' and created_at < '{1:yyyy-MM-dd}' and machine_id = {2} and shift = '{3}'"
82
+			, from,to, id, shift);
83
+			var reader = Utils.Query(_proConn, sql);
84
+
85
+			dailyCheckGrid.ItemsSource = null;
86
+			_dailyChecks.Clear();
87
+			if (reader.HasRows)
88
+			{
89
+				while (reader.Read())
90
+				{
91
+
92
+					_dailyChecks.Add(new DailyChecker()
93
+					{
94
+						header = reader["header"].ToString().ToUpper(),
95
+						p1 = Math.Round(Convert.ToDouble(reader["p1"]), 2),
96
+						p2 = Math.Round(Convert.ToDouble(reader["p2"]), 2),
97
+						p3 = Math.Round(Convert.ToDouble(reader["p3"]), 2),
98
+						avg = Math.Round(Convert.ToDouble(reader["avg"]), 2),
99
+						result = reader["result"].ToString()
100
+					});
101
+				}
102
+
103
+			}
104
+			else
105
+			{
106
+				_dailyChecks.Add(new DailyChecker() { header = "OB", p1 = 0, p2 = 0, p3 = 0, avg = 0 });
107
+				_dailyChecks.Add(new DailyChecker() { header = "OC", p1 = 0, p2 = 0, p3 = 0, avg = 0 });
108
+				_dailyChecks.Add(new DailyChecker() { header = "RH", p1 = 0, p2 = 0, p3 = 0, avg = 0 });
109
+			}
110
+			reader.Close();
111
+			dailyCheckGrid.Items.Clear();
112
+			dailyCheckGrid.ItemsSource = _dailyChecks;
113
+		}
114
+
115
+	
116
+		private void saveBtn_Click(object sender, RoutedEventArgs e)
117
+		{
118
+			int row, col;
119
+			string header;
120
+			//dailyCheckGrid.Focus();
121
+			try{
122
+				header = _cell.Column.Header.ToString();
123
+				row  = _dailyChecks.IndexOf((_cell.Item as DailyChecker));
124
+				col = _col.DisplayIndex;
125
+			}catch{
126
+				dailyCheckGrid.Focus();
127
+				dailyCheckGrid.CurrentCell = new DataGridCellInfo(
128
+							dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]);
129
+				dailyCheckGrid.BeginEdit();
130
+				header = "P1";
131
+				row = 0;
132
+				col = 1;
133
+				_item = _dailyChecks[0];
134
+			}
135
+			switch(header){
136
+				case "P1":
137
+					//var c = dailyCheckGrid.CurrentItem as DailyChecker;
138
+					_item.p1 = Convert.ToDouble(measureBlock.Text);
139
+				break;
140
+				case "P2":
141
+					_item.p2 = Convert.ToDouble(measureBlock.Text);
142
+				break;
143
+				case "P3":
144
+					_item.p3 = Convert.ToDouble(measureBlock.Text);
145
+				break;
146
+				
147
+			}
148
+			_item.avg = Math.Round((_item.p1 + _item.p2 + _item.p3)/3, 2);
149
+			if(_item.header == "OB"){
150
+				if(_item.avg >= 0.59 && _item.avg <= 0.70){
151
+					_item.result = "OK";
152
+				}else {
153
+					_item.result = "NG";
154
+				}
155
+			}
156
+			if(_item.header == "OC"){
157
+				if (_item.avg >= 0.28 && _item.avg <= 0.37)
158
+				{
159
+					_item.result = "OK";
160
+				}
161
+				else
162
+				{
163
+					_item.result = "NG";
164
+				}
165
+			}
166
+			dailyCheckGrid.Items.Refresh();
167
+			dailyCheckGrid.Focus();
168
+			if(header != "Header" && header != "Avg" && header != "P3"){
169
+				dailyCheckGrid.CurrentCell = new DataGridCellInfo(
170
+						dailyCheckGrid.Items[row], dailyCheckGrid.Columns[col + 1]);
171
+				dailyCheckGrid.BeginEdit();
172
+			}
173
+			if(header == "P3"){
174
+				try{
175
+				dailyCheckGrid.CurrentCell = new DataGridCellInfo(
176
+						dailyCheckGrid.Items[row+1], dailyCheckGrid.Columns[1]);
177
+				dailyCheckGrid.SelectedItem = dailyCheckGrid.Items[row + 1];
178
+				dailyCheckGrid.BeginEdit();
179
+				}catch{
180
+					dailyCheckGrid.CurrentCell = new DataGridCellInfo(
181
+							dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]);
182
+					dailyCheckGrid.SelectedItem = dailyCheckGrid.Items[0];
183
+					dailyCheckGrid.BeginEdit();
184
+				}
185
+			}
186
+			
187
+		}
188
+
189
+	
190
+	
191
+		
192
+		
193
+		private void dailyCheckGrid_GotFocus(object sender, RoutedEventArgs e)
194
+		{
195
+			_cell = dailyCheckGrid.CurrentCell;
196
+			_col = dailyCheckGrid.CurrentColumn;
197
+			_item = dailyCheckGrid.CurrentItem as DailyChecker;
198
+			
199
+		}
200
+
201
+		
202
+
203
+		private void dailyCheckGrid_Loaded(object sender, RoutedEventArgs e)
204
+		{
205
+			dailyCheckGrid.Focus();
206
+			dailyCheckGrid.CurrentCell = new DataGridCellInfo(
207
+										dailyCheckGrid.Items[0], dailyCheckGrid.Columns[1]);
208
+			dailyCheckGrid.BeginEdit();
209
+		}
210
+
211
+		private void commitBtn_Click(object sender, RoutedEventArgs e)
212
+		{
213
+			commitData();
214
+			MessageBox.Show("Commit Daily Check Complete");
215
+			Close();
216
+		}
217
+
218
+		private void commitData()
219
+		{
220
+			var id = Utils.getSetting("currentMachine");
221
+			var sql = string.Format("delete daily_checks where machine_id = {0} and created_at >= '{1:yyyy-MM-dd}' and created_at < '{2:yyyy-MM-dd}' and shift = '{3}'", id, _now, _tomorrow, _shift);
222
+			var reader = Utils.Query(_proConn, sql);
223
+			reader.Close();
224
+			string empid = GlobalVars.user.empid;
225
+			foreach (var item in _dailyChecks)
226
+			{
227
+
228
+				sql = string.Format("insert into daily_checks(header, p1, p2, p3, avg, created_at, updated_at,machine_id, empid, shift, result) values('{0}', {1}, {2}, {3}, {4}, '{5}', '{6}', {7}, '{8}', '{9}', '{10}')"
229
+					, item.header.ToUpper(), item.p1, item.p2, item.p3, item.avg, _now, DateTime.Now, id, empid, _shift, item.result);
230
+				reader = Utils.Query(_proConn, sql);
231
+				reader.Close();
232
+			}
233
+		}
234
+
235
+		private void datePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
236
+		{
237
+			//MessageBox.Show("change date");
238
+			if (commitBtn.IsEnabled == true)
239
+				commitData();
240
+			var d =  (DateTime)datePicker.SelectedDate;
241
+			var shift = (shiftCB.SelectedItem as ComboBoxItem).Tag.ToString();
242
+			if (d.Date == DateTime.Now.Date && shift == _shift)
243
+			{
244
+				saveBtn.IsEnabled = true;
245
+				commitBtn.IsEnabled = true;
246
+			}
247
+			else
248
+			{
249
+				saveBtn.IsEnabled = false;
250
+				commitBtn.IsEnabled = false;
251
+			}
252
+			var from  = (DateTime)datePicker.SelectedDate;
253
+			
254
+			setGrid(from.Date, from.Date.AddDays(1), shift);
255
+		}
256
+
257
+		private void shiftCB_SelectionChanged(object sender, SelectionChangedEventArgs e)
258
+		{
259
+			//var d = (DateTime)datePicker.SelectedDate;
260
+			if( commitBtn.IsEnabled == true)
261
+				commitData();
262
+			var d = (DateTime)datePicker.SelectedDate;
263
+			var shift = (shiftCB.SelectedItem as ComboBoxItem).Tag.ToString();
264
+			if (d.Date == DateTime.Now.Date && shift == _shift)
265
+			{
266
+				saveBtn.IsEnabled = true;
267
+				commitBtn.IsEnabled = true;
268
+			}
269
+			else
270
+			{
271
+				saveBtn.IsEnabled = false;
272
+				commitBtn.IsEnabled = false;
273
+			}
274
+			var from = (DateTime)datePicker.SelectedDate;
275
+
276
+			setGrid(from.Date, from.Date.AddDays(1), shift);
277
+		}
278
+
279
+		private void Window_Closed(object sender, EventArgs e)
280
+		{
281
+			if (commitBtn.IsEnabled == true)
282
+				commitData();
283
+		}
284
+
285
+		
286
+
287
+		
288
+
289
+		
290
+		
291
+		
292
+	}
293
+}

+ 17 - 0
WpfApplication19/DailyChecker.cs

@@ -0,0 +1,17 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+
6
+namespace WpfApplication19
7
+{
8
+	class DailyChecker
9
+	{
10
+		public string header { get; set; }
11
+		public double p1 {get; set; }
12
+		public double p2 { get; set; }
13
+		public double p3 { get; set; }
14
+		public double avg { get; set; }
15
+		public string result {get; set; }
16
+	}
17
+}

+ 8 - 0
WpfApplication19/Debug.xaml

@@ -0,0 +1,8 @@
1
+<Window x:Class="WpfApplication19.Debug"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="Debug" Height="300" Width="300" Name="debugWindow">
5
+    <Grid>
6
+        <TextBox Margin="12,12,0,0" Name="debugTextBox" TextWrapping="WrapWithOverflow" VerticalScrollBarVisibility="Auto" AcceptsReturn="True" />
7
+    </Grid>
8
+</Window>

+ 26 - 0
WpfApplication19/Debug.xaml.cs

@@ -0,0 +1,26 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+
14
+namespace WpfApplication19
15
+{
16
+    /// <summary>
17
+    /// Interaction logic for Debug.xaml
18
+    /// </summary>
19
+    public partial class Debug : Window
20
+    {
21
+        public Debug()
22
+        {
23
+            InitializeComponent();
24
+        }
25
+    }
26
+}

+ 11 - 0
WpfApplication19/EditINWindow.xaml

@@ -0,0 +1,11 @@
1
+<Window x:Class="WpfApplication19.EditINWindow"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="IN* Editor" Height="140" Width="447" ResizeMode="NoResize" WindowStyle="None" BorderThickness="2" BorderBrush="Red" WindowStartupLocation="CenterScreen">
5
+		<Grid Name="grid1">
6
+			<Button Content="Save" Height="23" HorizontalAlignment="Left" Margin="177,56,0,0" Name="saveBtn" VerticalAlignment="Top" Width="75" Click="saveBtn_Click" DataContext="{Binding}" />
7
+		<Label Content="Grain Size" Height="28" HorizontalAlignment="Left" Margin="25,10,0,0" Name="label1" VerticalAlignment="Top" FontWeight="Bold" FontSize="16" />
8
+		<TextBox Height="26" HorizontalAlignment="Left" Margin="116,12,0,0" Name="grainSizeInput" VerticalAlignment="Top" Width="249" FontSize="16" PreviewKeyDown="grainSizeInput_PreviewKeyDown" />
9
+	</Grid>
10
+	
11
+</Window>

+ 42 - 0
WpfApplication19/EditINWindow.xaml.cs

@@ -0,0 +1,42 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+
14
+namespace WpfApplication19
15
+{
16
+	/// <summary>
17
+	/// Interaction logic for EditINWindow.xaml
18
+	/// </summary>
19
+	public partial class EditINWindow : Window
20
+	{
21
+		public EditINWindow()
22
+		{
23
+			InitializeComponent();
24
+			var w = (MainWindow)Application.Current.MainWindow;
25
+			grainSizeInput.Text = w.inStarGS;
26
+		}
27
+
28
+		private void saveBtn_Click(object sender, RoutedEventArgs e)
29
+		{
30
+			var w = (MainWindow)Application.Current.MainWindow;
31
+			w.inStarGS = grainSizeInput.Text;
32
+			this.Close();
33
+		}
34
+
35
+		private void grainSizeInput_PreviewKeyDown(object sender, KeyEventArgs e)
36
+		{
37
+			if ((e.Key >= Key.D0 && e.Key <= Key.D9) || e.Key == Key.Next || e.Key == Key.Back || e.Key == Key.Delete || e.Key == Key.Left || e.Key == Key.Right)
38
+				e.Handled = false;
39
+			else e.Handled = true;
40
+		}
41
+	}
42
+}

+ 10 - 0
WpfApplication19/EditMIDWindow.xaml

@@ -0,0 +1,10 @@
1
+<Window x:Class="WpfApplication19.EditMIDWindow"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="MID Editor" Height="162" Width="436" WindowStartupLocation="CenterScreen" WindowStyle="None" BorderThickness="2" BorderBrush="Red">
5
+    <Grid>
6
+		<Label Content="Grain Size" Height="28" HorizontalAlignment="Left" Margin="35,32,0,0" Name="label1" VerticalAlignment="Top" FontWeight="Bold" FontSize="14" />
7
+		<TextBox Height="28" HorizontalAlignment="Left" Margin="116,34,0,0" Name="grainSizeInput" VerticalAlignment="Top" Width="227" FontSize="14" PreviewKeyDown="grainSizeInput_PreviewKeyDown" />
8
+		<Button Content="Save" Height="23" HorizontalAlignment="Left" Margin="170,78,0,0" Name="saveBtn" VerticalAlignment="Top" Width="75" Click="saveBtn_Click" />
9
+	</Grid>
10
+</Window>

+ 45 - 0
WpfApplication19/EditMIDWindow.xaml.cs

@@ -0,0 +1,45 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Shapes;
13
+
14
+namespace WpfApplication19
15
+{
16
+	/// <summary>
17
+	/// Interaction logic for EditMIDWindow.xaml
18
+	/// </summary>
19
+	public partial class EditMIDWindow : Window
20
+	{
21
+		public EditMIDWindow()
22
+		{
23
+			InitializeComponent();
24
+			var w = (MainWindow)Application.Current.MainWindow;
25
+			grainSizeInput.Text = w.midGS;
26
+		}
27
+
28
+		private void saveBtn_Click(object sender, RoutedEventArgs e)
29
+		{
30
+			var w = (MainWindow)Application.Current.MainWindow;
31
+			w.midGS = grainSizeInput.Text;
32
+			this.Close();
33
+		}
34
+
35
+		private void grainSizeInput_PreviewKeyDown(object sender, KeyEventArgs e)
36
+		{
37
+			if( (e.Key >= Key.D0 && e.Key <= Key.D9) || e.Key == Key.Next  || e.Key == Key.Back || e.Key == Key.Delete || e.Key == Key.Left || e.Key == Key.Right)
38
+				e.Handled = false;
39
+			else e.Handled = true;
40
+		}
41
+
42
+		
43
+		
44
+	}
45
+}

+ 18 - 0
WpfApplication19/EditUsingTime.xaml

@@ -0,0 +1,18 @@
1
+<Window x:Class="WpfApplication19.EditUsingTime"
2
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
+        Title="Edit Using Time" WindowStartupLocation="CenterScreen">
5
+	<Viewbox Stretch="Fill">
6
+    <Grid Width="400" Height="252">
7
+			<Label Content="OB" Height="39" HorizontalAlignment="Left" Margin="91,72,0,0" Name="label1" VerticalAlignment="Top" FontSize="22" />
8
+			<TextBox Height="28" HorizontalAlignment="Left" Margin="143,79,0,0" Name="obInput" VerticalAlignment="Top" Width="120" />
9
+			<TextBlock Height="44" HorizontalAlignment="Left" Margin="32,15,0,0" Name="textBlock1" Text="You can edit using time of any header by enter value in text box and click &quot;Save&quot;" VerticalAlignment="Top" TextWrapping="Wrap" TextAlignment="Center" Width="340" Foreground="#FF5A63DB" />
10
+			<Label Content="OC" FontSize="22" Height="39" HorizontalAlignment="Left" Margin="92,111,0,0" Name="label2" VerticalAlignment="Top" />
11
+			<TextBox Height="28" HorizontalAlignment="Left" Margin="143,118,0,0" Name="ocInput" VerticalAlignment="Top" Width="120" />
12
+			<Label Content="RH" FontSize="22" Height="39" HorizontalAlignment="Left" Margin="93,156,0,0" Name="label3" VerticalAlignment="Top" />
13
+			<TextBox Height="28" HorizontalAlignment="Left" Margin="143,163,0,0" Name="rhInput" VerticalAlignment="Top" Width="120" />
14
+			<Button Content="Save" Height="23" HorizontalAlignment="Left" Margin="306,212,0,0" Name="saveBtn" VerticalAlignment="Top" Width="75" Click="saveBtn_Click" />
15
+		</Grid>
16
+	</Viewbox>
17
+	
18
+</Window>

+ 125 - 0
WpfApplication19/EditUsingTime.xaml.cs

@@ -0,0 +1,125 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+using System.Windows.Controls;
7
+using System.Windows.Data;
8
+using System.Windows.Documents;
9
+using System.Windows.Input;
10
+using System.Windows.Media;
11
+using System.Windows.Media.Imaging;
12
+using System.Windows.Navigation;
13
+using System.Windows.Shapes;
14
+using System.Globalization;
15
+using WpfLocalization;
16
+using System.Threading;
17
+using System.Data.SqlClient;
18
+using System.Data;
19
+using System.Diagnostics;
20
+using System.IO;
21
+using System.Collections;
22
+using System.IO.Ports;
23
+using System.Collections.ObjectModel;
24
+using System.Reflection;
25
+using System.Configuration;
26
+using System.Collections.Specialized;
27
+using System.Data.SqlServerCe;
28
+using System.ComponentModel;
29
+using System.Windows.Threading;
30
+
31
+namespace WpfApplication19
32
+{
33
+	/// <summary>
34
+	/// Interaction logic for EditUsingTime.xaml
35
+	/// </summary>
36
+	public partial class EditUsingTime : Window
37
+	{
38
+		SqlCeConnection _opConn;
39
+		public EditUsingTime()
40
+		{
41
+			InitializeComponent();
42
+			initDatabase();
43
+			initUI();
44
+		}
45
+		void initDatabase()
46
+		{
47
+			try
48
+			{
49
+				_opConn = Utils.createSqlCeConnection("operatingDbCS");
50
+
51
+
52
+			}
53
+			catch (SqlCeException se)
54
+			{
55
+				MessageBox.Show("operatingDbCS : ", se.Message);
56
+			}
57
+		}
58
+		void initUI()
59
+		{
60
+			obInput.Text = getUsingTime("OB").ToString();
61
+			ocInput.Text = getUsingTime("OC").ToString();
62
+			rhInput.Text = getUsingTime("RH").ToString();
63
+		}
64
+		private int getUsingTime(string header)
65
+		{
66
+			var reader = Utils.Query(_opConn, "select * from UsingTime");
67
+			reader.Read();
68
+			int v = 0;
69
+			switch (header)
70
+			{
71
+				case "OB":
72
+					v = Convert.ToInt32(reader["ob"]);
73
+
74
+					break;
75
+				case "OC":
76
+					v = Convert.ToInt32(reader["oc"]);
77
+					break;
78
+				case "RH":
79
+					v = Convert.ToInt32(reader["rh"]);
80
+					break;
81
+				default:
82
+					MessageBox.Show("Bad Header Name");
83
+					break;
84
+			}
85
+			reader.Close();
86
+
87
+
88
+			return v;
89
+		}
90
+
91
+		private void saveBtn_Click(object sender, RoutedEventArgs e)
92
+		{
93
+			updateUsingTime("OB", Convert.ToInt32(obInput.Text));
94
+			updateUsingTime("OC", Convert.ToInt32(ocInput.Text));
95
+			updateUsingTime("RH", Convert.ToInt32(rhInput.Text));
96
+			//Application.Current.MainWindow.Show();
97
+			var w = (MainWindow)Application.Current.MainWindow;
98
+			w.refreshUsingTime();
99
+			Close();
100
+		}
101
+		private void updateUsingTime(string p, int n = -1)
102
+		{
103
+
104
+			switch (p)
105
+			{
106
+				case "OB":
107
+					Utils.Query(_opConn, "update UsingTime set ob = " + n);
108
+					break;
109
+				case "OC":
110
+
111
+
112
+					Utils.Query(_opConn, "update UsingTime set oc = " + n);
113
+					break;
114
+				case "RH":
115
+
116
+					Utils.Query(_opConn, "update UsingTime set rh = " + n);
117
+
118
+					break;
119
+				default:
120
+					MessageBox.Show("Header Name Error");
121
+					break;
122
+			}
123
+		}
124
+	}
125
+}

+ 579 - 0
WpfApplication19/EncDec.cs

@@ -0,0 +1,579 @@
1
+using System;
2
+using System.IO;
3
+using System.Security.Cryptography;
4
+
5
+namespace WpfApplication19
6
+{
7
+    // 
8
+
9
+
10
+    //    This sample code is provided "AS IS" with no warranties,
11
+
12
+    //    and confers no rights. 
13
+
14
+    // 
15
+
16
+    //    ATTENTION: This sample is designed to be more of a
17
+
18
+    //    tutorial rather than something you can copy and paste in
19
+
20
+    //    the production code! 
21
+
22
+    // 
23
+
24
+
25
+
26
+
27
+    
28
+
29
+    // 
30
+
31
+    // Sample encrypt/decrypt functions 
32
+
33
+    // Parameter checks and error handling
34
+
35
+    // are ommited for better readability 
36
+
37
+    // 
38
+
39
+
40
+    public class EncDec
41
+    {
42
+        // Encrypt a byte array into a byte array using a key and an IV 
43
+
44
+        public static byte[] Encrypt(byte[] clearData, byte[] Key, byte[] IV)
45
+        {
46
+            // Create a MemoryStream to accept the encrypted bytes 
47
+
48
+            MemoryStream ms = new MemoryStream();
49
+
50
+            // Create a symmetric algorithm. 
51
+
52
+            // We are going to use Rijndael because it is strong and
53
+
54
+            // available on all platforms. 
55
+
56
+            // You can use other algorithms, to do so substitute the
57
+
58
+            // next line with something like 
59
+
60
+            //      TripleDES alg = TripleDES.Create(); 
61
+
62
+            Rijndael alg = Rijndael.Create();
63
+
64
+            // Now set the key and the IV. 
65
+
66
+            // We need the IV (Initialization Vector) because
67
+
68
+            // the algorithm is operating in its default 
69
+
70
+            // mode called CBC (Cipher Block Chaining).
71
+
72
+            // The IV is XORed with the first block (8 byte) 
73
+
74
+            // of the data before it is encrypted, and then each
75
+
76
+            // encrypted block is XORed with the 
77
+
78
+            // following block of plaintext.
79
+
80
+            // This is done to make encryption more secure. 
81
+
82
+
83
+            // There is also a mode called ECB which does not need an IV,
84
+
85
+            // but it is much less secure. 
86
+
87
+            alg.Key = Key;
88
+            alg.IV = IV;
89
+
90
+            // Create a CryptoStream through which we are going to be
91
+
92
+            // pumping our data. 
93
+
94
+            // CryptoStreamMode.Write means that we are going to be
95
+
96
+            // writing data to the stream and the output will be written
97
+
98
+            // in the MemoryStream we have provided. 
99
+
100
+            CryptoStream cs = new CryptoStream(ms,
101
+               alg.CreateEncryptor(), CryptoStreamMode.Write);
102
+
103
+            // Write the data and make it do the encryption 
104
+
105
+            cs.Write(clearData, 0, clearData.Length);
106
+
107
+            // Close the crypto stream (or do FlushFinalBlock). 
108
+
109
+            // This will tell it that we have done our encryption and
110
+
111
+            // there is no more data coming in, 
112
+
113
+            // and it is now a good time to apply the padding and
114
+
115
+            // finalize the encryption process. 
116
+
117
+            cs.Close();
118
+
119
+            // Now get the encrypted data from the MemoryStream.
120
+
121
+            // Some people make a mistake of using GetBuffer() here,
122
+
123
+            // which is not the right way. 
124
+
125
+            byte[] encryptedData = ms.ToArray();
126
+
127
+            return encryptedData;
128
+        }
129
+
130
+        // Encrypt a string into a string using a password 
131
+
132
+        //    Uses Encrypt(byte[], byte[], byte[]) 
133
+
134
+
135
+        public static string Encrypt(string clearText, string Password)
136
+        {
137
+            // First we need to turn the input string into a byte array. 
138
+
139
+            byte[] clearBytes =
140
+              System.Text.Encoding.Unicode.GetBytes(clearText);
141
+
142
+            // Then, we need to turn the password into Key and IV 
143
+
144
+            // We are using salt to make it harder to guess our key
145
+
146
+            // using a dictionary attack - 
147
+
148
+            // trying to guess a password by enumerating all possible words. 
149
+
150
+            PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
151
+                new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 
152
+            0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
153
+
154
+            // Now get the key/IV and do the encryption using the
155
+
156
+            // function that accepts byte arrays. 
157
+
158
+            // Using PasswordDeriveBytes object we are first getting
159
+
160
+            // 32 bytes for the Key 
161
+
162
+            // (the default Rijndael key length is 256bit = 32bytes)
163
+
164
+            // and then 16 bytes for the IV. 
165
+
166
+            // IV should always be the block size, which is by default
167
+
168
+            // 16 bytes (128 bit) for Rijndael. 
169
+
170
+            // If you are using DES/TripleDES/RC2 the block size is
171
+
172
+            // 8 bytes and so should be the IV size. 
173
+
174
+            // You can also read KeySize/BlockSize properties off
175
+
176
+            // the algorithm to find out the sizes. 
177
+
178
+            byte[] encryptedData = Encrypt(clearBytes,
179
+                     pdb.GetBytes(32), pdb.GetBytes(16));
180
+
181
+            // Now we need to turn the resulting byte array into a string. 
182
+
183
+            // A common mistake would be to use an Encoding class for that.
184
+
185
+            //It does not work because not all byte values can be
186
+
187
+            // represented by characters. 
188
+
189
+            // We are going to be using Base64 encoding that is designed
190
+
191
+            //exactly for what we are trying to do. 
192
+
193
+            return Convert.ToBase64String(encryptedData);
194
+
195
+        }
196
+
197
+        // Encrypt bytes into bytes using a password 
198
+
199
+        //    Uses Encrypt(byte[], byte[], byte[]) 
200
+
201
+
202
+        public static byte[] Encrypt(byte[] clearData, string Password)
203
+        {
204
+            // We need to turn the password into Key and IV. 
205
+
206
+            // We are using salt to make it harder to guess our key
207
+
208
+            // using a dictionary attack - 
209
+
210
+            // trying to guess a password by enumerating all possible words. 
211
+
212
+            PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
213
+                new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 
214
+            0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
215
+
216
+            // Now get the key/IV and do the encryption using the function
217
+
218
+            // that accepts byte arrays. 
219
+
220
+            // Using PasswordDeriveBytes object we are first getting
221
+
222
+            // 32 bytes for the Key 
223
+
224
+            // (the default Rijndael key length is 256bit = 32bytes)
225
+
226
+            // and then 16 bytes for the IV. 
227
+
228
+            // IV should always be the block size, which is by default
229
+
230
+            // 16 bytes (128 bit) for Rijndael. 
231
+
232
+            // If you are using DES/TripleDES/RC2 the block size is 8
233
+
234
+            // bytes and so should be the IV size. 
235
+
236
+            // You can also read KeySize/BlockSize properties off the
237
+
238
+            // algorithm to find out the sizes. 
239
+
240
+            return Encrypt(clearData, pdb.GetBytes(32), pdb.GetBytes(16));
241
+
242
+        }
243
+
244
+        // Encrypt a file into another file using a password 
245
+
246
+        public static void Encrypt(string fileIn,
247
+                    string fileOut, string Password) 
248
+    { 
249
+
250
+        // First we are going to open the file streams 
251
+
252
+        FileStream fsIn = new FileStream(fileIn, 
253
+            FileMode.Open, FileAccess.Read); 
254
+        FileStream fsOut = new FileStream(fileOut, 
255
+            FileMode.OpenOrCreate, FileAccess.Write); 
256
+
257
+        // Then we are going to derive a Key and an IV from the
258
+
259
+        // Password and create an algorithm 
260
+
261
+        PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, 
262
+            new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 
263
+            0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76}); 
264
+
265
+        Rijndael alg = Rijndael.Create(); 
266
+        alg.Key = pdb.GetBytes(32); 
267
+        alg.IV = pdb.GetBytes(16); 
268
+
269
+        // Now create a crypto stream through which we are going
270
+
271
+        // to be pumping data. 
272
+
273
+        // Our fileOut is going to be receiving the encrypted bytes. 
274
+
275
+        CryptoStream cs = new CryptoStream(fsOut, 
276
+            alg.CreateEncryptor(), CryptoStreamMode.Write); 
277
+
278
+        // Now will will initialize a buffer and will be processing
279
+
280
+        // the input file in chunks. 
281
+
282
+        // This is done to avoid reading the whole file (which can
283
+
284
+        // be huge) into memory. 
285
+
286
+        int bufferLen = 4096; 
287
+        byte[] buffer = new byte[bufferLen]; 
288
+        int bytesRead; 
289
+
290
+        do { 
291
+            // read a chunk of data from the input file 
292
+
293
+            bytesRead = fsIn.Read(buffer, 0, bufferLen); 
294
+
295
+            // encrypt it 
296
+
297
+            cs.Write(buffer, 0, bytesRead); 
298
+        } while(bytesRead != 0); 
299
+
300
+        // close everything 
301
+
302
+
303
+        // this will also close the unrelying fsOut stream
304
+
305
+        cs.Close(); 
306
+        fsIn.Close();     
307
+    }
308
+
309
+        // Decrypt a byte array into a byte array using a key and an IV 
310
+
311
+        public static byte[] Decrypt(byte[] cipherData,
312
+                                    byte[] Key, byte[] IV)
313
+        {
314
+            // Create a MemoryStream that is going to accept the
315
+
316
+            // decrypted bytes 
317
+
318
+            MemoryStream ms = new MemoryStream();
319
+
320
+            // Create a symmetric algorithm. 
321
+
322
+            // We are going to use Rijndael because it is strong and
323
+
324
+            // available on all platforms. 
325
+
326
+            // You can use other algorithms, to do so substitute the next
327
+
328
+            // line with something like 
329
+
330
+            //     TripleDES alg = TripleDES.Create(); 
331
+
332
+            Rijndael alg = Rijndael.Create();
333
+
334
+            // Now set the key and the IV. 
335
+
336
+            // We need the IV (Initialization Vector) because the algorithm
337
+
338
+            // is operating in its default 
339
+
340
+            // mode called CBC (Cipher Block Chaining). The IV is XORed with
341
+
342
+            // the first block (8 byte) 
343
+
344
+            // of the data after it is decrypted, and then each decrypted
345
+
346
+            // block is XORed with the previous 
347
+
348
+            // cipher block. This is done to make encryption more secure. 
349
+
350
+            // There is also a mode called ECB which does not need an IV,
351
+
352
+            // but it is much less secure. 
353
+
354
+            alg.Key = Key;
355
+            alg.IV = IV;
356
+
357
+            // Create a CryptoStream through which we are going to be
358
+
359
+            // pumping our data. 
360
+
361
+            // CryptoStreamMode.Write means that we are going to be
362
+
363
+            // writing data to the stream 
364
+
365
+            // and the output will be written in the MemoryStream
366
+
367
+            // we have provided. 
368
+
369
+            CryptoStream cs = new CryptoStream(ms,
370
+                alg.CreateDecryptor(), CryptoStreamMode.Write);
371
+
372
+            // Write the data and make it do the decryption 
373
+
374
+            cs.Write(cipherData, 0, cipherData.Length);
375
+
376
+            // Close the crypto stream (or do FlushFinalBlock). 
377
+
378
+            // This will tell it that we have done our decryption
379
+
380
+            // and there is no more data coming in, 
381
+
382
+            // and it is now a good time to remove the padding
383
+
384
+            // and finalize the decryption process. 
385
+
386
+            cs.Close();
387
+
388
+            // Now get the decrypted data from the MemoryStream. 
389
+
390
+            // Some people make a mistake of using GetBuffer() here,
391
+
392
+            // which is not the right way. 
393
+
394
+            byte[] decryptedData = ms.ToArray();
395
+
396
+            return decryptedData;
397
+        }
398
+
399
+        // Decrypt a string into a string using a password 
400
+
401
+        //    Uses Decrypt(byte[], byte[], byte[]) 
402
+
403
+
404
+        public static string Decrypt(string cipherText, string Password)
405
+        {
406
+            // First we need to turn the input string into a byte array. 
407
+
408
+            // We presume that Base64 encoding was used 
409
+
410
+            byte[] cipherBytes = Convert.FromBase64String(cipherText);
411
+
412
+            // Then, we need to turn the password into Key and IV 
413
+
414
+            // We are using salt to make it harder to guess our key
415
+
416
+            // using a dictionary attack - 
417
+
418
+            // trying to guess a password by enumerating all possible words. 
419
+
420
+            PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
421
+                new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 
422
+            0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
423
+
424
+            // Now get the key/IV and do the decryption using
425
+
426
+            // the function that accepts byte arrays. 
427
+
428
+            // Using PasswordDeriveBytes object we are first
429
+
430
+            // getting 32 bytes for the Key 
431
+
432
+            // (the default Rijndael key length is 256bit = 32bytes)
433
+
434
+            // and then 16 bytes for the IV. 
435
+
436
+            // IV should always be the block size, which is by
437
+
438
+            // default 16 bytes (128 bit) for Rijndael. 
439
+
440
+            // If you are using DES/TripleDES/RC2 the block size is
441
+
442
+            // 8 bytes and so should be the IV size. 
443
+
444
+            // You can also read KeySize/BlockSize properties off
445
+
446
+            // the algorithm to find out the sizes. 
447
+
448
+            byte[] decryptedData = Decrypt(cipherBytes,
449
+                pdb.GetBytes(32), pdb.GetBytes(16));
450
+
451
+            // Now we need to turn the resulting byte array into a string. 
452
+
453
+            // A common mistake would be to use an Encoding class for that.
454
+
455
+            // It does not work 
456
+
457
+            // because not all byte values can be represented by characters. 
458
+
459
+            // We are going to be using Base64 encoding that is 
460
+
461
+            // designed exactly for what we are trying to do. 
462
+
463
+            return System.Text.Encoding.Unicode.GetString(decryptedData);
464
+        }
465
+
466
+        // Decrypt bytes into bytes using a password 
467
+
468
+        //    Uses Decrypt(byte[], byte[], byte[]) 
469
+
470
+
471
+        public static byte[] Decrypt(byte[] cipherData, string Password)
472
+        {
473
+            // We need to turn the password into Key and IV. 
474
+
475
+            // We are using salt to make it harder to guess our key
476
+
477
+            // using a dictionary attack - 
478
+
479
+            // trying to guess a password by enumerating all possible words. 
480
+
481
+            PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
482
+                new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 
483
+            0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
484
+
485
+            // Now get the key/IV and do the Decryption using the 
486
+
487
+            //function that accepts byte arrays. 
488
+
489
+            // Using PasswordDeriveBytes object we are first getting
490
+
491
+            // 32 bytes for the Key 
492
+
493
+            // (the default Rijndael key length is 256bit = 32bytes)
494
+
495
+            // and then 16 bytes for the IV. 
496
+
497
+            // IV should always be the block size, which is by default
498
+
499
+            // 16 bytes (128 bit) for Rijndael. 
500
+
501
+            // If you are using DES/TripleDES/RC2 the block size is
502
+
503
+            // 8 bytes and so should be the IV size. 
504
+
505
+
506
+            // You can also read KeySize/BlockSize properties off the
507
+
508
+            // algorithm to find out the sizes. 
509
+
510
+            return Decrypt(cipherData, pdb.GetBytes(32), pdb.GetBytes(16));
511
+        }
512
+
513
+        // Decrypt a file into another file using a password 
514
+
515
+        public static void Decrypt(string fileIn,
516
+                    string fileOut, string Password) 
517
+    { 
518
+    
519
+        // First we are going to open the file streams 
520
+
521
+        FileStream fsIn = new FileStream(fileIn,
522
+                    FileMode.Open, FileAccess.Read); 
523
+        FileStream fsOut = new FileStream(fileOut,
524
+                    FileMode.OpenOrCreate, FileAccess.Write); 
525
+  
526
+        // Then we are going to derive a Key and an IV from
527
+
528
+        // the Password and create an algorithm 
529
+
530
+        PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, 
531
+            new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 
532
+            0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76}); 
533
+        Rijndael alg = Rijndael.Create(); 
534
+
535
+        alg.Key = pdb.GetBytes(32); 
536
+        alg.IV = pdb.GetBytes(16); 
537
+
538
+        // Now create a crypto stream through which we are going
539
+
540
+        // to be pumping data. 
541
+
542
+        // Our fileOut is going to be receiving the Decrypted bytes. 
543
+
544
+        CryptoStream cs = new CryptoStream(fsOut, 
545
+            alg.CreateDecryptor(), CryptoStreamMode.Write); 
546
+  
547
+        // Now will will initialize a buffer and will be 
548
+
549
+        // processing the input file in chunks. 
550
+
551
+        // This is done to avoid reading the whole file (which can be
552
+
553
+        // huge) into memory. 
554
+
555
+        int bufferLen = 4096;
556
+        byte[] buffer = new byte[bufferLen];
557
+        int bytesRead; 
558
+
559
+        do { 
560
+            // read a chunk of data from the input file 
561
+
562
+            bytesRead = fsIn.Read(buffer, 0, bufferLen); 
563
+
564
+            // Decrypt it 
565
+
566
+            cs.Write(buffer, 0, bytesRead); 
567
+
568
+        } while(bytesRead != 0); 
569
+
570
+        // close everything 
571
+
572
+        cs.Close(); // this will also close the unrelying fsOut stream 
573
+
574
+        fsIn.Close();     
575
+        }
576
+    }
577
+
578
+
579
+}

+ 12 - 0
WpfApplication19/GlobalVars.cs

@@ -0,0 +1,12 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+
6
+namespace WpfApplication19
7
+{
8
+    public static class GlobalVars
9
+    {
10
+        public static User user { get; set; }
11
+    }
12
+}

BIN
WpfApplication19/Images/Actions-file-save-as-icon.png


+ 0 - 0
WpfApplication19/Images/Delete.png


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

tum/tmt_learning - Gogs: Simplico Git Service

Aucune description

Prach Pongpanich 6f337d0a21 install tailwind alpine daisyui il y a 2 ans
..
LICENSE 6f337d0a21 install tailwind alpine daisyui il y a 2 ans
README.md 6f337d0a21 install tailwind alpine daisyui il y a 2 ans
minimatch.js 6f337d0a21 install tailwind alpine daisyui il y a 2 ans
package.json 6f337d0a21 install tailwind alpine daisyui il y a 2 ans

README.md

minimatch

A minimal matching utility.

Build Status

This is the matching library used internally by npm.

It works by converting glob expressions into JavaScript RegExp objects.

Usage

var minimatch = require("minimatch")

minimatch("bar.foo", "*.foo") // true!
minimatch("bar.foo", "*.bar") // false!
minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy!

Features

Supports these glob features:

  • Brace Expansion
  • Extended glob matching
  • "Globstar" ** matching

See:

  • man sh
  • man bash
  • man 3 fnmatch
  • man 5 gitignore

Minimatch Class

Create a minimatch object by instantiating the minimatch.Minimatch class.

var Minimatch = require("minimatch").Minimatch
var mm = new Minimatch(pattern, options)

Properties

  • pattern The original pattern the minimatch object represents.
  • options The options supplied to the constructor.
  • set A 2-dimensional array of regexp or string expressions. Each row in the array corresponds to a brace-expanded pattern. Each item in the row corresponds to a single path-part. For example, the pattern {a,b/c}/d would expand to a set of patterns like:

    [ [ a, d ]
    , [ b, c, d ] ]
    

    If a portion of the pattern doesn't have any "magic" in it (that is, it's something like "foo" rather than fo*o?), then it will be left as a string rather than converted to a regular expression.

  • regexp Created by the makeRe method. A single regular expression expressing the entire pattern. This is useful in cases where you wish to use the pattern somewhat like fnmatch(3) with FNM_PATH enabled.

  • negate True if the pattern is negated.

  • comment True if the pattern is a comment.

  • empty True if the pattern is "".

Methods

  • makeRe Generate the regexp member if necessary, and return it. Will return false if the pattern is invalid.
  • match(fname) Return true if the filename matches the pattern, or false otherwise.
  • matchOne(fileArray, patternArray, partial) Take a /-split filename, and match it against a single row in the regExpSet. This method is mainly for internal use, but is exposed so that it can be used by a glob-walker that needs to avoid excessive filesystem calls.

All other methods are internal, and will be called as necessary.

minimatch(path, pattern, options)

Main export. Tests a path against the pattern using the options.

var isJS = minimatch(file, "*.js", { matchBase: true })

minimatch.filter(pattern, options)

Returns a function that tests its supplied argument, suitable for use with Array.filter. Example:

var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true}))

minimatch.match(list, pattern, options)

Match against the list of files, in the style of fnmatch or glob. If nothing is matched, and options.nonull is set, then return a list containing the pattern itself.

var javascripts = minimatch.match(fileList, "*.js", {matchBase: true}))

minimatch.makeRe(pattern, options)

Make a regular expression object from the pattern.

Options

All options are false by default.

debug

Dump a ton of stuff to stderr.

nobrace

Do not expand {a,b} and {1..3} brace sets.

noglobstar

Disable ** matching against multiple folder names.

dot

Allow patterns to match filenames starting with a period, even if the pattern does not explicitly have a period in that spot.

Note that by default, a/**/b will not match a/.d/b, unless dot is set.

noext

Disable "extglob" style patterns like +(a|b).

nocase

Perform a case-insensitive match.

nonull

When a match is not found by minimatch.match, return a list containing the pattern itself if this option is set. When not set, an empty list is returned if there are no matches.

matchBase

If set, then patterns without slashes will be matched against the basename of the path if it contains slashes. For example, a?b would match the path /xyz/123/acb, but not /xyz/acb/123.

nocomment

Suppress the behavior of treating # at the start of a pattern as a comment.

nonegate

Suppress the behavior of treating a leading ! character as negation.

flipNegate

Returns from negate expressions the same as if they were not negated. (Ie, true on a hit, false on a miss.)

partial

Compare a partial path to a pattern. As long as the parts of the path that are present are not contradicted by the pattern, it will be treated as a match. This is useful in applications where you're walking through a folder structure, and don't yet have the full path, but want to ensure that you do not walk down paths that can never be a match.

For example,

minimatch('/a/b', '/a/*/c/d', { partial: true })  // true, might be /a/b/c/d
minimatch('/a/b', '/**/d', { partial: true })     // true, might be /a/b/.../d
minimatch('/x/y/z', '/a/**/z', { partial: true }) // false, because x !== a

allowWindowsEscape

Windows path separator \ is by default converted to /, which prohibits the usage of \ as a escape character. This flag skips that behavior and allows using the escape character.

Comparisons to other fnmatch/glob implementations

While strict compliance with the existing standards is a worthwhile goal, some discrepancies exist between minimatch and other implementations, and are intentional.

If the pattern starts with a ! character, then it is negated. Set the nonegate flag to suppress this behavior, and treat leading ! characters normally. This is perhaps relevant if you wish to start the pattern with a negative extglob pattern like !(a|B). Multiple ! characters at the start of a pattern will negate the pattern multiple times.

If a pattern starts with #, then it is treated as a comment, and will not match anything. Use \# to match a literal # at the start of a line, or set the nocomment flag to suppress this behavior.

The double-star character ** is supported by default, unless the noglobstar flag is set. This is supported in the manner of bsdglob and bash 4.1, where ** only has special significance if it is the only thing in a path part. That is, a/**/b will match a/x/y/b, but a/**b will not.

If an escaped pattern has no matches, and the nonull flag is set, then minimatch.match returns the pattern as-provided, rather than interpreting the character escapes. For example, minimatch.match([], "\\*a\\?") will return "\\*a\\?" rather than "*a?". This is akin to setting the nullglob option in bash, except that it does not resolve escaped pattern characters.

If brace expansion is not disabled, then it is performed before any other interpretation of the glob pattern. Thus, a pattern like +(a|{b),c)}, which would not be valid in bash or zsh, is expanded first into the set of +(a|b) and +(a|c), and those patterns are checked for validity. Since those two are valid, matching proceeds.