#!/usr/bin/python
# -*- encoding: utf-8 -*-

import gtk
import gtksourceview2
import pango

# TODO: Documentation

class TexView(gtksourceview2.View):

    def __init__(self):
        super(TexView, self).__init__()

        self.buffer = TexBuffer()
        self.set_buffer(self.buffer)
        self.clipboard = gtk.clipboard_get()
        # TODO: these are tmp values
        self.set_show_line_numbers(True)
        self.set_show_line_marks(True)
        self.set_auto_indent(True)
        self.set_show_right_margin(True)
        # TODO: use "/desktop/gnome/interface/monospace_font_name"
        self.modify_font(pango.FontDescription("monospace 11"))
        #

    def undo(self):
        if self.buffer.can_undo():
            self.buffer.undo()

    def redo(self):
        if self.buffer.can_redo():
            self.buffer.redo()

    def cut(self):
        self.buffer.cut_clipboard(self.clipboard, self.get_editable())

    def copy(self):
        self.buffer.copy_clipboard(self.clipboard)

    def paste(self):
        self.buffer.paste_clipboard(self.clipboard, None, self.get_editable())

    def delete(self):
        self.buffer.delete_selection(False, True)

    def select_all(self):
        self.buffer.select_range(self.buffer.get_start_iter(),
                                 self.buffer.get_end_iter())

    def deselect_all(self):
        self.buffer.select_range(self.buffer.get_start_iter(),
                                 self.buffer.get_start_iter())

class TexBuffer(gtksourceview2.Buffer):

    def __init__(self):
        super(TexBuffer, self).__init__()
        self.fontmanager = gtksourceview2.LanguageManager()
        self.set_language(self.fontmanager.get_language("latex"))

        # TODO: get the style from the prefs
        self.stylemanager = gtksourceview2.StyleSchemeManager()
        #self.set_style_scheme(self.stylemanager.get_scheme('twilight'))

        self.set_highlight_matching_brackets(True)
        self.set_highlight_syntax(True)