@qooxdoo/framework 7.4.2 → 7.5.1

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 (70) hide show
  1. package/Manifest.json +1 -1
  2. package/bin/deploy/qx +7 -5
  3. package/lib/compiler/compile-info.json +81 -81
  4. package/lib/compiler/index.js +496 -453
  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/website/src/about.md +1 -1
  15. package/package.json +2 -2
  16. package/source/class/qx/Class.js +3 -3
  17. package/source/class/qx/bom/Cookie.js +1 -1
  18. package/source/class/qx/data/Array.js +3 -3
  19. package/source/class/qx/data/SingleValueBinding.js +1 -1
  20. package/source/class/qx/dom/Hierarchy.js +2 -2
  21. package/source/class/qx/event/Manager.js +1 -1
  22. package/source/class/qx/event/handler/TouchCore.js +1 -1
  23. package/source/class/qx/html/Jsx.js +1 -1
  24. package/source/class/qx/lang/Array.js +2 -2
  25. package/source/class/qx/lang/Function.js +19 -22
  26. package/source/class/qx/locale/MTranslation.js +4 -4
  27. package/source/class/qx/locale/Manager.js +7 -7
  28. package/source/class/qx/module/util/Array.js +2 -2
  29. package/source/class/qx/test/io/transport/Websocket.js +1 -1
  30. package/source/class/qx/theme/IndigoDark.js +28 -0
  31. package/source/class/qx/theme/indigo/AppearanceDark.js +186 -0
  32. package/source/class/qx/theme/indigo/ColorDark.js +117 -0
  33. package/source/class/qx/theme/indigo/DecorationDark.js +30 -0
  34. package/source/class/qx/theme/indigo/ImageDark.js +101 -0
  35. package/source/class/qx/tool/cli/Application.js +4 -1
  36. package/source/class/qx/tool/cli/Cli.js +22 -23
  37. package/source/class/qx/tool/cli/Watch.js +28 -27
  38. package/source/class/qx/tool/cli/commands/Compile.js +2 -1
  39. package/source/class/qx/tool/cli/commands/Lint.js +1 -1
  40. package/source/class/qx/tool/cli/commands/Run.js +6 -7
  41. package/source/class/qx/tool/cli/commands/Serve.js +29 -36
  42. package/source/class/qx/tool/cli/commands/Test.js +3 -2
  43. package/source/class/qx/tool/cli/commands/add/Script.js +3 -1
  44. package/source/class/qx/tool/cli/commands/package/Install.js +3 -0
  45. package/source/class/qx/tool/cli/commands/package/Publish.js +16 -4
  46. package/source/class/qx/tool/compiler/ClassFile.js +2 -1
  47. package/source/class/qx/tool/compiler/app/Cldr.js +63 -26
  48. package/source/class/qx/tool/compiler/targets/meta/Browserify.js +19 -9
  49. package/source/class/qx/ui/basic/Image.js +6 -2
  50. package/source/class/qx/ui/command/Group.js +2 -2
  51. package/source/class/qx/ui/command/GroupManager.js +3 -3
  52. package/source/class/qx/ui/control/ColorSelector.js +1 -1
  53. package/source/class/qx/ui/core/MMultiSelectionHandling.js +1 -1
  54. package/source/class/qx/ui/core/SingleSelectionManager.js +1 -1
  55. package/source/class/qx/ui/core/Widget.js +13 -42
  56. package/source/class/qx/ui/form/Form.js +1 -1
  57. package/source/class/qx/ui/list/List.js +1 -1
  58. package/source/class/qx/ui/mobile/form/Form.js +2 -2
  59. package/source/class/qx/util/OOUtil.js +1 -1
  60. package/source/resource/qx/mobile/scss/common/_gradients.scss +1 -1
  61. package/source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +7 -7
  62. package/source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +10 -10
  63. package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +6 -6
  64. package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +9 -9
  65. package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +5 -5
  66. package/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +7 -7
  67. package/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +10 -10
  68. package/source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js +6 -6
  69. package/source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +12 -12
  70. package/source/resource/qx/tool/website/src/about.md +1 -1
