UnitSettings.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /**
  2. * Copyright (c) 2011-2018 by Andrew Mustun. All rights reserved.
  3. *
  4. * This file is part of the QCAD project.
  5. *
  6. * QCAD is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * QCAD is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with QCAD.
  18. */
  19. include("scripts/Edit/DrawingPreferences/DimensionSettings/DimensionSettings.js");
  20. function UnitSettings() {
  21. }
  22. UnitSettings.getPreferencesCategory = function(appPreferences) {
  23. if (appPreferences) {
  24. return [ qsTr("Defaults for New Drawings"), qsTr("Drawing Unit") ];
  25. }
  26. return [ qsTr("General"), qsTr("Drawing Unit") ];
  27. };
  28. UnitSettings.initPreferences = function(pageWidget, calledByPrefDialog, document, preferencesAction) {
  29. var measurementCombo = pageWidget.findChild("Measurement");
  30. UnitSettings.initMeasurementCombo(measurementCombo);
  31. var unitCombo = pageWidget.findChild("Unit");
  32. UnitSettings.initUnitCombo(unitCombo);
  33. // if the global unit / drawing unit changes in the preferences dialog,
  34. // other plugins are notified to update their widgets accordingly
  35. // if necessary:
  36. unitCombo["activated(int)"].connect(function(u) {
  37. preferencesAction.unitUpdated(u);
  38. // change dimension format if necessary:
  39. if (!isNull(document)) {
  40. var linearFormat = document.getLinearFormat();
  41. if ((u!==RS.Inch && u!==RS.Foot) &&
  42. (linearFormat===RS.ArchitecturalStacked || linearFormat===RS.Engineering)) {
  43. document.setLinearFormat(RS.Decimal);
  44. DimensionSettings.showLinearFormatWarning();
  45. }
  46. }
  47. });
  48. var paperUnitCombo = pageWidget.findChild("PaperUnit");
  49. UnitSettings.initUnitCombo(paperUnitCombo);
  50. paperUnitCombo["activated(int)"].connect(function(u) {
  51. preferencesAction.paperUnitUpdated(u);
  52. });
  53. if (!isNull(document)) {
  54. var i = measurementCombo.findData(document.getMeasurement());
  55. if (i!=-1) {
  56. measurementCombo.currentIndex = i;
  57. }
  58. measurementCombo.setProperty("Loaded", true);
  59. i = unitCombo.findData(document.getUnit());
  60. if (i!=-1) {
  61. unitCombo.currentIndex = i;
  62. }
  63. unitCombo.setProperty("Loaded", true);
  64. i = paperUnitCombo.findData(document.getVariable("UnitSettings/PaperUnit", RS.Millimeter));
  65. if (i!=-1) {
  66. paperUnitCombo.currentIndex = i;
  67. }
  68. paperUnitCombo.setProperty("Loaded", true);
  69. }
  70. };
  71. UnitSettings.savePreferences = function(pageWidget, calledByPrefDialog, document, transaction) {
  72. if (isNull(document)) {
  73. return;
  74. }
  75. var measurementCombo = pageWidget.findChild("Measurement");
  76. document.setMeasurement(measurementCombo.itemData(measurementCombo.currentIndex), transaction);
  77. var unitCombo = pageWidget.findChild("Unit");
  78. document.setUnit(unitCombo.itemData(unitCombo.currentIndex), transaction);
  79. unitCombo.setProperty("Saved", true);
  80. };
  81. UnitSettings.initUnitCombo = function(unitCombo) {
  82. // available units in DXF/DWG
  83. // int values correspond to unit codes from DXF spec
  84. unitCombo.clear();
  85. unitCombo.addItem(qsTr("None"), RS.None);
  86. unitCombo.addItem(qsTr("Inch"), RS.Inch);
  87. unitCombo.addItem(qsTr("Foot"), RS.Foot);
  88. unitCombo.addItem(qsTr("Mile"), RS.Mile);
  89. unitCombo.addItem(qsTr("Millimeter"), RS.Millimeter);
  90. unitCombo.addItem(qsTr("Centimeter"), RS.Centimeter);
  91. unitCombo.addItem(qsTr("Meter"), RS.Meter);
  92. unitCombo.addItem(qsTr("Kilometer"), RS.Kilometer);
  93. unitCombo.addItem(qsTr("Microinch"), RS.Microinch);
  94. unitCombo.addItem(qsTr("Mil"), RS.Mil);
  95. unitCombo.addItem(qsTr("Yard"), RS.Yard);
  96. unitCombo.addItem(qsTr("Angstrom"), RS.Angstrom);
  97. unitCombo.addItem(qsTr("Nanometer"), RS.Nanometer);
  98. unitCombo.addItem(qsTr("Micron"), RS.Micron);
  99. unitCombo.addItem(qsTr("Decimeter"), RS.Decimeter);
  100. unitCombo.addItem(qsTr("Decameter"), RS.Decameter);
  101. unitCombo.addItem(qsTr("Hectometer"), RS.Hectometer);
  102. unitCombo.addItem(qsTr("Gigameter"), RS.Gigameter);
  103. unitCombo.addItem(qsTr("Astro"), RS.Astro);
  104. unitCombo.addItem(qsTr("Lightyear"), RS.Lightyear);
  105. unitCombo.addItem(qsTr("Parsec"), RS.Parsec);
  106. //unitCombo.addItem(qsTr("Plu"), RS.Plu);
  107. };
  108. UnitSettings.initMeasurementCombo = function(measurementCombo) {
  109. measurementCombo.clear();
  110. measurementCombo.addItem(qsTr("Imperial"), RS.Imperial);
  111. measurementCombo.addItem(qsTr("Metric"), RS.Metric);
  112. };