[SCM] GUI front-end for Debian Live. branch, master, updated. 862558aa95f245311e31ea4eccc375871f10600c

Chris Lamb chris at chris-lamb.co.uk
Sat Aug 9 07:55:30 UTC 2008


The following commit has been merged in the master branch:
commit 862558aa95f245311e31ea4eccc375871f10600c
Author: Chris Lamb <chris at chris-lamb.co.uk>
Date:   Sat Aug 9 08:54:16 2008 +0100

    Add locale and keyboard layout step.
    
    Signed-off-by: Chris Lamb <chris at chris-lamb.co.uk>

diff --git a/LiveMagic/controllers/main.py b/LiveMagic/controllers/main.py
index 6bb346f..9e53fd8 100644
--- a/LiveMagic/controllers/main.py
+++ b/LiveMagic/controllers/main.py
@@ -21,6 +21,8 @@ import gtk
 import pwd
 import sys
 
+from LiveMagic.utils import find_resource
+
 class MainController(object):
 
     def ready(self, options, args):
@@ -46,3 +48,19 @@ class MainController(object):
     def get_homedir(self):
         uid = os.geteuid()
         return pwd.getpwuid(uid)[5]
+
+    def get_keyboard_layouts(self):
+        for line in open(find_resource('keyboard-layouts.txt')):
+            yield line.strip().split('\t', 2)
+
+    def get_locales(self):
+        locales = []
+        try:
+            for line in open('/usr/share/i18n/SUPPORTED'):
+                locale, codepage = line.strip().split(' ', 2)
+                locales.append(locale)
+        except:
+            locales = ['en_US.UTF-8']
+
+        locales.sort()
+        return locales
diff --git a/LiveMagic/views/wizard.py b/LiveMagic/views/wizard.py
index 7773ee2..6365d1e 100644
--- a/LiveMagic/views/wizard.py
+++ b/LiveMagic/views/wizard.py
@@ -16,6 +16,8 @@
 #   You should have received a copy of the GNU General Public License
 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os
+import re
 import gtk
 
 from DebianLive.utils import get_mirror
@@ -92,10 +94,33 @@ class WizardView(object):
         c.set_active(0)
 
         c = self['combo_net_root_filesystem']
-        c.prepend_text('CIFS')
-        c.prepend_text('NFS')
+        c.append_text('NFS')
+        c.append_text('CIFS')
         c.set_active(0)
 
+        c = self['combo_locale']
+        c.set_active(0)
+        match = os.environ.get('LANG', 'en_US.UTF-8')
+        for idx, locale in enumerate(self.controller.get_locales()):
+            c.append_text(locale)
+            if locale == match:
+                c.set_active(idx)
+
+        c = self['combo_keyboard']
+        try:
+            kv = KeyVar('/etc/default', 'console-setup', {}, filename='/etc/default/console-setup')
+            match = kv.get('XKBLAYOUT')
+            if match == 'gb':
+                match = 'uk'
+        except IOError:
+            match = "us"
+
+        for idx, layout in enumerate(self.controller.get_keyboard_layouts()):
+            code, name = layout
+            c.append_text('%s (%s)' % (name, code.upper()))
+            if code == match:
+                c.set_active(idx)
+
         server = '192.168.1.1'
         path = '/srv/debian-live'
         try:
@@ -129,13 +154,27 @@ class WizardView(object):
                     return button.get_name().split('_')[2]
 
         data = {
-            'packages_lists' : get_active('radio_desktop_gnome'),
-            'binary_images' : get_active('radio_media_iso'),
-            'distribution' : get_active('radio_distribution_lenny'),
-            'debian_installer' : get_active('radio_installer_disabled'),
-            'mirror' : self['combobox_mirror'].get_active_text()
+            'packages_lists': get_active('radio_desktop_standard'),
+            'binary_images': get_active('radio_media_iso'),
+            'distribution': get_active('radio_distribution_lenny'),
+            'debian_installer': get_active('radio_installer_disabled'),
+            'mirror_bootstrap': self['combobox_mirror'].get_active_text(),
         }
 
+        # Set locale
+        try:
+            locale = self['combo_locale'].get_active_text()
+            data['language'] = locale.split('_')[0]
+        except:
+            locale = "en_US.UTF_8"
+
+        # Get keyboard
+        m = re.search(r' \(([^\)]+)\)$', self['combo_keyboard'].get_active_text())
+        keyb = m.group(1).lower()
+
+        # Boot parameters
+        data['bootappend_live'] = "locale=%s keyb=%s" % (locale, keyb)
+
         if self.controller.get_host_architecture() == 'amd64':
             data['architecture'] = get_active('radio_architecture_i386')
 
diff --git a/debian/changelog b/debian/changelog
index 90ae0f8..7b954f9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,7 @@ live-magic (1.0) unstable; urgency=low
   * 1.0 release for Lenny.
   * Set default distribution to Lenny.
   * Don't show distribution page when running Lenny as stable.
+  * Add locale and keyboard layout step.
 
  -- Chris Lamb <chris at chris-lamb.co.uk>  Sat, 09 Aug 2008 02:41:53 +0100
 
