Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 46)
+++ src/mlx/gui/flight.py	(revision 48)
@@ -20,4 +20,5 @@
 
         self._vbox = gtk.VBox()
+        self._vbox.set_homogeneous(False)
         frame.add(self._vbox)
 
@@ -38,17 +39,28 @@
         self._vbox.pack_start(eventBox, False, False, 0)
 
-        alignment = gtk.Alignment(xalign = 0.5, yalign = 0.5,
-                                  xscale = 0, yscale = 0.3)
+        table = gtk.Table(3, 1)
+        table.set_homogeneous(True)
+
+        alignment = gtk.Alignment(xalign = 0.0, yalign = 0.0,
+                                  xscale = 1.0, yscale = 1.0)        
+        alignment.set_padding(padding_top = 16, padding_bottom = 16,
+                              padding_left = 16, padding_right = 16)
+        alignment.add(table)
+        self._vbox.pack_start(alignment, True, True, 0)
+        
+        alignment = gtk.Alignment(xalign = 0.5, yalign = 0.0,
+                                  xscale = 0, yscale = 0.0)
+
         label = gtk.Label(help)
         label.set_justify(gtk.Justification.CENTER if pygobject
                           else gtk.JUSTIFY_CENTER)
         alignment.add(label)
-        self._vbox.pack_start(alignment, True, True, 0)
+        table.attach(alignment, 0, 1, 0, 1)
 
         self._mainAlignment = gtk.Alignment(xalign = 0.5, yalign = 0.5,
-                                            xscale = 0, yscale = 0.0)
-        self._vbox.pack_start(self._mainAlignment, True, True, 0)
-
-        buttonAlignment =  gtk.Alignment(xalign = 1.0, xscale=0.0)
+                                            xscale = 1.0, yscale = 1.0)
+        table.attach(self._mainAlignment, 0, 1, 1, 3)                                    
+                                            
+        buttonAlignment =  gtk.Alignment(xalign = 1.0, xscale=0.0, yscale = 0.0)
         buttonAlignment.set_padding(padding_top = 4, padding_bottom = 10,
                                     padding_left = 16, padding_right = 16)
@@ -72,8 +84,15 @@
         button = gtk.Button(label)
         self._buttonBox.add(button)
+        button.set_use_underline(True)
         if default:
             button.set_can_default(True)
             self._defaultButton = button
         return button
+
+    def activate(self):
+        """Called when this page becomes active.
+
+        This default implementation does nothing."""
+        pass
 
     def grabDefault(self):
@@ -93,8 +112,12 @@
         super(LoginPage, self).__init__(wizard, "Login", help)
 
+        alignment = gtk.Alignment(xalign = 0.5, yalign = 0.5,
+                                  xscale = 0.0, yscale = 0.0)
+        
         table = gtk.Table(2, 3)
         table.set_row_spacings(4)
         table.set_col_spacings(32)
-        self.setMainWidget(table)
+        alignment.add(table)
+        self.setMainWidget(alignment)
 
         labelAlignment = gtk.Alignment(xalign=1.0, xscale=0.0)
@@ -138,5 +161,4 @@
         self._loginButton = self.addButton("_Login", default = True)
         self._loginButton.set_sensitive(False)
-        self._loginButton.set_use_underline(True)
         self._loginButton.connect("clicked", self._loginClicked)
         self._loginButton.set_tooltip_text("Click to log in.")
@@ -180,4 +202,5 @@
                 
                 config.save()
+                self._wizard._loginResult = result
                 self._wizard.nextPage()
             else:
@@ -206,5 +229,62 @@
         """Construct the flight selection page."""
         super(FlightSelectionPage, self).__init__(wizard, "Flight selection",
-                                                  "Hello, te lo!")
+                                                  "Select the flight you want "
+                                                  "to perform.")
+
+
+        self._listStore = gtk.ListStore(str, str, str, str)
+        self._flightList = gtk.TreeView(self._listStore)
+        column = gtk.TreeViewColumn("Flight no.", gtk.CellRendererText(),
+                                    text = 1)
+        column.set_expand(True)
+        self._flightList.append_column(column)
+        column = gtk.TreeViewColumn("Departure time [UTC]", gtk.CellRendererText(),
+                                    text = 0)
+        column.set_expand(True)
+        self._flightList.append_column(column)
+        column = gtk.TreeViewColumn("From", gtk.CellRendererText(),
+                                    text = 2)
+        column.set_expand(True)
+        self._flightList.append_column(column)
+        column = gtk.TreeViewColumn("To", gtk.CellRendererText(),
+                                    text = 3)
+        column.set_expand(True)
+        self._flightList.append_column(column)
+
+        flightSelection = self._flightList.get_selection()
+        flightSelection.connect("changed", self._selectionChanged)
+
+        scrolledWindow = gtk.ScrolledWindow()
+        scrolledWindow.add(self._flightList)
+        scrolledWindow.set_size_request(400, -1)
+        scrolledWindow.set_policy(gtk.PolicyType.AUTOMATIC if pygobject
+                                  else gtk.POLICY_AUTOMATIC,
+                                  gtk.PolicyType.ALWAYS if pygobject
+                                  else gtk.POLICY_ALWAYS)
+
+        alignment = gtk.Alignment(xalign = 0.5, yalign = 0.0, xscale = 0.0, yscale = 1.0)
+        alignment.add(scrolledWindow)
+
+        self.setMainWidget(alignment)
+
+        self._button = self.addButton(gtk.STOCK_GO_FORWARD, default = True)
+        self._button.set_use_stock(True)
+        self._button.set_sensitive(False)
+
+        self._activated = False
+
+    def activate(self):
+        """Fill the flight list."""
+        if not self._activated:
+            for flight in self._wizard.loginResult.flights:
+                self._listStore.append([str(flight.departureTime),
+                                        flight.callsign,
+                                        flight.departureICAO,
+                                        flight.arrivalICAO])
+            self._activated = True
+
+    def _selectionChanged(self, selection):
+        """Called when the selection is changed."""
+        self._button.set_sensitive(selection.count_selected_rows()==1)
 
 #-----------------------------------------------------------------------------
@@ -224,5 +304,12 @@
         self._pages.append(FlightSelectionPage(self))
 
+        self._loginResult = None
+
         self.setCurrentPage(0)
+
+    @property
+    def loginResult(self):
+        """Get the login result."""
+        return self._loginResult
 
     def setCurrentPage(self, index):
@@ -235,4 +322,5 @@
         self._currentPage = index
         self.add(self._pages[index])
+        self._pages[index].activate()
         self.show_all()
 
@@ -240,4 +328,5 @@
         """Go to the next page."""
         self.setCurrentPage(self._currentPage + 1)
+        self.grabDefault()
 
     def grabDefault(self):
