#!/usr/bin/python

import os
import sys

import functions

try:
    import pygtk
    pygtk.require("2.0")
    import gobject
except:
    print("pygtk Not Availible")
    sys.exit(1)
try:
    import gtk
except:
    print("GTK Not Availible")
    sys.exit(1)

class Viewer(object):
    def delete_event(self, widget, event):
        self.window.destroy()

    def __init__(self, parent=None, file_name=None):
        self.parent = parent
        self._ = parent._
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title(self._("viewer"))
        self.window.connect("delete_event", self.delete_event)
        self.window.set_border_width(10)
        self.window.set_transient_for(parent.window)
        self.window.set_modal(True)
        self.window.set_size_request(450, 300)
        vb = gtk.VBox(False, spacing=10)
        self.text_view = gtk.TextView()
        self.text_view.set_wrap_mode(gtk.WRAP_WORD)
        self.text_view.set_editable(False)
        self.text_view.set_cursor_visible(False)
        self.text_view.set_left_margin(20)
        self.text_view.set_right_margin(20)
        self.add_content(file_name)
        functions.make_scrolling(self.text_view, vb)
        hbuttonbox = gtk.HButtonBox()
        button = gtk.Button(None, gtk.STOCK_CLOSE)
        button.connect('clicked', self.delete_event, None)
        hbuttonbox.pack_start(button, False, False)
        vb.pack_start(hbuttonbox, False, False)
        self.window.add(vb)
        self.window.show_all()
        height = min(int(1.03*self.text_view.size_request()[1]), int(0.3 * gtk.gdk.screen_height()))
        self.window.set_size_request(int(1.03*self.text_view.size_request()[0]), height)
        self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS)

    def add_content(self, file_name):
        functions.textview_from_file(file_name, self.text_view)

def main():
    gtk.main()

if __name__ == "__main__":
    Viewer()
    main()
