@qooxdoo/framework 7.5.0 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/Manifest.json +169 -44
  2. package/bin/deploy/qx +7 -5
  3. package/lib/compiler/compile-info.json +70 -62
  4. package/lib/compiler/index.js +3809 -2695
  5. package/lib/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +7 -7
  6. package/lib/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +10 -10
  7. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +6 -6
  8. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +9 -9
  9. package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +5 -5
  10. package/lib/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +7 -7
  11. package/lib/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +10 -10
  12. package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js +6 -6
  13. package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +12 -12
  14. package/lib/resource/qx/tool/schema/Manifest-1-0-0.json +79 -26
  15. package/lib/resource/qx/tool/schema/Manifest-2-0-0.json +17 -26
  16. package/lib/resource/qx/tool/schema/compile-1-0-0.json +40 -53
  17. package/lib/resource/qx/tool/website/src/about.md +1 -1
  18. package/package.json +3 -3
  19. package/source/class/qx/bom/Font.js +36 -0
  20. package/source/class/qx/bom/webfonts/Validator.js +31 -6
  21. package/source/class/qx/bom/webfonts/WebFont.js +60 -64
  22. package/source/class/qx/bom/webfonts/WebFontLoader.js +461 -0
  23. package/source/class/qx/core/Object.js +1 -1
  24. package/source/class/qx/data/Array.js +27 -0
  25. package/source/class/qx/dev/FakeServer.js +1 -1
  26. package/source/class/qx/event/handler/Focus.js +2 -1
  27. package/source/class/qx/event/handler/GestureCore.js +1 -1
  28. package/source/class/qx/test/bom/webfonts/Validator.js +0 -6
  29. package/source/class/qx/test/core/Environment.js +8 -8
  30. package/source/class/qx/test/core/Validation.js +2 -2
  31. package/source/class/qx/test/dev/unit/Requirements.js +6 -6
  32. package/source/class/qx/test/io/transport/Websocket.js +1 -1
  33. package/source/class/qx/test/ui/basic/Image.js +3 -3
  34. package/source/class/qx/test/ui/basic/Label.js +0 -65
  35. package/source/class/qx/test/ui/form/Field.js +56 -52
  36. package/source/class/qx/theme/IndigoDark.js +1 -1
  37. package/source/class/qx/theme/classic/Font.js +7 -23
  38. package/source/class/qx/theme/iconfont/LoadMaterialIcons.js +2 -4
  39. package/source/class/qx/theme/iconfont/LoadMaterialIconsOutlined.js +2 -4
  40. package/source/class/qx/theme/iconfont/LoadMaterialIconsRound.js +2 -4
  41. package/source/class/qx/theme/iconfont/LoadMaterialIconsSharp.js +2 -4
  42. package/source/class/qx/theme/iconfont/LoadMaterialIconsTwoTone.js +2 -4
  43. package/source/class/qx/theme/indigo/DecorationDark.js +30 -0
  44. package/source/class/qx/theme/indigo/Font.js +8 -15
  45. package/source/class/qx/theme/manager/Font.js +151 -38
  46. package/source/class/qx/theme/modern/Font.js +1 -0
  47. package/source/class/qx/theme/simple/Font.js +3 -1
  48. package/source/class/qx/theme/tangible/Appearance.js +1 -0
  49. package/source/class/qx/theme/tangible/Font.js +9 -62
  50. package/source/class/qx/theme/tangible/Image.js +1 -4
  51. package/source/class/qx/tool/cli/Application.js +4 -1
  52. package/source/class/qx/tool/cli/Cli.js +34 -23
  53. package/source/class/qx/tool/cli/Watch.js +8 -6
  54. package/source/class/qx/tool/cli/api/CompilerApi.js +8 -0
  55. package/source/class/qx/tool/cli/commands/Add.js +1 -1
  56. package/source/class/qx/tool/cli/commands/Compile.js +24 -1
  57. package/source/class/qx/tool/cli/commands/Config.js +16 -141
  58. package/source/class/qx/tool/cli/commands/ExportGlyphs.js +134 -0
  59. package/source/class/qx/tool/cli/commands/Lint.js +1 -1
  60. package/source/class/qx/tool/cli/commands/Package.js +3 -0
  61. package/source/class/qx/tool/cli/commands/Pkg.js +1 -1
  62. package/source/class/qx/tool/cli/commands/Run.js +6 -7
  63. package/source/class/qx/tool/cli/commands/Serve.js +29 -36
  64. package/source/class/qx/tool/cli/commands/Test.js +3 -2
  65. package/source/class/qx/tool/cli/commands/add/Script.js +3 -1
  66. package/source/class/qx/tool/cli/commands/config/Delete.js +47 -0
  67. package/source/class/qx/tool/cli/commands/config/Get.js +52 -0
  68. package/source/class/qx/tool/cli/commands/config/List.js +81 -0
  69. package/source/class/qx/tool/cli/commands/config/Set.js +61 -0
  70. package/source/class/qx/tool/cli/commands/package/Install.js +3 -0
  71. package/source/class/qx/tool/cli/commands/package/Update.js +3 -3
  72. package/source/class/qx/tool/compiler/Analyser.js +45 -0
  73. package/source/class/qx/tool/compiler/ClassFile.js +43 -1
  74. package/source/class/qx/tool/compiler/Console.js +6 -1
  75. package/source/class/qx/tool/compiler/app/Application.js +19 -0
  76. package/source/class/qx/tool/compiler/app/Cldr.js +63 -26
  77. package/source/class/qx/tool/compiler/app/Library.js +51 -2
  78. package/source/class/qx/tool/compiler/app/ManifestFont.js +181 -0
  79. package/source/class/qx/tool/compiler/app/WebFont.js +144 -234
  80. package/source/class/qx/tool/compiler/makers/AppMaker.js +13 -0
  81. package/source/class/qx/tool/compiler/resources/ImageLoader.js +22 -12
  82. package/source/class/qx/tool/compiler/resources/Manager.js +2 -2
  83. package/source/class/qx/tool/compiler/resources/MetaLoader.js +7 -2
  84. package/source/class/qx/tool/compiler/resources/ResourceLoader.js +21 -0
  85. package/source/class/qx/tool/compiler/targets/Target.js +186 -67
  86. package/source/class/qx/tool/migration/M7_5_6.js +75 -0
  87. package/source/class/qx/tool/utils/Http.js +69 -0
  88. package/source/class/qx/ui/basic/Image.js +6 -2
  89. package/source/class/qx/ui/basic/Label.js +20 -38
  90. package/source/class/qx/ui/core/Widget.js +13 -42
  91. package/source/class/qx/ui/form/AbstractField.js +8 -2
  92. package/source/class/qx/ui/form/FileSelectorButton.js +5 -0
  93. package/source/class/qx/ui/table/pane/FocusIndicator.js +5 -4
  94. package/source/class/qx/ui/table/pane/Pane.js +14 -0
  95. package/source/class/qx/ui/table/pane/Scroller.js +3 -3
  96. package/source/class/qx/ui/virtual/core/Scroller.js +8 -2
  97. package/source/class/qx/ui/window/Window.js +9 -8
  98. package/source/resource/qx/iconfont/MaterialIcons/materialicons.json +10912 -0
  99. package/source/resource/qx/iconfont/MaterialIcons/materialiconsoutlined.json +10967 -0
  100. package/source/resource/qx/iconfont/MaterialIcons/materialiconsround.json +10992 -0
  101. package/source/resource/qx/iconfont/MaterialIcons/materialiconssharp.json +10992 -0
  102. package/source/resource/qx/iconfont/MaterialIcons/materialiconstwotone.json +9947 -0
  103. package/source/resource/qx/iconfont/MaterialIcons/x.json +10967 -0
  104. package/source/resource/qx/iconfont/export-glyphs.sh +22 -0
  105. package/source/resource/qx/mobile/scss/common/_gradients.scss +1 -1
  106. package/source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +7 -7
  107. package/source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +10 -10
  108. package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +6 -6
  109. package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +9 -9
  110. package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +5 -5
  111. package/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +7 -7
  112. package/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +10 -10
  113. package/source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js +6 -6
  114. package/source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +12 -12
  115. package/source/resource/qx/tool/schema/Manifest-1-0-0.json +79 -26
  116. package/source/resource/qx/tool/schema/Manifest-2-0-0.json +17 -26
  117. package/source/resource/qx/tool/schema/compile-1-0-0.json +40 -53
  118. package/source/resource/qx/tool/website/src/about.md +1 -1
  119. package/source/class/qx/bom/webfonts/Manager.js +0 -652
  120. package/source/class/qx/test/bom/webfonts/Manager.js +0 -238
