~cseslam/tahrir/trunk

« back to all changes in this revision

Viewing changes to tahrir/document.py

  • Committer: Eslam Mostafa
  • Date: 2012-09-20 03:01:13 UTC
  • Revision ID: cseslam@gmail.com-20120920030113-lhy117if96dj611f
erase old tahrir

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from gi.repository import Gtk, GtkSource
2
 
 
3
 
class Document(Gtk.ScrolledWindow):
4
 
    def __init__(self, window, filename):
5
 
        Gtk.ScrolledWindow.__init__(self)
6
 
        self.window = window
7
 
        self.filename = filename
8
 
        self.box = box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
9
 
        self.textview = textview = GtkSource.View()
10
 
        box.pack_start(textview, True, True, 0)
11
 
        self.add_with_viewport(box)
12
 
        self.buffer = buffer = GtkSource.Buffer()
13
 
        textview.set_buffer(buffer)
14
 
        buffer.set_highlight_syntax(True)
15
 
        #Settings
16
 
        textview.set_tab_width(window.SETTINGS.get_int('tab-width'))
17
 
        textview.set_highlight_current_line(window.SETTINGS.get_boolean('highlight-current-line'))
18
 
        textview.set_show_line_numbers(window.SETTINGS.get_boolean('show-line-numbers'))
19
 
        textview.set_auto_indent(window.SETTINGS.get_boolean('auto-indent'))
20
 
        textview.set_show_right_margin(window.SETTINGS.get_boolean('show-right-margin'))
21
 
        textview.set_right_margin_position(window.SETTINGS.get_int('right-margin-position'))
22
 
        #
23
 
        textview.set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
24
 
        self.lm = language_manager = GtkSource.LanguageManager()
25
 
        if filename != None:            
26
 
            self.detect_lang()
27
 
            content = self.get_file_content(filename)
28
 
        else:
29
 
            content = ''
30
 
        buffer.set_text(content)      
31
 
        self.buffer.connect('modified-changed', self._on_changed_buffer)
32
 
        self.buffer.set_modified(False)
33
 
    
34
 
    def set_filename(self, filename):
35
 
        self.filename = filename
36
 
          
37
 
    def get_file_content(self, filename):
38
 
        f = open(filename, 'r')
39
 
        content = f.read()
40
 
        f.close()
41
 
        return content
42
 
        
43
 
    def request_save(self):
44
 
        if self.filename != None:
45
 
            f = open(self.filename, 'w')
46
 
            content = self.buffer.get_text(self.buffer.get_start_iter(), self.buffer.get_end_iter(), -1)
47
 
            f.write(content)
48
 
            f.close()
49
 
            return True
50
 
        else:          
51
 
            return False
52
 
            
53
 
    def detect_lang(self):
54
 
        lang = self.lm.guess_language(self.filename, None)
55
 
        self.buffer.set_language(lang)
56
 
        
57
 
    def undo(self):
58
 
        self.buffer.undo()
59
 
    
60
 
    def redo(self):
61
 
        self.buffer.redo()
62
 
        
63
 
    def _on_changed_buffer(self, data):
64
 
        m = self.buffer.get_modified()
65
 
        if  m == True:
66
 
            self.window.toolbar.save.show()
67
 
        else:
68
 
            self.window.toolbar.save.hide()
69
 
        
70