Move shared graphics editing UI to gfxdetails.py

Fixes a couple UI bugs:
https://bugzilla.redhat.com/show_bug.cgi?id=696217
https://bugzilla.redhat.com/show_bug.cgi?id=875403
This commit is contained in:
Cole Robinson
2014-01-29 09:22:28 -05:00
parent d0c734e215
commit 64b2d0c6b7
10 changed files with 733 additions and 724 deletions
+1 -1
View File
@@ -205,7 +205,7 @@
<graphics type='vnc' listen="1.2.3.4" keymap="fi"/>
<graphics type='vnc' port="5903" passwd="foobar"/>
<graphics type='rdp'/>
<graphics type='spice'/>
<graphics type='spice' autoport='yes' passwd=''/>
<graphics type="spice" passwd="newpass" port="6000" tlsPort="6001" listen="1.2.3.4">
<channel name="inputs" mode="secure"/>
<channel name="main" mode="any"/>
+2 -254
View File
@@ -17,20 +17,6 @@
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment4">
<property name="lower">5900</property>
<property name="upper">5999</property>
<property name="value">5901</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment5">
<property name="lower">5900</property>
<property name="upper">5999</property>
<property name="value">5900</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -567,249 +553,11 @@
</packing>
</child>
<child>
<object class="GtkGrid" id="table38">
<object class="GtkAlignment" id="graphics-align">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_spacing">6</property>
<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="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="graphics-password-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCheckButton" id="graphics-password-chk">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_stock">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_graphics_use_password" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="graphics-password">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="visibility">False</property>
<property name="invisible_char">●</property>
</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">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="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="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>
<placeholder/>
</child>
</object>
<packing>
+2 -276
View File
@@ -4294,287 +4294,13 @@
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkAlignment" id="alignment153">
<object class="GtkAlignment" id="graphics-align">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="top_padding">3</property>
<property name="left_padding">12</property>
<child>
<object class="GtkGrid" id="graphics-table">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">3</property>
<property name="row_spacing">4</property>
<property name="column_spacing">8</property>
<child>
<object class="GtkLabel" id="gfx-port">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label">label401</property>
<property name="selectable">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">4</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="gfx-address">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label">label401</property>
<property name="selectable">True</property>
</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="GtkLabel" id="gfx-port-title">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Port:</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="gfx-address-title">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Address:</property>
</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="GtkLabel" id="gfx-password-title">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">_Password:</property>
<property name="use_underline">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">6</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="gfx-keymap-title">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Keymap:</property>
<property name="use_underline">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">7</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="gfx-display-title">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label">Display:</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="gfx-display">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">label</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>
<child>
<object class="GtkHBox" id="gfx-password-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCheckButton" id="gfx-use-password">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_stock">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_vnc_use_password_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="gfx-password">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="visibility">False</property>
<property name="invisible_char">●</property>
<signal name="changed" handler="on_vnc_password_changed" swapped="no"/>
</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">6</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="gfx-tlsport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label">label</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">5</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="gfx-type-title">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">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="gfx-tlsport-title">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">TLS Port:</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">5</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="gfx-xauth">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">label</property>
</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="GtkLabel" id="gfx-xauth-title">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label">XAuth:</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="GtkComboBox" id="gfx-type">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="has_entry">True</property>
<signal name="changed" handler="on_gfx_type_combo_changed" swapped="no"/>
<child internal-child="entry">
<object class="GtkEntry" id="combobox-entry10">
<property name="can_focus">True</property>
</object>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="gfx-keymap">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="has_entry">True</property>
<signal name="changed" handler="on_vnc_keymap_combo_changed" swapped="no"/>
<child internal-child="entry">
<object class="GtkEntry" id="combobox-entry11">
<property name="can_focus">True</property>
</object>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">7</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<placeholder/>
</child>
</object>
</child>
+397
View File
@@ -0,0 +1,397 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.16.1 -->
<interface>
<requires lib="gtk+" version="3.10"/>
<object class="GtkAdjustment" id="adjustment4">
<property name="lower">5900</property>
<property name="upper">50000</property>
<property name="value">5901</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment5">
<property name="lower">5900</property>
<property name="upper">50000</property>
<property name="value">5900</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkGrid" id="graphics-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">6</property>
<child>
<object class="GtkBox" id="graphics-password-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCheckButton" id="graphics-password-chk">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="xalign">0</property>
<property name="yalign">0.56999999284744263</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_graphics_use_password" swapped="no"/>
<child>
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="graphics-password">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="visibility">False</property>
<property name="invisible_char">●</property>
<signal name="changed" handler="on_graphics_password_changed" swapped="no"/>
</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">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>
</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="alignment2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">False</property>
<property name="vexpand">False</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>
</object>
</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="GtkBox" id="graphics-tlsport-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkCheckButton" id="graphics-tlsport-auto">
<property name="label" translatable="yes">Aut_o</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_tlsport_auto_toggled" swapped="no"/>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="graphics-tlsport">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">●</property>
<property name="text" translatable="yes">5901</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>
<property name="value">5901</property>
<signal name="changed" handler="on_graphics_tlsport_changed" swapped="no"/>
</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="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="can_focus">False</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</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">5</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="graphics-keymap">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="hexpand">False</property>
<property name="has_entry">True</property>
<signal name="changed" handler="on_graphics_keymap_changed" swapped="no"/>
<child internal-child="entry">
<object class="GtkEntry" id="combobox-entry">
<property name="can_focus">True</property>
<property name="halign">start</property>
<property name="hexpand">False</property>
</object>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">5</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">6</property>
<child>
<object class="GtkCheckButton" id="graphics-port-auto">
<property name="label" translatable="yes">A_uto</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="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</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="text" translatable="yes">5900</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>
<property name="value">5900</property>
<signal name="changed" handler="on_graphics_port_changed" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</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="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Display:</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">6</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">XAuth:</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">7</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="graphics-display">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">6</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="graphics-xauth">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">7</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>
<property name="has_entry">True</property>
<signal name="changed" handler="on_graphics_address_changed" swapped="no"/>
<child internal-child="entry">
<object class="GtkEntry" id="combobox-entry2">
<property name="can_focus">True</property>
</object>
</child>
</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>
<child>
<object class="GtkComboBox" id="graphics-type">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="has_entry">True</property>
<signal name="changed" handler="on_graphics_type_changed" swapped="no"/>
<child internal-child="entry">
<object class="GtkEntry" id="combobox-entry3">
<property name="can_focus">True</property>
</object>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
</interface>
+17 -87
View File
@@ -36,6 +36,7 @@ from virtinst import VirtualController
from virtManager import uiutil
from virtManager.fsdetails import vmmFSDetails
from virtManager.gfxdetails import vmmGraphicsDetails
from virtManager.netlist import vmmNetworkList
from virtManager.asyncjob import vmmAsyncJob
from virtManager.storagebrowse import vmmStorageBrowser
@@ -72,7 +73,11 @@ class vmmAddHardware(vmmGObjectUI):
self._dev = None
self.fsDetails = vmmFSDetails(vm, self.builder, self.topwin)
self.gfxdetails = vmmGraphicsDetails(
self.vm, self.builder, self.topwin)
self.widget("graphics-align").add(self.gfxdetails.top_box)
self.fsDetails = vmmFSDetails(self.vm, self.builder, self.topwin)
self.widget("fs-box").add(self.fsDetails.top_box)
self.netlist = vmmNetworkList(self.conn, self.builder, self.topwin)
@@ -95,10 +100,6 @@ class vmmAddHardware(vmmGObjectUI):
"on_mac_address_clicked" : self.change_macaddr_use,
"on_graphics_type_changed": self.change_graphics_type,
"on_graphics_port_auto_toggled": self.change_port_auto,
"on_graphics_use_password": self.change_password_chk,
"on_char_device_type_changed": self.change_char_device_type,
"on_char_target_name_changed": self.change_char_target_name,
"on_char_auto_socket_toggled": self.change_char_auto_socket,
@@ -141,6 +142,8 @@ class vmmAddHardware(vmmGObjectUI):
self.storage_browser.cleanup()
self.storage_browser = None
self.gfxdetails.cleanup()
self.gfxdetails = None
self.fsDetails.cleanup()
self.fsDetails = None
self.netlist.cleanup()
@@ -223,17 +226,6 @@ class vmmAddHardware(vmmGObjectUI):
input_list.set_model(input_model)
uiutil.set_combo_text_column(input_list, 0)
# Graphics type
graphics_list = self.widget("graphics-type")
graphics_model = Gtk.ListStore(str, str)
graphics_list.set_model(graphics_model)
uiutil.set_combo_text_column(graphics_list, 0)
# Graphics address
# [label, value]
self.widget("graphics-address").set_model(Gtk.ListStore(str, str))
uiutil.set_combo_text_column(self.widget("graphics-address"), 0)
# Sound model list
sound_list = self.widget("sound-model")
self.build_sound_combo(self.vm, sound_list)
@@ -417,22 +409,7 @@ class vmmAddHardware(vmmGObjectUI):
input_box.set_active(0)
# Graphics init
graphics_box = self.widget("graphics-type")
self.populate_graphics_model(graphics_box.get_model())
graphics_box.set_active(0)
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.gfxdetails.reset_state()
# Sound init
sound_box = self.widget("sound-model")
@@ -827,11 +804,6 @@ class vmmAddHardware(vmmGObjectUI):
model.append([_("EvTouch USB Graphics Tablet"), "tablet", "usb"])
model.append([_("Generic USB Mouse"), "mouse", "usb"])
def populate_graphics_model(self, model):
model.clear()
model.append([_("Spice server"), "spice"])
model.append([_("VNC server"), "vnc"])
def populate_host_device_model(self, devtype, devcap, subtype, subcap):
devlist = self.widget("host-device")
model = devlist.get_model()
@@ -956,28 +928,6 @@ class vmmAddHardware(vmmGObjectUI):
row = uiutil.get_list_selection(self.widget("input-type"))
return row[1], row[2]
# Graphics getters
def get_config_graphics(self):
return uiutil.get_list_selection(self.widget("graphics-type"), 1)
def get_config_graphics_ports(self):
if self.widget("graphics-port-auto").get_active():
return -1, -1
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):
return uiutil.get_list_selection(self.widget("graphics-address"), 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()
# Network getters
def get_config_net_model(self):
return uiutil.get_list_selection(self.widget("net-model"))[0]
@@ -1154,27 +1104,6 @@ class vmmAddHardware(vmmGObjectUI):
else:
self.widget("create-mac-address").set_sensitive(False)
# Graphics listeners
def change_graphics_type(self, ignore=None):
self.change_port_auto()
def change_port_auto(self, ignore=None):
gtype = self.get_config_graphics()
is_auto = self.widget("graphics-port-auto").get_active()
is_spice = (gtype == "spice")
uiutil.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():
self.widget("graphics-password").set_sensitive(True)
else:
self.widget("graphics-password").set_text("")
self.widget("graphics-password").set_sensitive(False)
# Char device listeners
def get_char_type(self):
row = self.get_hw_selection()
@@ -1585,17 +1514,18 @@ class vmmAddHardware(vmmGObjectUI):
self._dev = dev
def validate_page_graphics(self):
gtype = self.get_config_graphics()
try:
port, tlsport = self.get_config_graphics_ports()
(gtype, port,
tlsport, addr, passwd, keymap) = self.gfxdetails.get_values()
self._dev = virtinst.VirtualGraphics(self.conn.get_backend())
self._dev.type = gtype
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 = tlsport
self._dev.passwd = passwd
self._dev.listen = addr
self._dev.tlsPort = tlsport
if keymap:
self._dev.keymap = keymap
except ValueError, e:
self.err.val_err(_("Graphics device parameter error"), e)
+34 -98
View File
@@ -35,6 +35,7 @@ from virtManager.baseclass import vmmGObjectUI
from virtManager.addhardware import vmmAddHardware
from virtManager.choosecd import vmmChooseCD
from virtManager.fsdetails import vmmFSDetails
from virtManager.gfxdetails import vmmGraphicsDetails
from virtManager.netlist import vmmNetworkList
from virtManager.snapshots import vmmSnapshotPage
from virtManager.storagebrowse import vmmStorageBrowser
@@ -83,9 +84,11 @@ EDIT_NET_VPORT,
EDIT_NET_SOURCE,
EDIT_GFX_PASSWD,
EDIT_GFX_USE_PASSWD,
EDIT_GFX_TYPE,
EDIT_GFX_KEYMAP,
EDIT_GFX_ADDRESS,
EDIT_GFX_TLSPORT,
EDIT_GFX_PORT,
EDIT_VIDEO_MODEL,
@@ -97,7 +100,7 @@ EDIT_CONTROLLER_MODEL,
EDIT_TPM_TYPE,
EDIT_FS,
) = range(1, 39)
) = range(1, 41)
# Columns in hw list model
@@ -387,6 +390,22 @@ class vmmDetails(vmmGObjectUI):
self.fsDetails.connect("changed",
lambda *x: self.enable_apply(x, EDIT_FS))
self.gfxdetails = vmmGraphicsDetails(
self.vm, self.builder, self.topwin)
self.widget("graphics-align").add(self.gfxdetails.top_box)
self.gfxdetails.connect("changed-type",
lambda *x: self.enable_apply(x, EDIT_GFX_TYPE))
self.gfxdetails.connect("changed-port",
lambda *x: self.enable_apply(x, EDIT_GFX_PORT))
self.gfxdetails.connect("changed-tlsport",
lambda *x: self.enable_apply(x, EDIT_GFX_TLSPORT))
self.gfxdetails.connect("changed-address",
lambda *x: self.enable_apply(x, EDIT_GFX_ADDRESS))
self.gfxdetails.connect("changed-keymap",
lambda *x: self.enable_apply(x, EDIT_GFX_KEYMAP))
self.gfxdetails.connect("changed-password",
lambda *x: self.enable_apply(x, EDIT_GFX_PASSWD))
self.netlist = vmmNetworkList(self.conn, self.builder, self.topwin)
self.widget("network-source-label-align").add(self.netlist.top_label)
self.widget("network-source-ui-align").add(self.netlist.top_box)
@@ -499,13 +518,6 @@ class vmmDetails(vmmGObjectUI):
"on_network_model_combo_changed": lambda *x: self.enable_apply(x, EDIT_NET_MODEL),
"on_gfx_type_combo_changed": lambda *x: self.enable_apply(x, EDIT_GFX_TYPE),
"on_vnc_keymap_combo_changed": lambda *x: self.enable_apply(x,
EDIT_GFX_KEYMAP),
"on_vnc_use_password_toggled": lambda *x: self.control_gfx_use_passwd(x),
"on_vnc_password_changed": lambda *x: self.enable_apply(x, EDIT_GFX_PASSWD),
"on_sound_model_combo_changed": lambda *x: self.enable_apply(x,
EDIT_SOUND_MODEL),
@@ -579,6 +591,8 @@ class vmmDetails(vmmGObjectUI):
self.conn = None
self.addhwmenu = None
self.gfxdetails.cleanup()
self.gfxdetails = None
self.fsDetails.cleanup()
self.fsDetails = None
self.netlist.cleanup()
@@ -930,20 +944,6 @@ class vmmDetails(vmmGObjectUI):
net_model = self.widget("network-model")
vmmAddHardware.build_network_model_combo(self.vm, net_model)
# Graphics type
gfx_type = self.widget("gfx-type")
model = Gtk.ListStore(str, str)
gfx_type.set_model(model)
uiutil.set_combo_text_column(gfx_type, 1)
model.append([virtinst.VirtualGraphics.TYPE_VNC, "VNC"])
model.append([virtinst.VirtualGraphics.TYPE_SPICE, "Spice"])
gfx_type.set_active(-1)
# Graphics keymap
gfx_keymap = self.widget("gfx-keymap")
vmmAddHardware.build_graphics_keymap_combo(self.vm, gfx_keymap,
no_default=no_default)
# Sound model
sound_dev = self.widget("sound-model")
vmmAddHardware.build_sound_combo(self.vm, sound_dev,
@@ -1355,14 +1355,6 @@ class vmmDetails(vmmGObjectUI):
self.vm.has_spicevmc_type_redirdev())
self.widget("details-menu-usb-redirection").set_sensitive(can_usb)
def control_gfx_use_passwd(self, x):
passwd_widget = self.widget("gfx-password")
sensitive = self.widget("gfx-use-password").get_active()
if not sensitive:
passwd_widget.set_text("")
passwd_widget.set_sensitive(sensitive)
self.enable_apply(x, EDIT_GFX_USE_PASSWD)
def control_vm_run(self, src_ignore):
self.emit("action-run-domain",
self.vm.conn.get_uri(), self.vm.get_uuid())
@@ -2102,23 +2094,25 @@ class vmmDetails(vmmGObjectUI):
def config_graphics_apply(self, dev_id_info):
df, da, add_define, hf, ha, add_hotplug = self.make_apply_data()
if self.edited(EDIT_GFX_PASSWD) or self.edited(EDIT_GFX_USE_PASSWD):
use_passwd = self.widget("gfx-use-password").get_active()
if use_passwd:
passwd = self.get_text("gfx-password", strip=False) or ""
else:
passwd = None
(gtype, port,
tlsport, addr, passwd, keymap) = self.gfxdetails.get_values()
if self.edited(EDIT_GFX_PASSWD):
add_define(self.vm.define_graphics_password, dev_id_info, passwd)
add_hotplug(self.vm.hotplug_graphics_password, dev_id_info,
passwd)
if self.edited(EDIT_GFX_ADDRESS):
add_define(self.vm.define_graphics_address, dev_id_info, addr)
if self.edited(EDIT_GFX_KEYMAP):
keymap = uiutil.get_combo_entry(self.widget("gfx-keymap"))
add_define(self.vm.define_graphics_keymap, dev_id_info, keymap)
if self.edited(EDIT_GFX_PORT):
add_define(self.vm.define_graphics_port, dev_id_info, port)
if self.edited(EDIT_GFX_TLSPORT):
add_define(self.vm.define_graphics_tlsport, dev_id_info, tlsport)
# Do this last since it can change graphics unique ID
if self.edited(EDIT_GFX_TYPE):
gtype = uiutil.get_combo_entry(self.widget("gfx-type"))
add_define(self.vm.define_graphics_type, dev_id_info, gtype)
return self._change_config_helper(df, da, hf, ha)
@@ -2669,67 +2663,9 @@ class vmmDetails(vmmGObjectUI):
if not gfx:
return
table = self.widget("graphics-table")
table.foreach(lambda w, ignore: w.hide(), ())
def show_row(name):
uiutil.set_grid_row_visible(self.widget(name), True)
def port_to_string(port):
if port is None:
return "-"
return (port == -1 and _("Automatically allocated") or str(port))
gtype = gfx.type
is_vnc = (gtype == "vnc")
is_sdl = (gtype == "sdl")
is_spice = (gtype == "spice")
is_other = not (True in [is_vnc, is_sdl, is_spice])
title = (_("%(graphicstype)s Server") %
{"graphicstype" : gfx.pretty_type_simple(gtype)})
settype = ""
if is_vnc or is_spice:
use_passwd = gfx.passwd is not None
show_row("gfx-password-box")
show_row("gfx-address")
show_row("gfx-port")
show_row("gfx-keymap")
self.widget("gfx-port").set_text(port_to_string(gfx.port))
self.widget("gfx-address").set_text(gfx.listen or "127.0.0.1")
uiutil.set_combo_entry(self.widget("gfx-keymap"), gfx.keymap or None)
self.widget("gfx-password").set_text(gfx.passwd or "")
self.widget("gfx-use-password").set_active(use_passwd)
self.widget("gfx-password").set_sensitive(use_passwd)
settype = gtype
if is_spice:
show_row("gfx-tlsport")
self.widget("gfx-tlsport").set_text(port_to_string(gfx.tlsPort))
if is_sdl:
title = _("Local SDL Window")
show_row("gfx-display")
show_row("gfx-xauth")
self.widget("gfx-display").set_text(gfx.display or _("Unknown"))
self.widget("gfx-xauth").set_text(gfx.xauth or _("Unknown"))
if is_other:
settype = gfx.pretty_type_simple(gtype)
if settype:
show_row("gfx-type")
uiutil.set_combo_entry(self.widget("gfx-type"), gtype)
title = self.gfxdetails.set_dev(gfx)
self.widget("graphics-title").set_markup("<b>%s</b>" % title)
def refresh_sound_page(self):
sound = self.get_hw_selection(HW_LIST_COL_DEVICE)
if not sound:
+13 -1
View File
@@ -739,9 +739,21 @@ class vmmDomain(vmmLibvirtObject):
return self._redefine_device(change, devobj)
# Graphics define methods
def define_graphics_address(self, devobj, newval):
def change(editdev):
editdev.listen = newval
return self._redefine_device(change, devobj)
def define_graphics_port(self, devobj, newval):
def change(editdev):
editdev.port = newval
return self._redefine_device(change, devobj)
def define_graphics_tlsport(self, devobj, newval):
def change(editdev):
editdev.tlsPort = newval
return self._redefine_device(change, devobj)
def define_graphics_password(self, devobj, newval):
def change(editdev):
editdev.passwd = newval or None
editdev.passwd = newval
return self._redefine_device(change, devobj)
def define_graphics_keymap(self, devobj, newval):
def change(editdev):
+260
View File
@@ -0,0 +1,260 @@
#
# Copyright (C) 2006-2007, 2013, 2014 Red Hat, Inc.
# Copyright (C) 2006 Hugh O. Brock <hbrock@redhat.com>
# Copyright (C) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA.
#
# pylint: disable=E0611
from gi.repository import Gtk
from gi.repository import GObject
# pylint: enable=E0611
import virtinst
from virtManager import uiutil
from virtManager.baseclass import vmmGObjectUI
class vmmGraphicsDetails(vmmGObjectUI):
__gsignals__ = {
"changed-password": (GObject.SignalFlags.RUN_FIRST, None, []),
"changed-port": (GObject.SignalFlags.RUN_FIRST, None, []),
"changed-tlsport": (GObject.SignalFlags.RUN_FIRST, None, []),
"changed-type": (GObject.SignalFlags.RUN_FIRST, None, []),
"changed-address": (GObject.SignalFlags.RUN_FIRST, None, []),
"changed-keymap": (GObject.SignalFlags.RUN_FIRST, None, []),
}
def __init__(self, vm, builder, topwin):
vmmGObjectUI.__init__(self, "gfxdetails.ui",
None, builder=builder, topwin=topwin)
self.vm = vm
self.conn = vm.conn
self.builder.connect_signals({
"on_graphics_type_changed": self._change_graphics_type,
"on_graphics_port_auto_toggled": self._change_port_auto,
"on_graphics_tlsport_auto_toggled": self._change_tlsport_auto,
"on_graphics_use_password": self._change_password_chk,
"on_graphics_password_changed": lambda ignore: self.emit("changed-password"),
"on_graphics_address_changed": lambda ignore: self.emit("changed-address"),
"on_graphics_tlsport_changed": lambda ignore: self.emit("changed-tlsport"),
"on_graphics_port_changed": lambda ignore: self.emit("changed-port"),
"on_graphics_keymap_changed": lambda ignore: self.emit("changed-keymap"),
})
self._init_ui()
self.top_box = self.widget("graphics-box")
def _cleanup(self):
self.vm = None
self.conn = None
##########################
# Initialization methods #
##########################
def _init_ui(self):
graphics_list = self.widget("graphics-type")
graphics_model = Gtk.ListStore(str, str)
graphics_list.set_model(graphics_model)
uiutil.set_combo_text_column(graphics_list, 1)
graphics_model.clear()
graphics_model.append(["spice", _("Spice server")])
graphics_model.append(["vnc", _("VNC server")])
self.widget("graphics-address").set_model(Gtk.ListStore(str, str))
uiutil.set_combo_text_column(self.widget("graphics-address"), 1)
model = self.widget("graphics-address").get_model()
model.clear()
model.append([None, _("Hypervisor default")])
model.append(["127.0.0.1", _("Localhost only")])
model.append(["0.0.0.0", _("All interfaces")])
# Keymap
combo = self.widget("graphics-keymap")
model = Gtk.ListStore(str, str)
combo.set_model(model)
uiutil.set_combo_text_column(combo, 1)
model.append(["auto", "Auto"])
model.append([virtinst.VirtualGraphics.KEYMAP_LOCAL,
"Copy local keymap"])
for k in virtinst.VirtualGraphics.valid_keymaps():
model.append([k, k])
def _get_config_graphics_ports(self):
port = uiutil.spin_get_helper(self.widget("graphics-port"))
tlsport = uiutil.spin_get_helper(self.widget("graphics-tlsport"))
gtype = uiutil.get_list_selection(self.widget("graphics-type"), 0)
if self.widget("graphics-port-auto").get_active():
port = -1
if self.widget("graphics-tlsport-auto").get_active():
tlsport = -1
if gtype != "spice":
tlsport = None
return port, tlsport
##############
# Public API #
##############
def reset_state(self):
uiutil.set_grid_row_visible(self.widget("graphics-display"), False)
uiutil.set_grid_row_visible(self.widget("graphics-xauth"), False)
self.widget("graphics-type").set_active(0)
self.widget("graphics-address").set_active(0)
self.widget("graphics-keymap").set_active(0)
self._change_ports()
self.widget("graphics-port-auto").set_active(True)
self.widget("graphics-tlsport-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)
def get_values(self):
gtype = uiutil.get_list_selection(self.widget("graphics-type"), 0)
port, tlsport = self._get_config_graphics_ports()
addr = uiutil.get_list_selection(self.widget("graphics-address"), 0)
keymap = uiutil.get_combo_entry(self.widget("graphics-keymap"), 0)
if keymap == "auto":
keymap = None
passwd = self.widget("graphics-password").get_text()
if not self.widget("graphics-password-chk").get_active():
passwd = None
return gtype, port, tlsport, addr, passwd, keymap
def set_dev(self, gfx):
self.reset_state()
def set_port(basename, val):
auto = self.widget(basename + "-auto")
widget = self.widget(basename)
if val == -1 or gfx.autoport:
auto.set_active(True)
elif val is None:
auto.set_inconsistent(True)
else:
auto.set_active(False)
widget.set_value(val)
gtype = gfx.type
is_vnc = (gtype == "vnc")
is_sdl = (gtype == "sdl")
is_spice = (gtype == "spice")
is_other = not (True in [is_vnc, is_sdl, is_spice])
title = (_("%(graphicstype)s Server") %
{"graphicstype" : gfx.pretty_type_simple(gtype)})
settype = ""
if is_vnc or is_spice:
use_passwd = gfx.passwd is not None
set_port("graphics-port", gfx.port)
uiutil.set_combo_entry(
self.widget("graphics-address"), gfx.listen, 0)
uiutil.set_combo_entry(
self.widget("graphics-keymap"), gfx.keymap or None, 0)
self.widget("graphics-password").set_text(gfx.passwd or "")
self.widget("graphics-password-chk").set_active(use_passwd)
self.widget("graphics-password").set_sensitive(use_passwd)
settype = gtype
if is_spice:
set_port("graphics-tlsport", gfx.tlsPort)
if is_sdl:
title = _("Local SDL Window")
self.widget("graphics-display").set_text(
gfx.display or _("Unknown"))
self.widget("graphics-xauth").set_text(
gfx.xauth or _("Unknown"))
if is_other:
settype = gfx.pretty_type_simple(gtype)
uiutil.set_combo_entry(self.widget("graphics-type"), gtype, 0)
return title
#############
# Listeners #
#############
def _show_rows_from_type(self):
hide_all = ["graphics-xauth", "graphics-display", "graphics-address",
"graphics-password-box", "graphics-keymap", "graphics-port-box",
"graphics-tlsport-box"]
gtype = uiutil.get_list_selection(self.widget("graphics-type"), 0)
sdl_rows = ["graphics-xauth", "graphics-display"]
vnc_rows = ["graphics-password-box", "graphics-address",
"graphics-port-box", "graphics-keymap"]
spice_rows = vnc_rows[:] + ["graphics-tlsport-box"]
rows = []
if gtype == "sdl":
rows = sdl_rows
elif gtype == "vnc":
rows = vnc_rows
elif gtype == "spice":
rows = spice_rows
for row in hide_all:
uiutil.set_grid_row_visible(self.widget(row), row in rows)
def _change_graphics_type(self, ignore):
self._show_rows_from_type()
self.emit("changed-type")
def _change_port_auto(self, ignore):
self._change_ports()
self.emit("changed-port")
def _change_tlsport_auto(self, ignore):
self._change_ports()
self.emit("changed-tlsport")
def _change_ports(self):
is_auto = (self.widget("graphics-port-auto").get_active() or
self.widget("graphics-port-auto").get_inconsistent())
is_tlsauto = (self.widget("graphics-tlsport-auto").get_active() or
self.widget("graphics-tlsport-auto").get_inconsistent())
self.widget("graphics-port").set_visible(not is_auto)
self.widget("graphics-tlsport").set_visible(not is_tlsauto)
def _change_password_chk(self, ignore=None):
if self.widget("graphics-password-chk").get_active():
self.widget("graphics-password").set_sensitive(True)
else:
self.widget("graphics-password").set_text("")
self.widget("graphics-password").set_sensitive(False)
self.emit("changed-password")
+6 -6
View File
@@ -122,15 +122,15 @@ def set_row_selection(listwidget, prevkey):
selection.emit("changed")
def set_combo_entry(combo, value):
def set_combo_entry(combo, value, rowidx=0):
"""
Search the passed combobox for value, comparing against the
first item in each row. If found, select it. If not found, and
Search the passed combobox for value, comparing againt
rowidx. If found, select it. If not found, and
the combobox has a text entry, stick the value in their and
select it.
"""
idx = -1
model_list = [x[0] for x in combo.get_model()]
model_list = [x[rowidx] for x in combo.get_model()]
model_in_list = (value in model_list)
if model_in_list:
idx = model_list.index(value)
@@ -140,12 +140,12 @@ def set_combo_entry(combo, value):
combo.get_child().set_text(value or "")
def get_combo_entry(combo):
def get_combo_entry(combo, rowidx=0):
"""
Helper to get the value specified in a combo box, with or
without and entry
"""
ret = get_list_selection(combo, 0)
ret = get_list_selection(combo, rowidx)
if ret:
return ret
if not combo.get_has_entry():
+1 -1
View File
@@ -149,7 +149,7 @@ class VirtualGraphics(VirtualDevice):
# old libvirt that didn't support 'autoport'
if self.type != "spice":
return None
if (self.port == -1 or self.tlsPort == -1):
if (self.port == -1 and self.tlsPort == -1):
return True
return None
port = XMLProperty("./@port", is_int=True,