diff options
author | Cole Robinson <crobinso@redhat.com> | 2019-04-13 20:45:21 -0400 |
---|---|---|
committer | Cole Robinson <crobinso@redhat.com> | 2019-04-14 18:24:35 -0400 |
commit | 5a90b669ff48e797d3e8a1df4f6340c003ec5ef9 (patch) | |
tree | b394283e9aa4848c15c9ac846650b0b2c9a79b16 /virtManager/addhardware.py | |
parent | c3ea2d311951c6d5f5344548cc64243eae145bb0 (diff) | |
download | virt-manager-5a90b669ff48e797d3e8a1df4f6340c003ec5ef9.tar.gz |
addhardware: Use vmmHost style error page paradigm
Rather than making the error page one of the hardware pages which is
the wrong layering approach
Diffstat (limited to 'virtManager/addhardware.py')
-rw-r--r-- | virtManager/addhardware.py | 68 |
1 files changed, 27 insertions, 41 deletions
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py index 85dc34ee..054a5d6f 100644 --- a/virtManager/addhardware.py +++ b/virtManager/addhardware.py @@ -26,8 +26,7 @@ from .baseclass import vmmGObjectUI from .addstorage import vmmAddStorage from .vsockdetails import vmmVsockDetails -(PAGE_ERROR, - PAGE_DISK, +(PAGE_DISK, PAGE_CONTROLLER, PAGE_NETWORK, PAGE_INPUT, @@ -43,7 +42,7 @@ from .vsockdetails import vmmVsockDetails PAGE_TPM, PAGE_RNG, PAGE_PANIC, - PAGE_VSOCK) = range(18) + PAGE_VSOCK) = range(17) def _build_combo(combo, values, default_value=None, sort=True): @@ -101,7 +100,7 @@ class vmmAddHardware(vmmGObjectUI): "on_create_cancel_clicked": self.close, "on_vmm_create_delete_event": self.close, "on_create_finish_clicked": self._finish, - "on_hw_list_changed": self._hw_selected, + "on_hw_list_changed": self._hw_selected_cb, "on_storage_devtype_changed": self._change_storage_devtype, @@ -165,18 +164,12 @@ class vmmAddHardware(vmmGObjectUI): ########################## def _set_initial_state(self): - notebook = self.widget("create-pages") - notebook.set_show_tabs(False) + self.widget("create-pages").set_show_tabs(False) + self.widget("top-pages").set_show_tabs(False) blue = Gdk.color_parse("#0072A8") self.widget("page-title-box").modify_bg(Gtk.StateType.NORMAL, blue) - # Name, icon name, page number, is sensitive, tooltip, icon size, - # device type (serial/parallel)... - model = Gtk.ListStore(str, str, int, bool, str, str) - hw_list = self.widget("hw-list") - hw_list.set_model(model) - hw_col = Gtk.TreeViewColumn(_("Hardware")) hw_col.set_spacing(6) hw_col.set_min_width(165) @@ -191,7 +184,7 @@ class vmmAddHardware(vmmGObjectUI): hw_col.add_attribute(icon, 'icon-name', 1) hw_col.add_attribute(text, 'text', 0) hw_col.add_attribute(text, 'sensitive', 3) - hw_list.append_column(hw_col) + self.widget("hw-list").append_column(hw_col) # Individual HW page UI self.build_disk_bus_combo(self.vm, self.widget("storage-bustype")) @@ -229,9 +222,10 @@ class vmmAddHardware(vmmGObjectUI): storage_tooltip = _("Connection does not support storage" " management.") - hwlist = self.widget("hw-list") - model = hwlist.get_model() - model.clear() + # Name, icon name, page number, is sensitive, tooltip, icon size, + # device type (serial/parallel)... + model = Gtk.ListStore(str, str, int, bool, str, str) + self.widget("hw-list").set_model(model) def add_hw_option(name, icon, page, sensitive, errortxt, devtype=None): model.append([name, icon, page, sensitive, errortxt, devtype]) @@ -299,12 +293,11 @@ class vmmAddHardware(vmmGObjectUI): def _reset_state(self): # Hide all notebook pages, otherwise the wizard window is as large # as the largest page - notebook = self.widget("create-pages") - for page in range(notebook.get_n_pages()): - widget = notebook.get_nth_page(page) + for page in range(self.widget("create-pages").get_n_pages()): + widget = self.widget("create-pages").get_nth_page(page) widget.hide() - self._set_hw_selection(0) + self._set_hw_selection(0) # Storage params self.widget("storage-devtype").set_active(0) @@ -730,30 +723,26 @@ class vmmAddHardware(vmmGObjectUI): def _get_hw_selection(self): return uiutil.get_list_selected_row(self.widget("hw-list")) + def _set_error_page(self, msg=None): + self.widget("top-pages").set_current_page(1) + self.widget("error-label").set_text(msg or "Hardware selection error.") + self.widget("create-finish").set_sensitive(False) + ################ # UI listeners # ################ - def _hw_selected(self, src=None): - ignore = src + def _hw_selected_cb(self, src): self._dev = None - notebook = self.widget("create-pages") + self.widget("create-finish").set_sensitive(True) row = self._get_hw_selection() - if not row: - self._set_hw_selection(0) + if not row or not row[3]: + self._set_error_page(row and row[4] or None) return page = row[2] - sens = row[3] - msg = row[4] or "" - - self.widget("create-finish").set_sensitive(sens) - - if not sens: - page = PAGE_ERROR - self.widget("hardware-info").set_text(msg) if page == PAGE_CHAR: # Need to do this here, since we share the char page between @@ -776,12 +765,11 @@ class vmmAddHardware(vmmGObjectUI): self.widget("controller-type").emit("changed") self._set_page_title(page) - notebook.get_nth_page(page).show() - notebook.set_current_page(page) + self.widget("create-pages").get_nth_page(page).show() + self.widget("create-pages").set_current_page(page) + self.widget("top-pages").set_current_page(0) def _dev_to_title(self, page): - if page == PAGE_ERROR: - return _("Error") if page == PAGE_DISK: return _("Storage") if page == PAGE_CONTROLLER: @@ -1114,10 +1102,8 @@ class vmmAddHardware(vmmGObjectUI): page_num = self.widget("create-pages").get_current_page() # pylint: disable=assignment-from-no-return - if page_num == PAGE_ERROR: - self._dev = None - ret = True - elif page_num == PAGE_DISK: + + if page_num == PAGE_DISK: ret = self._validate_page_storage() elif page_num == PAGE_CONTROLLER: ret = self._validate_page_controller() |