diff --git a/misc/keyboard-layouts.txt b/misc/keyboard-layouts.txt
new file mode 100644
index 0000000..86b37f5
--- /dev/null
+++ b/misc/keyboard-layouts.txt
@@ -0,0 +1,82 @@
+af	Afghanistan
+al	Albania
+ad	Andorra
+ara	Arabic
+am	Armenia
+az	Azerbaijan
+bd	Bangladesh
+by	Belarus
+be	Belgium
+bt	Bhutan
+ba	Bosnia and Herzegovina
+braille	Braille
+br	Brazil
+bg	Bulgaria
+kh	Cambodia
+ca	Canada
+cn	China
+cd	Congo, Democratic Republic of the
+hr	Croatia
+cz	Czechia
+dk	Denmark
+epo	Esperanto
+ee	Estonia
+et	Ethiopia
+fo	Faroe Islands
+fi	Finland
+fr	France
+ge	Georgia
+de	Germany
+gh	Ghana
+gr	Greece
+gn	Guinea
+hu	Hungary
+is	Iceland
+in	India
+ir	Iran
+iq	Iraq
+ie	Ireland
+il	Israel
+it	Italy
+jp	Japan
+nec_vndr/jp	Japan (PC-98xx Series)
+kz	Kazakhstan
+kr	Korea, Republic of
+kg	Kyrgyzstan
+la	Laos
+latam	Latin American
+lv	Latvia
+lt	Lithuania
+mk	Macedonia
+mv	Maldives
+mt	Malta
+mao	Maori
+mn	Mongolia
+me	Montenegro
+ma	Morocco
+mm	Myanmar
+np	Nepal
+nl	Netherlands
+ng	Nigeria
+no	Norway
+pk	Pakistan
+pl	Poland
+pt	Portugal
+ro	Romania
+ru	Russia
+rs	Serbia
+sk	Slovakia
+si	Slovenia
+za	South Africa
+es	Spain
+lk	Sri Lanka
+se	Sweden
+ch	Switzerland
+sy	Syria
+tj	Tajikistan
+th	Thailand
+tr	Turkey
+us	USA
+ua	Ukraine
+uk	United Kingdom
+uz	Uzbekistan
diff --git a/misc/live-magic.glade b/misc/live-magic.glade
index b5fbbba..6d097c1 100644
--- a/misc/live-magic.glade
+++ b/misc/live-magic.glade
@@ -201,8 +201,8 @@ Please wait while your Debian Live image is generated for you.</property>
                 <property name="label" translatable="yes">&lt;b&gt;Welcome to Debian Live Magic!&lt;/b&gt;
 
 A &lt;i&gt;live&lt;/i&gt; system is an operating system that does not require
-a classical installer to use it. It can boot from various media,
-including CDs, DVDs, USB sticks, or via netboot. 
+a classical installer to use it. It can boot from various types of
+media, including CDs, DVDs, USB sticks, or via netboot. 
 
 The following screens will lead you through the process
 of building your own Debian Live system.</property>
@@ -242,26 +242,26 @@ of building your own Debian Live system.</property>
                     <property name="n_rows">1</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label18">
+                      <widget class="GtkLabel" id="label36">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">&lt;b&gt;What type of image would you like to build?&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label36">
+                      <widget class="GtkLabel" id="label18">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">&lt;b&gt;What type of image would you like?&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
+                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                   </widget>
@@ -273,68 +273,10 @@ of building your own Debian Live system.</property>
                   <widget class="GtkTable" id="table12">
                     <property name="visible">True</property>
                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="n_rows">5</property>
+                    <property name="n_rows">6</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label56">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="x_padding">40</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label106">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="x_padding">40</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label110">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="x_padding">40</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label111">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">3</property>
-                        <property name="bottom_attach">4</property>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="x_padding">40</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label112">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="top_attach">4</property>
-                        <property name="bottom_attach">5</property>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="x_padding">40</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkRadioButton" id="radio_desktop_gnome">
+                      <widget class="GtkRadioButton" id="radio_desktop_standard">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -342,22 +284,22 @@ of building your own Debian Live system.</property>
                         <property name="active">True</property>
                         <property name="draw_indicator">True</property>
                         <child>
-                          <widget class="GtkHBox" id="hbox9">
+                          <widget class="GtkHBox" id="hbox20">
                             <property name="visible">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <property name="spacing">10</property>
                             <child>
-                              <widget class="GtkImage" id="image4">
+                              <widget class="GtkImage" id="image11">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="pixbuf">gnome-logo-icon-transparent.png</property>
+                                <property name="pixbuf">debian_sm.png</property>
                               </widget>
                             </child>
                             <child>
-                              <widget class="GtkLabel" id="label119">
+                              <widget class="GtkLabel" id="label70">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">GNOME desktop environment</property>
+                                <property name="label" translatable="yes">Standard Debian GNU/Linux image</property>
                               </widget>
                               <packing>
                                 <property name="position">1</property>
@@ -374,30 +316,36 @@ of building your own Debian Live system.</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="radio_desktop_kde">
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <widget class="GtkRadioButton" id="radio_desktop_gnome">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="response_id">0</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">radio_desktop_gnome</property>
+                        <property name="group">radio_desktop_standard</property>
                         <child>
-                          <widget class="GtkHBox" id="hbox14">
+                          <widget class="GtkHBox" id="hbox9">
                             <property name="visible">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <property name="spacing">10</property>
                             <child>
-                              <widget class="GtkImage" id="image7">
+                              <widget class="GtkImage" id="image4">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="pixbuf">kde.png</property>
+                                <property name="pixbuf">gnome-logo-icon-transparent.png</property>
                               </widget>
                             </child>
                             <child>
-                              <widget class="GtkLabel" id="label118">
+                              <widget class="GtkLabel" id="label119">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">KDE desktop environment</property>
+                                <property name="label" translatable="yes">GNOME desktop environment</property>
                               </widget>
                               <packing>
                                 <property name="position">1</property>
@@ -416,30 +364,30 @@ of building your own Debian Live system.</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="radio_desktop_xfce">
+                      <widget class="GtkRadioButton" id="radio_desktop_kde">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="response_id">0</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">radio_desktop_gnome</property>
+                        <property name="group">radio_desktop_standard</property>
                         <child>
