mirror of
https://github.com/virt-manager/virt-manager.git
synced 2024-12-22 13:34:07 +03:00
addhardware: Modernize 'graphics' UI
- Drop SDL, it doesn't mesh with modern libvirt - Drop keymap, modern qemu/virt-manager handle this automagically - Drop big text fields - Misc other cleanups and simplifications
This commit is contained in:
parent
288a611ff7
commit
efbc815a60
@ -1011,379 +1011,23 @@
|
||||
<property name="can_focus">False</property>
|
||||
<property name="left_padding">12</property>
|
||||
<child>
|
||||
<object class="GtkTable" id="table38">
|
||||
<object class="GtkGrid" id="table38">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="n_rows">7</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="column_spacing">6</property>
|
||||
<property name="row_spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label429">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_Type:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-type</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options"/>
|
||||
</packing>
|
||||
</child>
|
||||
<property name="column_spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="graphics-type">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<signal name="changed" handler="on_graphics_type_changed" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label430">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_Address:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-address</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options"/>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label431">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_Port:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-port</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options"/>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label432">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">Pa_ssword:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-password</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options"/>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment160">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="bottom_padding">6</property>
|
||||
<child>
|
||||
<object class="GtkHBox" id="hbox67">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image107">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="stock">gtk-dialog-info</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="label428">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="yalign">0</property>
|
||||
<property name="xpad">7</property>
|
||||
<property name="label" translatable="yes"><small><b>Tip:</b> VNC or Spice server is strongly recommended because it allows the virtual display to be embedded inside this application. It may also be used to allow access to the virtual display from a remote system.</small></property>
|
||||
<property name="use_markup">True</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="width_chars">50</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment161">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="bottom_padding">6</property>
|
||||
<property name="left_padding">20</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="graphics-address">
|
||||
<property name="label" translatable="yes">Listen on all public network interfaces </property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options"/>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label4">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_Keymap:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-keymap-chk</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">6</property>
|
||||
<property name="bottom_attach">7</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTable" id="table1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="n_columns">4</property>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="graphics-keymap-chk">
|
||||
<property name="label" translatable="yes">Same as host</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="relief">half</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<signal name="toggled" handler="on_graphics_keymap_toggled" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="x_options"/>
|
||||
<property name="y_options"/>
|
||||
<property name="x_padding">17</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label5">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes">_Other:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-keymap</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="x_options"/>
|
||||
<property name="y_options"/>
|
||||
<property name="x_padding">10</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="graphics-keymap">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="invisible_char">●</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="right_attach">4</property>
|
||||
<property name="y_options"/>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">6</property>
|
||||
<property name="bottom_attach">7</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment5">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTable" id="table8">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="n_columns">4</property>
|
||||
<property name="column_spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label29">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_TLS port:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-port</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="y_options"/>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="graphics-port">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="adjustment">adjustment5</property>
|
||||
<property name="climb_rate">1</property>
|
||||
<property name="snap_to_ticks">True</property>
|
||||
<property name="numeric">True</property>
|
||||
<property name="update_policy">if-valid</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="graphics-port-auto">
|
||||
<property name="label" translatable="yes">A_utomatically allocated</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<signal name="toggled" handler="on_graphics_port_auto_toggled" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="right_attach">4</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="graphics-tls-port">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="adjustment">adjustment4</property>
|
||||
<property name="climb_rate">1</property>
|
||||
<property name="snap_to_ticks">True</property>
|
||||
<property name="numeric">True</property>
|
||||
<property name="update_policy">if-valid</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
@ -1423,9 +1067,195 @@
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label429">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_Type:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-type</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label430">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_Address:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-address</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label432">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">Pa_ssword:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-password</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label431">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_Port:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-port</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkAlignment" id="alignment1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkCheckButton" id="graphics-port-auto">
|
||||
<property name="label" translatable="yes">A_utomatically allocated</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<signal name="toggled" handler="on_graphics_port_auto_toggled" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="graphics-port-box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="graphics-port">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="invisible_char_set">True</property>
|
||||
<property name="adjustment">adjustment5</property>
|
||||
<property name="climb_rate">1</property>
|
||||
<property name="snap_to_ticks">True</property>
|
||||
<property name="numeric">True</property>
|
||||
<property name="update_policy">if-valid</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="graphics-tlsport-box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="label29">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_TLS port:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">graphics-port</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="graphics-tls-port">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="invisible_char">●</property>
|
||||
<property name="invisible_char_set">True</property>
|
||||
<property name="adjustment">adjustment4</property>
|
||||
<property name="climb_rate">1</property>
|
||||
<property name="snap_to_ticks">True</property>
|
||||
<property name="numeric">True</property>
|
||||
<property name="update_policy">if-valid</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</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">3</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBox" id="graphics-address">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="width">1</property>
|
||||
<property name="height">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
|
@ -96,7 +96,6 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
|
||||
"on_graphics_type_changed": self.change_graphics_type,
|
||||
"on_graphics_port_auto_toggled": self.change_port_auto,
|
||||
"on_graphics_keymap_toggled": self.change_keymap,
|
||||
"on_graphics_use_password": self.change_password_chk,
|
||||
|
||||
"on_char_device_type_changed": self.change_char_device_type,
|
||||
@ -274,6 +273,13 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
graphics_list.pack_start(text, True)
|
||||
graphics_list.add_attribute(text, 'text', 0)
|
||||
|
||||
# Graphics address
|
||||
# [label, value]
|
||||
self.widget("graphics-address").set_model(Gtk.ListStore(str, str))
|
||||
text = Gtk.CellRendererText()
|
||||
self.widget("graphics-address").pack_start(text, True)
|
||||
self.widget("graphics-address").add_attribute(text, 'text', 0)
|
||||
|
||||
# Sound model list
|
||||
sound_list = self.widget("sound-model")
|
||||
uihelpers.build_sound_combo(self.vm, sound_list)
|
||||
@ -462,17 +468,22 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
input_box.set_active(0)
|
||||
|
||||
# Graphics init
|
||||
self.change_port_auto()
|
||||
graphics_box = self.widget("graphics-type")
|
||||
self.populate_graphics_model(graphics_box.get_model())
|
||||
graphics_box.set_active(0)
|
||||
self.widget("graphics-address").set_active(False)
|
||||
|
||||
model = self.widget("graphics-address").get_model()
|
||||
model.clear()
|
||||
model.append([_("Hypervisor default"), None])
|
||||
model.append([_("Localhost only"), "127.0.0.1"])
|
||||
model.append([_("All interfaces"), "0.0.0.0"])
|
||||
self.widget("graphics-address").set_active(0)
|
||||
|
||||
self.change_port_auto()
|
||||
self.widget("graphics-port-auto").set_active(True)
|
||||
self.widget("graphics-password").set_text("")
|
||||
self.widget("graphics-password").set_sensitive(False)
|
||||
self.widget("graphics-password-chk").set_active(False)
|
||||
self.widget("graphics-keymap").set_text("")
|
||||
self.widget("graphics-keymap-chk").set_active(True)
|
||||
|
||||
# Sound init
|
||||
sound_box = self.widget("sound-model")
|
||||
@ -563,9 +574,8 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
|
||||
def populate_graphics_model(self, model):
|
||||
model.clear()
|
||||
model.append([_("VNC server"), "vnc"])
|
||||
model.append([_("Spice server"), "spice"])
|
||||
model.append([_("Local SDL window"), "sdl"])
|
||||
model.append([_("VNC server"), "vnc"])
|
||||
|
||||
def populate_host_device_model(self, devtype, devcap, subtype, subcap):
|
||||
devlist = self.widget("host-device")
|
||||
@ -663,38 +673,25 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
return None
|
||||
return _type.get_model().get_value(_type.get_active_iter(), 1)
|
||||
|
||||
def get_config_graphics_port(self):
|
||||
port = self.widget("graphics-port")
|
||||
portAuto = self.widget("graphics-port-auto")
|
||||
if portAuto.get_active():
|
||||
return -1
|
||||
return int(port.get_value())
|
||||
def get_config_graphics_ports(self):
|
||||
if self.widget("graphics-port-auto").get_active():
|
||||
return -1, -1
|
||||
|
||||
def get_config_graphics_tls_port(self):
|
||||
port = self.widget("graphics-tls-port")
|
||||
portAuto = self.widget("graphics-port-auto")
|
||||
if portAuto.get_active():
|
||||
return -1
|
||||
return int(port.get_value())
|
||||
port = self.widget("graphics-port").get_value()
|
||||
tlsport = self.widget("graphics-tls-port").get_value()
|
||||
if not self.widget("graphics-tls-port").get_visible():
|
||||
tlsport = -1
|
||||
return int(port), int(tlsport)
|
||||
|
||||
def get_config_graphics_address(self):
|
||||
addr = self.widget("graphics-address")
|
||||
if addr.get_active():
|
||||
return "0.0.0.0"
|
||||
return "127.0.0.1"
|
||||
return addr.get_model()[addr.get_active()][1]
|
||||
|
||||
def get_config_graphics_password(self):
|
||||
if not self.widget("graphics-password-chk").get_active():
|
||||
return None
|
||||
return self.widget("graphics-password").get_text()
|
||||
|
||||
def get_config_keymap(self):
|
||||
g = self.widget("graphics-keymap")
|
||||
if g.get_sensitive() and g.get_text() != "":
|
||||
return g.get_text()
|
||||
else:
|
||||
return None
|
||||
|
||||
# Network getters
|
||||
def get_config_network(self):
|
||||
net_list = self.widget("net-list")
|
||||
@ -959,44 +956,17 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
|
||||
# Graphics listeners
|
||||
def change_graphics_type(self, ignore=None):
|
||||
graphics = self.get_config_graphics()
|
||||
if graphics in ["vnc", "spice"]:
|
||||
self.widget("graphics-port-auto").set_sensitive(True)
|
||||
self.widget("graphics-address").set_sensitive(True)
|
||||
# Skip this code if the checkbox value is not changed. In this way
|
||||
# the password field maintains its value.
|
||||
if not self.widget("graphics-password-chk").get_sensitive():
|
||||
self.widget("graphics-password").set_sensitive(False)
|
||||
self.widget("graphics-password-chk").set_sensitive(True)
|
||||
self.widget("graphics-password-chk").set_active(False)
|
||||
self.widget("graphics-keymap-chk").set_sensitive(True)
|
||||
self.change_port_auto()
|
||||
else:
|
||||
self.widget("graphics-port").set_sensitive(False)
|
||||
self.widget("graphics-tls-port").set_sensitive(False)
|
||||
self.widget("graphics-port-auto").set_sensitive(False)
|
||||
self.widget("graphics-address").set_sensitive(False)
|
||||
self.widget("graphics-password").set_sensitive(False)
|
||||
self.widget("graphics-password-chk").set_sensitive(False)
|
||||
self.widget("graphics-password-chk").set_active(False)
|
||||
self.widget("graphics-keymap-chk").set_sensitive(False)
|
||||
self.widget("graphics-keymap").set_sensitive(False)
|
||||
self.change_port_auto()
|
||||
|
||||
def change_port_auto(self, ignore=None):
|
||||
graphics = self.get_config_graphics()
|
||||
tls_enable = graphics == "spice"
|
||||
if self.widget("graphics-port-auto").get_active():
|
||||
self.widget("graphics-port").set_sensitive(False)
|
||||
self.widget("graphics-tls-port").set_sensitive(False)
|
||||
else:
|
||||
self.widget("graphics-port").set_sensitive(True)
|
||||
self.widget("graphics-tls-port").set_sensitive(tls_enable)
|
||||
gtype = self.get_config_graphics()
|
||||
is_auto = self.widget("graphics-port-auto").get_active()
|
||||
is_spice = (gtype == "spice")
|
||||
|
||||
def change_keymap(self, ignore=None):
|
||||
if self.widget("graphics-keymap-chk").get_active():
|
||||
self.widget("graphics-keymap").set_sensitive(False)
|
||||
else:
|
||||
self.widget("graphics-keymap").set_sensitive(True)
|
||||
uihelpers.set_grid_row_visible(self.widget("graphics-port-box"),
|
||||
not is_auto)
|
||||
self.widget("graphics-port-box").set_visible(not is_auto)
|
||||
self.widget("graphics-tlsport-box").set_visible(is_spice)
|
||||
|
||||
def change_password_chk(self, ignore=None):
|
||||
if self.widget("graphics-password-chk").get_active():
|
||||
@ -1154,13 +1124,12 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
show_mode = bool(
|
||||
fsdriver == virtinst.VirtualFilesystem.DRIVER_PATH or
|
||||
fsdriver == virtinst.VirtualFilesystem.DRIVER_DEFAULT)
|
||||
self.widget("fs-mode-title").set_visible(show_mode)
|
||||
self.widget("fs-mode-box").set_visible(show_mode)
|
||||
uihelpers.set_grid_row_visible(self.widget("fs-mode-box"), show_mode)
|
||||
|
||||
show_wrpol = bool(
|
||||
fsdriver and fsdriver != virtinst.VirtualFilesystem.DRIVER_DEFAULT)
|
||||
self.widget("fs-wrpolicy-title").set_visible(show_wrpol)
|
||||
self.widget("fs-wrpolicy-box").set_visible(show_wrpol)
|
||||
uihelpers.set_grid_row_visible(self.widget("fs-wrpolicy-box"),
|
||||
show_wrpol)
|
||||
|
||||
|
||||
|
||||
@ -1437,15 +1406,14 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
gtype = self.get_config_graphics()
|
||||
|
||||
try:
|
||||
port, tlsport = self.get_config_graphics_ports()
|
||||
self._dev = virtinst.VirtualGraphics(self.conn.get_backend())
|
||||
self._dev.type = gtype
|
||||
if gtype != "sdl":
|
||||
self._dev.port = self.get_config_graphics_port()
|
||||
self._dev.passwd = self.get_config_graphics_password()
|
||||
self._dev.listen = self.get_config_graphics_address()
|
||||
self._dev.keymap = self.get_config_keymap()
|
||||
self._dev.port = port
|
||||
self._dev.passwd = self.get_config_graphics_password()
|
||||
self._dev.listen = self.get_config_graphics_address()
|
||||
if gtype == "spice":
|
||||
self._dev.tlsPort = self.get_config_graphics_tls_port()
|
||||
self._dev.tlsPort = tlsport
|
||||
except ValueError, e:
|
||||
self.err.val_err(_("Graphics device parameter error"), e)
|
||||
|
||||
|
@ -25,10 +25,11 @@
|
||||
# pylint: disable=E0611
|
||||
from gi.repository import Gdk
|
||||
from gi.repository import GLib
|
||||
from gi.repository import GObject
|
||||
from gi.repository import Gtk
|
||||
# pylint: enable=E0611
|
||||
|
||||
from virtManager import uihelpers
|
||||
|
||||
# pylint: disable=E1101
|
||||
# pylint can't detect functions we inheirit from Gtk, ex:
|
||||
# OverBox.set_over: Instance of 'OverBox' has no 'remove' member
|
||||
@ -91,9 +92,11 @@ class OverBox(Gtk.Box):
|
||||
actual_min = self._get_actual_min()
|
||||
|
||||
if self.overWidget:
|
||||
expand = self.child_get_property(self.overWidget, "expand")
|
||||
fill = self.child_get_property(self.overWidget, "fill")
|
||||
padding = self.child_get_property(self.overWidget, "padding")
|
||||
expand = uihelpers.child_get_property(self, self.overWidget,
|
||||
"expand")
|
||||
fill = uihelpers.child_get_property(self, self.overWidget, "fill")
|
||||
padding = uihelpers.child_get_property(self, self.overWidget,
|
||||
"padding")
|
||||
|
||||
# XXX: On Fedora 19 child_get_property isn't working :(
|
||||
expand = True
|
||||
@ -129,14 +132,6 @@ class OverBox(Gtk.Box):
|
||||
# Custom functionality #
|
||||
########################
|
||||
|
||||
def child_get_property(self, widget, propname):
|
||||
# gtk3 bindings are crappy here, make it work like
|
||||
# gobject.get_property()
|
||||
value = GObject.Value()
|
||||
value.init(GObject.TYPE_INT)
|
||||
Gtk.Box.child_get_property(self, widget, propname, value)
|
||||
return value.get_int()
|
||||
|
||||
def do_set_over(self, widget):
|
||||
self.set_over(widget)
|
||||
|
||||
@ -264,9 +259,9 @@ class OverBox(Gtk.Box):
|
||||
self.overWidth = over.width
|
||||
self.overHeight = over.height
|
||||
|
||||
expand = self.child_get_property(self.overWidget, "expand")
|
||||
fill = self.child_get_property(self.overWidget, "fill")
|
||||
padding = self.child_get_property(self.overWidget, "padding")
|
||||
expand = uihelpers.child_get_property(self, self.overWidget, "expand")
|
||||
fill = uihelpers.child_get_property(self, self.overWidget, "fill")
|
||||
padding = uihelpers.child_get_property(self, self.overWidget, "padding")
|
||||
|
||||
if expand or fill:
|
||||
wpad = 0
|
||||
|
@ -23,6 +23,7 @@ import os
|
||||
import statvfs
|
||||
|
||||
# pylint: disable=E0611
|
||||
from gi.repository import GObject
|
||||
from gi.repository import Gtk
|
||||
# pylint: enable=E0611
|
||||
|
||||
@ -1358,6 +1359,32 @@ def set_list_selection(widget, rownum):
|
||||
selection.select_path(path)
|
||||
|
||||
|
||||
def child_get_property(parent, child, propname):
|
||||
# Wrapper for child_get_property, which pygobject doesn't properly
|
||||
# introspect
|
||||
value = GObject.Value()
|
||||
value.init(GObject.TYPE_INT)
|
||||
parent.child_get_property(child, propname, value)
|
||||
return value.get_int()
|
||||
|
||||
|
||||
def set_grid_row_visible(child, visible):
|
||||
# For the passed widget, find its parent GtkGrid, and hide/show all
|
||||
# elements that are in the same row as it. Simplifies having to name
|
||||
# every element in a row when we want to dynamically hide things
|
||||
# based on UI interraction
|
||||
|
||||
parent = child.get_parent()
|
||||
if not type(parent) is Gtk.Grid:
|
||||
raise RuntimeError("Programming error, parent must be grid, "
|
||||
"not %s" % type(parent))
|
||||
|
||||
row = child_get_property(parent, child, "top-attach")
|
||||
for child in parent.get_children():
|
||||
if child_get_property(parent, child, "top-attach") == row:
|
||||
child.set_visible(visible)
|
||||
|
||||
|
||||
def default_uri(always_system=False):
|
||||
if os.path.exists('/var/lib/xend'):
|
||||
if (os.path.exists('/dev/xen/evtchn') or
|
||||
|
Loading…
Reference in New Issue
Block a user