#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Strassenliste.py GUI Edition
# Version 1.0.1 by Benjamin Lebsanft
# Licensed under CC-BY-SA 3.0
#
# Script to create a wiki page for
# http://osm.gt.owl.de/Strassenliste/

import pygtk
pygtk.require('2.0')
import gtk
import sys
import array

fileChooser = gtk.FileChooserButton("Select File")
entry = gtk.Entry()
textview = gtk.TextView()
textbuffer = textview.get_buffer()

def callback(widget):
	if fileChooser.get_filename() != None:
		filename = fileChooser.get_filename()
		relation = entry.get_text()

		output = "`Output <http://osm.gt.owl.de/Strassenliste/output/" + relation + ">`_\n\n"
		list_array = []

		list_file = open(filename, 'r' ).readlines()
		list_array.append(list_file)
		list_array[0].sort()

		output += "Relation: " + relation + "\n\n"
		output += "List: \n\n"

		for i in range(len(list_array[0])):
			output += "* " + list_array[0][i].rstrip() + "\n"

		textbuffer.set_text(output)

def callback2(widget):
	textbuffer.set_text("")

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_title("Strassenlistengenerator")
window.set_border_width(20)
window.set_resizable(True) 
window.set_size_request(400,500)

vbox = gtk.VBox(False, 10)
vbox2 = gtk.VBox(False, 10)
window.add(vbox)
vbox.pack_start(vbox2, True)

window.connect("destroy", lambda wid:gtk.main_quit())
window.connect("delete_event", lambda a1,a2:gtk.main_quit())	
	
entry.set_max_length(100)
entry.set_text("Relation ID")
entry.select_region(0, len(entry.get_text()))
vbox2.pack_start(entry, False)
	
fileChooser.set_current_folder('~')
vbox2.pack_start(fileChooser, False)
filter = gtk.FileFilter()
filter.set_name("Text Files")
filter.add_pattern("*.txt")
fileChooser.add_filter(filter)

sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
textview.set_editable(False)
sw.add(textview)
vbox2.pack_start(sw, True)

hbox = gtk.HBox(False, 10)
vbox2.pack_start(hbox, False)

xalign2 = gtk.Alignment(0)
hbox.pack_start(xalign2, True)   

button = gtk.Button("Generate")
button.connect("clicked", callback) 
button2 = gtk.Button("Clear")
button2.connect("clicked", callback2)  
   
hbox.pack_start(button2, False)
hbox.pack_start(button, False)

window.show_all()
gtk.main()
