mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
createpool: Switch to a single page
Just combine the pages. This simplifies the code and navigation, and makes it easier to add XML editing
This commit is contained in:
@@ -22,11 +22,9 @@ class CreatePool(uiutils.UITestCase):
|
||||
|
||||
# Create a simple default dir pool
|
||||
newname = "a-test-new-pool"
|
||||
forward = win.find("Forward", "push button")
|
||||
finish = win.find("Finish", "push button")
|
||||
name = win.find("Name:", "text")
|
||||
name.text = newname
|
||||
forward.click()
|
||||
finish.click()
|
||||
|
||||
# Select the new object in the host window, then do
|
||||
@@ -63,7 +61,6 @@ class CreatePool(uiutils.UITestCase):
|
||||
name.text = "a-scsi-pool"
|
||||
typ.click()
|
||||
win.find_fuzzy("SCSI Host Adapter", "menu item").click()
|
||||
forward.click()
|
||||
win.find_fuzzy("Source Path:", "combo").click_combo_entry()
|
||||
win.find_fuzzy("host2", "menu item").click()
|
||||
finish.click()
|
||||
@@ -76,7 +73,6 @@ class CreatePool(uiutils.UITestCase):
|
||||
name.text = "a-ceph-pool"
|
||||
typ.click()
|
||||
win.find_fuzzy("RADOS Block", "menu item").click()
|
||||
forward.click()
|
||||
win.find_fuzzy("Host Name:", "text").text = "example.com:1234"
|
||||
win.find_fuzzy("Source Name:", "text").typeText("frob")
|
||||
finish.click()
|
||||
|
||||
711
ui/createpool.ui
711
ui/createpool.ui
@@ -46,41 +46,15 @@
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="vbox3">
|
||||
<object class="GtkLabel" id="label2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes"><span size='large' color='white'>Create storage pool</span></property>
|
||||
<property name="use_markup">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="header-pagenum">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label"><span color='#59B0E2'>Step foo of bar</span></property>
|
||||
<property name="use_markup">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes"><span size='large' color='white'>Create storage pool</span></property>
|
||||
<property name="use_markup">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
@@ -112,14 +86,273 @@
|
||||
<object class="GtkNotebook" id="pool-pages">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="show_border">False</property>
|
||||
<signal name="switch-page" handler="on_pool_pages_change_page" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkGrid" id="table1">
|
||||
<object class="GtkGrid" id="pool-details-grid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="row_spacing">4</property>
|
||||
<property name="column_spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-build-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">B_uild Pool:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-build</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">9</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="pool-iqn-box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="pool-iqn-chk">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<signal name="toggled" handler="on_pool_iqn_chk_toggled" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="pool-iqn">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="width_chars">25</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">8</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-target-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">Tar_get Path:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-target-path</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-format-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">F_ormat:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-format</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-hostname-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">Host Na_me:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-hostname</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-source-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label">sourcep:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-source-path</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">7</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-iqn-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">Initiator _IQN:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-iqn-chk</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">8</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="pool-target-button">
|
||||
<property name="label" translatable="yes">B_rowse</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="clicked" handler="on_pool_target_button_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="top_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="pool-target-path">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="has_entry">True</property>
|
||||
<child internal-child="entry">
|
||||
<object class="GtkEntry">
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">25</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="pool-source-button">
|
||||
<property name="label" translatable="yes">Bro_wse</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="clicked" handler="on_pool_source_button_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="top_attach">7</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="pool-source-path">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="has_entry">True</property>
|
||||
<child internal-child="entry">
|
||||
<object class="GtkEntry">
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">25</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">7</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="pool-hostname">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="width_chars">25</property>
|
||||
<signal name="activate" handler="on_pool_hostname_activate" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="pool-build">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">9</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-source-name-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">Source N_ame:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-source-name</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="pool-source-name">
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">25</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="pool-format">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_STRUCTURE_MASK</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="has_entry">True</property>
|
||||
<child internal-child="entry">
|
||||
<object class="GtkEntry">
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">10</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label9">
|
||||
<property name="visible">True</property>
|
||||
@@ -131,7 +364,7 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -142,34 +375,11 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="pool-type">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label4">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Select the storage pool type you would like to configure.</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label10">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
@@ -179,315 +389,69 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="pool-type">
|
||||
<property name="name">pool-type</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<signal name="changed" handler="on_pool_type_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparator">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">start</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="tab">
|
||||
<object class="GtkLabel" id="label1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label">Type</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="box1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkGrid" id="pool-details-grid">
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="row_spacing">4</property>
|
||||
<property name="column_spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-build-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">B_uild Pool:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-build</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="pool-iqn-box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="pool-iqn-chk">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<signal name="toggled" handler="on_pool_iqn_chk_toggled" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="pool-iqn">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="width_chars">25</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-target-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">_Target Path:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-target-path</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-format-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">F_ormat:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-format</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-hostname-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">Host Na_me:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-hostname</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-source-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label">sourcep:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-source-path</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-iqn-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">Initiator _IQN:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-iqn-chk</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">5</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="pool-target-button">
|
||||
<property name="label" translatable="yes">B_rowse</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="clicked" handler="on_pool_target_button_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="pool-target-path">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="has_entry">True</property>
|
||||
<child internal-child="entry">
|
||||
<object class="GtkEntry" id="combobox-entry1">
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">25</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="pool-source-button">
|
||||
<property name="label" translatable="yes">Bro_wse</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="clicked" handler="on_pool_source_button_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="top_attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="pool-source-path">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="has_entry">True</property>
|
||||
<child internal-child="entry">
|
||||
<object class="GtkEntry" id="combobox-entry2">
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">25</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="pool-hostname">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="width_chars">25</property>
|
||||
<signal name="activate" handler="on_pool_hostname_activate" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="pool-build">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="pool-source-name-label">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="label" translatable="yes">Source _Name:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">pool-source-name</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="pool-source-name">
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">25</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="pool-format">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_STRUCTURE_MASK</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="has_entry">True</property>
|
||||
<child internal-child="entry">
|
||||
<object class="GtkEntry" id="pool-format-entry">
|
||||
<property name="can_focus">True</property>
|
||||
<property name="width_chars">10</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<property name="label"> </property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child type="tab">
|
||||
<object class="GtkLabel" id="label3">
|
||||
@@ -496,13 +460,12 @@
|
||||
<property name="label">Details</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
@@ -525,37 +488,7 @@
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="pool-back">
|
||||
<property name="label">gtk-go-back</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="clicked" handler="on_pool_back_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="pool-forward">
|
||||
<property name="label">gtk-go-forward</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="clicked" handler="on_pool_forward_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">3</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@@ -570,7 +503,7 @@
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">4</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
@@ -15,9 +15,6 @@ from .baseclass import vmmGObjectUI
|
||||
from .asyncjob import vmmAsyncJob
|
||||
from . import uiutil
|
||||
|
||||
PAGE_NAME = 0
|
||||
PAGE_FORMAT = 1
|
||||
|
||||
|
||||
class vmmCreatePool(vmmGObjectUI):
|
||||
__gsignals__ = {
|
||||
@@ -31,12 +28,11 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
self._pool = None
|
||||
|
||||
self.builder.connect_signals({
|
||||
"on_pool_forward_clicked": self.forward,
|
||||
"on_pool_back_clicked": self.back,
|
||||
"on_pool_cancel_clicked": self.close,
|
||||
"on_vmm_create_pool_delete_event": self.close,
|
||||
"on_pool_finish_clicked": self.forward,
|
||||
"on_pool_pages_change_page": self.page_changed,
|
||||
"on_pool_pages_change_page": self._page_changed_cb,
|
||||
"on_pool_type_changed": self._pool_type_changed_cb,
|
||||
|
||||
"on_pool_source_button_clicked": self.browse_source_path,
|
||||
"on_pool_target_button_clicked": self.browse_target_path,
|
||||
@@ -48,7 +44,6 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
self.bind_escape_key_close()
|
||||
|
||||
self.set_initial_state()
|
||||
self.set_page(PAGE_NAME)
|
||||
|
||||
def show(self, parent):
|
||||
logging.debug("Showing new pool wizard")
|
||||
@@ -65,17 +60,23 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
self.conn = None
|
||||
self._pool = None
|
||||
|
||||
def _build_pool_type_list(self):
|
||||
# [pool type, label]
|
||||
model = Gtk.ListStore(str, str)
|
||||
type_list = self.widget("pool-type")
|
||||
type_list.set_model(model)
|
||||
uiutil.init_combo_text_column(type_list, 1)
|
||||
|
||||
for typ in sorted(StoragePool.get_pool_types()):
|
||||
desc = StoragePool.get_pool_type_desc(typ)
|
||||
model.append([typ, "%s: %s" % (typ, desc)])
|
||||
|
||||
def set_initial_state(self):
|
||||
self.widget("pool-pages").set_show_tabs(False)
|
||||
|
||||
blue = Gdk.Color.parse("#0072A8")[1]
|
||||
self.widget("header").modify_bg(Gtk.StateType.NORMAL, blue)
|
||||
|
||||
type_list = self.widget("pool-type")
|
||||
type_model = Gtk.ListStore(str, str)
|
||||
type_list.set_model(type_model)
|
||||
uiutil.init_combo_text_column(type_list, 1)
|
||||
|
||||
format_list = self.widget("pool-format")
|
||||
format_model = Gtk.ListStore(str, str)
|
||||
format_list.set_model(format_model)
|
||||
@@ -99,17 +100,16 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
source_list.set_model(source_model)
|
||||
source_list.set_entry_text_column(0)
|
||||
|
||||
self.populate_pool_type()
|
||||
self._build_pool_type_list()
|
||||
|
||||
|
||||
def reset_state(self):
|
||||
self.widget("pool-pages").set_current_page(0)
|
||||
self.widget("pool-forward").show()
|
||||
self.widget("pool-finish").hide()
|
||||
self.widget("pool-back").set_sensitive(False)
|
||||
|
||||
self.widget("pool-name").set_text("")
|
||||
defaultname = StoragePool.find_free_name(
|
||||
self.conn.get_backend(), "pool")
|
||||
self.widget("pool-name").set_text(defaultname)
|
||||
self.widget("pool-name").grab_focus()
|
||||
self.widget("pool-type").set_active(0)
|
||||
self.widget("pool-target-path").get_child().set_text("")
|
||||
self.widget("pool-source-path").get_child().set_text("")
|
||||
self.widget("pool-hostname").set_text("")
|
||||
@@ -119,8 +119,9 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
self.widget("pool-format").set_active(0)
|
||||
self.widget("pool-build").set_sensitive(True)
|
||||
self.widget("pool-build").set_active(False)
|
||||
self.widget("pool-details-grid").set_visible(False)
|
||||
|
||||
uiutil.set_list_selection(self.widget("pool-type"), 0)
|
||||
self.show_options_by_pool()
|
||||
|
||||
def hostname_changed(self, ignore):
|
||||
# If a hostname was entered, try to lookup valid pool sources.
|
||||
@@ -129,15 +130,6 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
def iqn_toggled(self, src):
|
||||
self.widget("pool-iqn").set_sensitive(src.get_active())
|
||||
|
||||
def populate_pool_type(self):
|
||||
model = self.widget("pool-type").get_model()
|
||||
model.clear()
|
||||
types = StoragePool.get_pool_types()
|
||||
types.sort()
|
||||
for typ in types:
|
||||
model.append([typ, "%s: %s" %
|
||||
(typ, StoragePool.get_pool_type_desc(typ))])
|
||||
|
||||
def populate_pool_sources(self):
|
||||
source_list = self.widget("pool-source-path")
|
||||
source_model = source_list.get_model()
|
||||
@@ -237,6 +229,7 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
widget = self.widget(base + "-label")
|
||||
uiutil.set_grid_row_visible(widget, do_show)
|
||||
|
||||
self._pool = self._make_stub_pool()
|
||||
src = self._pool.supports_property("source_path")
|
||||
src_b = src and not self.conn.is_remote()
|
||||
tgt = self._pool.supports_property("target_path")
|
||||
@@ -273,7 +266,7 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
|
||||
if tgt:
|
||||
self.widget("pool-target-path").get_child().set_text(
|
||||
self._pool.default_target_path())
|
||||
self._pool.default_target_path() or "")
|
||||
|
||||
self.widget("pool-target-button").set_sensitive(tgt_b)
|
||||
self.widget("pool-source-button").set_sensitive(src_b)
|
||||
@@ -367,21 +360,14 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
|
||||
|
||||
def forward(self, ignore=None):
|
||||
notebook = self.widget("pool-pages")
|
||||
try:
|
||||
if self.validate(notebook.get_current_page()) is not True:
|
||||
if self._validate() is not True:
|
||||
return
|
||||
if notebook.get_current_page() == PAGE_FORMAT:
|
||||
self.finish()
|
||||
else:
|
||||
notebook.next_page()
|
||||
self.finish()
|
||||
except Exception as e:
|
||||
self.err.show_err(_("Uncaught error validating input: %s") % str(e))
|
||||
return
|
||||
|
||||
def back(self, ignore=None):
|
||||
self.widget("pool-pages").prev_page()
|
||||
|
||||
def _signal_pool_added(self, src, connkey, created_name):
|
||||
ignore = src
|
||||
if connkey == created_name:
|
||||
@@ -420,28 +406,11 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
poolobj.setAutostart(True)
|
||||
logging.debug("Pool creation succeeded")
|
||||
|
||||
def set_page(self, page_number):
|
||||
# Update page number
|
||||
page_lbl = ("<span color='#59B0E2'>%s</span>" %
|
||||
_("Step %(current_page)d of %(max_page)d") %
|
||||
{'current_page': page_number + 1,
|
||||
'max_page': PAGE_FORMAT + 1})
|
||||
self.widget("header-pagenum").set_markup(page_lbl)
|
||||
def _page_changed_cb(self, notebook, page, pagenum):
|
||||
pass
|
||||
|
||||
isfirst = (page_number == PAGE_NAME)
|
||||
islast = (page_number == PAGE_FORMAT)
|
||||
|
||||
self.widget("pool-back").set_sensitive(not isfirst)
|
||||
self.widget("pool-finish").set_visible(islast)
|
||||
self.widget("pool-forward").set_visible(not islast)
|
||||
self.widget(islast and "pool-finish" or "pool-forward").grab_focus()
|
||||
|
||||
self.widget("pool-details-grid").set_visible(islast)
|
||||
if islast:
|
||||
self.show_options_by_pool()
|
||||
|
||||
def page_changed(self, notebook_ignore, page_ignore, page_number):
|
||||
self.set_page(page_number)
|
||||
def _pool_type_changed_cb(self, src):
|
||||
self.show_options_by_pool()
|
||||
|
||||
def get_pool_to_validate(self):
|
||||
"""
|
||||
@@ -463,35 +432,26 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
def _make_stub_pool(self):
|
||||
pool = StoragePool(self.conn.get_backend())
|
||||
pool.type = self.get_config_type()
|
||||
pool.name = self.get_config_name()
|
||||
return pool
|
||||
|
||||
def _validate_page_name(self, usepool=None):
|
||||
try:
|
||||
if usepool:
|
||||
self._pool = usepool
|
||||
else:
|
||||
self._pool = self._make_stub_pool()
|
||||
|
||||
name = self.get_config_name()
|
||||
self._pool.validate_name(self._pool.conn, name)
|
||||
self._pool.name = name
|
||||
except ValueError as e:
|
||||
return self.err.val_err(_("Pool Parameter Error"), e)
|
||||
|
||||
return True
|
||||
|
||||
def _validate_page_format(self):
|
||||
def _validate(self):
|
||||
target = self.get_config_target_path()
|
||||
host = self.get_config_host()
|
||||
source = self.get_config_source_path()
|
||||
fmt = self.get_config_format()
|
||||
iqn = self.get_config_iqn()
|
||||
source_name = self.get_config_source_name()
|
||||
|
||||
if not self._validate_page_name(self.get_pool_to_validate()):
|
||||
return
|
||||
name = self.get_config_name()
|
||||
|
||||
try:
|
||||
self._pool = self.get_pool_to_validate()
|
||||
if not self._pool:
|
||||
self._pool = self._make_stub_pool()
|
||||
|
||||
self._pool.validate_name(self._pool.conn, name)
|
||||
self._pool.name = name
|
||||
|
||||
self._pool.target_path = target
|
||||
if host:
|
||||
hostobj = self._pool.hosts.add_new()
|
||||
@@ -521,12 +481,6 @@ class vmmCreatePool(vmmGObjectUI):
|
||||
|
||||
return True
|
||||
|
||||
def validate(self, page):
|
||||
if page == PAGE_NAME:
|
||||
return self._validate_page_name()
|
||||
elif page == PAGE_FORMAT:
|
||||
return self._validate_page_format()
|
||||
|
||||
def _browse_file(self, dialog_name, startfolder=None, foldermode=False):
|
||||
mode = Gtk.FileChooserAction.OPEN
|
||||
if foldermode:
|
||||
|
||||
Reference in New Issue
Block a user