If display is set to spice the checkbox gets replaced by a combobox to
show the available clipboard options.

Signed-off-by: Markus Frank <m.fr...@proxmox.com>
---
 www/manager6/qemu/DisplayEdit.js | 62 +++++++++++++++++++++++++++++++-
 1 file changed, 61 insertions(+), 1 deletion(-)

diff --git a/www/manager6/qemu/DisplayEdit.js b/www/manager6/qemu/DisplayEdit.js
index 9bb1763e..2cef5ad2 100644
--- a/www/manager6/qemu/DisplayEdit.js
+++ b/www/manager6/qemu/DisplayEdit.js
@@ -33,22 +33,54 @@ Ext.define('PVE.qemu.DisplayInputPanel', {
                    return;
                }
                let memoryfield = this.up('panel').down('field[name=memory]');
+               let clipboardBox = 
this.up('panel').down('field[itemId=clipboardBox]');
+               let clipboardDrop = 
this.up('panel').down('field[itemId=clipboardDrop]');
+               let vdagentHint = 
this.up('panel').down('field[name=vdagentHint]');
                let disableMemoryField = false;
+               let spice = false;
+               let showClipboardAndHint = true;
 
                if (val === "cirrus") {
                    memoryfield.setEmptyText("4");
-               } else if (val === "std" || val.match(/^qxl\d?$/) || val === 
"vmware") {
+               } else if (val === "std" || val === "vmware") {
                    memoryfield.setEmptyText("16");
+               } else if (val.match(/^qxl\d?$/)) {
+                   memoryfield.setEmptyText("16");
+                   spice = true;
                } else if (val.match(/^virtio/)) {
                    memoryfield.setEmptyText("256");
+                   spice = true;
                } else if (val.match(/^(serial\d|none)$/)) {
                    memoryfield.setEmptyText("N/A");
                    disableMemoryField = true;
+                   showClipboardAndHint = false;
                } else {
                    console.debug("unexpected display type", val);
                    memoryfield.setEmptyText(Proxmox.Utils.defaultText);
                }
                memoryfield.setDisabled(disableMemoryField);
+               vdagentHint.setVisible(showClipboardAndHint);
+               if (showClipboardAndHint) {
+                   // switch from Checkbox to ComboBox and vice versa
+                   clipboardBox.setDisabled(spice);
+                   clipboardDrop.setDisabled(!spice);
+                   clipboardBox.setVisible(!spice);
+                   clipboardDrop.setVisible(spice);
+                   // reset value when changing to spice,
+                   // so that you have to actively change to noVNC Clipboard
+                   if (spice) {
+                       clipboardDrop.setValue('__default__');
+                   }
+               } else {
+                   // reset to default
+                   clipboardBox.setValue(false);
+                   clipboardDrop.setValue('__default__');
+                   // show only the disabled Checkbox
+                   clipboardBox.setDisabled(true);
+                   clipboardDrop.setDisabled(true);
+                   clipboardBox.setVisible(true);
+                   clipboardDrop.setVisible(false);
+               }
            },
        },
     },
@@ -60,6 +92,34 @@ Ext.define('PVE.qemu.DisplayInputPanel', {
        maxValue: 512,
        step: 4,
        name: 'memory',
+    },
+    {
+       xtype: 'proxmoxcheckbox',
+       fieldLabel: gettext('noVNC Clipboard'),
+       name: 'clipboard',
+       itemId: 'clipboardBox',
+    },
+    {
+       name: 'clipboard',
+       itemId: 'clipboardDrop',
+       xtype: 'proxmoxKVComboBox',
+       value: '__default__',
+       deleteEmpty: false,
+       fieldLabel: gettext('Clipboard'),
+       comboItems: [
+           ['__default__', 'SPICE-Clipboard'],
+           ['1', 'noVNC-Clipboard'],
+       ],
+       disabled: true,
+       hidden: true,
+    },
+    {
+       itemId: 'vdagentHint',
+       name: 'vdagentHint',
+       xtype: 'displayfield',
+       userCls: 'pmx-hint',
+       value: 'Clipboard for noVNC requires spice-tools installed and ' +
+           'enabled in the Guest-VM.',
     }],
 });
 
-- 
2.30.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to