##// 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 28 self.filter_cmd = wx.CheckBox(self, -1, "!: Sys commands")
29 29 self.filter_magic = wx.CheckBox(self, -1, "%: Magic keys")
30 30
31 self.filter_empty.SetValue(flt_empty)
32 self.filter_doc.SetValue(flt_doc)
33 self.filter_cmd.SetValue(flt_cmd)
34 self.filter_magic.SetValue(flt_magic)
31 self.options={'filter_empty':{'value':'True',
32 'checkbox':self.filter_empty,'True':True,'False':False,
33 'setfunc':lambda x:None},
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 56 sizer = wx.BoxSizer(wx.VERTICAL)
37 57
@@ -73,6 +93,50 b' class IPythonHistoryPanel(wx.Panel):'
73 93 if add:
74 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')
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
76 140
77 141 #----------------------------------------------------------------------
78 142 # Font definition for Styled Text Control
@@ -1,2 +1,6 b''
1 1 completion=IPYTHON
2 2 background_color=BLACK
3 filter_empty=True
4 filter_magic=True
5 filter_doc=True
6 filter_cmd=True
@@ -34,16 +34,17 b' class MyFrame(wx.Frame):'
34 34 #create differents panels and make them persistant
35 35 self.history_panel = IPythonHistoryPanel(self)
36 36
37 self.ipython_panel = IPShellWidget(self,background_color = "BLACK")
37 self.history_panel.setOptionTrackerHook(self.optionSave)
38 38
39 self.ipython_panel = IPShellWidget(self,background_color = "BLACK")
39 40 #self.ipython_panel = IPShellWidget(self,background_color = "WHITE")
40 41
41 42 self.ipython_panel.setHistoryTrackerHook(self.history_panel.write)
42 43 self.ipython_panel.setStatusTrackerHook(self.updateStatus)
43 44 self.ipython_panel.setAskExitHandler(self.OnExitDlg)
44 45 self.ipython_panel.setOptionTrackerHook(self.optionSave)
45 self.optionLoad()
46 46
47 self.optionLoad()
47 48
48 49 self.statusbar = self.createStatus()
49 50 self.createMenu()
@@ -84,9 +85,16 b' class MyFrame(wx.Frame):'
84 85
85 86 def optionSave(self, name, value):
86 87 opt = open('options.conf','w')
87 options = self.ipython_panel.getOptions()
88 for key in options.keys():
89 opt.write(key + '=' + options[key]['value']+'\n')
88
89 try:
90 options_ipython_panel = self.ipython_panel.getOptions()
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:
90 98 opt.close()
91 99
92 100 def optionLoad(self):
@@ -94,13 +102,20 b' class MyFrame(wx.Frame):'
94 102 lines = opt.readlines()
95 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 108 for line in lines:
100 109 key = line.split('=')[0]
101 110 value = line.split('=')[1].replace('\n','').replace('\r','')
102 options[key]['value'] = value
103 self.ipython_panel.reloadOptions(options)
111 if key in options_ipython_panel.keys():
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 120 def createMenu(self):
106 121 """local method used to create one menu bar"""
General Comments 0
You need to be logged in to leave comments. Login now