#!/usr/bin/env python
# This was a tutorial code i got from Pygtk git with a little modifcation..
# It worked so well :) why re-invent the weel?
  
import gtk

class TextViewLoadSave:
    def __init__(self):
        window = gtk.Window()
        window.set_default_size(200, 200)
        
        scrolledwindow = gtk.ScrolledWindow()
        scrolledwindow.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        
        self.textbuffer = gtk.TextBuffer()
        textview = gtk.TextView(self.textbuffer)
        textview.set_wrap_mode(gtk.WRAP_WORD)
        
        button_load = gtk.Button("Open OptimizeN900 Script")
        self.button_save = gtk.Button("Save OptimizeN900 Script")
        self.button_save.set_sensitive(False)

        vbox = gtk.VBox(False, 5)
        hbox = gtk.HBox(False, 5)
        vbox.pack_start(scrolledwindow, True, True, 0)
        vbox.pack_start(hbox, False, False, 0)
        hbox.pack_end(self.button_save, False, False, 0)
        hbox.pack_end(button_load, False, False, 0)
        scrolledwindow.add(textview)
        
        window.connect("destroy", lambda w: gtk.main_quit())
        self.textbuffer.connect("changed", self.edited)
        button_load.connect("clicked", self.load_file)
        self.button_save.connect("clicked", self.save_file)
        
        window.add(vbox)
        window.show_all()

    def edited(self, widget):
        if self.textbuffer.get_modified():
            self.button_save.set_sensitive(True)
        else:
            self.button_save.set_sensitive(False)
    
    def load_file(self, widget):
        file = open("/usr/local/bin/OptimizeN900", "r")
        text = file.read()
        file.close()
        
        self.textbuffer.set_text(text)
    
    def save_file(self, widget):
        start, end = self.textbuffer.get_bounds()
    
        text = self.textbuffer.get_text(start, end, False)
        file = open("/usr/local/bin/OptimizeN900", "w")
        file.write(text)
        file.close()
        
        self.textbuffer.set_modified(False)
        self.button_save.set_sensitive(False)

TextViewLoadSave()
gtk.main()
