# Copyright (C) 2003-2005 Vincent Hanquez <tab AT snarc.org> # Copyright (C) 2003-2014 Yann Leboulanger <asterix AT lagaule.org> # Copyright (C) 2005 Alex Podaras <bigpod AT gmail.com> # Stéphan Kochen <stephan AT kochen.nl> # Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com> # Nikos Kouremenos <kourem AT gmail.com> # Copyright (C) 2006 Junglecow J <junglecow AT gmail.com> # Copyright (C) 2006-2007 Travis Shirk <travis AT pobox.com> # Stefan Bethge <stefan AT lanpartei.de> # Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org> # Copyright (C) 2007 James Newton <redshodan AT gmail.com> # Julien Pivotto <roidelapluie AT gmail.com> # Copyright (C) 2007-2008 Stephan Erb <steve-e AT h3c.de> # Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org> # # This file is part of Gajim. # # Gajim is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published # by the Free Software Foundation; version 3 only. # # Gajim is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Gajim. If not, see <http://www.gnu.org/licenses/>. from gi.repository import Gtk from gi.repository import GObject class FakeDataForm(Gtk.Table): """ Class for forms that are in XML format <entry1>value1</entry1> infos in a table {entry1: value1} """ def __init__(self, infos, selectable=False): GObject.GObject.__init__(self) self.infos = infos self.selectable = selectable self.entries = {} self._draw_table() def _draw_table(self): """ Draw the table """ nbrow = 0 if 'instructions' in self.infos: nbrow = 1 self.resize(rows=nbrow, columns=2) label = Gtk.Label(label=self.infos['instructions']) if self.selectable: label.set_selectable(True) self.attach(label, 0, 2, 0, 1, 0, 0, 0, 0) for name in self.infos.keys(): if name in ('key', 'instructions', 'x', 'registered'): continue if not name: continue nbrow = nbrow + 1 self.resize(rows=nbrow, columns=2) label = Gtk.Label(label=name.capitalize() + ':') self.attach(label, 0, 1, nbrow - 1, nbrow, 0, 0, 0, 0) entry = Gtk.Entry() entry.set_activates_default(True) if self.infos[name]: entry.set_text(self.infos[name]) if name == 'password': entry.set_visibility(False) self.attach(entry, 1, 2, nbrow - 1, nbrow, 0, 0, 0, 0) self.entries[name] = entry if nbrow == 1: entry.grab_focus() def get_infos(self): for name in self.entries: self.infos[name] = self.entries[name].get_text() return self.infos