arguments.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  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. /**
  20. * \return The argument after the first one of the given flags or the given default value.
  21. *
  22. * \param args Array of strings (program arguments)
  23. * \param shortFlag E.g. "-o"
  24. * \param longFlag E.g. "-output"
  25. */
  26. function getArgument(args, shortFlag, longFlag, def) {
  27. // make sure undefined can be returned as default:
  28. if (def===undefined) {
  29. var ret = getArguments(args, shortFlag, longFlag);
  30. if (ret.length===0) {
  31. return def;
  32. }
  33. return RSettings.getArgument(args, shortFlag, longFlag);
  34. }
  35. return RSettings.getArgument(args, shortFlag, longFlag, def);
  36. }
  37. /**
  38. * \return Array of all arguments after the given flags or an empty array.
  39. *
  40. * \param args Array of strings (program arguments)
  41. * \param shortFlag E.g. "-o"
  42. * \param longFlag E.g. "-output"
  43. */
  44. function getArguments(args, shortFlag, longFlag) {
  45. return RSettings.getArguments(args, shortFlag, longFlag);
  46. // var ret = [];
  47. // for (var k=0; k<args.length; k++) {
  48. // if (args[k]===shortFlag) {
  49. // if (k+1 < args.length) {
  50. // ret.push(args[k+1]);
  51. // }
  52. // }
  53. // if (args[k].indexOf(longFlag+"=")===0) {
  54. // var j=args[k].indexOf("=");
  55. // ret.push(args[k].substr(j+1));
  56. // }
  57. // }
  58. // return ret;
  59. }
  60. function getIntArgument(args, shortFlag, longFlag, def) {
  61. // make sure undefined can be returned as default:
  62. if (def===undefined) {
  63. var ret = getArgument(args, shortFlag, longFlag);
  64. if (ret===undefined) {
  65. return def;
  66. }
  67. return RSettings.getIntArgument(args, shortFlag, longFlag, -1);
  68. }
  69. return RSettings.getIntArgument(args, shortFlag, longFlag, def);
  70. }
  71. function getIntListArgument(args, shortFlag, longFlag, def) {
  72. // make sure undefined can be returned as default:
  73. if (def===undefined) {
  74. var ret = RSettings.getIntListArgument(args, shortFlag, longFlag, []);
  75. if (ret.length===0) {
  76. return def;
  77. }
  78. return ret;
  79. }
  80. return RSettings.getIntListArgument(args, shortFlag, longFlag, def);
  81. // var arg = getArgument(args, shortFlag, longFlag);
  82. // if (arg===undefined) {
  83. // return def;
  84. // }
  85. // var ret = [];
  86. // var tokens = arg.split(",");
  87. // var singleInt = false;
  88. // if (tokens.length===1) {
  89. // singleInt = true;
  90. // }
  91. // for (var i=0; i<tokens.length; i++) {
  92. // var token = tokens[i];
  93. // var range = token.split("-");
  94. // var start, stop;
  95. // if (range.length===1) {
  96. // start = singleInt ? 0 : parseInt(range[0]);
  97. // stop = parseInt(range[0]);
  98. // }
  99. // else if (range.length===2) {
  100. // start = parseInt(range[0]);
  101. // stop = parseInt(range[1]);
  102. // }
  103. // else {
  104. // qWarning("invalid token in list: ", token);
  105. // continue;
  106. // }
  107. // for (var k=start; k<=stop; k++) {
  108. // ret.push(k);
  109. // }
  110. // }
  111. // return ret;
  112. }
  113. function getFloatArgument(args, shortFlag, longFlag, def) {
  114. // make sure undefined can be returned as default:
  115. if (def===undefined) {
  116. var ret = getArgument(args, shortFlag, longFlag);
  117. if (ret===undefined) {
  118. return def;
  119. }
  120. return RSettings.getFloatArgument(args, shortFlag, longFlag);
  121. }
  122. return RSettings.getFloatArgument(args, shortFlag, longFlag, def);
  123. }
  124. function getColorArgument(args, shortFlag, longFlag, def) {
  125. // make sure undefined can be returned as default:
  126. if (def===undefined) {
  127. var ret = getArgument(args, shortFlag, longFlag);
  128. if (ret===undefined) {
  129. return def;
  130. }
  131. return RSettings.getColorArgument(args, shortFlag, longFlag);
  132. }
  133. return RSettings.getColorArgument(args, shortFlag, longFlag, def);
  134. }
  135. function getVectorArgument(args, shortFlag, longFlag, def) {
  136. // make sure undefined can be returned as default:
  137. if (def===undefined) {
  138. var ret = getArgument(args, shortFlag, longFlag);
  139. if (ret===undefined) {
  140. return def;
  141. }
  142. return RSettings.getVectorArgument(args, shortFlag, longFlag);
  143. }
  144. return RSettings.getVectorArgument(args, shortFlag, longFlag, def);
  145. }
  146. function getBoxArgument(args, shortFlag, longFlag, def) {
  147. // make sure undefined can be returned as default:
  148. if (def===undefined) {
  149. var ret = getArgument(args, shortFlag, longFlag);
  150. if (ret===undefined) {
  151. return def;
  152. }
  153. return RSettings.getBoxArgument(args, shortFlag, longFlag);
  154. }
  155. return RSettings.getBoxArgument(args, shortFlag, longFlag, def);
  156. // var parts = ret.split(',');
  157. // if (parts.length!==4) {
  158. // return def;
  159. // }
  160. // for (var i=0; i<parts.length; i++) {
  161. // parts[i] = parseFloat(parts[i]);
  162. // }
  163. // return new RBox(new RVector(parts[0], parts[1]), new RVector(parts[0] + parts[2], parts[1] + parts[3]));
  164. }
  165. /**
  166. * \return True if the given arguments contain one of the given flags.
  167. */
  168. function testArgument(args, shortFlag, longFlag) {
  169. return RSettings.testArgument(args, shortFlag, longFlag);
  170. // if (shortFlag!=="" && args.indexOf(shortFlag)!==-1) {
  171. // return true;
  172. // }
  173. // if (longFlag!=="") {
  174. // if (args.indexOf(longFlag)!==-1) {
  175. // return true;
  176. // }
  177. // for (var k=0; k<args.length; k++) {
  178. // if (args[k].indexOf(longFlag+"=")===0) {
  179. // return true;
  180. // }
  181. // }
  182. // }
  183. // return false;
  184. }
  185. function printArgument(name, prop) {
  186. var spc = "";
  187. if (name.length<32) {
  188. spc = new Array(32 - name.length).join(" ");
  189. }
  190. print(" ", name, spc, ":", prop);
  191. }
  192. function printGenericUsage() {
  193. if (RS.getSystemId()==="osx") {
  194. print();
  195. print("macOS specific options:\n");
  196. print(" -no-dock-icon Don't show icon in dock. This should only be used\n"
  197. + " in combination with -no-gui." );
  198. }
  199. if (RS.getSystemId()==="linux") {
  200. print();
  201. print("Qt/X11 platform arguments:");
  202. print();
  203. print(" -platform offscreen Run without requiring an X11 server or display.");
  204. print(" Use this argument to run this command line tool in a ");
  205. print(" Linux server environment.");
  206. print();
  207. print("Qt/X11 environment variables:");
  208. print();
  209. print(" QT_QPA_FONTDIR Set to fonts directory in a server environment, e.g. 'fonts/qt'.");
  210. }
  211. }