diff -u a/opensubtitles.py b/opensubtitles.py
--- a/opensubtitles.py	2010-01-06 00:57:36.000000000 +0100
+++ b/opensubtitles.py	2010-01-06 01:07:51.000000000 +0100
@@ -342,6 +342,7 @@
         self.liststore = builder.get_object('subtitle_model')
         self.dialog =    builder.get_object('subtitles_dialog')
 	self.find_button = builder.get_object('find_button')
+	self.save_button = builder.get_object('save_button')
 	self.apply_button = builder.get_object('apply_button')
 	self.close_button = builder.get_object('close_button')
 
@@ -380,8 +381,10 @@
         column.set_resizable(False)
         self.treeview.append_column(column)
 
+	self.save_button.set_sensitive(False)
 	self.apply_button.set_sensitive(False)
 
+        self.save_button.connect('clicked', self.on_save_clicked)
         self.apply_button.connect('clicked', self.on_apply_clicked)
         self.find_button.connect('clicked', self.on_find_clicked)
         self.close_button.connect('clicked', self.on_close_clicked)
@@ -467,6 +470,7 @@
         self.liststore.clear()
 	self.treeview.set_headers_visible(False)
         self.model.results = []
+        self.save_button.set_sensitive(False)
         self.apply_button.set_sensitive(False)
 	self.find_button.set_sensitive(False)        
 
@@ -486,6 +490,7 @@
             return True
 
         if self.model.results:
+            self.save_button.set_sensitive(True)
             self.apply_button.set_sensitive(True)
             for subData in self.model.results:
 		if not SUBTITLES_EXT.count(subData['SubFormat']):
@@ -493,6 +498,7 @@
                 self.liststore.append([subData['SubFileName'], subData['SubFormat'], subData['SubRating'], subData['IDSubtitleFile'],])
 	        self.treeview.set_headers_visible(True)
         else:
+            self.save_button.set_sensitive(False)
             self.apply_button.set_sensitive(False)
 
         self.model.lock.release()
@@ -575,11 +581,27 @@
 	
 	self.progress.set_fraction(0.0)
 	self.find_button.set_sensitive(True)
+        self.save_button.set_sensitive(False)
         self.apply_button.set_sensitive(False)
         self.treeview.set_sensitive(True)
         return False
 
+    def os_download_and_save(self):
+        chooser = gtk.FileChooserDialog(title = _("Save the subtitles"),
+            action = gtk.FILE_CHOOSER_ACTION_SAVE,
+            buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE,
+              gtk.RESPONSE_OK))
+        if chooser.run() == gtk.RESPONSE_OK:
+            self.save_button.set_sensitive(False)
+            self.apply_button.set_sensitive(False)
+            self.find_button.set_sensitive(False)
+            self.action.set_sensitive(False)
+            self.treeview.set_sensitive(False)
+            self.os_save_selected_subtitle(chooser.get_filename())
+        chooser.destroy()
+
     def os_download_and_apply(self):
+        self.save_button.set_sensitive(False)
         self.apply_button.set_sensitive(False)
         self.find_button.set_sensitive(False)
         self.action.set_sensitive(False)
@@ -590,8 +612,10 @@
 
     def on_treeview__row_change(self, selection):
         if selection.count_selected_rows() > 0:
+            self.save_button.set_sensitive(True)
             self.apply_button.set_sensitive(True)
         else:
+            self.save_button.set_sensitive(False)
             self.apply_button.set_sensitive(False)
 
     def on_treeview__row_activate(self, path, column, data):
@@ -608,6 +632,7 @@
 		self.filename = self.totem.get_current_mrl()
 		self.liststore.clear()
 	        self.treeview.set_headers_visible(False)
+	    	self.save_button.set_sensitive(False)
 	    	self.apply_button.set_sensitive(False)
 		self.results = [] 
 	else:
@@ -615,12 +640,14 @@
 	    if self.dialog and self.dialog.is_active():
                 self.liststore.clear()
 	        self.treeview.set_headers_visible(False)
+	    	self.save_button.set_sensitive(False)
 	    	self.apply_button.set_sensitive(False)
 	    	self.find_button.set_sensitive(False)
 
     def on_totem__file_closed(self, totem):
         self.action.set_sensitive(False)
         if self.dialog:
+	    self.save_button.set_sensitive(False)
 	    self.apply_button.set_sensitive(False)
 	    self.find_button.set_sensitive(False)
 
@@ -634,10 +661,14 @@
         self.dialog.destroy()
         self.dialog = None
 
+    def on_save_clicked(self, data):
+        self.os_download_and_save()
+
     def on_apply_clicked(self, data):
 	self.os_download_and_apply()
 
     def on_find_clicked(self, data):
+        self.save_button.set_sensitive(False)
         self.apply_button.set_sensitive(False)
         self.find_button.set_sensitive(False)
         self.filename = self.totem.get_current_mrl()
diff -u a/opensubtitles.ui b/opensubtitles.ui
--- a/opensubtitles.ui	2010-01-06 00:57:36.000000000 +0100
+++ b/opensubtitles.ui	2010-01-06 00:23:04.000000000 +0100
@@ -144,17 +144,32 @@
             <property name="spacing">12</property>
             <property name="layout_style">end</property>
             <child>
+              <object class="GtkButton" id="save_button">
+                <property name="label" translatable="yes">_Save and play</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use-underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
               <object class="GtkButton" id="apply_button">
                 <property name="label" translatable="yes">_Play with Subtitle</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
                 <property name="image">image_apply</property>
+                <property name="use-underline">True</property>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">1</property>
+                <property name="position">2</property>
               </packing>
             </child>
             <child>
@@ -168,7 +183,7 @@
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">2</property>
+                <property name="position">3</property>
               </packing>
             </child>
           </object>
