Blame SOURCES/subscription-manager-1.15.9-12-to-subscription-manager-1.15.9-13.patch

d88f46
diff --git a/po/bn_IN.po b/po/bn_IN.po
d88f46
index ddb046c..1414155 100644
d88f46
--- a/po/bn_IN.po
d88f46
+++ b/po/bn_IN.po
d88f46
@@ -5,7 +5,7 @@ msgstr ""
d88f46
 "Project-Id-Version: PACKAGE VERSION\n"
d88f46
 "Report-Msgid-Bugs-To: \n"
d88f46
 "POT-Creation-Date: 2015-09-02 14:20-0400\n"
d88f46
-"PO-Revision-Date: 2015-09-23 11:55-0400\n"
d88f46
+"PO-Revision-Date: 2015-09-29 03:28-0400\n"
d88f46
 "Last-Translator: John Sefler <jsefler@redhat.com>\n"
d88f46
 "Language-Team: Bengali (India)\n"
d88f46
 "MIME-Version: 1.0\n"
d88f46
@@ -2946,7 +2946,7 @@ msgstr ""
d88f46
 #: ../src/subscription_manager/managercli.py:1952
d88f46
 #, python-format
d88f46
 msgid "    Available Repositories in %s"
d88f46
-msgstr "        %s-এ উপলব্ধ সংগ্রহস্থল"
d88f46
+msgstr "    %s-এ উপলব্ধ সংগ্রহস্থল"
d88f46
 
d88f46
 #: ../src/subscription_manager/managercli.py:1962
d88f46
 msgid "There were no available repositories matching the specified criteria."
d88f46
diff --git a/po/ko.po b/po/ko.po
d88f46
index 1d7c226..6d334ba 100644
d88f46
--- a/po/ko.po
d88f46
+++ b/po/ko.po
d88f46
@@ -1542,7 +1542,7 @@ msgstr "\n"
d88f46
 #: ../src/subscription_manager/migrate/migrate.py:699
d88f46
 #, python-format
d88f46
 msgid "System '%s' successfully registered.\n"
d88f46
-msgstr "시스템 '%s'이 성공적으로 등록되었습니다. \n"
d88f46
+msgstr "시스템 '%s'이 성공적으로 등록되었습니다.\n"
d88f46
 
d88f46
 # translation auto-copied from project subscription-manager, version 1.11.X, document keys
d88f46
 #: ../src/subscription_manager/migrate/migrate.py:703
d88f46
@@ -1610,7 +1610,7 @@ msgstr "서브스크립션 관리자로 등록하는 동안 자동 첨부 (auto-
d88f46
 msgid ""
d88f46
 "service level to follow when attaching subscriptions, for no service level "
d88f46
 "use --servicelevel=\"\""
d88f46
-msgstr "서브스크립션을 첨부할 때 따라야 할 서비스 레벨, 서비스 레벨이 없는 경우 --servicelevel=\"\" 사용 "
d88f46
+msgstr "서브스크립션을 첨부할 때 따라야 할 서비스 레벨, 서비스 레벨이 없는 경우 --servicelevel=\"\" 사용"
d88f46
 
d88f46
 #: ../src/subscription_manager/migrate/migrate.py:829
d88f46
 msgid "don't use legacy proxy settings with destination server"
d88f46
@@ -3398,7 +3398,7 @@ msgstr "매니페스트 zip이 잘못되었습니다."
d88f46
 #: ../src/rct/manifest_commands.py:84
d88f46
 #, python-format
d88f46
 msgid "Unable to find file \"%s\" in manifest."
d88f46
-msgstr "매니페스트에서 파일 \"%s\"를 찾을 수 없습니다. "
d88f46
+msgstr "매니페스트에서 파일 \"%s\"를 찾을 수 없습니다."
d88f46
 
d88f46
 # translation auto-copied from project subscription-manager, version 1.11.X, document keys
d88f46
 #: ../src/rct/manifest_commands.py:108
d88f46
diff --git a/po/ml.po b/po/ml.po
d88f46
index 2ae55b1..7defbf8 100644
d88f46
--- a/po/ml.po
d88f46
+++ b/po/ml.po
d88f46
@@ -5,7 +5,7 @@ msgstr ""
d88f46
 "Project-Id-Version: PACKAGE VERSION\n"
d88f46
 "Report-Msgid-Bugs-To: \n"
d88f46
 "POT-Creation-Date: 2015-09-02 14:20-0400\n"
d88f46
-"PO-Revision-Date: 2015-09-22 04:48-0400\n"
d88f46
+"PO-Revision-Date: 2015-09-29 03:19-0400\n"
d88f46
 "Last-Translator: John Sefler <jsefler@redhat.com>\n"
d88f46
 "Language-Team: Malayalam\n"
d88f46
 "MIME-Version: 1.0\n"
d88f46
@@ -1318,7 +1318,7 @@ msgstr ""
d88f46
 #: ../src/subscription_manager/cli.py:61
d88f46
 #, python-format
d88f46
 msgid "%%prog %s [OPTIONS]"
d88f46
-msgstr "%%prog %s [ഐച്ഛികങ്ങള്‍] "
d88f46
+msgstr "%%prog %s [ഐച്ഛികങ്ങള്‍]"
d88f46
 
d88f46
 # translation auto-copied from project subscription-manager, version 1.11.X, document keys
d88f46
 #: ../src/subscription_manager/cli.py:92
d88f46
@@ -1341,12 +1341,12 @@ msgstr "മറ്റു് ഘടകങ്ങള്‍:"
d88f46
 # translation auto-copied from project subscription-manager, version 1.11.X, document keys
d88f46
 #: ../src/subscription_manager/reasons.py:85
d88f46
 msgid "Product "
d88f46
-msgstr "പ്രൊഡക്ട്"
d88f46
+msgstr "പ്രൊഡക്ട് "
d88f46
 
