~cseslam/tahrir/trunk

« back to all changes in this revision

Viewing changes to tahrir/widgets/dialogs/settings_manager.py

  • Committer: Eslam Mostafa
  • Date: 2012-07-27 00:18:47 UTC
  • Revision ID: cseslam@gmail.om-20120727001847-v21et30u3fkims8d
fix setup.py

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from gi.repository import Gtk, Gio
2
 
 
3
 
class SettingsManager(Gtk.Dialog):
4
 
        def __init__(self, handler):
5
 
                super(SettingsManager, self).__init__()
6
 
                self.handler = handler
7
 
                self.SETTINGS = Gio.Settings.new('apps.tahrir')
8
 
                self.set_title('Tahrir - Settings Manager')
9
 
                #self.SETTINGS.connect('changed::show-line-numbers', self.ChangeSLN)
10
 
                #self.SETTINGS.connect('changed::highlight-current-line', self.ChangeHCL)
11
 
                self.set_default_size(400,250)
12
 
                content_area = self.get_content_area()
13
 
                notebook = Gtk.Notebook()
14
 
                label1, child1 = self.SetViewPage()
15
 
                label2, child2 = self.SetEditorPage()
16
 
                label3, child3 = self.SetFontPage()
17
 
                notebook.append_page(child1, label1)
18
 
                notebook.append_page(child2, label2)
19
 
                notebook.append_page(child3, label3)
20
 
                notebook.show_all()
21
 
                content_area.pack_start(notebook, True, True, 5)
22
 
                self.show_all()
23
 
                
24
 
        def SetViewPage(self):
25
 
                label = Gtk.Label('View')
26
 
                child = Gtk.Grid()
27
 
                #Show Line Numbers
28
 
                sln = Gtk.CheckButton('Show Line Numbers')
29
 
                sln.set_active(self.SETTINGS.get_boolean('show-line-numbers'))
30
 
                sln.connect('clicked', self.OnClickSLN)
31
 
                child.attach(sln, 0, 0, 1, 1)
32
 
                #Highlight Current Line
33
 
                hcl = Gtk.CheckButton('Highlight Current Line')
34
 
                hcl.set_active(self.SETTINGS.get_boolean('highlight-current-line'))
35
 
                hcl.connect('clicked', self.OnClickHCL)
36
 
                child.attach(hcl, 0, 1, 1, 1)
37
 
                #Auto Indentation
38
 
                ai = Gtk.CheckButton('Enable Auto Indentation')
39
 
                ai.set_active(self.SETTINGS.get_boolean('auto-indent'))
40
 
                child.attach(ai, 0, 2, 1, 1)
41
 
                #ai.connect('clicked', self.OnClickAI)
42
 
                #Right Margin
43
 
                rm = Gtk.CheckButton('Display right margin at column: ')
44
 
                rm.set_active(self.SETTINGS.get_boolean('show-right-margin'))
45
 
                rm_spin = Gtk.SpinButton()
46
 
                rm_value = self.SETTINGS.get_int('right-margin-position')
47
 
                rm_spin.set_increments(1, 50)
48
 
                rm_spin.set_range(1, 1000)
49
 
                rm_spin.set_value(rm_value)
50
 
                child.attach(rm , 0, 3, 1, 1)
51
 
                child.attach(rm_spin, 1, 3, 1, 1)
52
 
                rm.connect('clicked', self.OnClickRM)
53
 
                rm_spin.connect('value-changed', self.OnChangeRM)
54
 
                return label, child
55
 
                
56
 
        def SetEditorPage(self):
57
 
                label = Gtk.Label('Editor')
58
 
                grid = Gtk.Grid()
59
 
                #Tab Width
60
 
                tw_label = Gtk.Label('Tab Width')
61
 
                tw_label.set_justify(Gtk.Justification.LEFT)
62
 
                tw_entry = Gtk.SpinButton()
63
 
                tw_entry.set_range(1,24)
64
 
                tw_entry.set_increments(1,3)
65
 
                tw_value = self.SETTINGS.get_int('tab-width')
66
 
                tw_entry.set_value(tw_value)
