[pve-devel] [PATCH manager v16 2/2] ui: qemu: add clipboard ComboBox as a advanced option in DisplayEdit

Dominik Csapak d.csapak at proxmox.com
Mon Apr 22 11:36:50 CEST 2024


a few comments inline

On 4/8/24 12:33, Markus Frank wrote:
> For SPICE and VNC, a different message is displayed.
> 
> The backend code for the clipboard option can be found in the
> 'config: enable vnc clipboard parameter in vga_fmt'-commit in qemu-server.
> 
> Signed-off-by: Markus Frank <m.frank at proxmox.com>
> ---
>   www/manager6/qemu/DisplayEdit.js | 41 ++++++++++++++++++++++++++++++++
>   1 file changed, 41 insertions(+)
> 
> diff --git a/www/manager6/qemu/DisplayEdit.js b/www/manager6/qemu/DisplayEdit.js
> index 17b02ee4..3357794a 100644
> --- a/www/manager6/qemu/DisplayEdit.js
> +++ b/www/manager6/qemu/DisplayEdit.js
> @@ -15,6 +15,7 @@ Ext.define('PVE.qemu.DisplayInputPanel', {
>   	data: {
>   	    type: '__default__',
>   	    nonGUIOptionRegex: /^(serial\d|none)$/,
> +	    clipboard: '__default__',
>   	},
>   	formulas: {
>   	    matchNonGUIOption: function(get) {
> @@ -35,6 +36,9 @@ Ext.define('PVE.qemu.DisplayInputPanel', {
>   		    return Proxmox.Utils.defaultText;
>   		}
>   	    },
> +	    isVNC: get => get('clipboard') === 'vnc',
> +	    hideDefaultHint: get => get('isVNC') || get('matchNonGUIOption'),
> +	    hideVNCHint: get => !get('isVNC') || get('matchNonGUIOption'),
>   	},
>       },
>   
> @@ -70,6 +74,43 @@ Ext.define('PVE.qemu.DisplayInputPanel', {
>   	    disabled: '{matchNonGUIOption}',
>   	},
>       }],
> +
> +    advancedItems: [
> +	{
> +	    xtype: 'proxmoxKVComboBox',
> +	    name: 'clipboard',
> +	    deleteEmpty: false,
> +	    fieldLabel: gettext('Clipboard'),
> +	    comboItems: [
> +		['__default__', Proxmox.Utils.defaultText + ' (SPICE)'],

this '(SPICE)' here implies that the spice clipboard is available anywhere
but the hint below implies it's only available with SPICE

i'd probably omit it here and just say default and further explain it
in the hint.

> +		['vnc', 'VNC'],
> +	    ],
> +	    bind: {
> +		value: '{clipboard}',
> +		disabled: '{matchNonGUIOption}',
> +	    },

here you have to set the value initially to '__default__' too, otherwise
the bind set will mark it as dirty and allow a reset to the empty value

i.e. use
----8<----
value: '__default__',
---->8----



> +	},
> +	{
> +	    xtype: 'displayfield',
> +	    name: 'vncHint',
> +	    userCls: 'pmx-hint',
> +	    value: gettext('You cannot use the default SPICE clipboard if the VNC Clipboard is selected.') + ' ' +
> +		gettext('VNC Clipboard requires spice-tools installed in the Guest-VM.'),
> +	    bind: {
> +		hidden: '{hideVNCHint}',
> +	    },
> +	},
> +	{
> +	    xtype: 'displayfield',
> +	    name: 'defaultHint',
> +	    userCls: 'pmx-hint',
> +	    value: gettext('This option depends on your display type.') + ' ' +
> +		gettext('If the display type uses SPICE you are able to use the default SPICE Clipboard.'),
> +	    bind: {
> +		hidden: '{hideDefaultHint}',
> +	    },
> +	},
> +    ],
>   });
>   
>   Ext.define('PVE.qemu.DisplayEdit', {





More information about the pve-devel mailing list