-                          <widget class="GtkHBox" id="hbox15">
+                          <widget class="GtkHBox" id="hbox14">
                             <property name="visible">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <property name="spacing">10</property>
                             <child>
-                              <widget class="GtkImage" id="image8">
+                              <widget class="GtkImage" id="image7">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="pixbuf">xfce.png</property>
+                                <property name="pixbuf">kde.png</property>
                               </widget>
                             </child>
                             <child>
-                              <widget class="GtkLabel" id="label117">
+                              <widget class="GtkLabel" id="label118">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">Xfce desktop environment</property>
+                                <property name="label" translatable="yes">KDE desktop environment</property>
                               </widget>
                               <packing>
                                 <property name="position">1</property>
@@ -458,30 +406,30 @@ of building your own Debian Live system.</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="radio_desktop_standard">
+                      <widget class="GtkRadioButton" id="radio_desktop_xfce">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="response_id">0</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">radio_desktop_gnome</property>
+                        <property name="group">radio_desktop_standard</property>
                         <child>
-                          <widget class="GtkHBox" id="hbox20">
+                          <widget class="GtkHBox" id="hbox15">
                             <property name="visible">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <property name="spacing">10</property>
                             <child>
-                              <widget class="GtkImage" id="image11">
+                              <widget class="GtkImage" id="image8">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="pixbuf">debian_sm.png</property>
+                                <property name="pixbuf">xfce.png</property>
                               </widget>
                             </child>
                             <child>
-                              <widget class="GtkLabel" id="label70">
+                              <widget class="GtkLabel" id="label117">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">Standard Debian GNU/Linux image</property>
+                                <property name="label" translatable="yes">Xfce desktop environment</property>
                               </widget>
                               <packing>
                                 <property name="position">1</property>
@@ -506,7 +454,7 @@ of building your own Debian Live system.</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="response_id">0</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">radio_desktop_gnome</property>
+                        <property name="group">radio_desktop_standard</property>
                         <child>
                           <widget class="GtkHBox" id="hbox21">
                             <property name="visible">True</property>
@@ -537,6 +485,64 @@ of building your own Debian Live system.</property>
                         <property name="y_padding">5</property>
                       </packing>
                     </child>
+                    <child>
+                      <widget class="GtkLabel" id="label112">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="top_attach">4</property>
+                        <property name="bottom_attach">5</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="x_padding">40</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label111">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="x_padding">40</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label110">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="x_padding">40</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label106">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="x_padding">40</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label56">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="x_padding">40</property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
@@ -580,29 +586,29 @@ of building your own Debian Live system.</property>
                     <property name="n_rows">1</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label100">
+                      <widget class="GtkLabel" id="label95">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">&lt;b&gt;What distribution of Debian would you like to build?&lt;/b&gt;
+
+If unsure, select "&lt;i&gt;Testing (lenny)&lt;/i&gt;".</property>
+                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label95">
+                      <widget class="GtkLabel" id="label100">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">&lt;b&gt;What distribution of Debian would you like to build?&lt;/b&gt;
-
-If unsure, select "&lt;i&gt;Testing (lenny)&lt;/i&gt;".</property>
-                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                   </widget>
@@ -618,42 +624,38 @@ If unsure, select "&lt;i&gt;Testing (lenny)&lt;/i&gt;".</property>
                     <property name="n_rows">3</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkRadioButton" id="radio_distribution_etch">
+                      <widget class="GtkLabel" id="label101">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Stable (etch) - well-tested and rarely changes.</property>
-                        <property name="response_id">0</property>
-                        <property name="draw_indicator">True</property>
-                        <property name="group">radio_distribution_lenny</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_options">GTK_FILL</property>
-                        <property name="y_padding">4</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="radio_distribution_lenny">
+                      <widget class="GtkLabel" id="label105">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Testing (lenny) - receives new versions from unstable if they are not too buggy.</property>
-                        <property name="use_underline">True</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_options">GTK_FILL</property>
-                        <property name="y_padding">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label107">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">40</property>
                       </packing>
                     </child>
                     <child>
@@ -677,38 +679,42 @@ If unsure, select "&lt;i&gt;Testing (lenny)&lt;/i&gt;".</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label107">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                        <property name="x_padding">40</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label105">
+                      <widget class="GtkRadioButton" id="radio_distribution_lenny">
                         <property name="visible">True</property>
+                        <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Testing (lenny) - receives new versions from unstable if they are not too buggy.</property>
+                        <property name="use_underline">True</property>
+                        <property name="response_id">0</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_options">GTK_FILL</property>
+                        <property name="y_padding">4</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label101">
+                      <widget class="GtkRadioButton" id="radio_distribution_etch">
                         <property name="visible">True</property>
+                        <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Stable (etch) - well-tested and rarely changes.</property>
+                        <property name="response_id">0</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">radio_distribution_lenny</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_options">GTK_FILL</property>
+                        <property name="y_padding">4</property>
                       </packing>
                     </child>
                   </widget>
@@ -754,27 +760,27 @@ If unsure, select "&lt;i&gt;Testing (lenny)&lt;/i&gt;".</property>
                     <property name="n_rows">1</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label74">
+                      <widget class="GtkLabel" id="label102">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">&lt;b&gt;What media type would you like to target?&lt;/b&gt;</property>
-                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label102">
+                      <widget class="GtkLabel" id="label74">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">&lt;b&gt;What media type would you like to target?&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                   </widget>
@@ -790,65 +796,129 @@ If unsure, select "&lt;i&gt;Testing (lenny)&lt;/i&gt;".</property>
                     <property name="n_rows">4</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label76">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label94">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      <widget class="GtkTable" id="table_netboot_settings">
