781d74b8782a55b656dc12a8922648da84f1284b
[meabook] / ui / hildon_ui / imports.py
1 """
2 Import dialogs
3 """
4
5 import gtk
6 import hildon
7 import gobject
8 from gettext import gettext as _
9 from meabook.ui.hildon_ui.common import create_button
10
11
12 class ImportDialog:
13     """Import dialog."""
14
15     def __init__(self):
16         dialog = hildon.Dialog()
17         dialog.set_title(_('Import'))
18         selector = hildon.TouchSelector(text=True)
19         self.items_dict = {\
20             _('Import from LDIF'): 'ldif', \
21             _('Import from database'): 'db'}
22         for item in self.items_dict:
23             selector.append_text(item)
24         selector.set_active(0, 0)
25         # create file format button
26         format_button = hildon.PickerButton(gtk.HILDON_SIZE_AUTO | \
27             gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL)
28         format_button.set_alignment(0, 0, 0, 0)
29         format_button.set_title(_("Import type"))
30         format_button.set_selector(selector)
31         # create file chooser button
32         fname_button = create_button(_('File name'), _('Choose file name'))
33         fname_button.connect('clicked', self.choose_file_name_cb)
34
35         import_button = dialog.add_button(_('Import'), gtk.RESPONSE_OK)
36         import_button.set_sensitive(False)
37
38         dialog.vbox.pack_start(format_button)
39         dialog.vbox.pack_start(fname_button)
40         dialog.vbox.show_all()
41
42         # create class attributes
43         self.dialog = dialog
44         self.import_button = import_button
45         self.format_button = format_button
46         self.fname_button = fname_button
47
48     def run(self):
49         response = self.dialog.run()
50         result = None 
51         if response == gtk.RESPONSE_OK:
52             result = (self.items_dict[self.format_button.get_value().\
53                 decode('utf-8')], self.fname_button.get_value())
54         self.dialog.destroy()
55         return result
56
57     def choose_file_name_cb(self, widget):
58         """Shows file chooser dialog."""
59
60         chooser = gobject.new(hildon.FileChooserDialog, \
61             action=gtk.FILE_CHOOSER_ACTION_OPEN)
62         chooser.set_property('show-files', True)
63         chooser.run()
64         path = chooser.get_filename()
65         if path:
66             widget.set_value(path)
67             self.import_button.set_sensitive(True)
68         chooser.destroy()
69