#!/usr/bin/env python # coding=utf8 from gi.repository import Gtk, GLib import requests UI = """ 640 550 True True True True automatic automatic True True classifiers_store 0 Active True 0 0 column True 1 1 True True True True automatic automatic 200 True True False True """ def reset_model(): model = builder.get_object('classifiers_store') model.clear() # load data url = r'http://pypi.python.org/pypi?%3Aaction=list_classifiers' resp = requests.get(url) resp.raise_for_status() for line in resp.text.splitlines(): model.append((False, line.strip())) def on_cell_toggle(renderer, path): model = builder.get_object('classifiers_store') i = model.get_iter(path) # flip column 0, the "active" column model.set_value(i, 0, not model.get_value(i, 0)) # update tree view chunks = ['classifiers=['] i = model.get_iter_first() while i is not None: if model.get_value(i, 0) is True: chunks.append(" '%s'," % model.get_value(i, 1)) i = model.iter_next(i) chunks.append(']') builder.get_object('output').get_buffer().set_text('\n'.join(chunks)) if '__main__' == __name__: builder = Gtk.Builder() builder.add_from_string(UI) # load data reset_model() # set up GUI mw = builder.get_object('main_window') mw.connect('delete-event', lambda a, b: Gtk.main_quit()) builder.get_object('renderer_active').connect('toggled', on_cell_toggle) GLib.set_application_name('PyPI classifiers selector 0.1') mw.show() Gtk.main()