67
 
                tw_entry.connect('value-changed', self.OnChangeTabWidth)
68
 
                grid.attach(tw_label, 0, 2, 1, 1)
69
 
                grid.attach(tw_entry, 1, 2, 1, 1)
70
 
                #Auto Save
71
 
                backup = Gtk.CheckButton('Create a backup of files before saving.')
72
 
                auto_save = Gtk.CheckButton('Autosave files every ')
73
 
                time_spin = Gtk.SpinButton()
74
 
                time_spin.set_range(1, 100)
75
 
                time_spin.set_increments(1, 5)
76
 
                time_spin.set_value(10)
77
 
                minutes_label = Gtk.Label(' minutes.')
78
 
                grid.attach(backup, 0, 3, 3, 1)
79
 
                grid.attach(auto_save, 0, 4, 2, 1)
80
 
                grid.attach(time_spin, 2, 4, 1, 1)
81
 
                grid.attach(minutes_label, 3, 4, 1, 1)
82
 
                return label, grid
83
 
        
84
 
        def SetFontPage(self):
85
 
                label = Gtk.Label('Font')
86
 
                grid = Gtk.Grid()
87
 
                #grid.set_row_spacing(10)
88
 
                grid.set_column_spacing(30)
89
 
                #grid.set_column_homogeneous(True)
90
 
                font_label = Gtk.Label('Editor Font:')
91
 
                font_label.set_justify(Gtk.Justification.LEFT)
92
 
                spacer = Gtk.Label(' ')
93
 
                font_button = Gtk.FontButton()
94
 
                font_button.set_size_request(160, 30)
95
 
                grid.attach(font_label, 0, 0, 1, 1)
96
 
                grid.attach(font_button, 2, 0, 1, 1)
97
 
                return label, grid
98
 
                
99
 
        def OnClickSLN(self, sln):
100
 
                self.SETTINGS.set_boolean('show-line-numbers', sln.get_active())
101
 
                if self.handler.notebook.get_n_pages() != 0:
102
 
                        for doc in self.handler.notebook.GetOpenedDocuments():
103
 
                                doc.set_show_line_numbers(self.SETTINGS.get_boolean('show-line-numbers'))
104
 
 
105
 
        def OnClickHCL(self, hcl):
106
 
                self.SETTINGS.set_boolean('highlight-current-line', hcl.get_active())   
107
 
                if self.handler.notebook.get_n_pages() != 0:
108
 
                        for doc in self.handler.notebook.GetOpenedDocuments():
109
 
                                doc.set_highlight_current_line(self.SETTINGS.get_boolean('highlight-current-line'))
110
 
 
111
 
        def OnChangeTabWidth(self, tw_entry):
112
 
                self.SETTINGS.set_int('tab-width', tw_entry.get_value_as_int())
113
 
                if self.handler.notebook.get_n_pages() != 0:
114
 
                        for doc in self.handler.notebook.GetOpenedDocuments():
115
 
                                doc.set_tab_width(tw_entry.get_value_as_int())
116
 
                                
117
 
        def OnClickAI(self, ai):
118
 
                self.SETTINGS.set_boolean('auto-indent', ai.get_active())
119
 
                if self.handler.notebook.get_n_pages() != 0:
120
 
                        for doc in self.handler.notebook.GetOpenedDocuments():
121
 
                                doc.set_auto_indent(ai.get_active())
122
 
                                
123
 
        def OnClickRM(self, rm):
124
 
                self.SETTINGS.set_boolean('show-right-margin', rm.get_active())
125
 
                if self.handler.notebook.get_n_pages() != 0:
126
 
                        for doc in self.handler.notebook.GetOpenedDocuments():
127
 
                                doc.set_show_right_margin(rm.get_active())
128
 
        
129
 
        def OnChangeRM(self, rm_spin):
130
 
                self.SETTINGS.set_int('right-margin-position', rm_spin.get_value_as_int())
131
 
                if self.handler.notebook.get_n_pages() != 0:
132
 
                        for doc in self.handler.notebook.GetOpenedDocuments():
133
 
                                doc.set_right_margin_position(rm_spin.get_value_as_int())