#!/usr/bin/env python # -*- coding: utf-8 -*- # Depends: python-gtk2 import sys try: import gtk except: print "Support PyGTK non disponible. Installer le paquet 'python-gtk2'." sys.exit(1) TITLE = u"AuF — Envoi d'un rapport de bogue" EMAIL_LABEL = u"Entrez votre adresse électronique : " TEXT_LABEL = u"Décrivez votre problème ci-dessous :" HR = "-" * 78 REPPORT = "\n".join([HR, "Rapport de bogue de %(email)s :", HR, "%(text)s", HR]) def bugreport_print(email, text): print REPPORT % {'email': email, 'text': text} def bugreport_http(email, text): # on imagine ici une procédure d'envoi via HTTP pass def cancel_clicked(btn): gtk.main_quit() def ok_clicked(btn, email, text): email = email.get_text() start, end = text.get_buffer().get_bounds() text = start.get_text(end) bugreport_print(email, text) bugreport_http(email, text) gtk.main_quit() def run_gui(): email_label = gtk.Label(EMAIL_LABEL) email = gtk.Entry() email_hbox = gtk.HBox() email_hbox.pack_start(email_label, False) email_hbox.pack_start(email) ruler = gtk.Ruler() ruler.set_size_request(0, 1) text_label = gtk.Label(TEXT_LABEL) text = gtk.TextView() scroller = gtk.ScrolledWindow() scroller.add(text) cancel = gtk.Button(stock=gtk.STOCK_CANCEL) cancel.connect("clicked", cancel_clicked) ok = gtk.Button(stock=gtk.STOCK_OK) ok.connect("clicked", ok_clicked, email, text) buttons_hbox = gtk.HBox() buttons_hbox.pack_start(cancel) buttons_hbox.pack_start(ok) vbox = gtk.VBox() vbox.pack_start(email_hbox, False) vbox.pack_start(ruler, False) vbox.pack_start(text_label, False) vbox.pack_start(scroller) vbox.pack_start(buttons_hbox, False) window = gtk.Window() window.set_title(TITLE) window.resize(500, 400) window.add(vbox) window.show_all() gtk.main() if __name__ == '__main__': run_gui() sys.exit(0)