d02a05a9a44aa3d0dac7cda0d4af091e74323bb1
[meabook] / ui / fremantle_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.fremantle_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         # create formats lits
19         selector = hildon.TouchSelector(text=True)
20         items_dict = {_('Import from LDIF'): 'ldif', \
21             _('Import from database'): 'db'}
22         model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
23         for name, internal_name in items_dict.items():
24             model.append((name, internal_name))
25         if selector.get_num_columns():
26             selector.remove_column(0)
27         selector.append_text_column(model, True)
28         selector.get_column(0).set_property('text-column', 0)
29         selector.set_active(0, 1)
30         # create file format button
31         format_button = hildon.PickerButton(gtk.HILDON_SIZE_AUTO | \
32             gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL)
33         format_button.set_alignment(0, 0, 0, 0)
34         format_button.set_title(_("Import type"))
35         format_button.set_selector(selector)
36         # create file chooser button
37         fname_button = create_button(_('File name'), _('Choose file name'))
38         fname_button.connect('clicked', self.choose_file_name_cb)
39
40         import_button = dialog.add_button(_('Import'), gtk.RESPONSE_OK)
41         import_button.set_sensitive(False)
42
43         dialog.vbox.pack_start(format_button)
44         dialog.vbox.pack_start(fname_button)
45         dialog.vbox.show_all()
46
47         # create class attributes
48         self.dialog = dialog
49         self.import_button = import_button
50         self.format_button = format_button
51         self.fname_button = fname_button
52         self.selector = selector
53
54     def run(self):
55         response = self.dialog.run()
56         result = None
57         if response == gtk.RESPONSE_OK:
58             file_format = self.selector.get_model(0)[ \
59                 self.selector.get_active(0)][1]
60             result = (file_format,  self.fname_button.get_value())
61         self.dialog.destroy()
62         return result
63
64     def choose_file_name_cb(self, widget):
65         """Shows file chooser dialog."""
66
67         chooser = gobject.new(hildon.FileChooserDialog, \
68             action=gtk.FILE_CHOOSER_ACTION_OPEN)
69         chooser.set_property('show-files', True)
70         chooser.run()
71         path = chooser.get_filename()
72         if path:
73             widget.set_value(path)
74             self.import_button.set_sensitive(True)
75         chooser.destroy()
76