+                        <property name="n_rows">3</property>
+                        <property name="n_columns">2</property>
+                        <child>
+                          <widget class="GtkComboBox" id="combo_net_root_filesystem">
+                            <property name="width_request">216</property>
+                            <property name="visible">True</property>
+                            <property name="has_frame">False</property>
+                            <property name="items" translatable="yes"></property>
+                          </widget>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label9">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">Server path:</property>
+                          </widget>
+                          <packing>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options">GTK_EXPAND</property>
+                            <property name="y_padding">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label8">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">Server address:</property>
+                          </widget>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                            <property name="x_options">GTK_EXPAND</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label7">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">Server type:</property>
+                          </widget>
+                          <packing>
+                            <property name="x_options">GTK_EXPAND</property>
+                            <property name="x_padding">30</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkEntry" id="entry_net_root_path">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </widget>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkEntry" id="entry_net_root_server">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </widget>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
                       </widget>
                       <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">24</property>
+                        <property name="y_padding">7</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label96">
+                      <widget class="GtkLabel" id="label6">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_options">GTK_FILL</property>
                         <property name="x_padding">40</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="radio_media_iso">
+                      <widget class="GtkRadioButton" id="radio_media_net">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="response_id">0</property>
                         <property name="active">True</property>
                         <property name="draw_indicator">True</property>
+                        <property name="group">radio_media_iso</property>
+                        <signal name="toggled" handler="on_radio_media_net_group_changed"/>
                         <child>
-                          <widget class="GtkHBox" id="hbox23">
+                          <widget class="GtkHBox" id="hbox26">
                             <property name="visible">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <property name="spacing">5</property>
                             <child>
-                              <widget class="GtkImage" id="image18">
+                              <widget class="GtkImage" id="image20">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="stock">gtk-cdrom</property>
+                                <property name="stock">gtk-network</property>
                               </widget>
                             </child>
                             <child>
-                              <widget class="GtkLabel" id="label97">
+                              <widget class="GtkLabel" id="label99">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">ISO image for a CD or DVD</property>
+                                <property name="label" translatable="yes">Network boot image</property>
                               </widget>
                               <packing>
                                 <property name="position">1</property>
@@ -860,6 +930,8 @@ If unsure, select "&lt;i&gt;Testing (lenny)&lt;/i&gt;".</property>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_padding">5</property>
                       </packing>
@@ -908,32 +980,30 @@ If unsure, select "&lt;i&gt;Testing (lenny)&lt;/i&gt;".</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="radio_media_net">
+                      <widget class="GtkRadioButton" id="radio_media_iso">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="response_id">0</property>
                         <property name="active">True</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">radio_media_iso</property>
-                        <signal name="toggled" handler="on_radio_media_net_group_changed"/>
                         <child>
-                          <widget class="GtkHBox" id="hbox26">
+                          <widget class="GtkHBox" id="hbox23">
                             <property name="visible">True</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <property name="spacing">5</property>
                             <child>
-                              <widget class="GtkImage" id="image20">
+                              <widget class="GtkImage" id="image18">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="stock">gtk-network</property>
+                                <property name="stock">gtk-cdrom</property>
                               </widget>
                             </child>
                             <child>
-                              <widget class="GtkLabel" id="label99">
+                              <widget class="GtkLabel" id="label97">
                                 <property name="visible">True</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="label" translatable="yes">Network boot image</property>
+                                <property name="label" translatable="yes">ISO image for a CD or DVD</property>
                               </widget>
                               <packing>
                                 <property name="position">1</property>
@@ -945,107 +1015,43 @@ If unsure, select "&lt;i&gt;Testing (lenny)&lt;/i&gt;".</property>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
-                        <property name="top_attach">2</property>
-                        <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_padding">5</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label6">
+                      <widget class="GtkLabel" id="label96">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">3</property>
-                        <property name="bottom_attach">4</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_options">GTK_FILL</property>
                         <property name="x_padding">40</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkTable" id="table_netboot_settings">
-                        <property name="n_rows">3</property>
-                        <property name="n_columns">2</property>
-                        <child>
-                          <widget class="GtkEntry" id="entry_net_root_server">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkEntry" id="entry_net_root_path">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label7">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Server type:</property>
-                          </widget>
-                          <packing>
-                            <property name="x_options">GTK_EXPAND</property>
-                            <property name="x_padding">30</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label8">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Server address:</property>
-                          </widget>
-                          <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="x_options">GTK_EXPAND</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label9">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Server path:</property>
-                          </widget>
-                          <packing>
-                            <property name="top_attach">2</property>
-                            <property name="bottom_attach">3</property>
-                            <property name="x_options">GTK_EXPAND</property>
-                            <property name="y_padding">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkComboBox" id="combo_net_root_filesystem">
-                            <property name="width_request">216</property>
-                            <property name="visible">True</property>
-                            <property name="has_frame">False</property>
-                            <property name="items" translatable="yes"></property>
-                          </widget>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                          </packing>
-                        </child>
+                      <widget class="GtkLabel" id="label94">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
-                        <property name="top_attach">3</property>
-                        <property name="bottom_attach">4</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="x_padding">24</property>
-                        <property name="y_padding">7</property>
+                        <property name="y_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label76">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
                       </packing>
                     </child>
                   </widget>
@@ -1091,29 +1097,29 @@ If unsure, select "&lt;i&gt;Testing (lenny)&lt;/i&gt;".</property>
                     <property name="n_rows">1</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label83">