d88f46
 # translation auto-copied from project subscription-manager, version 1.11.X, document keys
d88f46
 #: ../src/subscription_manager/reasons.py:87
d88f46
 msgid "Subscription "
d88f46
-msgstr "സബ്സ്ക്രിപ്ഷന്‍"
d88f46
+msgstr "സബ്സ്ക്രിപ്ഷന്‍ "
d88f46
 
d88f46
 # translation auto-copied from project subscription-manager, version 1.11.X, document keys
d88f46
 #: ../src/subscription_manager/reasons.py:89
d88f46
@@ -4065,7 +4065,7 @@ msgstr ""
d88f46
 #: ../src/rhsm_debug/debug_commands.py:80
d88f46
 #, python-format
d88f46
 msgid "%%prog %s [OPTIONS] "
d88f46
-msgstr "%%prog %s [ഐച്ഛികങ്ങള്‍]"
d88f46
+msgstr "%%prog %s [ഐച്ഛികങ്ങള്‍] "
d88f46
 
d88f46
 # translation auto-copied from project subscription-manager, version 1.11.X, document keys
d88f46
 #: ../src/rhsm_debug/debug_commands.py:85
d88f46
diff --git a/po/ta_IN.po b/po/ta_IN.po
d88f46
index de97c17..3a2d9ec 100644
d88f46
--- a/po/ta_IN.po
d88f46
+++ b/po/ta_IN.po
d88f46
@@ -5,7 +5,7 @@ msgstr ""
d88f46
 "Project-Id-Version: PACKAGE VERSION\n"
d88f46
 "Report-Msgid-Bugs-To: \n"
d88f46
 "POT-Creation-Date: 2015-09-02 14:20-0400\n"
d88f46
-"PO-Revision-Date: 2015-09-23 12:35-0400\n"
d88f46
+"PO-Revision-Date: 2015-09-29 03:15-0400\n"
d88f46
 "Last-Translator: John Sefler <jsefler@redhat.com>\n"
d88f46
 "Language-Team: American English <kde-i18n-doc@kde.org>\n"
d88f46
 "MIME-Version: 1.0\n"
d88f46
@@ -4640,7 +4640,7 @@ msgstr "எனது சந்தாபடுத்தல்கள் பார
d88f46
 #: ../src/subscription_manager/gui/data/glade/mysubs.glade.h:2
d88f46
 #: ../po/tmp_ui_links/mysubs.ui.glade.h:2
d88f46
 msgid "Remove"
d88f46
-msgstr "நீக்கவும் "
d88f46
+msgstr "நீக்கவும்"
d88f46
 
d88f46
 # translation auto-copied from project subscription-manager, version 1.11.X, document keys
d88f46
 #: ../src/subscription_manager/gui/data/glade/networkConfig.glade.h:1
d88f46
@@ -4706,7 +4706,7 @@ msgstr "அங்கீகார சரிபார்க்கும்பெ
d88f46
 #: ../src/subscription_manager/gui/data/glade/networkConfig.glade.h:11
d88f46
 #: ../po/tmp_ui_links/networkConfig.ui.glade.h:17
d88f46
 msgid "Proxy _Username:"
d88f46
-msgstr "பதிலாள் பயனர்பெயர் (_U): "
d88f46
+msgstr "பதிலாள் பயனர்பெயர் (_U):"
d88f46
 
d88f46
 # translation auto-copied from project subscription-manager, version 1.11.X, document keys
d88f46
 #: ../src/subscription_manager/gui/data/glade/networkConfig.glade.h:12
d88f46
diff --git a/po/zh_TW.po b/po/zh_TW.po
d88f46
index ad88430..bca3cb0 100644
d88f46
--- a/po/zh_TW.po
d88f46
+++ b/po/zh_TW.po
d88f46
@@ -8,7 +8,7 @@ msgstr ""
d88f46
 "Project-Id-Version: PACKAGE VERSION\n"
d88f46
 "Report-Msgid-Bugs-To: \n"
d88f46
 "POT-Creation-Date: 2015-09-02 14:20-0400\n"
d88f46
-"PO-Revision-Date: 2015-09-23 12:02-0400\n"
d88f46
+"PO-Revision-Date: 2015-09-29 03:29-0400\n"
d88f46
 "Last-Translator: John Sefler <jsefler@redhat.com>\n"
d88f46
 "Language-Team: Chinese (Traditional, Taiwan)\n"
d88f46
 "MIME-Version: 1.0\n"
d88f46
@@ -2827,7 +2827,7 @@ msgstr "欲停用的軟體庫(可多次指定)。支援萬用字元(* 與
d88f46
 #: ../src/subscription_manager/managercli.py:1952
d88f46
 #, python-format
d88f46
 msgid "    Available Repositories in %s"
d88f46
-msgstr "%s 中的可用軟體庫"
d88f46
+msgstr "    %s 中的可用軟體庫"
d88f46
 
d88f46
 #: ../src/subscription_manager/managercli.py:1962
d88f46
 msgid "There were no available repositories matching the specified criteria."
d88f46
diff --git a/rel-eng/packages/subscription-manager b/rel-eng/packages/subscription-manager
d88f46
index 85b895f..ba45018 100644
d88f46
--- a/rel-eng/packages/subscription-manager
d88f46
+++ b/rel-eng/packages/subscription-manager
d88f46
@@ -1 +1 @@
d88f46
-1.15.9-12 ./
d88f46
+1.15.9-13 ./
d88f46
diff --git a/src/initial-setup/com_redhat_subscription_manager/gui/spokes/rhsm_gui.py b/src/initial-setup/com_redhat_subscription_manager/gui/spokes/rhsm_gui.py
d88f46
index 15c98ff..131bc9b 100644
d88f46
--- a/src/initial-setup/com_redhat_subscription_manager/gui/spokes/rhsm_gui.py
d88f46
+++ b/src/initial-setup/com_redhat_subscription_manager/gui/spokes/rhsm_gui.py
d88f46
@@ -54,7 +54,7 @@ class RHSMSpoke(FirstbootOnlySpokeMixIn, NormalSpoke):
d88f46
     uiFile = "rhsm_gui.ui"
