VM selection: expand models for UI/key columns

Add a new column in the list models for the VM selection dialog, and use
this new column to hold the key of the VM. This way, the first column
represents the UI representation of the VM without affecting the key.

At the moment the VM name is set for both, so there is no behavior
change.

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
This commit is contained in:
Pino Toscano 2020-07-24 10:38:04 +02:00 committed by Pino Toscano
parent c28374d8a8
commit 74d25742ea
3 changed files with 10 additions and 5 deletions

View File

@ -608,7 +608,8 @@ choose_vm(GtkWindow *main_window,
g_return_val_if_fail(vm_name != NULL, NULL);
free(*vm_name);
model = gtk_list_store_new(1, G_TYPE_STRING);
/* UI name , key */
model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
vms = ovirt_collection_get_resources(vms_collection);
g_hash_table_iter_init(&vms_iter, vms);
@ -616,7 +617,7 @@ choose_vm(GtkWindow *main_window,
g_object_get(G_OBJECT(vm), "state", &state, NULL);
if (state == OVIRT_VM_STATE_UP) {
gtk_list_store_append(model, &iter);
gtk_list_store_set(model, &iter, 0, *vm_name, -1);
gtk_list_store_set(model, &iter, 0, *vm_name, 1, *vm_name, -1);
}
}

View File

@ -65,6 +65,8 @@ virt_viewer_vm_connection_choose_name_dialog(GtkWindow *main_window,
return NULL;
}
g_assert(gtk_tree_model_get_n_columns(model) == 2);
vm_connection = virt_viewer_util_load_ui("virt-viewer-vm-connection.ui");
g_return_val_if_fail(vm_connection != NULL, NULL);
@ -86,7 +88,7 @@ virt_viewer_vm_connection_choose_name_dialog(GtkWindow *main_window,
if (dialog_response == GTK_RESPONSE_ACCEPT &&
gtk_tree_selection_get_selected(selection, &model, &iter)) {
gtk_tree_model_get(model, &iter, 0, &vm_name, -1);
gtk_tree_model_get(model, &iter, 1, &vm_name, -1);
} else {
g_set_error_literal(error,
VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_CANCELLED,

View File

@ -823,12 +823,14 @@ choose_vm(GtkWindow *main_window,
g_return_val_if_fail(vm_name != NULL, NULL);
free(*vm_name);
model = gtk_list_store_new(1, G_TYPE_STRING);
/* UI name , key */
model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
vms_running = virConnectListAllDomains(conn, &domains, flags);
for (i = 0; i < vms_running; i++) {
const char *name = virDomainGetName(domains[i]);
gtk_list_store_append(model, &iter);
gtk_list_store_set(model, &iter, 0, virDomainGetName(domains[i]), -1);
gtk_list_store_set(model, &iter, 0, name, 1, name, -1);
virDomainFree(domains[i]);
}
free(domains);