+                      <widget class="GtkLabel" id="label77">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Please choose your local mirror:&lt;/b&gt;
+
+To select a mirror that is not on the list, simply enter it below.</property>
+                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label77">
+                      <widget class="GtkLabel" id="label83">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">&lt;b&gt;Please choose a local mirror.&lt;/b&gt;
-
-To select a mirror that is not on the list, simply enter it below.</property>
-                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                   </widget>
@@ -1129,6 +1135,28 @@ To select a mirror that is not on the list, simply enter it below.</property>
                     <property name="n_rows">1</property>
                     <property name="n_columns">3</property>
                     <child>
+                      <widget class="GtkLabel" id="label88">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="x_padding">20</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label90">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="left_attach">2</property>
+                        <property name="right_attach">3</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="x_padding">30</property>
+                      </packing>
+                    </child>
+                    <child>
                       <widget class="GtkComboBoxEntry" id="combobox_mirror">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -1187,28 +1215,6 @@ http://ftp.uk.debian.org/debian
                         <property name="right_attach">2</property>
                       </packing>
                     </child>
-                    <child>
-                      <widget class="GtkLabel" id="label90">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="left_attach">2</property>
-                        <property name="right_attach">3</property>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="x_padding">30</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label88">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="x_padding">20</property>
-                      </packing>
-                    </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
@@ -1253,29 +1259,29 @@ http://ftp.uk.debian.org/debian
                     <property name="n_rows">1</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label103">
+                      <widget class="GtkLabel" id="label104">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes" comments="Should only be displayed when building on amd64.">&lt;b&gt;What type of machine is your Debian Live system for?&lt;/b&gt;
+
+If you are unsure, select "&lt;i&gt;i386&lt;/i&gt;".</property>
+                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label104">
+                      <widget class="GtkLabel" id="label103">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes" comments="Should only be displayed when building on amd64.">&lt;b&gt;What type of machine is your Debian Live system for?&lt;/b&gt;
-
-If you are unsure, select "&lt;i&gt;i386&lt;/i&gt;".</property>
-                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                   </widget>
@@ -1291,26 +1297,23 @@ If you are unsure, select "&lt;i&gt;i386&lt;/i&gt;".</property>
                     <property name="n_rows">2</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label86">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                        <property name="x_padding">40</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label89">
+                      <widget class="GtkRadioButton" id="radio_architecture_i386">
                         <property name="visible">True</property>
+                        <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">i386
+Computers with e.g. AMD Sempron or Intel Celeron, almost all
+desktop computers dating 2004 or earlier.</property>
+                        <property name="response_id">0</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_options">GTK_FILL</property>
+                        <property name="y_padding">4</property>
                       </packing>
                     </child>
                     <child>
@@ -1337,23 +1340,26 @@ Intel Core2, Pentium 4xx, Pentium D CPUs.</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="radio_architecture_i386">
+                      <widget class="GtkLabel" id="label89">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">i386
-Computers with e.g. AMD Sempron or Intel Celeron, almost all
-desktop computers dating 2004 or earlier.</property>
-                        <property name="response_id">0</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_options">GTK_FILL</property>
-                        <property name="y_padding">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label86">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">40</property>
                       </packing>
                     </child>
                   </widget>
@@ -1400,21 +1406,10 @@ desktop computers dating 2004 or earlier.</property>
                     <property name="n_rows">1</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label11">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                        <property name="x_padding">20</property>
-                      </packing>
-                    </child>
-                    <child>
                       <widget class="GtkLabel" id="label12">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">&lt;b&gt;Select Debian Installer integration&lt;/b&gt;
+                        <property name="label" translatable="yes">&lt;b&gt;Select Debian Installer integration:&lt;/b&gt;
 
 Selecting "&lt;i&gt;yes&lt;/i&gt;" below adds additional boot options that launch the Debian Installer, the
 official installation system for Debian systems. 
@@ -1428,6 +1423,17 @@ If unsure, select "&lt;i&gt;no&lt;/i&gt;".</property>
                         <property name="x_options">GTK_FILL</property>
                       </packing>
                     </child>
+                    <child>
+                      <widget class="GtkLabel" id="label11">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">20</property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
@@ -1441,21 +1447,29 @@ If unsure, select "&lt;i&gt;no&lt;/i&gt;".</property>
                     <property name="n_rows">2</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkRadioButton" id="radio_installer_disabled">
+                      <widget class="GtkLabel" id="label13">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">40</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkRadioButton" id="radio_installer_live">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">No, do not integrate the Debian Installer.</property>
-                        <property name="use_underline">True</property>
+                        <property name="label" translatable="yes">Yes, integrate the Debian Installer.</property>
                         <property name="response_id">0</property>
-                        <property name="active">True</property>
                         <property name="draw_indicator">True</property>
+                        <property name="group">radio_installer_disabled</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
-                        <property name="top_attach">1</property>
-                        <property name="bottom_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_options">GTK_FILL</property>
                         <property name="y_padding">4</property>
@@ -1474,34 +1488,26 @@ If unsure, select "&lt;i&gt;no&lt;/i&gt;".</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkRadioButton" id="radio_installer_live">
+                      <widget class="GtkRadioButton" id="radio_installer_disabled">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Yes, integrate the Debian Installer.</property>
+                        <property name="label" translatable="yes">No, do not integrate the Debian Installer.</property>
+                        <property name="use_underline">True</property>
                         <property name="response_id">0</property>
+                        <property name="active">True</property>
                         <property name="draw_indicator">True</property>
-                        <property name="group">radio_installer_disabled</property>
                       </widget>
                       <packing>
                         <property name="left_attach">1</property>
                         <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
                         <property name="y_options">GTK_FILL</property>
                         <property name="y_padding">4</property>
                       </packing>
                     </child>