d88f46
     helpFile = "SubscriptionManagerSpoke.xml"
d88f46
     category = SystemCategory
d88f46
-    icon = "face-cool-symbolic"
d88f46
+    icon = "subscription-manager"
d88f46
     title = "Subscription Manager"
d88f46
 
d88f46
     def __init__(self, data, storage, payload, instclass):
d88f46
@@ -80,7 +80,7 @@ class RHSMSpoke(FirstbootOnlySpokeMixIn, NormalSpoke):
d88f46
         self.register_box = self.builder.get_object("register_box")
d88f46
         self.button_box = self.builder.get_object('navigation_button_box')
d88f46
         self.proceed_button = self.builder.get_object('proceed_button')
d88f46
-        self.cancel_button = self.builder.get_object('cancel_button')
d88f46
+        self.back_button = self.builder.get_object('cancel_button')
d88f46
 
d88f46
         self.register_box.pack_start(self.register_widget.register_widget,
d88f46
                                      True, True, 0)
d88f46
@@ -88,7 +88,7 @@ class RHSMSpoke(FirstbootOnlySpokeMixIn, NormalSpoke):
d88f46
         # Hook up the nav buttons in the gui
d88f46
         # TODO: add a 'start over'?
d88f46
         self.proceed_button.connect('clicked', self._on_register_button_clicked)
d88f46
-        self.cancel_button.connect('clicked', self._on_cancel_button_clicked)
d88f46
+        self.back_button.connect('clicked', self._on_back_button_clicked)
d88f46
 
d88f46
         # initial-setup will likely
d88f46
         self.register_widget.connect('finished', self._on_finished)
d88f46
@@ -204,15 +204,16 @@ class RHSMSpoke(FirstbootOnlySpokeMixIn, NormalSpoke):
d88f46
 
d88f46
         pass
d88f46
 
d88f46
-    def _on_cancel_button_clicked(self, button):
d88f46
-        """Handler for self.cancel_buttons 'clicked' signal.
d88f46
+    def _on_back_button_clicked(self, button):
d88f46
+        """Handler for self.back_buttons 'clicked' signal.
d88f46
 
d88f46
         Clear out any user set values and return to the start screen."""
d88f46
 
d88f46
+        self.register_widget.emit('back')
d88f46
         # TODO: clear out settings and restart?
d88f46
         # TODO: attempt to undo the REST api calls we've made?
d88f46
-        self.register_widget.set_initial_screen()
d88f46
-        self.register_widget.clear_screens()
d88f46
+        #self.register_widget.set_initial_screen()
d88f46
+        #self.register_widget.clear_screens()
d88f46
 
d88f46
     def _on_register_button_clicked(self, button):
d88f46
         """Handler for self.proceed_buttons 'clicked' signal.
d88f46
@@ -283,6 +284,7 @@ class RHSMSpoke(FirstbootOnlySpokeMixIn, NormalSpoke):
d88f46
     def _on_register_screen_ready_change(self, obj, value):
d88f46
         ready = self.register_widget.current_screen.get_property('ready')
d88f46
         self.proceed_button.set_sensitive(ready)
d88f46
+        self.back_button.set_sensitive(ready)
d88f46
 
d88f46
     def _on_register_status_change(self, obj, value):
d88f46
         """Handler for registergui.RegisterInfo's 'register-status' property notifications."""
d88f46
diff --git a/src/initial-setup/com_redhat_subscription_manager/gui/spokes/rhsm_gui.ui b/src/initial-setup/com_redhat_subscription_manager/gui/spokes/rhsm_gui.ui
d88f46
index 39c75f1..7541682 100644
d88f46
--- a/src/initial-setup/com_redhat_subscription_manager/gui/spokes/rhsm_gui.ui
d88f46
+++ b/src/initial-setup/com_redhat_subscription_manager/gui/spokes/rhsm_gui.ui
d88f46
@@ -69,11 +69,11 @@
d88f46
                             <property name="margin_bottom">4</property>
d88f46
                             <child>
d88f46
                               <object class="GtkButton" id="cancel_button">
d88f46
-                                <property name="label" translatable="yes">Cancel</property>
d88f46
+                                <property name="label">gtk-go-back</property>
d88f46
                                 <property name="visible">True</property>
d88f46
                                 <property name="can_focus">True</property>
d88f46
                                 <property name="receives_default">False</property>
d88f46
-                                <property name="yalign">0.43999999761581421</property>
d88f46
+                                <property name="use_stock">True</property>
d88f46
                               </object>
d88f46
                               <packing>
d88f46
                                 <property name="expand">True</property>
d88f46
diff --git a/src/subscription_manager/gui/data/glade/register_dialog.glade b/src/subscription_manager/gui/data/glade/register_dialog.glade
d88f46
index fe76ce1..454d463 100644
d88f46
--- a/src/subscription_manager/gui/data/glade/register_dialog.glade
d88f46
+++ b/src/subscription_manager/gui/data/glade/register_dialog.glade
d88f46
@@ -19,16 +19,16 @@
d88f46
             <property name="can_focus">False</property>
d88f46
             <property name="layout_style">end</property>
d88f46
             <child>
d88f46
-              <object class="GtkButton" id="cancel_button">
d88f46
-                <property name="label">gtk-cancel</property>
d88f46
+              <object class="GtkButton" id="back_button">
d88f46
+                <property name="label">gtk-go-back</property>
d88f46
                 <property name="visible">True</property>
d88f46
                 <property name="can_focus">True</property>
d88f46
                 <property name="receives_default">True</property>
d88f46
                 <property name="use_stock">True</property>
d88f46
                 <property name="image_position">right</property>
