pypersrc design

©2005  Jim E. Brooks  http://www.jimbrooks.org/hypersrc/

See also pypersrc implementation.


Contents


Implementation

See also pypersrc implementation.

Shall be implemented mostly in Python using (hopefully) the Tkinter GUI toolkit. C++ shall be used for performance and to overcome any Python deficiencies.

Shall be decoupled from the presentation and be GUI-neutral as much as practical. A concern is if Tkinter has deficiencies that necessitate switching to PyGtk. An option may be to execute pypersrc as a UNIX filter and output HTML per a cmd-line arg rather than running in GUI mode.


Basic Features


Advanced Features


hypersrc behavior not to be continued in pypersrc


Improvements and changes relative to hypersrc


Command-line interface

A Tk text widget or text entry will receive commands from the user. The output may contain HTML-like results (clickable tags).

For example, if this command is given...

find tag *Init*

...then all tags that containing Init will be shown in a text widget using Tk underlined hyperlinks (as the main text widget currently does).

Tentative list of commands:

h [help]
b [browse]     <file or dir>
f [find]       <text>
ft [find tag]  <tag>

The cmd-line interface shall have a history buffer. When Pg Up is pressed, the previous page is shown, including the command that was given and its results.


Viewing and projects

Shall maintain different viewing contexts and offer the user to ability to flip back and forth (similar to browsing web pages).

Shall maintain project states which can be saved and reloaded. Shall cope with project source files being changed while the program wasn't running.


Filtering (digest)

Show source file in digested forms inside text widget:


Annotations


Command results history

(2005/01/17)
The prototype originally had a simple flipping between two states of text widget #2 when F12 was pressed. It was replaced by a history list (of the results of commands the user gave) that could be cycled by pressing F11 and F12. The history list was a bad GUI design and using it became confusing. For a time, the history list mixed source files and results which in itself was confusing. When a new set of results was produced, it was appended to the list, but if I cycled towards the middle of the history list, then entered a new command, the new results, since it was appended, was far away from the middle of the history list I was viewing. In short, cycling became too confusing and disorienting.

I decided to discard the mechanism for cylcling thru the history list and replace it by _showing_ the entire history list in text widget #2 in a way that is similar to emacs's *Buffer List*. This causes no confusion. The most recent set of results are shown at the top of the text widget.


Last modified: Sat May 7 22:28:53 EDT 2005