-                    <child>
-                      <widget class="GtkLabel" id="label13">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="x_options">GTK_FILL</property>
-                        <property name="y_options">GTK_FILL</property>
-                        <property name="x_padding">40</property>
-                      </packing>
-                    </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
@@ -1531,26 +1537,27 @@ If unsure, select "&lt;i&gt;no&lt;/i&gt;".</property>
           </packing>
         </child>
         <child>
-          <widget class="GtkVBox" id="vbox_build_dir">
+          <widget class="GtkVBox" id="vbox_mirror1">
             <property name="visible">True</property>
             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
             <child>
-              <widget class="GtkVBox" id="vbox2">
+              <widget class="GtkVBox" id="vbox4">
                 <property name="visible">True</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                 <child>
-                  <widget class="GtkTable" id="table1">
+                  <widget class="GtkTable" id="table5">
                     <property name="visible">True</property>
                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                     <property name="n_rows">1</property>
                     <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkLabel" id="label2">
+                      <widget class="GtkLabel" id="label16">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">&lt;b&gt;Please choose a build folder:&lt;/b&gt;
+                        <property name="label" translatable="yes">&lt;b&gt;Select locale and keyboard layout:&lt;/b&gt;
 
-If the specified directory is not empty, images will be created in a &lt;i&gt;DebianLive/&lt;/i&gt; subfolder.</property>
+A locale is an identifier that defines your language, country and related formatting
+settings. If unsure, please use the defaults.</property>
                         <property name="use_markup">True</property>
                       </widget>
                       <packing>
@@ -1560,7 +1567,7 @@ If the specified directory is not empty, images will be created in a &lt;i&gt;De
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label3">
+                      <widget class="GtkLabel" id="label17">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                       </widget>
@@ -1577,34 +1584,168 @@ If the specified directory is not empty, images will be created in a &lt;i&gt;De
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkTable" id="table2">
+                  <widget class="GtkHBox" id="hbox2">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkTable" id="table_language_settings">
+                        <property name="visible">True</property>
+                        <property name="n_rows">3</property>
+                        <property name="n_columns">2</property>
+                        <child>
+                          <widget class="GtkLabel" id="label22">
+                            <property name="visible">True</property>
+                          </widget>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label19">
+                            <property name="visible">True</property>
+                          </widget>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkComboBox" id="combo_keyboard">
+                            <property name="width_request">216</property>
+                            <property name="visible">True</property>
+                            <property name="has_frame">False</property>
+                            <property name="items" translatable="yes"></property>
+                          </widget>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label20">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">Keyboard layout:</property>
+                          </widget>
+                          <packing>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                            <property name="x_options">GTK_EXPAND</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkComboBox" id="combo_locale">
+                            <property name="width_request">216</property>
+                            <property name="visible">True</property>
+                            <property name="has_frame">False</property>
+                            <property name="items" translatable="yes"></property>
+                          </widget>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="x_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label21">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">Locale:</property>
+                          </widget>
+                          <packing>
+                            <property name="x_options">GTK_EXPAND</property>
+                            <property name="x_padding">30</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkLabel" id="label15">
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Select locale and keyboard layout</property>
+          </widget>
+          <packing>
+            <property name="type">tab</property>
+            <property name="position">7</property>
+            <property name="tab_fill">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkVBox" id="vbox_build_dir">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <child>
+              <widget class="GtkVBox" id="vbox2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <widget class="GtkTable" id="table1">
                     <property name="visible">True</property>
                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                     <property name="n_rows">1</property>
-                    <property name="n_columns">3</property>
+                    <property name="n_columns">2</property>
                     <child>
-                      <widget class="GtkFileChooserButton" id="filechooser_build_directory">
+                      <widget class="GtkLabel" id="label3">
                         <property name="visible">True</property>
-                        <property name="use_preview_label">False</property>
-                        <property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property>
-                        <property name="focus_on_click">False</property>
-                        <property name="title" translatable="yes">Select build folder</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                       </widget>
                       <packing>
-                        <property name="left_attach">1</property>
-                        <property name="right_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">20</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label4">
+                      <widget class="GtkLabel" id="label2">
                         <property name="visible">True</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Please choose a build folder:&lt;/b&gt;
+
+If the specified directory is not empty, images will be created in a &lt;i&gt;DebianLive/&lt;/i&gt; subfolder.</property>
+                        <property name="use_markup">True</property>
                       </widget>
                       <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
                         <property name="x_options">GTK_FILL</property>
-                        <property name="x_padding">20</property>
                       </packing>
                     </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="padding">14</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkTable" id="table2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="n_rows">1</property>
+                    <property name="n_columns">3</property>
                     <child>
                       <widget class="GtkLabel" id="label5">
                         <property name="visible">True</property>
@@ -1617,6 +1758,29 @@ If the specified directory is not empty, images will be created in a &lt;i&gt;De
                         <property name="x_padding">30</property>
                       </packing>
                     </child>
+                    <child>
+                      <widget class="GtkLabel" id="label4">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </widget>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="x_padding">20</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkFileChooserButton" id="filechooser_build_directory">
+                        <property name="visible">True</property>
+                        <property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property>
+                        <property name="use_preview_label">False</property>
+                        <property name="focus_on_click">False</property>
+                        <property name="title" translatable="yes">Select build folder</property>
+                      </widget>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
                     <property name="expand">False</property>
@@ -1631,7 +1795,7 @@ If the specified directory is not empty, images will be created in a &lt;i&gt;De
             </child>
           </widget>
           <packing>
-            <property name="position">7</property>
+            <property name="position">8</property>
           </packing>
         </child>
         <child>