d88f46
                 <child internal-child="accessible">
d88f46
-                  <object class="AtkObject" id="cancel_button-atkobject">
d88f46
-                    <property name="AtkObject::accessible-name" translatable="yes">cancel_button</property>
d88f46
+                  <object class="AtkObject" id="back_button-atkobject">
d88f46
+                    <property name="AtkObject::accessible-name" translatable="yes">back_button</property>
d88f46
                   </object>
d88f46
                 </child>
d88f46
               </object>
d88f46
@@ -74,7 +74,7 @@
d88f46
       </object>
d88f46
     </child>
d88f46
     <action-widgets>
d88f46
-      <action-widget response="0">cancel_button</action-widget>
d88f46
+      <action-widget response="0">back_button</action-widget>
d88f46
       <action-widget response="0">register_button</action-widget>
d88f46
     </action-widgets>
d88f46
   </object>
d88f46
diff --git a/src/subscription_manager/gui/data/ui/allsubs.ui b/src/subscription_manager/gui/data/ui/allsubs.ui
d88f46
index cd409d3..f1b60bb 100644
d88f46
--- a/src/subscription_manager/gui/data/ui/allsubs.ui
d88f46
+++ b/src/subscription_manager/gui/data/ui/allsubs.ui
d88f46
@@ -2,27 +2,13 @@
d88f46
 
d88f46
 <interface>
d88f46
   <requires lib="gtk+" version="3.0"/>
d88f46
-  <object class="GtkAdjustment" id="subs_vpane_hadj">
d88f46
-    <property name="upper">100</property>
d88f46
-    <property name="step_increment">1</property>
d88f46
-    <property name="page_increment">10</property>
d88f46
-  </object>
d88f46
-  <object class="GtkAdjustment" id="subs_vpane_vadj">
d88f46
-    <property name="upper">100</property>
d88f46
-    <property name="step_increment">1</property>
d88f46
-    <property name="page_increment">10</property>
d88f46
-  </object>
d88f46
   <object class="GtkWindow" id="window1">
d88f46
     <property name="can_focus">False</property>
d88f46
-    <property name="halign">start</property>
d88f46
-    <property name="valign">start</property>
d88f46
     <property name="icon_name">subscription-manager</property>
d88f46
     <child>
d88f46
       <object class="GtkBox" id="content">
d88f46
         <property name="visible">True</property>
d88f46
         <property name="can_focus">False</property>
d88f46
-        <property name="halign">start</property>
d88f46
-        <property name="valign">start</property>
d88f46
         <property name="border_width">12</property>
d88f46
         <property name="orientation">vertical</property>
d88f46
         <property name="spacing">4</property>
d88f46
@@ -30,16 +16,12 @@
d88f46
           <object class="GtkBox" id="vbox3">
d88f46
             <property name="visible">True</property>
d88f46
             <property name="can_focus">False</property>
d88f46
-            <property name="halign">start</property>
d88f46
-            <property name="valign">start</property>
d88f46
             <property name="orientation">vertical</property>
d88f46
             <property name="spacing">6</property>
d88f46
             <child>
d88f46
               <object class="GtkBox" id="hbox3">
d88f46
                 <property name="visible">True</property>
d88f46
                 <property name="can_focus">False</property>
d88f46
-                <property name="halign">start</property>
d88f46
-                <property name="valign">start</property>
d88f46
                 <property name="spacing">6</property>
d88f46
                 <child>
d88f46
                   <object class="GtkLabel" id="label1">
d88f46
@@ -134,14 +116,10 @@
d88f46
               <object class="GtkBox" id="hbox2">
d88f46
                 <property name="visible">True</property>
d88f46
                 <property name="can_focus">False</property>
d88f46
-                <property name="halign">end</property>
d88f46
-                <property name="valign">start</property>
d88f46
                 <child>
d88f46
                   <object class="GtkLabel" id="edit_quantity_label">
d88f46
                     <property name="visible">True</property>
d88f46
                     <property name="can_focus">False</property>
d88f46
-                    <property name="halign">end</property>
d88f46
-                    <property name="valign">start</property>
d88f46
                     <property name="label" translatable="yes">* Click to Adjust Quantity</property>
d88f46
                     <property name="use_markup">True</property>
d88f46
                     <property name="xalign">0.99000000953674316</property>
d88f46
@@ -173,18 +151,15 @@
d88f46
             <property name="visible">True</property>
d88f46
             <property name="can_focus">True</property>
d88f46
             <property name="orientation">vertical</property>
d88f46
+            <property name="position">2</property>
d88f46
             <property name="position_set">True</property>
d88f46
             <child>
d88f46
               <object class="GtkScrolledWindow" id="scrolledwindow">
d88f46
+                <property name="height_request">125</property>
d88f46
                 <property name="visible">True</property>
d88f46
                 <property name="can_focus">True</property>
d88f46
-                <property name="valign">start</property>
d88f46
                 <property name="border_width">1</property>
d88f46
-                <property name="hadjustment">subs_vpane_hadj</property>
d88f46
-                <property name="vadjustment">subs_vpane_vadj</property>
d88f46
-                <property name="shadow_type">etched-out</property>
d88f46
-                <property name="min_content_width">240</property>
d88f46
-                <property name="min_content_height">120</property>
d88f46
+                <property name="shadow_type">etched-in</property>
d88f46
               </object>
d88f46
               <packing>
d88f46
                 <property name="resize">True</property>
d88f46
@@ -195,7 +170,7 @@
d88f46
               <object class="GtkBox" id="details_box">
d88f46
                 <property name="visible">True</property>
d88f46
                 <property name="can_focus">False</property>
d88f46
-                <property name="valign">end</property>
d88f46
+                <property name="orientation">vertical</property>
d88f46
                 <child>
d88f46
                   <placeholder/>
d88f46
                 </child>
d88f46
@@ -216,13 +191,10 @@
d88f46
           <object class="GtkBox" id="hbox1">
