urm_straightline.dart 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import 'package:fis_measure/interfaces/enums/items.dart';
  2. import 'package:fis_measure/interfaces/process/items/item.dart';
  3. import 'package:fis_measure/interfaces/process/items/item_metas.dart';
  4. import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
  5. import 'package:fis_measure/process/calcuators/urm.dart';
  6. import 'package:fis_measure/process/primitives/straightline.dart';
  7. import 'package:fis_measure/utils/prompt_box.dart';
  8. class URMStraightLine extends StraightLine {
  9. URMStraightLine(ItemMeta meta, IMeasureItem? parent) : super(meta, parent);
  10. static URMStraightLine createURMStraightline(ItemMeta meta,
  11. [IMeasureItem? parent]) {
  12. URMStraightLine sraightLine = URMStraightLine(meta, parent);
  13. sraightLine.repeatableEditable = true;
  14. sraightLine.calculator = URMStraightLineCal(sraightLine, type: meta.name);
  15. return sraightLine;
  16. }
  17. @override
  18. bool onExecuteMouse(PointInfo args) {
  19. if (waitingResult) return false;
  20. if (state == ItemStates.finished) {
  21. if (args.pointType == PointInfoType.mouseDown) {
  22. state = ItemStates.waiting;
  23. } else {
  24. return false;
  25. }
  26. }
  27. if (state == ItemStates.waiting) {
  28. if (args.pointType == PointInfoType.mouseDown) {
  29. handleMouseDownWhileWaiting(args);
  30. }
  31. } else if (state == ItemStates.running) {
  32. if (args.pointType == PointInfoType.mouseUp) return false;
  33. feature?.endPoint = args;
  34. if (args.pointType == PointInfoType.mouseDown) {
  35. handleFinish();
  36. /// 重置十字样式
  37. // changeCrossIndicatorStyle(CrossIndicatorStyle.nomal);
  38. }
  39. }
  40. return true;
  41. }
  42. bool waitingResult = false;
  43. void handleFinish() async {
  44. feature!.isActive = false;
  45. PromptBox.loading("分析中...");
  46. waitingResult = true;
  47. await doCalculateAsync();
  48. doFeatureFinish();
  49. PromptBox.dismiss();
  50. waitingResult = false;
  51. }
  52. }