@@ -64,7 +64,7 @@ qx.Class.define("qx.locale.Manager", {
64
64
  *
65
65
  * @param messageId {String} message id (may contain format strings)
66
66
  * @param varargs {Object} variable number of arguments applied to the format string
67
- * @return {String | LocalizedString} The translated message or localized string
67
+ * @return {String|LocalizedString} The translated message or localized string
68
68
  * @see qx.lang.String.format
69
69
  */
70
70
  tr(messageId, varargs) {
@@ -82,7 +82,7 @@ qx.Class.define("qx.locale.Manager", {
82
82
  * @param pluralMessageId {String} message id of the plural form (may contain format strings)
83
83
  * @param count {Integer} singular form if equals 1, otherwise plural
84
84
  * @param varargs {Object} variable number of arguments applied to the format string
85
- * @return {String | LocalizedString} The translated message or localized string
85
+ * @return {String|LocalizedString} The translated message or localized string
86
86
  * @see qx.lang.String.format
87
87
  */
88
88
  trn(singularMessageId, pluralMessageId, count, varargs) {
@@ -108,7 +108,7 @@ qx.Class.define("qx.locale.Manager", {
108
108
  * @param hint {String} hint for the translator of the message. Will be included in the .po file.
109
109
  * @param messageId {String} message id (may contain format strings)
110
110
  * @param varargs {Object} variable number of arguments applied to the format string
111
- * @return {String | LocalizedString} The translated message or localized string
111
+ * @return {String|LocalizedString} The translated message or localized string
112
112
  * @see qx.lang.String.format
113
113
  */
114
114
  trc(hint, messageId, varargs) {
@@ -128,7 +128,7 @@ qx.Class.define("qx.locale.Manager", {
128
128
  * @param pluralMessageId {String} message id of the plural form (may contain format strings)
129
129
  * @param count {Integer} singular form if equals 1, otherwise plural
130
130
  * @param varargs {Object} variable number of arguments applied to the format string
131
- * @return {String | LocalizedString} The translated message or localized string
131
+ * @return {String|LocalizedString} The translated message or localized string
132
132
  * @see qx.lang.String.format
133
133
  */
134
134
  trnc(hint, singularMessageId, pluralMessageId, count, varargs) {
@@ -335,7 +335,7 @@ qx.Class.define("qx.locale.Manager", {
335
335
  * @param messageId {String} message id (may contain format strings)
336
336
  * @param args {Object[]} array of objects, which are inserted into the format string
337
337
  * @param locale {String ? #locale} locale to be used; if not given, defaults to the value of {@link #locale}
338
- * @return {String | LocalizedString} translated message or localized string
338
+ * @return {String|LocalizedString} translated message or localized string
339
339
  */
340
340
  translate(messageId, args, locale) {
341
341
  var catalog = this.__translations;
@@ -353,7 +353,7 @@ qx.Class.define("qx.locale.Manager", {
353
353
  * @param messageId {String} message id (may contain format strings)
354
354
  * @param args {Object[]} array of objects, which are inserted into the format string
355
355
  * @param locale {String ? #locale} locale to be used; if not given, defaults to the value of {@link #locale}
356
- * @return {String | LocalizedString} translated message or localized string
356
+ * @return {String|LocalizedString} translated message or localized string
357
357
  */
358
358
  localize(messageId, args, locale) {
359
359
  var catalog = this.__locales;
@@ -372,7 +372,7 @@ qx.Class.define("qx.locale.Manager", {
372
372
  * @param messageId {String} message id (may contain format strings)
373
373
  * @param args {Object[]} array of objects, which are inserted into the format string
374
374
  * @param locale {String ? #locale} locale to be used; if not given, defaults to the value of {@link #locale}
375
- * @return {String | LocalizedString} translated message or localized string
375
+ * @return {String|LocalizedString} translated message or localized string
376
376
  */
377
377
  __lookupAndExpand(catalog, messageId, args, locale) {
378
378
  if (qx.core.Environment.get("qx.debug")) {
@@ -111,7 +111,7 @@ qx.Bootstrap.define("qx.module.util.Array", {
111
111
  * @attachStatic {qxWeb, array.max}
112
112
  *
113
113
  * @param arr {Array} Array to process.
114
- * @return {Number | undefined} The highest of all values or undefined if array is empty.
114
+ * @return {Number|undefined} The highest of all values or undefined if array is empty.
115
115
  */
116
116
  max: qx.lang.Array.max,
117
117
 
@@ -123,7 +123,7 @@ qx.Bootstrap.define("qx.module.util.Array", {
123
123
  * @attachStatic {qxWeb, array.min}
124
124
  *
125
125
  * @param arr {Array} Array to process.
126
- * @return {Number | undefined} The lowest of all values or undefined if array is empty.
126
+ * @return {Number|undefined} The lowest of all values or undefined if array is empty.
127
127
  */
128
128
  min: qx.lang.Array.min,
129
129
 
@@ -24,7 +24,7 @@ qx.Class.define("qx.test.io.transport.Websocket", {
24
24
  extend: qx.dev.unit.TestCase,
25
25
 
26
26
  statics: {
27
- TEST_ENDPOINT: "socketsbay.com/wss/v2/2/demo/"
27
+ TEST_ENDPOINT: "ws.postman-echo.com/raw/"
28
28
  },
29
29
 
30
30
  members: {
@@ -0,0 +1,28 @@
1
+ /* ************************************************************************
2
+
3
+ qooxdoo - the new era of web development
4
+
5
+ http://qooxdoo.org
6
+
7
+ License:
8
+ MIT: https://opensource.org/licenses/MIT
9
+ See the LICENSE file in the project's top-level directory for details.
10
+
11
+ Authors:
12
+ * Scott Knick (sknick)
13
+
14
+ ************************************************************************ */
15
+ /**
16
+ * IndigoDark Theme
17
+ */
18
+ qx.Theme.define("qx.theme.IndigoDark", {
19
+ title: "IndigoDark",
20
+
21
+ meta: {
22
+ color: qx.theme.indigo.ColorDark,
23
+ decoration: qx.theme.indigo.DecorationDark,
24
+ font: qx.theme.indigo.Font,
25
+ appearance: qx.theme.indigo.AppearanceDark,
26
+ icon: qx.theme.icon.Tango
27
+ }
28
+ });
@@ -0,0 +1,186 @@
1
+ /* ************************************************************************
2
+
3
+ qooxdoo - the new era of web development
4
+
5
+ http://qooxdoo.org
6
+
7
+ License:
8
+ MIT: https://opensource.org/licenses/MIT
9
+ See the LICENSE file in the project's top-level directory for details.
10
+
11
+ Authors:
12
+ * Scott Knick (sknick)
13
+
14
+ ************************************************************************* */
15
+
16
+ /* ************************************************************************
17
+
18
+
19
+ ************************************************************************* */
20
+
21
+ /**
22
+ * The Indigo qooxdoo dark appearance theme.
23
+ *
24
+ * @asset(qx/icon/${qx.icontheme}/16/apps/office-calendar.png)
25
+ * @asset(qx/icon/${qx.icontheme}/16/places/folder-open.png)
26
+ * @asset(qx/icon/${qx.icontheme}/16/places/folder.png)
27
+ * @asset(qx/icon/${qx.icontheme}/16/mimetypes/text-plain.png)
28
+ * @asset(qx/icon/${qx.icontheme}/16/actions/view-refresh.png)
29
+ * @asset(qx/icon/${qx.icontheme}/16/actions/window-close.png)
30
+ * @asset(qx/icon/${qx.icontheme}/16/actions/dialog-cancel.png)
31
+ * @asset(qx/icon/${qx.icontheme}/16/actions/dialog-ok.png)
32
+ */
33
+ qx.Theme.define("qx.theme.indigo.AppearanceDark", {
34
+ extend: qx.theme.indigo.Appearance,
35
+
36
+ appearances: {
37
+ "progressbar": {
38
+ style(states) {
39
+ return {
40
+ decorator: "progressbar",
41
+ padding: 1,
42
+ backgroundColor: "light-background",
43
+ width: 200,
44
+ height: 20
45
+ };
46
+ }
47
+ },
48
+
49
+ "tabview-page/button": {
50
+ style(states) {
51
+ var decorator;
52
+
53
+ // default padding
54
+ if (states.barTop || states.barBottom) {
55
+ var padding = [8, 16, 8, 13];
56
+ } else {
57
+ var padding = [8, 4, 8, 4];
58
+ }
59
+
60
+ // decorator
61
+ if (states.checked) {
62
+ if (states.barTop) {
63
+ decorator = "tabview-page-button-top";
64
+ } else if (states.barBottom) {
65
+ decorator = "tabview-page-button-bottom";
66
+ } else if (states.barRight) {
67
+ decorator = "tabview-page-button-right";
68
+ } else if (states.barLeft) {
69
+ decorator = "tabview-page-button-left";
70
+ }
71
+ } else {
72
+ for (var i = 0; i < padding.length; i++) {
73
+ padding[i] += 1;
74
+ }
75
+ // reduce the size by 1 because we have different decorator border width
76
+ if (states.barTop) {
77
+ padding[2] -= 1;
78
+ } else if (states.barBottom) {
79
+ padding[0] -= 1;
80
+ } else if (states.barRight) {
81
+ padding[3] -= 1;
82
+ } else if (states.barLeft) {
83
+ padding[1] -= 1;
84
+ }
85
+ }
86
+
87
+ return {
88
+ zIndex: states.checked ? 10 : 5,
89
+ decorator: decorator,
90
+ textColor: states.disabled
91
+ ? "text-disabled"
92
+ : states.checked
93
+ ? "font"
94
+ : "tabview-unselected",
95
+ padding: padding,
96
+ cursor: "pointer"
97
+ };
98
+ }
99
+ },
100
+
101
+ "textfield": {
102
+ style(states) {
103
+ var textColor;
104
+ if (states.disabled) {
105
+ textColor = "text-disabled";
106
+ } else if (states.showingPlaceholder) {
107
+ textColor = "text-placeholder";
108
+ } else {
109
+ textColor = undefined;
110
+ }
111
+
112
+ var decorator;
113
+ var padding;
114
+ if (states.disabled) {
115
+ decorator = "inset";
116
+ padding = [2, 3];
117
+ } else if (states.invalid) {
118
+ decorator = "border-invalid";
119
+ padding = [1, 2];
120
+ } else if (states.focused) {
121
+ decorator = "focused-inset";
122
+ padding = [1, 2];
123
+ } else {
124
+ padding = [2, 3];
125
+ decorator = "inset";
126
+ }
127
+
128
+ return {
129
+ decorator: decorator,
130
+ padding: padding,
131
+ textColor: textColor,
132
+ backgroundColor: states.disabled ? "background-disabled" : "light-background"
133
+ };
134
+ }
135
+ },
136
+
137
+ "window/minimize-button": {
138
+ alias: "button",
139
+
140
+ style(states) {
141
+ return {
142
+ icon: qx.theme.indigo.ImageDark.URLS["window-minimize"],
143
+ padding: [1, 2],
144
+ cursor: states.disabled ? undefined : "pointer"
145
+ };
146
+ }
147
+ },
148
+
149
+ "window/restore-button": {
150
+ alias: "button",
151
+
152
+ style(states) {
153
+ return {
154
+ icon: qx.theme.indigo.ImageDark.URLS["window-restore"],
155
+ padding: [1, 2],
156
+ cursor: states.disabled ? undefined : "pointer"
157
+ };
158
+ }
159
+ },
160
+
161
+ "window/maximize-button": {
162
+ alias: "button",
163
+
164
+ style(states) {
165
+ return {
166
+ icon: qx.theme.indigo.ImageDark.URLS["window-maximize"],
167
+ padding: [1, 2],
168
+ cursor: states.disabled ? undefined : "pointer"
169
+ };
170
+ }
171
+ },
172
+
173
+ "window/close-button": {
174
+ alias: "button",
175
+
176
+ style(states) {
177
+ return {
178
+ marginLeft: 2,
179
+ icon: qx.theme.indigo.ImageDark.URLS["window-close"],
180
+ padding: [1, 2],
181
+ cursor: states.disabled ? undefined : "pointer"
182
+ };
183
+ }
184
+ }
185
+ }
186
+ });
@@ -0,0 +1,117 @@
1
+ /* ************************************************************************
2
+
3
+ qooxdoo - the new era of web development
4
+
5
+ http://qooxdoo.org
6
+
7
+ License:
8
+ MIT: https://opensource.org/licenses/MIT
9
+ See the LICENSE file in the project's top-level directory for details.
10
+
11
+ Authors:
12
+ * Scott Knick (sknick)
13
+
14
+ ************************************************************************ */
15
+
16
+ /**
17
+ * Indigo dark color theme
18
+ */
19
+ qx.Theme.define("qx.theme.indigo.ColorDark", {
20
+ colors: {
21
+ // main
22
+ "background": "#333333",
23
+ "dark-blue": "#323335",
24
+ "light-background": "#444444",
25
+ "font": "#dddddd",
26
+
27
+ "highlight": "#eeeeee",
28
+ "highlight-shade": "#dddddd",
29
+
30
+ // backgrounds
31
+ "background-selected": "#666666",
32
+ "background-selected-disabled": "#777777",
33
+ "background-selected-dark": "#333333",
34
+ "background-disabled": "#444444",
35
+ "background-disabled-checked": "#bbbbbb",
36
+ "background-pane": "#333333",
37
+
38
+ // tabview
39
+ "tabview-unselected": "#aaaaaa",
40
+ "tabview-button-border": "#444444",
41
+ "tabview-label-active-disabled": "#d9d9d9",
42
+
43
+ // text colors
44
+ "link": "#ffffff",
45
+
46
+ // scrollbar
47
+ "scrollbar-bright": "#555555",
48
+ "scrollbar-dark": "#333333",
49
+
50
+ // form
51
+ "button": "#444444",
52
+ "button-border": "#666666",
53
+ "button-border-hovered": "#939393",
54
+ "invalid": "#d44a56",
55
+ "button-box-bright": "#555555",
56
+ "button-box-dark": "#444444",
57
+ "button-box-bright-pressed": "#333333",
58
+ "button-box-dark-pressed": "#222222",
59
+ "border-lead": "#888888",
60
+
61
+ // window
62
+ "window-border": "#444444",
63
+ "window-border-inner": "#666666",
64
+
65
+ // group box
66
+ "white-box-border": "#444444",
67
+
68
+ // shadows
69
+ "shadow": qx.core.Environment.get("css.rgba")
70
+ ? "rgba(0, 0, 0, 0.4)"
71
+ : "#666666",
72
+
73
+ // borders
74
+ "border-main": "#444444",
75
+ "border-light": "#666666",
76
+ "border-light-shadow": "#555555",
77
+
78
+ // separator
79
+ "border-separator": "#808080",
80
+
81
+ // text
82
+ "text": "#dddddd",
83
+ "text-disabled": "#666666",
84
+ "text-selected": "#ffffff",
85
+ "text-placeholder": "#cbc8cd",
86
+
87
+ // tooltip
88
+ "tooltip": "#666666",
89
+ "tooltip-text": "#dddddd",
90
+
91
+ // table
92
+ "table-header": "#f2f2f2",
93
+ "table-focus-indicator": "#eeeeee",
94
+
95
+ // used in table code
96
+ "table-header-cell": "#ebeadb",
97
+ "table-row-background-focused-selected": "#666666",
98
+ "table-row-background-focused": "#666666",
99
+ "table-row-background-selected": "#666666",
100
+ "table-row-background-even": "#333333",
101
+ "table-row-background-odd": "#333333",
102
+ "table-row-selected": "#eeeeee",
103
+ "table-row": "#eeeeee",
104
+ "table-row-line": "#555555",
105
+ "table-column-line": "#555555",
106
+
107
+ // used in progressive code
108
+ "progressive-table-header": "#ebeadb",
109
+ "progressive-table-row-background-even": "#333333",
110
+ "progressive-table-row-background-odd": "#333333",
111
+ "progressive-progressbar-background": "gray",
112
+ "progressive-progressbar-indicator-done": "#cccccc",
113
+ "progressive-progressbar-indicator-undone": "#ffffff",
114
+ "progressive-progressbar-percent-background": "gray",
115
+ "progressive-progressbar-percent-text": "#ffffff"
116
+ }
117
+ });
@@ -0,0 +1,30 @@
1
+ /* ************************************************************************
2
+
3
+ qooxdoo - the new era of web development
4
+
5
+ http://qooxdoo.org
6
+
7
+ License:
8
+ MIT: https://opensource.org/licenses/MIT
9
+ See the LICENSE file in the project's top-level directory for details.
10
+
11
+ Authors:
12
+ * Scott Knick (sknick)
13
+ * Dmitrii Zolotov (goldim)
14
+
15
+ ************************************************************************ */
16
+
17
+ /**
18
+ * The indigo dark qooxdoo decoration theme.
19
+ */
20
+ qx.Theme.define("qx.theme.indigo.DecorationDark", {
21
+ extend: qx.theme.indigo.Decoration,
22
+
23
+ decorations: {
24
+ "menubar-button-hovered": {
25
+ style: {
26
+ backgroundColor: "background"
27
+ }
28
+ }
29
+ }
30
+ });
@@ -0,0 +1,101 @@
1
+ /* ************************************************************************
2
+
3
+ qooxdoo - the new era of web development
4
+
5
+ http://qooxdoo.org
6
+
7
+ License:
8
+ MIT: https://opensource.org/licenses/MIT
9
+ See the LICENSE file in the project's top-level directory for details.
10
+
11
+ Authors:
12
+ * Scott Knick (sknick)
13
+
14
+ ************************************************************************ */
15
+ /* ************************************************************************
16
+
17
+
18
+ ************************************************************************* */
19
+ /**
20
+ * Mapping class for all images used in the Indigo dark theme.
21
+ *
22
+ * @asset(qx/decoration/Simple/*)
23
+ * @asset(qx/static/blank.png)
24
+ */
25
+ qx.Class.define("qx.theme.indigo.ImageDark", {
26
+ extend: qx.core.Object,
27
+
28
+ statics: {
29
+ /**
30
+ * Holds a map containing all the URL to the images.
31
+ * @internal
32
+ */
33
+ URLS: {
34
+ blank: "qx/static/blank.png",
35
+
36
+ // checkbox
37
+ "checkbox-checked": "decoration/checkbox/checked.png",
38
+ "checkbox-undetermined": "decoration/checkbox/undetermined.png",
39
+
40
+ // window
41
+ "window-minimize": "decoration/window/minimize-white.gif",
42
+ "window-maximize": "decoration/window/maximize-white.gif",
43
+ "window-restore": "decoration/window/restore-white.gif",
44
+ "window-close": "decoration/window/close-white.gif",
45
+
46
+ // cursor
47
+ "cursor-copy": "decoration/cursors/copy.gif",
48
+ "cursor-move": "decoration/cursors/move.gif",
49
+ "cursor-alias": "decoration/cursors/alias.gif",
50
+ "cursor-nodrop": "decoration/cursors/nodrop.gif",
51
+
52
+ // arrows
53
+ "arrow-right": "decoration/arrows/right.gif",
54
+ "arrow-left": "decoration/arrows/left.gif",
55
+ "arrow-up": "decoration/arrows/up.gif",
56
+ "arrow-down": "decoration/arrows/down.gif",
57
+ "arrow-forward": "decoration/arrows/forward.gif",
58
+ "arrow-rewind": "decoration/arrows/rewind.gif",
59
+ "arrow-down-small": "decoration/arrows/down-small.gif",
60
+ "arrow-up-small": "decoration/arrows/up-small.gif",
61
+ "arrow-up-invert": "decoration/arrows/up-invert.gif",
62
+ "arrow-down-invert": "decoration/arrows/down-invert.gif",
63
+ "arrow-right-invert": "decoration/arrows/right-invert.gif",
64
+
65
+ // split pane
66
+ "knob-horizontal": "decoration/splitpane/knob-horizontal.png",
67
+ "knob-vertical": "decoration/splitpane/knob-vertical.png",
68
+
69
+ // tree
70
+ "tree-minus": "decoration/tree/minus.gif",
71
+ "tree-plus": "decoration/tree/plus.gif",
72
+
73
+ // table
74
+ "select-column-order": "decoration/table/select-column-order.png",
75
+ "table-ascending": "decoration/table/ascending.png",
76
+ "table-descending": "decoration/table/descending.png",
77
+
78
+ // tree virtual
79
+ "treevirtual-line": "decoration/treevirtual/line.gif",
80
+ "treevirtual-minus-only": "decoration/treevirtual/only_minus.gif",
81
+ "treevirtual-plus-only": "decoration/treevirtual/only_plus.gif",
82
+ "treevirtual-minus-start": "decoration/treevirtual/start_minus.gif",
83
+ "treevirtual-plus-start": "decoration/treevirtual/start_plus.gif",
84
+ "treevirtual-minus-end": "decoration/treevirtual/end_minus.gif",
85
+ "treevirtual-plus-end": "decoration/treevirtual/end_plus.gif",
86
+ "treevirtual-minus-cross": "decoration/treevirtual/cross_minus.gif",
87
+ "treevirtual-plus-cross": "decoration/treevirtual/cross_plus.gif",
88
+ "treevirtual-end": "decoration/treevirtual/end.gif",
89
+ "treevirtual-cross": "decoration/treevirtual/cross.gif",
90
+
91
+ // menu
92
+ "menu-checkbox": "decoration/menu/checkbox.gif",
93
+ "menu-checkbox-invert": "decoration/menu/checkbox-invert.gif",
94
+ "menu-radiobutton-invert": "decoration/menu/radiobutton-invert.gif",
95
+ "menu-radiobutton": "decoration/menu/radiobutton.gif",
96
+
97
+ // tabview
98
+ "tabview-close": "decoration/tabview/close.gif"
99
+ }
100
+ }
101
+ });
@@ -29,11 +29,14 @@ qx.Class.define("qx.tool.cli.Application", {
29
29
  * during startup of the application
30
30
  */
31
31
  async main() {
32
+ process.exitCode = 0;
32
33
  try {
33
34
  await new qx.tool.cli.Cli().run();
34
35
  } catch (e) {
35
36
  qx.tool.compiler.Console.error("Error: " + (e.stack || e.message));
36
- process.exit(1);
37
+ process.exitCode = 1;
38
+ } finally {
39
+ process.exit();
37
40
  }
38
41
  }
39
42
  },
@@ -25,6 +25,11 @@ const semver = require("semver");
25
25
  */
26
26
  qx.Class.define("qx.tool.cli.Cli", {
27
27
  extend: qx.core.Object,
28
+ properties: {
29
+ command: {
30
+ apply: "__applyCommand"
31
+ }
32
+ },
28
33
 
29
34
  construct() {
30
35
  super();
@@ -53,14 +58,16 @@ qx.Class.define("qx.tool.cli.Cli", {
53
58
  _compileJsonFilename: null,
54
59
 
55
60
  /** @type {Object} Parsed arguments */
56
- _parsedArgs: null,
57
-
58
- /** @type {Promise} Promise that resolves to the _parsedArgs, but only when completely finished parsing them */
59
- __promiseParseArgs: null,
61
+ __parsedArgs: null,
60
62
 
61
63
  /** @type {Boolean} Whether libraries have had their `.load()` method called yet */
62
64
  __librariesNotified: false,
63
65
 
66
+ __applyCommand(command) {
67
+ command.setCompilerApi(this._compilerApi);
68
+ this._compilerApi.setCommand(command);
69
+ },
70
+
64
71
  /**
65
72
  * Creates an instance of yargs, with minimal options
66
73
  *
@@ -241,18 +248,10 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
241
248
  */
242
249
  async processCommand(command) {
243
250
  qx.tool.compiler.Console.getInstance().setVerbose(this.argv.verbose);
244
- command.setCompilerApi(this._compilerApi);
245
- this._compilerApi.setCommand(command);
246
251
  await this.__notifyLibraries();
247
- try {
248
- const res = await command.process();
249
- await this._compilerApi.afterProcessFinished(command, res);
250
- return res;
251
- } catch (e) {
252
- qx.tool.compiler.Console.error("Error: " + (e.stack || e.message));
253
- process.exit(1);
254
- return null;
255
- }
252
+ const res = await command.process();
253
+ await this._compilerApi.afterProcessFinished(command, res);
254
+ return res;
256
255
  },
257
256
 
258
257
  /**
@@ -260,8 +259,8 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
260
259
  *
261
260
  * @return {Object}
262
261
  */
263
- async getParsedArgs() {
264
- return await this.__promiseParseArgs;
262
+ getParsedArgs() {
263
+ return this.__parsedArgs;
265
264
  },
266
265
 
267
266
  /**
@@ -283,8 +282,8 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
283
282
  var args = qx.lang.Array.clone(process.argv);
284
283
  args.shift();
285
284
  process.title = args.join(" ");
286
- this.__promiseParseArgs = this.__parseArgsImpl();
287
- await this.__promiseParseArgs;
285
+ await this.__parseArgsImpl();
286
+ return this.processCommand(this.getCommand());
288
287
  },
289
288
 
290
289
  /**
@@ -356,7 +355,7 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
356
355
  (await qx.tool.utils.Json.loadJsonAsync(name)) || lockfileContent;
357
356
  } catch (ex) {
358
357
  // Nothing
359
- }
358
+ }
360
359
  // check semver-type compatibility (i.e. compatible as long as major version stays the same)
361
360
  let schemaVersion = semver.coerce(
362
361
  qx.tool.config.Lockfile.getInstance().getVersion(),
@@ -569,8 +568,8 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
569
568
  config.serve.listenPort || this.argv.listenPort;
570
569
  }
571
570
 
572
- this._parsedArgs = await compilerApi.getConfiguration();
573
- return this._parsedArgs;
571
+ this.__parsedArgs = await compilerApi.getConfiguration();
572
+ return this.__parsedArgs;
574
573
  },
575
574
 
576
575
  /**
@@ -692,7 +691,7 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
692
691
  if (data) {
693
692
  if (data.handler === undefined) {
694
693
  data.handler = argv =>
695
- qx.tool.cli.Cli.getInstance().processCommand(new Clazz(argv));
694
+ qx.tool.cli.Cli.getInstance().setCommand(new Clazz(argv));
696
695
  }
697
696
  yargs.command(data);
698
697
  }