d88f46
             <property name="visible">True</property>
d88f46
             <property name="can_focus">False</property>
d88f46
-            <property name="halign">end</property>
d88f46
-            <property name="valign">start</property>
d88f46
             <child>
d88f46
               <object class="GtkButtonBox" id="subscribe_button_box">
d88f46
                 <property name="visible">True</property>
d88f46
                 <property name="can_focus">False</property>
d88f46
-                <property name="valign">start</property>
d88f46
                 <property name="layout_style">end</property>
d88f46
                 <child>
d88f46
                   <object class="GtkButton" id="subscribe_button">
d88f46
diff --git a/src/subscription_manager/gui/data/ui/register_dialog.ui b/src/subscription_manager/gui/data/ui/register_dialog.ui
d88f46
index 22fb3c5..3099ddc 100644
d88f46
--- a/src/subscription_manager/gui/data/ui/register_dialog.ui
d88f46
+++ b/src/subscription_manager/gui/data/ui/register_dialog.ui
d88f46
@@ -32,15 +32,15 @@
d88f46
             <property name="margin_bottom">4</property>
d88f46
             <property name="hexpand">True</property>
d88f46
             <child>
d88f46
-              <object class="GtkButton" id="cancel_button">
d88f46
-                <property name="label">gtk-cancel</property>
d88f46
+              <object class="GtkButton" id="back_button">
d88f46
+                <property name="label">gtk-go-back</property>
d88f46
                 <property name="visible">True</property>
d88f46
                 <property name="can_focus">True</property>
d88f46
                 <property name="receives_default">True</property>
d88f46
                 <property name="use_stock">True</property>
d88f46
                 <child internal-child="accessible">
d88f46
-                  <object class="AtkObject" id="cancel_button-atkobject">
d88f46
-                    <property name="AtkObject::accessible-name">cancel_button</property>
d88f46
+                  <object class="AtkObject" id="back_button-atkobject">
d88f46
+                    <property name="AtkObject::accessible-name">back_button</property>
d88f46
                   </object>
d88f46
                 </child>
d88f46
               </object>
d88f46
diff --git a/src/subscription_manager/gui/mysubstab.py b/src/subscription_manager/gui/mysubstab.py
d88f46
index 4eb3e2c..178d59c 100644
d88f46
--- a/src/subscription_manager/gui/mysubstab.py
d88f46
+++ b/src/subscription_manager/gui/mysubstab.py
d88f46
@@ -153,7 +153,7 @@ class MySubscriptionsTab(widgets.SubscriptionManagerTab):
d88f46
             # unregistered, just delete the certs directly
d88f46
             action = EntCertDeleteAction(self.entitlement_dir)
d88f46
             action.perform([serial])
d88f46
-            self.update_subscriptions()
d88f46
+        self.update_subscriptions()
d88f46
 
d88f46
     def unsubscribe_button_clicked(self, widget):
d88f46
         selection = widgets.SelectionWrapper(self.top_view.get_selection(), self.store)
d88f46
diff --git a/src/subscription_manager/gui/registergui.py b/src/subscription_manager/gui/registergui.py
d88f46
index ed5213c..a07a646 100644
d88f46
--- a/src/subscription_manager/gui/registergui.py
d88f46
+++ b/src/subscription_manager/gui/registergui.py
d88f46
@@ -28,7 +28,7 @@ from subscription_manager.ga import GObject as ga_GObject
d88f46
 
d88f46
 import rhsm.config as config
d88f46
 from rhsm.utils import ServerUrlParseError
d88f46
-from rhsm.connection import GoneException
d88f46
+from rhsm.connection import GoneException, RestlibException
d88f46
 
d88f46
 from subscription_manager.branding import get_branding
d88f46
 from subscription_manager.action_client import ActionClient
d88f46
@@ -109,6 +109,35 @@ def reset_resolver():
d88f46
         pass
d88f46
 
d88f46
 
d88f46
+# FIXME: TODO: subclass collections.MutableSequence
d88f46
+class UniqueList(object):
d88f46
+    def __init__(self):
d88f46
+        self._list = []
d88f46
+
d88f46
+    def append(self, item):
d88f46
+        if item in self._list:
d88f46
+            self._list.remove(item)
d88f46
+        return self._list.append(item)
d88f46
+
d88f46
+    def __repr__(self):
d88f46
+        list_buf = ','.join([repr(a) for a in self._list])
d88f46
+        buf = "<UniqueList [%s] >" % list_buf
d88f46
+        return buf
d88f46
+
d88f46
+    def remove(self, value):
d88f46
+        return self._list.remove(value)
d88f46
+
d88f46
+    def last(self):
d88f46
+        return self._list[-1]
d88f46
+
d88f46
+    def pop(self, index=None):
d88f46
+        # list.pop() has a odd not quite a keyword optional arg
d88f46
+        if index:
d88f46
+            p = self._list.pop(index)
d88f46
+        p = self._list.pop()
d88f46
+        return p
d88f46
+
d88f46
+
d88f46
 class RegisterInfo(ga_GObject.GObject):