@@ -1641,7 +1805,7 @@ If the specified directory is not empty, images will be created in a &lt;i&gt;De
           </widget>
           <packing>
             <property name="type">tab</property>
-            <property name="position">7</property>
+            <property name="position">8</property>
             <property name="tab_fill">False</property>
           </packing>
         </child>
@@ -1675,7 +1839,7 @@ Press &lt;i&gt;Apply&lt;/i&gt; to begin the build process.</property>
             </child>
           </widget>
           <packing>
-            <property name="position">8</property>
+            <property name="position">9</property>
           </packing>
         </child>
         <child>
@@ -1687,7 +1851,7 @@ Press &lt;i&gt;Apply&lt;/i&gt; to begin the build process.</property>
           </widget>
           <packing>
             <property name="type">tab</property>
-            <property name="position">8</property>
+            <property name="position">9</property>
             <property name="tab_fill">False</property>
           </packing>
         </child>
diff --git a/po/live-magic.pot b/po/live-magic.pot
index e0a88a8..029bb32 100644
--- a/po/live-magic.pot
+++ b/po/live-magic.pot
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: live-magic\n"
 "Report-Msgid-Bugs-To: chris at chris-lamb.co.uk\n"
-"POT-Creation-Date: 2008-08-09 06:24+0100\n"
+"POT-Creation-Date: 2008-08-09 08:53+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -15,23 +15,23 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: LiveMagic/views/wizard.py:29 LiveMagic/views/wizard.py:172
+#: LiveMagic/views/wizard.py:31 LiveMagic/views/wizard.py:210
 msgid "Debian Live Magic"
 msgstr ""
 
-#: LiveMagic/views/wizard.py:38
+#: LiveMagic/views/wizard.py:40
 msgid "About"
 msgstr ""
 
-#: LiveMagic/views/wizard.py:158
+#: LiveMagic/views/wizard.py:196
 msgid "Are you sure you wish to cancel?"
 msgstr ""
 
-#: LiveMagic/views/wizard.py:173
+#: LiveMagic/views/wizard.py:211
 msgid "GUI tool to build Debian Live systems."
 msgstr ""
 
-#: LiveMagic/views/wizard.py:177
+#: LiveMagic/views/wizard.py:215
 msgid "Debian Live homepage"
 msgstr ""
 
@@ -105,8 +105,8 @@ msgid ""
 "<b>Welcome to Debian Live Magic!</b>\n"
 "\n"
 "A <i>live</i> system is an operating system that does not require\n"
-"a classical installer to use it. It can boot from various media,\n"
-"including CDs, DVDs, USB sticks, or via netboot. \n"
+"a classical installer to use it. It can boot from various types of\n"
+"media, including CDs, DVDs, USB sticks, or via netboot. \n"
 "\n"
 "The following screens will lead you through the process\n"
 "of building your own Debian Live system."
@@ -116,130 +116,130 @@ msgstr ""
 msgid "Welcome to Debian Live Magic!"
 msgstr ""
 
-#: misc/live-magic.glade:258
-msgid "<b>What type of image would you like?</b>"
+#: misc/live-magic.glade:248
+msgid "<b>What type of image would you like to build?</b>"
 msgstr ""
 
-#: misc/live-magic.glade:360
+#: misc/live-magic.glade:302
+msgid "Standard Debian GNU/Linux image"
+msgstr ""
+
+#: misc/live-magic.glade:348
 msgid "GNOME desktop environment"
 msgstr ""
 
-#: misc/live-magic.glade:400
+#: misc/live-magic.glade:390
 msgid "KDE desktop environment"
 msgstr ""
 
-#: misc/live-magic.glade:442
+#: misc/live-magic.glade:432
 msgid "Xfce desktop environment"
 msgstr ""
 
-#: misc/live-magic.glade:484
-msgid "Standard Debian GNU/Linux image"
-msgstr ""
-
-#: misc/live-magic.glade:522
+#: misc/live-magic.glade:470
 msgid "Debian GNU/Linux rescue image"
 msgstr ""
 
-#: misc/live-magic.glade:560
+#: misc/live-magic.glade:566
 msgid "Choose image type"
 msgstr ""
 
-#: misc/live-magic.glade:597
+#: misc/live-magic.glade:592
 msgid ""
 "<b>What distribution of Debian would you like to build?</b>\n"
 "\n"
 "If unsure, select \"<i>Testing (lenny)</i>\"."
 msgstr ""
 
-#: misc/live-magic.glade:625
-msgid "Stable (etch) - well-tested and rarely changes."
+#: misc/live-magic.glade:666
+msgid "Unstable (sid) - untested and frequently changing"
 msgstr ""
 
-#: misc/live-magic.glade:643
+#: misc/live-magic.glade:686
 msgid ""
 "Testing (lenny) - receives new versions from unstable if they are not too "
 "buggy."
 msgstr ""
 
-#: misc/live-magic.glade:664
-msgid "Unstable (sid) - untested and frequently changing"
+#: misc/live-magic.glade:707
+msgid "Stable (etch) - well-tested and rarely changes."
 msgstr ""
 
-#: misc/live-magic.glade:734
+#: misc/live-magic.glade:740
 msgid "Select distribution"
 msgstr ""
 
-#: misc/live-magic.glade:760
+#: misc/live-magic.glade:777
 msgid "<b>What media type would you like to target?</b>"
 msgstr ""
 
-#: misc/live-magic.glade:851
-msgid "ISO image for a CD or DVD"
+#: misc/live-magic.glade:817
+msgid "Server path:"
 msgstr ""
 
-#: misc/live-magic.glade:892
-msgid "USB / HDD image"
+#: misc/live-magic.glade:829
+msgid "Server address:"
 msgstr ""
 
