##// END OF EJS Templates
[gui/wx] added options save/restore for history widget
ldufrechou -
Show More
@@ -28,10 +28,30 b' class IPythonHistoryPanel(wx.Panel):'
28 self.filter_cmd = wx.CheckBox(self, -1, "!: Sys commands")
28 self.filter_cmd = wx.CheckBox(self, -1, "!: Sys commands")
29 self.filter_magic = wx.CheckBox(self, -1, "%: Magic keys")
29 self.filter_magic = wx.CheckBox(self, -1, "%: Magic keys")
30
30
31 self.filter_empty.SetValue(flt_empty)
31 self.options={'filter_empty':{'value':'True',
32 self.filter_doc.SetValue(flt_doc)
32 'checkbox':self.filter_empty,'True':True,'False':False,
33 self.filter_cmd.SetValue(flt_cmd)
33 'setfunc':lambda x:None},
34 self.filter_magic.SetValue(flt_magic)
34 'filter_doc':{'value':'True',
35 'checkbox':self.filter_doc,'True':True,'False':False,
36 'setfunc':lambda x:None},
37 'filter_cmd':{'value':'True',
38 'checkbox':self.filter_cmd,'True':True,'False':False,
39 'setfunc':lambda x:None},
40 'filter_magic':{'value':'True',
41 'checkbox':self.filter_magic,'True':True,'False':False,
42 'setfunc':lambda x:None},
43 }
44 self.reloadOptions(self.options)
45
46 self.filter_empty.Bind(wx.EVT_CHECKBOX, self.evtCheckEmptyFilter)
47 self.filter_doc.Bind(wx.EVT_CHECKBOX, self.evtCheckDocFilter)
48 self.filter_cmd.Bind(wx.EVT_CHECKBOX, self.evtCheckCmdFilter)
49 self.filter_magic.Bind(wx.EVT_CHECKBOX, self.evtCheckMagicFilter)
50
51 #self.filter_empty.SetValue(flt_empty)
52 #self.filter_doc.SetValue(flt_doc)
53 #self.filter_cmd.SetValue(flt_cmd)
54 #self.filter_magic.SetValue(flt_magic)
35
55
36 sizer = wx.BoxSizer(wx.VERTICAL)
56 sizer = wx.BoxSizer(wx.VERTICAL)
37
57
@@ -73,7 +93,51 b' class IPythonHistoryPanel(wx.Panel):'
73 if add:
93 if add:
74 self.text_ctrl.AppendText(history_line+'\n')
94 self.text_ctrl.AppendText(history_line+'\n')
75
95
96 #------------------------ Option Section -----------------------------------
97 def processOptionCheckedEvt(self, event, name):
98 if event.IsChecked():
99 self.options[name]['value']='True'
100 else:
101 self.options[name]['value']='False'
102 self.updateOptionTracker(name,
103 self.options[name]['value'])
104
105 def evtCheckEmptyFilter(self, event):
106 self.processOptionCheckedEvt(event, 'filter_empty')
107
108 def evtCheckDocFilter(self, event):
109 self.processOptionCheckedEvt(event, 'filter_doc')
110
111 def evtCheckCmdFilter(self, event):
112 self.processOptionCheckedEvt(event, 'filter_cmd')
76
113
114 def evtCheckMagicFilter(self, event):
115 self.processOptionCheckedEvt(event, 'filter_magic')
116
117 def getOptions(self):
118 return self.options
119
120 def reloadOptions(self,options):
121 self.options = options
122 for key in self.options.keys():
123 value = self.options[key]['value']
124 self.options[key]['checkbox'].SetValue(self.options[key][value])
125 self.options[key]['setfunc'](value)
126
127 #------------------------ Hook Section -----------------------------------
128 def updateOptionTracker(self,name,value):
129 '''
130 Default history tracker (does nothing)
131 '''
132 pass
133
134 def setOptionTrackerHook(self,func):
135 '''
136 Define a new history tracker
137 '''
138 self.updateOptionTracker = func
139
140
77 #----------------------------------------------------------------------
141 #----------------------------------------------------------------------
78 # Font definition for Styled Text Control
142 # Font definition for Styled Text Control
79
143
@@ -1,2 +1,6 b''
1 completion=IPYTHON
1 completion=IPYTHON
2 background_color=BLACK
2 background_color=BLACK
3 filter_empty=True
4 filter_magic=True
5 filter_doc=True
6 filter_cmd=True
@@ -33,17 +33,18 b' class MyFrame(wx.Frame):'
33
33
34 #create differents panels and make them persistant
34 #create differents panels and make them persistant
35 self.history_panel = IPythonHistoryPanel(self)
35 self.history_panel = IPythonHistoryPanel(self)
36
37 self.history_panel.setOptionTrackerHook(self.optionSave)
36
38
37 self.ipython_panel = IPShellWidget(self,background_color = "BLACK")
39 self.ipython_panel = IPShellWidget(self,background_color = "BLACK")
38
39 #self.ipython_panel = IPShellWidget(self,background_color = "WHITE")
40 #self.ipython_panel = IPShellWidget(self,background_color = "WHITE")
40
41
41 self.ipython_panel.setHistoryTrackerHook(self.history_panel.write)
42 self.ipython_panel.setHistoryTrackerHook(self.history_panel.write)
42 self.ipython_panel.setStatusTrackerHook(self.updateStatus)
43 self.ipython_panel.setStatusTrackerHook(self.updateStatus)
43 self.ipython_panel.setAskExitHandler(self.OnExitDlg)
44 self.ipython_panel.setAskExitHandler(self.OnExitDlg)
44 self.ipython_panel.setOptionTrackerHook(self.optionSave)
45 self.ipython_panel.setOptionTrackerHook(self.optionSave)
45 self.optionLoad()
46
46
47 self.optionLoad()
47
48
48 self.statusbar = self.createStatus()
49 self.statusbar = self.createStatus()
49 self.createMenu()
50 self.createMenu()
@@ -84,23 +85,37 b' class MyFrame(wx.Frame):'
84
85
85 def optionSave(self, name, value):
86 def optionSave(self, name, value):
86 opt = open('options.conf','w')
87 opt = open('options.conf','w')
87 options = self.ipython_panel.getOptions()
88
88 for key in options.keys():
89 try:
89 opt.write(key + '=' + options[key]['value']+'\n')
90 options_ipython_panel = self.ipython_panel.getOptions()
90 opt.close()
91 options_history_panel = self.history_panel.getOptions()
92
93 for key in options_ipython_panel.keys():
94 opt.write(key + '=' + options_ipython_panel[key]['value']+'\n')
95 for key in options_history_panel.keys():
96 opt.write(key + '=' + options_history_panel[key]['value']+'\n')
97 finally:
98 opt.close()
91
99
92 def optionLoad(self):
100 def optionLoad(self):
93 opt = open('options.conf','r')
101 opt = open('options.conf','r')
94 lines = opt.readlines()
102 lines = opt.readlines()
95 opt.close()
103 opt.close()
96
104
97 options = self.ipython_panel.getOptions()
105 options_ipython_panel = self.ipython_panel.getOptions()
106 options_history_panel = self.history_panel.getOptions()
98
107
99 for line in lines:
108 for line in lines:
100 key = line.split('=')[0]
109 key = line.split('=')[0]
101 value = line.split('=')[1].replace('\n','').replace('\r','')
110 value = line.split('=')[1].replace('\n','').replace('\r','')
102 options[key]['value'] = value
111 if key in options_ipython_panel.keys():
103 self.ipython_panel.reloadOptions(options)
112 options_ipython_panel[key]['value'] = value
113 elif key in options_history_panel.keys():
114 options_history_panel[key]['value'] = value
115 else:
116 print >>sys.__stdout__,"Warning: key ",key,"not found in widget options. Check Options.conf"
117 self.ipython_panel.reloadOptions(options_ipython_panel)
118 self.history_panel.reloadOptions(options_history_panel)
104
119
105 def createMenu(self):
120 def createMenu(self):
106 """local method used to create one menu bar"""
121 """local method used to create one menu bar"""
General Comments 0
You need to be logged in to leave comments. Login now