d88f46
     """GObject holding registration info and state.
d88f46
 
d88f46
@@ -170,6 +199,8 @@ class RegisterWidget(widgets.SubmanBaseWidget):
d88f46
 
d88f46
     __gsignals__ = {'proceed': (ga_GObject.SignalFlags.RUN_FIRST,
d88f46
                                 None, []),
d88f46
+                    'back': (ga_GObject.SignalFlags.RUN_FIRST,
d88f46
+                             None, []),
d88f46
                     'register-message': (ga_GObject.SignalFlags.RUN_FIRST,
d88f46
                                          None, (ga_GObject.TYPE_PYOBJECT,
d88f46
                                                 ga_GObject.TYPE_PYOBJECT)),
d88f46
@@ -230,6 +261,8 @@ class RegisterWidget(widgets.SubmanBaseWidget):
d88f46
         # expect this to be driving from the parent dialog
d88f46
         self.proceed_handler = self.connect('proceed',
d88f46
                                             self._on_proceed)
d88f46
+        self.back_handler = self.connect('back',
d88f46
+                                         self._on_back)
d88f46
 
d88f46
         # FIXME: change glade name
d88f46
         self.details_label = self.register_details_label
d88f46
@@ -255,6 +288,8 @@ class RegisterWidget(widgets.SubmanBaseWidget):
d88f46
         # Track screens we "show" so we can choose a reasonable error screen
d88f46
         self.screen_history = []
d88f46
 
d88f46
+        self.uniq_screen_history = UniqueList()
d88f46
+        self.applied_screen_history = UniqueList()
d88f46
         # FIXME: modify property instead
d88f46
         self.callbacks = []
d88f46
 
d88f46
@@ -311,8 +346,7 @@ class RegisterWidget(widgets.SubmanBaseWidget):
d88f46
         any parent dialogs for example)."""
d88f46
 
d88f46
         # return to the last gui screen we showed.
d88f46
-        self._go_back_to_last_screen()
d88f46
-
d88f46
+        self._pop_last_screen()
d88f46
         # FIXME: we have more info here, but we need a good 'blurb'
d88f46
         #        for the status message.
d88f46
         msg = _("Error during registration.")
d88f46
@@ -320,7 +354,7 @@ class RegisterWidget(widgets.SubmanBaseWidget):
d88f46
 
d88f46
     def do_register_message(self, msg, msg_type=None):
d88f46
         # NOTE: we ignore msg_type here
d88f46
-        self._go_back_to_last_screen()
d88f46
+        self._pop_last_screen()
d88f46
         self.info.set_property('register-status', msg)
d88f46
 
d88f46
     def do_register_finished(self):
d88f46
@@ -339,9 +373,10 @@ class RegisterWidget(widgets.SubmanBaseWidget):
d88f46
         # close the window have something to display.
d88f46
         self.done()
d88f46
 
d88f46
-    def _go_back_to_last_screen(self):
d88f46
+    def _pop_last_screen(self):
d88f46
         try:
d88f46
-            self._set_screen(self.screen_history[-1])
d88f46
+            last = self.applied_screen_history.pop()
d88f46
+            self._set_screen(last)
d88f46
         except IndexError:
d88f46
             pass
d88f46
 
d88f46
@@ -391,7 +426,6 @@ class RegisterWidget(widgets.SubmanBaseWidget):
d88f46
         This also represents screens that allow the user to potentially correct
d88f46
         an error, so we track the history of these screens so errors can go to
