def on_members_file_set(self,fc):
     filename = fc.get_filename()
     self.members_field_model.clear()
     if not filename:
         return
     self.members_sync = ContactsSync(self.app.accounting,filename)
     for fieldname in self.members_sync.get_headers():
         self.members_field_model.append((fieldname,))
class MembersTab:       

    def init(self,app):
        self.app = app

        builder = gtk.Builder()
        builder.add_from_file(os.path.join(__dir__,'members.glade'))
        builder.connect_signals(self)

        self.tab = builder.get_object('main_tab')

        gff = builder.get_object('csv_filefilter')
        gff.set_name("CiviCRM Export Files (*.csv)")
        gff.add_pattern('*.csv')

        self.members_field_model = builder.get_object('members_field_model')
        self.members_id_combo = builder.get_object('members_id_combo')
        self.members_name_combo = builder.get_object('members_name_combo')
        self.members_accountholder_combo = builder.get_object('members_accountholder_combo')
        self.members_accountnumber_combo = builder.get_object('members_accountnumber_combo')
        self.members_incasso_combo = builder.get_object('members_incasso_combo')

    def get_name(self):
        return "Members"

    def get_component(self):
        return self.tab

    def refresh(self):
        pass

    def on_members_file_set(self,fc):
        filename = fc.get_filename()
        self.members_field_model.clear()
        if not filename:
            return
        self.members_sync = ContactsSync(self.app.accounting,filename)
        for fieldname in self.members_sync.get_headers():
            self.members_field_model.append((fieldname,))

    def on_members_import(self,button):
        self.app.long_task(self._members_import_task)

    def _members_import_task(self):
        if not self.app.accounting:
            showErrorMessage("Select GnuCash file first.")
            return

        if not self.members_sync:
            showErrorMessage("Select CiviCRM export file first.")
            return

        self.members_sync.set_mapping('id', self.members_id_combo.get_active_text())
        self.members_sync.set_mapping('name', self.members_name_combo.get_active_text())
        self.members_sync.set_mapping('accountholder', self.members_accountholder_combo.get_active_text())
        self.members_sync.set_mapping('accountnumber', self.members_accountnumber_combo.get_active_text())
        self.members_sync.set_mapping('allowincasso', self.members_incasso_combo.get_active_text())

        self.members_sync.sync()

        self.app.set_status_text("Contacts synchronized.")