-#: misc/live-magic.glade:936
-msgid "Network boot image"
+#: misc/live-magic.glade:840
+msgid "Server type:"
 msgstr ""
 
-#: misc/live-magic.glade:998
-msgid "Server type:"
+#: misc/live-magic.glade:921
+msgid "Network boot image"
 msgstr ""
 
-#: misc/live-magic.glade:1008
-msgid "Server address:"
+#: misc/live-magic.glade:964
+msgid "USB / HDD image"
 msgstr ""
 
-#: misc/live-magic.glade:1019
-msgid "Server path:"
+#: misc/live-magic.glade:1006
+msgid "ISO image for a CD or DVD"
 msgstr ""
 
-#: misc/live-magic.glade:1071
+#: misc/live-magic.glade:1077
 msgid "Select media type"
 msgstr ""
 
-#: misc/live-magic.glade:1108
+#: misc/live-magic.glade:1103
 msgid ""
-"<b>Please choose a local mirror.</b>\n"
+"<b>Please choose your local mirror:</b>\n"
 "\n"
 "To select a mirror that is not on the list, simply enter it below."
 msgstr ""
 
-#: misc/live-magic.glade:1233
+#: misc/live-magic.glade:1239
 msgid "Choose mirror"
 msgstr ""
 
-#: misc/live-magic.glade:1270
+#: misc/live-magic.glade:1265
 msgid ""
 "<b>What type of machine is your Debian Live system for?</b>\n"
 "\n"
 "If you are unsure, select \"<i>i386</i>\"."
 msgstr ""
 
-#: misc/live-magic.glade:1321
-msgid ""
-"amd64\n"
-"Most new computers with e.g. AMD Opteron, Turion 64, Athlon 64, or\n"
-"Intel Core2, Pentium 4xx, Pentium D CPUs."
-msgstr ""
-
-#: misc/live-magic.glade:1344
+#: misc/live-magic.glade:1304
 msgid ""
 "i386\n"
 "Computers with e.g. AMD Sempron or Intel Celeron, almost all\n"
 "desktop computers dating 2004 or earlier."
 msgstr ""
 
-#: misc/live-magic.glade:1380
+#: misc/live-magic.glade:1324
+msgid ""
+"amd64\n"
+"Most new computers with e.g. AMD Opteron, Turion 64, Athlon 64, or\n"
+"Intel Core2, Pentium 4xx, Pentium D CPUs."
+msgstr ""
+
+#: misc/live-magic.glade:1386
 msgid "Select architecture"
 msgstr ""
 
-#: misc/live-magic.glade:1417
+#: misc/live-magic.glade:1412
 msgid ""
-"<b>Select Debian Installer integration</b>\n"
+"<b>Select Debian Installer integration:</b>\n"
 "\n"
 "Selecting \"<i>yes</i>\" below adds additional boot options that launch the "
 "Debian Installer, the\n"
@@ -248,19 +248,40 @@ msgid ""
 "If unsure, select \"<i>no</i>\"."
 msgstr ""
 
-#: misc/live-magic.glade:1448
-msgid "No, do not integrate the Debian Installer."
+#: misc/live-magic.glade:1465
+msgid "Yes, integrate the Debian Installer."
 msgstr ""
 
-#: misc/live-magic.glade:1481
-msgid "Yes, integrate the Debian Installer."
+#: misc/live-magic.glade:1495
+msgid "No, do not integrate the Debian Installer."
 msgstr ""
 
-#: misc/live-magic.glade:1525
+#: misc/live-magic.glade:1531
 msgid "Select Debian Installer integration"
 msgstr ""
 
-#: misc/live-magic.glade:1551
+#: misc/live-magic.glade:1557
+msgid ""
+"<b>Select locale and keyboard layout:</b>\n"
+"\n"
+"A locale is an identifier that defines your language, country and related "
+"formatting\n"
+"settings. If unsure, please use the defaults."
+msgstr ""
+
+#: misc/live-magic.glade:1632
+msgid "Keyboard layout:"
+msgstr ""
+
+#: misc/live-magic.glade:1656
+msgid "Locale:"
+msgstr ""
+
+#: misc/live-magic.glade:1689
+msgid "Select locale and keyboard layout"
+msgstr ""
+
+#: misc/live-magic.glade:1726
 msgid ""
 "<b>Please choose a build folder:</b>\n"
 "\n"
@@ -268,17 +289,17 @@ msgid ""
 "<i>DebianLive/</i> subfolder."
 msgstr ""
 
-#: misc/live-magic.glade:1591 misc/live-magic.glade:1640
+#: misc/live-magic.glade:1777 misc/live-magic.glade:1804
 msgid "Select build folder"
 msgstr ""
 
-#: misc/live-magic.glade:1657
+#: misc/live-magic.glade:1821
 msgid ""
 "<b>Your Debian Live image is ready to build!</b>\n"
 "\n"
 "Press <i>Apply</i> to begin the build process."
 msgstr ""
 
-#: misc/live-magic.glade:1685
+#: misc/live-magic.glade:1849
 msgid "Ready to build!"
 msgstr ""
diff --git a/setup.py b/setup.py
index 498e5ad..6123208 100755
--- a/setup.py
+++ b/setup.py
@@ -67,6 +67,7 @@ setup(
             'misc/gnome-logo-icon-transparent.png',
             'misc/kde.png',
             'misc/xfce.png',
+            'misc/keyboard-layouts.txt',
             ]),
         ('share/applications', [
             'misc/live-magic.desktop'

-- 
GUI front-end for Debian Live.



More information about the debian-live-changes mailing list