d88f46
         a useful screen."""
d88f46
-        self.screen_history.append(current_screen.screens_index)
d88f46
         self._set_screen(self._current_screen)
d88f46
 
d88f46
     # TODO: replace most of the gui flow logic in the Screen subclasses with
d88f46
@@ -444,6 +478,13 @@ class RegisterWidget(widgets.SubmanBaseWidget):
d88f46
 
d88f46
     def apply_current_screen(self):
d88f46
         """Extract any info from the widgets and call the screens apply()."""
d88f46
+        #self._screen_history_append(self.current_screen.screens_index)
d88f46
+
d88f46
+        # The apply can emit a move to page signal, changing current_page
d88f46
+        # So save current screen index first.
d88f46
+        current_screen_index = self.current_screen.screens_index
d88f46
+        self.applied_screen_history.append(current_screen_index)
d88f46
+
d88f46
         self.current_screen.apply()
d88f46
 
d88f46
     # FIXME: figure out to determine we are on first screen, then this
d88f46
@@ -452,6 +493,9 @@ class RegisterWidget(widgets.SubmanBaseWidget):
d88f46
     def _on_proceed(self, obj):
d88f46
         self.apply_current_screen()
d88f46
 
d88f46
+    def _on_back(self, obj):
d88f46
+        self._pop_last_screen()
d88f46
+
d88f46
     # switch-page should be after the current screen is reset
d88f46
     def _on_switch_page(self, notebook, page, page_num):
d88f46
         if self.current_screen.button_label:
d88f46
@@ -536,8 +580,10 @@ class RegisterWidget(widgets.SubmanBaseWidget):
d88f46
 
d88f46
         if ready:
d88f46
             self.handler_unblock(self.proceed_handler)
d88f46
+            self.handler_unblock(self.back_handler)
d88f46
         else:
d88f46
             self.handler_block(self.proceed_handler)
d88f46
+            self.handler_block(self.back_handler)
d88f46
 
d88f46
     # HMMM: If the connect/backend/async, and the auth info is composited into
d88f46
     #       the same GObject, these could be class closure handlers
d88f46
@@ -597,7 +643,7 @@ class RegisterDialog(widgets.SubmanBaseWidget):
d88f46
 
d88f46
     widget_names = ['register_dialog', 'register_dialog_main_vbox',
d88f46
                     'register_details_label',
d88f46
-                    'cancel_button', 'register_button', 'progress_label',
d88f46
+                    'back_button', 'register_button', 'progress_label',
d88f46
                     'dialog_vbox6']
d88f46
 
d88f46
     gui_file = "register_dialog"
d88f46
@@ -642,7 +688,7 @@ class RegisterDialog(widgets.SubmanBaseWidget):
d88f46
         #self.register_widget.initialize()
d88f46
 
d88f46
         self.register_button.connect('clicked', self._on_register_button_clicked)
d88f46
-        self.cancel_button.connect('clicked', self.cancel)
d88f46
+        self.back_button.connect('clicked', self._on_back_button_clicked)
d88f46
 
d88f46
         # update window title on register state changes
d88f46
         self.reg_info.connect('notify::register-state',
d88f46
@@ -701,9 +747,13 @@ class RegisterDialog(widgets.SubmanBaseWidget):
d88f46
     def error_dialog(self, obj, msg):
d88f46
         gui_utils.show_error_window(msg)
d88f46
 
d88f46
+    def _on_back_button_clicked(self, obj):
d88f46
+        self.register_widget.emit('back')
d88f46
+
d88f46
     def _on_register_screen_ready_change(self, obj, value):
d88f46
         ready = self.register_widget.current_screen.get_property('ready')
d88f46
         self.register_button.set_sensitive(ready)
d88f46
+        self.back_button.set_sensitive(ready)
d88f46
 
d88f46
     def _on_register_button_clicked(self, button):
d88f46
         self.register_widget.emit('proceed')
d88f46
@@ -812,7 +862,7 @@ class Screen(widgets.SubmanBaseWidget):
d88f46
     # do whatever the screen indicates, and emit any signals indicating where
d88f46
     # to move to next. apply() should not return anything.
d88f46
     def apply(self):
d88f46
-        pass
d88f46
+        return True
d88f46
 
d88f46
     def post(self):
d88f46
         pass
d88f46
@@ -872,6 +922,7 @@ class NoGuiScreen(ga_GObject.GObject):
d88f46
 
d88f46
     def apply(self):
d88f46
         self.emit('move-to-screen')
d88f46
+        return True
d88f46
 
d88f46
     def post(self):
d88f46
         pass
d88f46
@@ -897,6 +948,7 @@ class PerformRegisterScreen(NoGuiScreen):
d88f46
         if error is not None:
d88f46
             self.emit('register-error', REGISTER_ERROR, error)
d88f46
             # TODO: register state
d88f46
+            self.pre_done()
d88f46
             return
d88f46
 
d88f46
         try:
d88f46
@@ -904,6 +956,7 @@ class PerformRegisterScreen(NoGuiScreen):
d88f46
         except Exception, e:
d88f46
             # hint: register error, back to creds?
d88f46
             self.emit('register-error', REGISTER_ERROR, e)
d88f46
+            self.pre_done()
d88f46
             return
d88f46
 
d88f46
         # trigger a id cert reload
d88f46
@@ -1006,6 +1059,7 @@ class ConfirmSubscriptionsScreen(Screen):
d88f46
 
d88f46
     def apply(self):
d88f46
         self.emit('move-to-screen', PERFORM_SUBSCRIBE_PAGE)
d88f46
+        return True
d88f46
 
d88f46
     def set_model(self):
d88f46
         dry_run_result = self.info.get_property('dry-run-result')
d88f46
@@ -1082,6 +1136,7 @@ class SelectSLAScreen(Screen):
d88f46
 
d88f46
     def apply(self):
d88f46
         self.emit('move-to-screen', CONFIRM_SUBS_PAGE)
d88f46
+        return True
d88f46
 
d88f46
     def clear(self):
d88f46
         child_widgets = self.sla_radio_container.get_children()
d88f46
@@ -1138,10 +1193,22 @@ class SelectSLAScreen(Screen):
d88f46
                 self.emit('register-error', msg, None)
d88f46
                 self.pre_done()
d88f46
                 return
d88f46
-                # TODO: where we should go from here?
d88f46
+            elif isinstance(error[1], RestlibException) and error[1].code == "401":
d88f46
+                # If we get here with a 401, we are using consumer cert auth
d88f46
+                # so that means we are likely connecting to the wrong server
d88f46
+                # url, since unregistered consumers talking to the correct
d88f46
+                # serverurl would 410. Short of changing serverurl or re-registering
d88f46
+                # there isn't much we can do to fix that.
d88f46
+                msg = error[1].error_msg
d88f46
+                # TODO: Provide a better error message reflecting above comment
d88f46
+                self.emit('register-error', msg, None)
d88f46
+                self.emit('attach-finished')
d88f46
+                self.pre_done()
d88f46
+                return
d88f46
             else:
d88f46
                 log.exception(error)
d88f46
                 self.emit('register-error', _("Error subscribing"), error)
d88f46
+                self.emit('attach-finished')
d88f46
                 self.pre_done()
d88f46
                 return
d88f46
 
d88f46
@@ -1264,6 +1331,7 @@ class EnvironmentScreen(Screen):
d88f46
         model, tree_iter = self.environment_treeview.get_selection().get_selected()
d88f46
         self.set_environment(model.get_value(tree_iter, 0))
d88f46
         self.emit('move-to-screen', PERFORM_REGISTER_PAGE)
d88f46
+        return True
d88f46
 
d88f46
     def set_environment(self, environment):
d88f46
         self.info.set_property('environment', environment)
d88f46
@@ -1336,6 +1404,7 @@ class OrganizationScreen(Screen):
d88f46
         owner_key = model.get_value(tree_iter, 0)
d88f46
         self.info.set_property('owner-key', owner_key)
d88f46
         self.emit('move-to-screen', ENVIRONMENT_SELECT_PAGE)
d88f46
+        return True
d88f46
 
d88f46
     def set_model(self, owners):
d88f46
         owner_model = ga_Gtk.ListStore(str, str)
d88f46
@@ -1428,10 +1497,10 @@ class CredentialsScreen(Screen):
d88f46
         skip_auto_bind = self.skip_auto_bind.get_active()
d88f46
 
d88f46
         if not self._validate_consumername(consumername):
d88f46
-            return
d88f46
+            return False
d88f46
 
d88f46
         if not self._validate_account():
d88f46
-            return
d88f46
+            return False
d88f46
 
d88f46
         self.info.set_property('username', username)
d88f46
         self.info.set_property('password', password)
d88f46
@@ -1439,6 +1508,7 @@ class CredentialsScreen(Screen):
d88f46
         self.info.set_property('consumername', consumername)
d88f46
 
d88f46
         self.emit('move-to-screen', OWNER_SELECT_PAGE)
d88f46
+        return True
d88f46
 
d88f46
     def clear(self):
d88f46
         self.account_login.set_text("")
d88f46
@@ -1472,19 +1542,20 @@ class ActivationKeyScreen(Screen):
d88f46
         consumername = self.consumer_entry.get_text().strip()
d88f46
 
d88f46
         if not self._validate_owner_key(owner_key):
d88f46
-            return
d88f46
+            return False
d88f46
 
d88f46
         if not self._validate_activation_keys(activation_keys):
d88f46
-            return
d88f46
+            return False
d88f46
 
d88f46
         if not self._validate_consumername(consumername):
d88f46
-            return
d88f46
+            return False
d88f46
 
d88f46
         self.info.set_property('consumername', consumername)
d88f46
         self.info.set_property('owner-key', owner_key)
d88f46
         self.info.set_property('activation-keys', activation_keys)
d88f46
 
d88f46
         self.emit('move-to-screen', PERFORM_REGISTER_PAGE)
d88f46
+        return True
d88f46
 
d88f46
     def _split_activation_keys(self, entry):
d88f46
         keys = re.split(',\s*|\s+', entry)
d88f46
@@ -1626,19 +1697,19 @@ class ChooseServerScreen(Screen):
d88f46
                               _("Unable to reach the server at %s:%s%s") %
d88f46
                                 (hostname, port, prefix),
d88f46
                               None)
d88f46
-                    return
d88f46
+                    return False
d88f46
             except MissingCaCertException:
d88f46
                 self.emit('register-error',
d88f46
                           _("CA certificate for subscription service has not been installed."),
d88f46
                           None)
d88f46
-                return
d88f46
+                return False
d88f46
 
d88f46
         except ServerUrlParseError:
d88f46
             self.emit('register-error',
d88f46
                       _("Please provide a hostname with optional port and/or prefix: "
d88f46
                         "hostname[:port][/prefix]"),
d88f46
                       None)
d88f46
-            return
d88f46
+            return False
d88f46
 
d88f46
         CFG.save()
d88f46
 
d88f46
@@ -1648,11 +1719,11 @@ class ChooseServerScreen(Screen):
d88f46
 
d88f46
         if self.activation_key_checkbox.get_active():
d88f46
             self.emit('move-to-screen', ACTIVATION_KEY_PAGE)
d88f46
-            return
d88f46
+            return True
d88f46
 
d88f46
         else:
d88f46
             self.emit('move-to-screen', CREDENTIALS_PAGE)
d88f46
-            return
d88f46
+            return True
d88f46
 
d88f46
     def set_server_entry(self, hostname, port, prefix):
d88f46
         # No need to show port and prefix for hosted:
d88f46
@@ -1995,10 +2066,11 @@ class InfoScreen(Screen):
d88f46
         self.stay()
d88f46
         if self.register_radio.get_active():
d88f46
             self.emit('move-to-screen', CHOOSE_SERVER_PAGE)
d88f46
-            return
d88f46
+            return True
d88f46
 
d88f46
         else:
d88f46
             self.emit('move-to-screen', FINISH)
d88f46
+            return True
d88f46
 
d88f46
     def _on_why_register_button_clicked(self, button):
d88f46
         self.why_register_dialog.show()
d88f46
diff --git a/subscription-manager.spec b/subscription-manager.spec
d88f46
index 9a62cdf..63e7a50 100644
d88f46
--- a/subscription-manager.spec
d88f46
+++ b/subscription-manager.spec
d88f46
@@ -49,7 +49,7 @@
d88f46
 
d88f46
 Name: subscription-manager
d88f46
 Version: 1.15.9
d88f46
-Release: 12%{?dist}
d88f46
+Release: 13%{?dist}
d88f46
 Summary: Tools and libraries for subscription and repository management
d88f46
 Group:   System Environment/Base
d88f46
 License: GPLv2
d88f46
@@ -542,6 +542,16 @@ fi
d88f46
 %endif
d88f46
 
d88f46
 %changelog
d88f46
+* Wed Sep 30 2015 Chris Rog <crog@redhat.com> 1.15.9-13
d88f46
+- 1266480: Refresh TreeView selection after subscriptions are removed.
d88f46
+  (awood@redhat.com)
d88f46
+- 1267034: Handle 401 with cert based auth (alikins@redhat.com)
d88f46
+- Allow 'back' to go back multiple times. (alikins@redhat.com)
d88f46
+- 1262075,1267179,1243707: Fix back/cancel nav (alikins@redhat.com)
d88f46
+- 1267287: Fix allsubs tab ui regression (alikins@redhat.com)
d88f46
+- 1266994: Use our icon for initial-setup spoke icon (alikins@redhat.com)
d88f46
+- 1265347, 1265371: More translations whitespace corrections (crog@redhat.com)
d88f46
+
d88f46
 * Mon Sep 28 2015 Chris Rog <crog@redhat.com> 1.15.9-12
d88f46
 - 1261006: Handle multiple nav button clicks (alikins@redhat.com)
d88f46
 - 1242998, 1254550: Fix "already reg'ed" in initial-setup (alikins@redhat.com)
d88f46
diff --git a/test/test_registrationgui.py b/test/test_registrationgui.py
d88f46
index 6ccd89b..6e99e6e 100644
d88f46
--- a/test/test_registrationgui.py
d88f46
+++ b/test/test_registrationgui.py
d88f46
@@ -33,6 +33,7 @@ class RegisterWidgetTests(SubManFixture):
d88f46
 
d88f46
         self.rs._screens[CHOOSE_SERVER_PAGE] = Mock()
d88f46
         self.rs._screens[CHOOSE_SERVER_PAGE].index = 0
d88f46
+        self.rs._screens[CHOOSE_SERVER_PAGE].screens_index = 0
d88f46
         self.rs._screens[CHOOSE_SERVER_PAGE].button_label = "Dummy"
d88f46
         self.rs._screens[CHOOSE_SERVER_PAGE].apply.return_value = \
d88f46
                 CREDENTIALS_PAGE