@@ -28,15 +28,15 @@ qx.Class.define("${namespace}.Application",
28
28
  members :
29
29
  {
30
30
  /**
31
- * This method contains the initial application code and gets called
31
+ * This method contains the initial application code and gets called
32
32
  * during startup of the application
33
- *
33
+ *
34
34
  * @lint ignoreDeprecated(alert)
35
35
  */
36
- main : function()
36
+ main()
37
37
  {
38
38
  // Call super class
39
- this.base(arguments);
39
+ super.main();
40
40
 
41
41
  // Enable logging in debug variant
42
42
  if (qx.core.Environment.get("qx.debug"))
@@ -54,10 +54,10 @@ qx.Class.define("${namespace}.Application",
54
54
  */
55
55
 
56
56
  // Create a button
57
- var button1 = new qx.ui.form.Button("Click me", "${namespace_as_path}/test.png");
57
+ const button1 = new qx.ui.form.Button("Click me", "${namespace_as_path}/test.png");
58
58
 
59
59
  // Document is the application root
60
- var doc = this.getRoot();
60
+ const doc = this.getRoot();
61
61
 
62
62
  // Add button to document at fixed coordinates
63
63
  doc.add(button1, {left: 100, top: 50});
@@ -69,4 +69,4 @@ qx.Class.define("${namespace}.Application",
69
69
  });
70
70
  }
71
71
  }
72
- });
72
+ });
@@ -11,13 +11,13 @@
11
11
  /**
12
12
  * This class demonstrates how to define unit tests for your application.
13
13
  *
14
- * Execute <code>qx test</code> to generate a testrunner application
14
+ * Execute <code>qx test</code> to generate a testrunner application
15
15
  * and open it from <tt>test/index.html</tt>
16
16
  *
17
- * The methods that contain the tests are instance methods with a
18
- * <code>test</code> prefix. You can create an arbitrary number of test
19
- * classes like this one. They can be organized in a regular class hierarchy,
20
- * i.e. using deeper namespaces and a corresponding file structure within the
17
+ * The methods that contain the tests are instance methods with a
18
+ * <code>test</code> prefix. You can create an arbitrary number of test
19
+ * classes like this one. They can be organized in a regular class hierarchy,
20
+ * i.e. using deeper namespaces and a corresponding file structure within the
21
21
  * <tt>test</tt> folder.
22
22
  */
