]>
Commit | Line | Data |
---|---|---|
4f3e66d8 DC |
1 | Ext.define('PVE.qemu.DisplayInputPanel', { |
2 | extend: 'Proxmox.panel.InputPanel', | |
3 | xtype: 'pveDisplayInputPanel', | |
d2d16a78 | 4 | onlineHelp: 'qm_display', |
db050180 | 5 | |
4f3e66d8 | 6 | onGetValues: function(values) { |
c8e171a8 | 7 | let ret = PVE.Parser.printPropertyString(values, 'type'); |
4f3e66d8 | 8 | if (ret === '') { |
c8e171a8 | 9 | return { 'delete': 'vga' }; |
4f3e66d8 | 10 | } |
c8e171a8 | 11 | return { vga: ret }; |
4f3e66d8 | 12 | }, |
8a56fe1a TL |
13 | |
14 | items: [{ | |
4f3e66d8 | 15 | name: 'type', |
8a56fe1a TL |
16 | xtype: 'proxmoxKVComboBox', |
17 | value: '__default__', | |
4f3e66d8 | 18 | deleteEmpty: false, |
8a56fe1a | 19 | fieldLabel: gettext('Graphic card'), |
56148f25 | 20 | comboItems: Object.entries(PVE.Utils.kvm_vga_drivers), |
c8e171a8 TL |
21 | validator: function(v) { |
22 | let cfg = this.up('proxmoxWindowEdit').vmconfig || {}; | |
8a56fe1a TL |
23 | |
24 | if (v.match(/^serial\d+$/) && (!cfg[v] || cfg[v] !== 'socket')) { | |
c8e171a8 | 25 | let fmt = gettext("Serial interface '{0}' is not correctly configured."); |
8a56fe1a | 26 | return Ext.String.format(fmt, v); |
db050180 | 27 | } |
db050180 | 28 | return true; |
4f3e66d8 DC |
29 | }, |
30 | listeners: { | |
31 | change: function(cb, val) { | |
4f3e66d8 DC |
32 | if (!val) { |
33 | return; | |
34 | } | |
c8e171a8 TL |
35 | let memoryfield = this.up('panel').down('field[name=memory]'); |
36 | let disableMemoryField = false; | |
37 | ||
38 | if (val === "cirrus") { | |
39 | memoryfield.setEmptyText("4"); | |
40 | } else if (val === "std" || val.match(/^qxl\d?$/) || val === "vmware") { | |
41 | memoryfield.setEmptyText("16"); | |
42 | } else if (val.match(/^virtio/)) { | |
43 | memoryfield.setEmptyText("256"); | |
44 | } else if (val.match(/^(serial\d|none)$/)) { | |
45 | memoryfield.setEmptyText("N/A"); | |
46 | disableMemoryField = true; | |
47 | } else { | |
48 | console.debug("unexpected display type", val); | |
49 | memoryfield.setEmptyText(Proxmox.Utils.defaultText); | |
4f3e66d8 | 50 | } |
c8e171a8 | 51 | memoryfield.setDisabled(disableMemoryField); |
f6710aac TL |
52 | }, |
53 | }, | |
c8e171a8 TL |
54 | }, |
55 | { | |
4f3e66d8 DC |
56 | xtype: 'proxmoxintegerfield', |
57 | emptyText: Proxmox.Utils.defaultText, | |
58 | fieldLabel: gettext('Memory') + ' (MiB)', | |
59 | minValue: 4, | |
60 | maxValue: 512, | |
61 | step: 4, | |
f6710aac TL |
62 | name: 'memory', |
63 | }], | |
4f3e66d8 DC |
64 | }); |
65 | ||
66 | Ext.define('PVE.qemu.DisplayEdit', { | |
67 | extend: 'Proxmox.window.Edit', | |
68 | ||
69 | vmconfig: undefined, | |
70 | ||
71 | subject: gettext('Display'), | |
72 | width: 350, | |
73 | ||
74 | items: [{ | |
f6710aac | 75 | xtype: 'pveDisplayInputPanel', |
8a56fe1a | 76 | }], |
db050180 | 77 | |
8058410f | 78 | initComponent: function() { |
c8e171a8 | 79 | let me = this; |
db050180 DM |
80 | |
81 | me.callParent(); | |
82 | ||
83 | me.load({ | |
8a56fe1a TL |
84 | success: function(response) { |
85 | me.vmconfig = response.result.data; | |
c8e171a8 | 86 | let vga = me.vmconfig.vga || '__default__'; |
4f3e66d8 | 87 | me.setValues(PVE.Parser.parsePropertyString(vga, 'type')); |
f6710aac | 88 | }, |
db050180 | 89 | }); |
f6710aac | 90 | }, |
db050180 | 91 | }); |