root/nbshell/trunk/ChangeLog

Revision 910, 12.5 kB (checked in by tzanko, 3 years ago)

Added some tools for automatic testing and wrote some more of the tutorial. More info in the ChangeLog

Line 
1 2005-10-02  Tzanko Matev  <tsanko@gmail.com>
2
3         * testtools.py: Added some tools for automatic testing of
4         functions. See the documentation of testtools.reverse_verifier for
5         more info and Sheet.InsertCell for an example of how to use them.
6         Also fixed a small bug in the xxxNotebookViewPlugin.Close()
7         methods of all plugins which was found when I added the
8         verification to InsertCell
9
10         * tutorial.pybk: Changed the tutorial to an ordinary notebook and
11         added some more text. The old tutorial is in old_tutorial.pybk. I
12         did this because the old tutorial was too confusing for novice
13         users (as Robert pointed out).
14
15 2005-09-19  Robert Kern  <robert.kern@gmail.com>
16
17         * IPythonLog.py (IPythonLog.__init__, displayhook, __run): Restored
18         output cache and input history functionality via the In and Out
19         variables.
20
21
22 2005-09-18  Tzanko Matev  <tsanko@gmail.com>
23
24         * Sheet.py (Sheet._update_celllist): Fixed two bugs in the xml to
25         nbshell blocks converter, one of which was ticket #36
26
27        
28 2005-09-17  Tzanko Matev  <tsanko@gmail.com>
29
30         * Sheet.py (Sheet._update_celllist):
31         * PythonPlugin.py (PythonPluginFactory.get_matchers):
32         * FigurePlugin.py (FigurePluginFactory.get_matchers):
33         * textplugin.py (TextPluginFactory.get_matchers):
34         * PlainTextPlugin.py (PlainTextPluginFactory.get_matchers):
35         Rewrote the algorithm for converting a ElementTree structure to a
36         list of nbshell blocks. Now each plugin must give a method which
37         decides if a given element must be handled by that plugin. As a
38         result this part of the sheet is now independant of the specific
39         plugins (except for the raw xml plugin). Also adding complex tests
40         for parts of the xml tree is much easier than before. The text
41         plugin now matches only <para> elements with no subelements which
42         fixes ticket #34
43
44         * ipnNotebookWidget.py (CellCtrlBase.OnKeyDown): Fixed an
45         indentation bug where the given method was considered a function
46         in another method
47        
48
49 2005-09-13  Tzanko Matev  <tsanko@gmail.com>
50
51         * editwindow.py (EditWindow.__config): Turned Python lexer off. It
52         caused lagging, and was the reason for the performance issues
53         described in ticket #11. This should solve the problem
54
55         * IPythonLog.py (IPythonLog.filename_iter): Changed generation of
56         figure names to avoid 'filename.nbk_1.png' names. This resolves
57         ticket #29.
58
59         * PythonPlugin.py (PythonNotebookViewPlugin):
60         * PythonWidget.py (Shell.OnKeyDown): Added history. The user can
61         access it using Ctrl-Up/Alt-P, Ctrl-Down/Alt-N. This resolves
62         ticket  #12.
63
64         * PythonPlugin.py (PythonNotebookView.Update, PromptLen, CanEdit):
65         Added a variable self.promptlens, which contains the lenghts of
66         the prompts and is generated when Update is called. This slightly
67         optimizes PromptLen and CanEdit. Added other small optimisations
68         to CanEdit. As a result typing should get a bit faster. See ticket
69         #11 for more info.
70
71        
72 2005-09-12  Tzanko Matev  <tsanko@gmail.com>
73
74         * nbdoc/notebook.py (Notebook.__init__): Changed to support
75         multiple logs in a document
76
77         * nbshell/Sheet.py (Sheet.InsertXML):
78         * nbshell/frame.py (ipnFrame.SetUpMenu, ipnFrame.OnInsertXML): Added a way
79         to insert xml editing controls, using the Insert menu. An xml
80         editing control has a red margin.
81
82         * nbshell/frame.py (ipnFrame.SetUpMenu): Changed terminology in menu items
83         and status lins messages, "cell" is replaced with "block"
84
85         * tutorial.pybk: Started making a tutorial. It shows how you can
86         use the __app object in the log namespace to make the notebooks
87         more dynamic.
88
89
90 2005-09-12  Tzanko Matev  <tsanko@gmail.com>
91
92         * Sheet.py (Sheet.__update_celllist): Fixed a bug where a text
93         window would not be created if the list of <para> elements was at
94         the end of the document
95
96         * textplugin.py (TextDocumentPlugin.get_xml_text): Fixed escaping
97         of the test string.
98
99         * PlainTextPlugin.py (PlainTextCtrl.__init__): Changed the colour
100         of the margin to pale red. Windows of this type cannot be created
101         by nbshell interface at the moment, however they will be shown if
102         a tag in the notebook document is unsupported.
103
104 2005-09-12  Tzanko Matev  <tsanko@gmail.com>
105
106         * textplugin.py:
107         * Main.py (App.RegisterPlugins): Added a text plugin which
108         converts plain text to a list of <para> elements in the xml
109         code. It is used instead of the old plaintext plugin, which will
110         soon be renamed. This resolves ticket #9
111
112         * Sheet.py (Sheet.UpdateDoc):
113         * PlainTextPlugin.py (PlainTextDocumentPlugin.get_xml_text):
114         * PythonPlugin.py (PythonDocumentPlugin.get_xml_text):
115         * FigurePlugin.py (FigureDocumentPlugin.get_xml_text):
116         * textplugin.py (TextDocumentPlugin.get_xml_text): Moved the code
117         that generates xml from plugin data to the
118         plugins. Sheet.UpdateDoc does not depend on the specific plugins
119         anymore.
120
121         * Sheet.py (Sheet.__update_celllist): Changed to create instance
122         of the new text plugin when encounters a list of <para> elements
123         in a sheet
124        
125         * Sheet.py (Sheet.InsertText): Changed method to create an
126         instance ot the new text plugin
127        
128 2005-09-11  Tzanko Matev  <tsanko at gmail dot com>
129
130         * nbshell/frame.py (ipnFrame.__init__): Moved printing
131         initialization to ipnFrame.OnPrint to avoid a strange warning
132         message python gave me
133
134         * nbshell/IPythonLog.py (IPythonLog.__init__):
135         * nbshell/Main.py: Moved the code that sets the excepthook to
136         Main.py.
137        
138         * IPython/tzanko/Shell.py (IPShellGUI.runlines): Also fixed
139         runlines to restore genutils.Term when done, because FormattedTB
140         uses it.
141
142         * nbshell/PythonPlugin.py
143         (PythonNotebookViewPlugin.InsertLineBreak): Fixed a bug where an
144         additional newline would be added if the current line was empty.
145
146         * nbshell/PythonPlugin.py (PythonNotebookViewPlugin.Copy): Changed
147         behaviour. Now a codetext object (text of cells without the
148         prompts) is always created and is used when user tries to paste
149         within a cell. This mostly fixes ticket #13 but now there is no
150         direct way to paste a list of cells after the last cell. I wanted
151         to fix this by adding an additional empty line after the last
152         cell, but this introduced more problems than it solved. For the
153         moment, I'll consider the ticket closed.
154                
155         * nbshell/utils.py: Added functions delta_time() and reset_timer()
156         which can be used for very simple profiling. I use them in Main to
157         see how fast nbshell loads.
158
159         * nbshell/Sheet.py:
160         * nbshell/ipnDocument.py: Deleted some unnecessary code and
161         changed Sheet.Clear() a little, which slightly decreased loading
162         time.
163
164         * IPython/tzanko/genutils.py (IOStream.write): Managed to reach
165         code which noone has run before in write(), and found and fixed a
166         small bug there.
167        
168
169 2005-09-10  Robert Kern  <rkern@enthought.com>
170
171         * README:
172         * ez_setup.py:
173         * setup.py: Removed ez_setup stuff.
174
175 2005-09-10  Tzanko Matev  <tsanko at gmail dot com>
176
177         * nbdoc/notebook.py (Notebook.default_sheet): Changed behaviour so
178         it doesn't put the zero cell in the default sheet.
179
180         * nbshell/IPythonLog.py (IPythonLog.__init__): Reverted Fernando's
181         changes about the In[0] cell. We need to allow the user to choose
182         if they need plotting turned on, and which library to use by
183         default, maybe through an additional File->New menu. Also we
184         should store the default settings in a configuration file. But the
185         actual initialization code must be in the notebook.
186
187         * nbshell/PythonPlugin.py (PythonNotebookViewPlugin.Update):
188         Reverted part of Fernando's changes and added a comment why the
189         strange code was needed.
190        
191 2005-09-10  Fernando Perez  <Fernando.Perez@colorado.edu>
192
193         * nbshell/plotting_backends/matplotlib_backend.py
194         (PlotLibraryInterface.grab_png): Added dpi and number options to
195         grab_png and grab_figure.
196
197         * nbshell/PythonPlugin.py (PythonNotebookViewPlugin.Update):
198         Removed code which was causing the spurious newline problem.  I
199         cut out a whole section which seemed a no-op to me.  Tzanko: please
200         double check that I didn't screw up (I'm just starting to learn
201         the code).
202
203 2005-09-09  Fernando Perez  <Fernando.Perez@colorado.edu>
204
205         * nbshell/PythonPlugin.py (PythonNotebookViewPlugin.__init__): Set
206         the in/out prompt templates to an instance variable.  Eventually
207         we'll need to support the dynamic ipython prompts, but only once
208         they've been abstracted out from their current tangled mess.  At
209         least now this gives slightly cleaner code which is consistent
210         with previous (default) ipython.
211
212         * nbshell/IPythonLog.py (IPythonLog.__init__): Added a formatted
213         traceback printer into sys.excepthook for easier debugging.
214         Removed the In[0] cell with the visible mpl hack, now that hack is
215         tucked inside.  We'll need to clean this up later, once we support
216         ipython profiles (matplotlib should NOT be a dependency, in case
217         people want to use this for non-plotting work).
218
219 09.07.2005:
220
221         * Fixed a bug in copy/paste according to ticket #13
222
223         * Deleted help message in the beginning (ticket #16)
224 09.05.2005:
225
226         * Added status bar
227
228         * Fixed a bug in grab_figure which threw an exception when called
229         without an active figure
230
231         * Now stdout and stderr are also wrapped as the output. Before
232         when one of these were too long, the window displaying the block
233         would not change its size properly so scrolling inside a block
234         would occur. As a result parts of the text would be hidden.
235
236         * Fixed a bug that the caret would not show automatically when a
237         document is created or loaded
238
239         * Fixed a bug in scrolling, the current line would be
240         partially hidden if at the bottom at the window
241
242         * Changed genutils.shell in IPython to put the output of a command
243         in sys.stdout and sys.stderr
244        
245 08.30.2005:
246
247         * Added copy/pasting. Currently you can only make selections
248         inside one block.
249
250         * Added cutting and deleting parts of a cell and a list of cells
251         inside a block
252        
253 08.26.2005:
254
255         * Added advanced reexecution of cells. Use the new NBShell->Rerun
256         menu.
257
258 08.25.2005
259         * Added printing support
260
261         * Added support for exporting notebooks using nbdoc
262
263         * Ctrl-Enter now reruns the current cell and all cells after it
264        
265 08.22.2005
266         * Changed NewCell to Cell to match the cleanup in nbdoc --antont
267
268         * Fixed some UI glitches
269
270         * Added a CellCtrlBase class which will be a base class for all
271         controlls used for displaying parts of the notebook
272
273         * Added mouse wheel support
274
275         * Added proper support for deleting characters in a Python code
276         block using the Delete and Backspace keys
277        
278
279 08.18.2005:
280         * Fixed a bug in DeleteCell
281
282         * Changed nbshell to use the NewCell class in nbdoc
283 08.17.2005:
284         * Added tests for deleting and inserting blocks
285
286         * Fixed some bugs
287 08.16.2005:
288         * Added deletion of cells
289
290         * Added some testing framework and one test
291
292         * Added some methods for testing the notebook format
293        
294 08.13.2005:
295         * Changed format of notebook files. Now nbshell supports the
296         docbook format.
297
298         * Refactored methods for inserting cells in the notebook and added
299         UI to use them
300
301 08.10.2005:
302         * Added a type variable in each XXXDocumnetPlugin class the
303         current types are 'python', 'plaintext' and 'figure'
304
305         * Added a property currentcell in the sheet, whichs points to the
306         active cell, and a property position in the python and plaintext
307         plugins which returns the current position in the plugin.
308
309         * Fixed a bug where the last input disappears after a save
310
311         * Changed bahaviour. Now the cell with number 0 contains code
312         which should not be displayed on the sheet. However the
313         default_sheet method in notabene.notebook.Notebook does display
314         this cell on the sheet.
315
316         * Added support for the Matplotlib plotting library. Currently a
317         function grab_figure(caption=None) is exposed in the user
318         namespace which will get the current figure and place it after the
319         input cell where grab_figure() was called. Check figuretest.nbk in
320         the tests dirrectory. The API for adding other plotting libraries is
321         not yet ready.
322        
323 08.07.2005:
324         * Added support for insertion of cells. Now when you are in a text
325         cell and press Ctrl-I a code cell will be inserted at the place of
326         the cursor. When in a code cell, a text cell is inserted
327
328         * Fixed selection in code cells. Now only whole <ipython-cell>
329         elements can be selected.
330
331         * Added last inputs. Now for each log there is a cell with empty
332         input which is displayed in the sheet.This cell always has the
333         largest number in the log. It is added after the nbk file is
334         loaded and removed before it is saved. It is used to append code
335         to the log.
336
337         * Added support for figures in the sheet.
338
339         * Added directory tests for test notebooks
340        
341 08.01.2005:
342         * Changed behaviour to suport multiline inputs. Now when the user
343         presses Enter, we simply insert a new line at the place of the
344         cursor. Input is executed when the user presses Shift-Enter
345
346         * Added support for editing and execution of arbitrary input
347         cells.
348
349 07.31.2005:
350         * Changed PythonPlugin to support the <ipython-cell type='...'>
351         format of elements in <ipython-block>
352
353         * Changed the algorithm by which outputs are displayed after a
354         cell is rerun
355
356        
357        
Note: See TracBrowser for help on using the browser.