23
23
  qx.Class.define("${namespace}.test.DemoTest",
@@ -31,11 +31,11 @@ qx.Class.define("${namespace}.test.DemoTest",
31
31
  TESTS
32
32
  ---------------------------------------------------------------------------
33
33
  */
34
-
34
+
35
35
  /**
36
36
  * Here are some simple tests
37
37
  */
38
- testSimple : function()
38
+ testSimple()
39
39
  {
40
40
  this.assertEquals(4, 3+1, "This should never fail!");
41
41
  this.assertFalse(false, "Can false be true?!");
@@ -44,10 +44,10 @@ qx.Class.define("${namespace}.test.DemoTest",
44
44
  /**
45
45
  * Here are some more advanced tests
46
46
  */
47
- testAdvanced: function ()
47
+ testAdvanced()
48
48
  {
49
- var a = 3;
50
- var b = a;
49
+ let a = 3;
50
+ let b = a;
51
51
  this.assertIdentical(a, b, "A rose by any other name is still a rose");
52
52
  this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!");
53
53
  }
@@ -25,10 +25,10 @@ qx.Class.define("${namespace}.Application",
25
25
  * This method contains the initial application code and gets called
26
26
  * during startup of the application
27
27
  */
28
- main : function()
28
+ main()
29
29
  {
30
30
  // Call super class
31
- this.base(arguments);
31
+ super.main();
32
32
 
33
33
  // Enable logging in debug variant
34
34
  if (qx.core.Environment.get("qx.debug"))
@@ -47,11 +47,11 @@ qx.Class.define("${namespace}.Application",
47
47
  -------------------------------------------------------------------------
48
48
  */
49
49
 
50
- var login = new ${namespace}.page.Login();
51
- var overview = new ${namespace}.page.Overview();
50
+ const login = new ${namespace}.page.Login();
51
+ const overview = new ${namespace}.page.Overview();
52
52
 
53
53
  // Add the pages to the page manager.
54
- var manager = new qx.ui.mobile.page.Manager(false);
54
+ const manager = new qx.ui.mobile.page.Manager(false);
55
55
  manager.addDetail([
56
56
  login,
57
57
  overview
@@ -69,7 +69,7 @@ qx.Class.define("${namespace}.Application",
69
69
  * Default behaviour when a route matches. Displays the corresponding page on screen.
70
70
  * @param data {Map} the animation properties
71
71
  */
72
- _show : function(data) {
72
+ _show(data) {
73
73
  this.show(data.customData);
74
74
  }
75
75
  }
@@ -15,9 +15,9 @@ qx.Class.define("${namespace}.page.Login",
15
15
  {
16
16
  extend : qx.ui.mobile.page.NavigationPage,
17
17
 
18
- construct : function()
18
+ construct()
19
19
  {
20
- this.base(arguments);
20
+ super();
21
21
  this.setTitle("Login");
22
22
  },
23
23
 
@@ -28,22 +28,22 @@ qx.Class.define("${namespace}.page.Login",
28
28
 
29
29
 
30
30
  // overridden
31
- _initialize: function() {
32
- this.base(arguments);
31
+ _initialize() {
32
+ super._initialize();
33
33
 
34
34
  // Username
35
- var user = new qx.ui.mobile.form.TextField();
35
+ const user = new qx.ui.mobile.form.TextField();
36
36
  user.setRequired(true);
37
37
 
38
38
  // Password
39
- var pwd = new qx.ui.mobile.form.PasswordField();
39
+ const pwd = new qx.ui.mobile.form.PasswordField();
40
40
  pwd.setRequired(true);
41
41
 
42
42
  // Login Button
43
- var loginButton = new qx.ui.mobile.form.Button("Login");
43
+ const loginButton = new qx.ui.mobile.form.Button("Login");
44
44
  loginButton.addListener("tap", this._onButtonTap, this);
45
45
 
46
- var loginForm = this.__form = new qx.ui.mobile.form.Form();
46
+ const loginForm = this.__form = new qx.ui.mobile.form.Form();
47
47
  loginForm.add(user, "Username");
48
48
  loginForm.add(pwd, "Password");
49
49
 
@@ -56,7 +56,7 @@ qx.Class.define("${namespace}.page.Login",
56
56
  /**
57
57
  * Event handler for <code>tap</code> on the login button.
58
58
  */
59
- _onButtonTap: function() {
59
+ _onButtonTap() {
60
60
  // use form validation
61
61
  if (this.__form.validate()) {
62
62
  qx.core.Init.getApplication().getRouting().executeGet("/overview");
@@ -15,9 +15,9 @@ qx.Class.define("${namespace}.page.Overview",
15
15
  {
16
16
  extend : qx.ui.mobile.page.NavigationPage,
17
17
 
18
- construct : function()
18
+ construct()
19
19
  {
20
- this.base(arguments);
20
+ super();
21
21
  this.setTitle("Overview");
22
22
  this.setShowBackButton(true);
23
23
  this.setBackButtonText("Back");
@@ -27,16 +27,16 @@ qx.Class.define("${namespace}.page.Overview",
27
27
  members :
28
28
  {
29
29
  // overridden
30
- _initialize : function()
30
+ _initialize()
31
31
  {
32
- this.base(arguments);
32
+ super._initialize(arguments);
33
33
 
34
34
  this.getContent().add(new qx.ui.mobile.basic.Label("Your first app."));
35
35
  },
36
36
 
37
37
 
38
38
  // overridden
39
- _back : function(triggeredByKeyEvent)
39
+ _back(triggeredByKeyEvent)
40
40
  {
41
41
  qx.core.Init.getApplication().getRouting().back();
42
42
  }
@@ -24,15 +24,15 @@ qx.Class.define("${namespace}.demo.Application",
24
24
  members :
25
25
  {
26
26
  /**
27
- * This method contains the initial application code and gets called
27
+ * This method contains the initial application code and gets called
28
28
  * during startup of the application
29
- *
29
+ *
30
30
  * @lint ignoreDeprecated(alert)
31
31
  */
32
- main : function()
32
+ main()
33
33
  {
34
34
  // Call super class
35
- this.base(arguments);
35
+ super.main();
36
36
 
37
37
  // Enable logging in debug variant
38
38
  if (qx.core.Environment.get("qx.debug"))
@@ -50,10 +50,10 @@ qx.Class.define("${namespace}.demo.Application",
50
50
  */
51
51
 
52
52
  // Create a button
53
- var button1 = new ${namespace}.Button("Very special button", "${namespace_as_path}/test.png");
53
+ const button1 = new ${namespace}.Button("Very special button", "${namespace_as_path}/test.png");
54
54
 
55
55
  // Document is the application root
56
- var doc = this.getRoot();
56
+ const doc = this.getRoot();
57
57
 
58
58
  // Add button to document at fixed coordinates
59
59
  doc.add(button1, {left: 100, top: 50});
@@ -64,4 +64,4 @@ qx.Class.define("${namespace}.demo.Application",
64
64
  });
65
65
  }
66
66
  }
67
- });
67
+ });
@@ -11,13 +11,13 @@
11
11
  /**
12
12
  * This class demonstrates how to define unit tests for your application.
13
13
  *
14
- * Execute <code>qx test</code> to generate a testrunner application
14
+ * Execute <code>qx test</code> to generate a testrunner application
15
15
  * and open it from <tt>test/index.html</tt>
16
16
  *
17
- * The methods that contain the tests are instance methods with a
18
- * <code>test</code> prefix. You can create an arbitrary number of test
19
- * classes like this one. They can be organized in a regular class hierarchy,
20
- * i.e. using deeper namespaces and a corresponding file structure within the
17
+ * The methods that contain the tests are instance methods with a
18
+ * <code>test</code> prefix. You can create an arbitrary number of test
19
+ * classes like this one. They can be organized in a regular class hierarchy,
20
+ * i.e. using deeper namespaces and a corresponding file structure within the
21
21
  * <tt>test</tt> folder.
22
22
  */
23
23
  qx.Class.define("${namespace}.test.DemoTest",
@@ -31,11 +31,11 @@ qx.Class.define("${namespace}.test.DemoTest",
31
31
  TESTS
32
32
  ---------------------------------------------------------------------------
33
33
  */
34
-
34
+
35
35
  /**
36
36
  * Here are some simple tests
37
37
  */
38
- testSimple : function()
38
+ testSimple()
39
39
  {
40
40
  this.assertEquals(4, 3+1, "This should never fail!");
41
41
  this.assertFalse(false, "Can false be true?!");
@@ -44,10 +44,10 @@ qx.Class.define("${namespace}.test.DemoTest",
44
44
  /**
45
45
  * Here are some more advanced tests
46
46
  */
47
- testAdvanced: function ()
47
+ testAdvanced()
48
48
  {
49
- var a = 3;
50
- var b = a;
49
+ let a = 3;
50
+ let b = a;
51
51
  this.assertIdentical(a, b, "A rose by any other name is still a rose");
52
52
  this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!");
53
53
  }
@@ -34,7 +34,7 @@ qx.Class.define("${namespace}.Application",
34
34
  * This method contains the initial application code and gets called
35
35
  * during startup of the application
36
36
  */
37
- main : function()
37
+ main()
38
38
  {
39
39
  if (qx.core.Environment.get("runtime.name") == "rhino") {
40
40
  qx.log.Logger.register(qx.log.appender.RhinoConsole);
@@ -59,10 +59,10 @@ qx.Class.define("${namespace}.Application",
59
59
  *
60
60
  * @param args {String[]} Rhino arguments object
61
61
  */
62
- _argumentsToSettings : function(args)
62
+ _argumentsToSettings(args)
63
63
  {
64
- var opts;
65
- for (var i=0, l=args.length; i<l; i++) {
64
+ let opts;
65
+ for (let i=0, l=args.length; i<l; i++) {
66
66
  if (args[i].indexOf("settings=") == 0) {
67
67
  opts = args[i].substr(9);
68
68
  break;
@@ -75,8 +75,8 @@ qx.Class.define("${namespace}.Application",
75
75
  if (opts) {
76
76
  opts = opts.replace(/\\\{/g, "{").replace(/\\\}/g, "}");
77
77
  opts = qx.lang.Json.parse(opts);
78
- for (var prop in opts) {
79
- var value = opts[prop];
78
+ for (let prop in opts) {
79
+ let value = opts[prop];
80
80
  if (typeof value == "string") {
81
81
  value = value.replace(/\$$/g, " ");
82
82
  }
@@ -11,13 +11,13 @@
11
11
  /**
12
12
  * This class demonstrates how to define unit tests for your application.
13
13
  *
14
- * Execute <code>qx test</code> to generate a testrunner application
14
+ * Execute <code>qx test</code> to generate a testrunner application
15
15
  * and open it from <tt>test/index.html</tt>
16
16
  *
17
- * The methods that contain the tests are instance methods with a
18
- * <code>test</code> prefix. You can create an arbitrary number of test
19
- * classes like this one. They can be organized in a regular class hierarchy,
20
- * i.e. using deeper namespaces and a corresponding file structure within the
17
+ * The methods that contain the tests are instance methods with a
18
+ * <code>test</code> prefix. You can create an arbitrary number of test
19
+ * classes like this one. They can be organized in a regular class hierarchy,
20
+ * i.e. using deeper namespaces and a corresponding file structure within the
21
21
  * <tt>test</tt> folder.
22
22
  */
23
23
  qx.Class.define("${namespace}.test.DemoTest",
@@ -33,11 +33,11 @@ qx.Class.define("${namespace}.test.DemoTest",
33
33
  TESTS
34
34
  ---------------------------------------------------------------------------
35
35
  */
36
-
36
+
37
37
  /**
38
38
  * Here are some simple tests
39
39
  */
40
- testSimple : function()
40
+ testSimple()
41
41
  {
42
42
  this.assertEquals(4, 3+1, "This should never fail!");
43
43
  this.assertFalse(false, "Can false be true?!");
@@ -46,20 +46,20 @@ qx.Class.define("${namespace}.test.DemoTest",
46
46
  /**
47
47
  * Here are some more advanced tests
48
48
  */
49
- testAdvanced: function ()
49
+ testAdvanced()
50
50
  {
51
- var a = 3;
52
- var b = a;
51
+ let a = 3;
52
+ let b = a;
53
53
  this.assertIdentical(a, b, "A rose by any other name is still a rose");
54
54
  this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!");
55
55
  },
56
56
 
57
- hasNodeJs : function()
57
+ hasNodeJs()
58
58
  {
59
59
  return qx.core.Environment.get("runtime.name") == "node.js";
60
60
  },
61
61
 
62
- testNodeJs : function()
62
+ testNodeJs()
63
63
  {
64
64
  this.require(["nodeJs"]);
65
65
  // test node stuff
@@ -4,10 +4,7 @@
4
4
  "$id": "https://qooxdoo.org/schema/Manifest-1-0-0.json",
5
5
  "description": "qooxdoo's Manifest files serve to provide meta information for a library in a structured way. Their syntax is in JSON. They have a more informational part (keyed info), which is more interesting for human readers, a technical part (named provides) that is used in the processing of generator configurations, and a part named externalResources to include CSS and Javascript files.",
6
6
  "type": "object",
7
- "required": [
8
- "provides",
9
- "$schema"
10
- ],
7
+ "required": ["provides", "$schema"],
11
8
  "additionalProperties": false,
12
9
  "properties": {
13
10
  "$schema": {
@@ -15,7 +12,8 @@
15
12
  "description": "the json schema of the version of Manifest.json",
16
13
  "enum": [
17
14
  "https://qooxdoo.org/schema/Manifest-1-0-0.json",
18
- "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json"
15
+ "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json",
16
+ "./source/resource/qx/tool/schema/Manifest-1-0-0.json"
19
17
  ]
20
18
  },
21
19
  "info": {
@@ -56,22 +54,16 @@
56
54
  "type": "array",
57
55
  "items": {
58
56
  "type": "object",
59
- "required": [
60
- "name", "email"
61
- ],
57
+ "required": ["name", "email"],
62
58
  "additionalProperties": false,
63
59
  "properties": {
64
60
  "name": {
65
61
  "type": "string",
66
- "examples": [
67
- "First Author"
68
- ]
62
+ "examples": ["First Author"]
69
63
  },
70
64
  "email": {
71
65
  "type": "string",
72
- "examples": [
73
- "first.author@site.domain"
74
- ]
66
+ "examples": ["first.author@site.domain"]
75
67
  },
76
68
  "githubUser": {
77
69
  "type": "string",
@@ -107,10 +99,7 @@
107
99
  }
108
100
  },
109
101
  "provides": {
110
- "required": [
111
- "namespace",
112
- "class"
113
- ],
102
+ "required": ["namespace", "class"],
114
103
  "additionalProperties": false,
115
104
  "type": "object",
116
105
  "properties": {
@@ -142,14 +131,78 @@
142
131
  "type": "object",
143
132
  "description": "Maps environment check IDs to classes"
144
133
  },
134
+ "fonts": {
135
+ "type": "object",
136
+ "description": "List of fonts; the key is the font ID, the value is an object describing the font to declare",
137
+ "additionalProperties": {
138
+ "type": "object",
139
+ "description": "Font declarations",
140
+ "additionalProperties": false,
141
+ "properties": {
142
+ "family": {
143
+ "type": "array",
144
+ "description": "List of font family names that this font identifier represents",
145
+ "items": {
146
+ "type": "string"
147
+ }
148
+ },
149
+ "defaultSize": {
150
+ "type": "integer",
151
+ "description": "Default size of the font in pixels, usually only defined for icon fonts"
152
+ },
153
+ "comparisonString": {
154
+ "type": "string",
155
+ "description": "String to use when looking for size differences, in order to detect that the font has loaded (default usually works just fine)"
156
+ },
157
+ "fontFaces": {
158
+ "type": "array",
159
+ "description": "list of @font-face ruless need to be defined in order to use this font",
160
+ "items": {
161
+ "type": "object",
162
+ "additionalProperties": false,
163
+ "properties": {
164
+ "fontFamily": {
165
+ "type": "string",
166
+ "description": "the font face family name provided by the font files in `paths`, defaults to the font ID"
167
+ },
168
+ "fontWeight": {
169
+ "type": "string",
170
+ "description": "the font-weight provided by the font files in `paths`"
171
+ },
172
+ "fontStyle": {
173
+ "type": "string",
174
+ "description": "the font-style provided by the font files in `paths`"
175
+ },
176
+ "paths": {
177
+ "type": "array",
178
+ "description": "List of paths in the local resources that contain the fonts",
179
+ "items": {
180
+ "type": "string"
181
+ }
182
+ }
183
+ }
184
+ }
185
+ },
186
+ "css": {
187
+ "type": "array",
188
+ "description": "List of URLs for CSS, eg from a CDN",
189
+ "items": {
190
+ "type": "string"
191
+ }
192
+ },
193
+ "glyphs": {
194
+ "type": "string",
195
+ "description": "JSON mapping that lists the glyphs to use (see `qx export-glyphs`)"
196
+ }
197
+ }
198
+ }
199
+ },
145
200
  "webfonts": {
146
- "type":"array",
201
+ "type": "array",
147
202
  "description": "A list of webfont definitions",
148
203
  "items": {
149
204
  "type": "object",
150
- "required": [
151
- "name", "resources"
152
- ],
205
+ "required": ["name", "resources"],
153
206
  "additionalProperties": false,
154
207
  "properties": {
155
208
  "name": {
@@ -157,7 +210,7 @@
157
210
  "description": "Font name"
158
211
  },
159
212
  "defaultSize": {
160
- "type":"number",
213
+ "type": "number",
161
214
  "description": "Default font size"
162
215
  },
163
216
  "mapping": {
@@ -172,7 +225,7 @@
172
225
  "type": "array",
173
226
  "minItems": 1,
174
227
  "items": {
175
- "type":"string",
228
+ "type": "string",
176
229
  "description": "Path to the webfont file relative to the resource folder"
177
230
  }
178
231
  }
@@ -180,7 +233,7 @@
180
233
  }
181
234
  },
182
235
  "application": {
183
- "type":"object"
236
+ "type": "object"
184
237
  }
185
238
  }
186
239
  },
@@ -197,7 +250,7 @@
197
250
  "additionalProperties": false
198
251
  },
199
252
  "externalResources": {
200
- "type":"object",
253
+ "type": "object",
201
254
  "description": "Static Javascript and CSS files that shall be always included without further processing by qooxdoo. All paths are relative to the resource folder stated in the 'provides' section.",
202
255
  "properties": {
203
256
  "css": {