Re: Please tell how it was that you got the Leo Aha

2009-09-06 Thread Kent Tenney

My excitement about Leo has only increased since this post:
http://longrun.zwiki.org/LeoLog

On Fri, Sep 4, 2009 at 2:25 PM, Ville M. Vainiovivai...@gmail.com wrote:

 On Thu, Sep 3, 2009 at 8:40 AM, Edward K. Ream edream...@gmail.com wrote:

 Inspired by Terry's recent post, I'm wondering how many of you can
 tell the story of what you were doing and thinking when you first
 got what Leo was all about.  Such stories might help newbies, and
 they will help me understand the pathways people take to understanding
 Leo.

 My story:

 - I bumped into leo 5 years back. This tutorial sparked my fascination:

 http://www.3dtree.com/ev/e/sbooks/leo/sbframetoc_ie.htm

 (yeah, they are not really up-to-date anymore. The best tutorial is
 probably the Outlining one, with Friends, Enemies and People that
 owe me money)

 I played around with it a bit, but found myself unable to use it for
 programming (the @root thing is not all that practical). Also, back
 then Leo was too slow for large projects (we've come a long way
 since). Still, a weird charm about the whole thing stuck to the back
 of my head.

 Here are some of my c.l.p postings from 2004:

 http://mail.python.org/pipermail/python-list/2004-July/270849.html
 http://mail.python.org/pipermail/python-list/2004-July/270910.html

 I guess I found myself not needing Leo that much back then - my job
 was boring at the time, and I didn't have all that much to keep track
 off.

 Later, a colleague introduced me to Freemind (and my job had got
 interesting enough to actually keep track of what i'm doing). I used
 that for a while to keep notes about my defect fixing work (with chat
 logs, tracebacks, interesting functions etc. associated with each
 defect).

 However, I soon hit the glass ceiling with Freemind - it just didn't
 scale for lots of text and complex graphs. It was more of an
 attractive toy, really. I then remembered Leo, and switched to using
 that. Leo was a much better fit for my needs.

 This was coupled with Edwards post to ipython mailing list:

 http://osdir.com/ml/python.ipython.devel/2005-07/msg00015.html

 This resulted in ILeo, which solved some of the woes of using %edit in
 IPython, and revealed a whole new avenue of thinking about interactive
 programming.

 I got seriously sucked into development of Leo itself when the Qt ui
 started happening. I had a very selfish motive for promoting the Qt ui
 stuff - I had started working on Linux at the time (on the maemo/Nokia
 N900 stuff I posted the link about), and the Tk ui was bad enough on
 Linux that I either had to reimplement a Leo-like program myself
 (possibly based on qleolite, branch still on LP), or wait for other
 GUI plugin to emerge. But here we are.

 --
 Ville M. Vainio
 http://tinyurl.com/vainio

 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: clone-marked command on trunk

2009-09-06 Thread Ville M. Vainio

On Sun, Sep 6, 2009 at 4:24 PM, Kent Tenney kten...@gmail.com wrote:

 I haven't been using marks, I think I will.

Note that one thing making them more useful now is marking/unmarking
in the rclick menu - it also supports multiselection.

Also, by typing m + enter in nav tab, you get a clickable list of marked nodes.

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Leo 4.6.3 released

2009-09-06 Thread Seth Johnson

Hey, what's the latest and greatest version of Leo that can run on
Python 2.5?  That's the last Python for Win98.


Seth


On Sun, Sep 6, 2009 at 11:05 AM, VRviktor.ransm...@gmail.com wrote:

 Hi Edward,

 On 6 Sep., 07:50, VR viktor.ransm...@gmail.com wrote:
 Hi Edward,

 On 5 Sep., 18:45, VR viktor.ransm...@gmail.com wrote:



  Hi Edward

  You wrote:
   Leo 4.6.3 final is now available 
   at:http://sourceforge.net/project/showfiles.php?group_id=3458package_id...

   Leo 4.6.3 fixes a significant caching bug in Leo 4.6.2.
   Leo 4.6.3 also comes with an executable installer for Windows.

   Please report any problems immediately.

  Installing Leo-4.6.3 from the executable installer for Windows does
  not work for me.

  Platform is Windows XP Pro SP3 and Python 2.6, no PyQt.

  Even when changing the file-association for '*.leo' from
  '...pythonw ...' to
  '...python...', the program does not leave any traces :-(

 I was able to get Leo working again from the latest '46-main' branch.

 However I do get the following tracebacks, when starting Leo:

 Log

 Leo Log Window
 Leo 4.6.3 final, build 2286, September 4, 2009
 Python 2.6.2, Tk 8.5, Pmw 1.3
 Windows 5, 1, 2600, 2, Service Pack 3
 leoID=vr20080830 (in C:\Dokumente und Einstellungen\VR\.leo)
 load dir: C:\46-maint\leo\core
 global config dir: C:\46-maint\leo\config
 home dir: C:\Dokumente und Einstellungen\VR
 reading settings in C:\46-maint\leo\config\leoSettings.leo
 using menus from: leoSettings.leo
 reading settings in C:\Dokumente und Einstellungen\VR\Eigene Dateien
 \PWL\PWL-on-Neptune.leo
 unexpected exception in g.importFromPath(quicksearch)
 Traceback (most recent call last):

   File C:\46-maint\leo\core\leoGlobals.py, line 6723, in
 importFromPath
 module = imp.load_module(moduleName,theFile,pathname,description)

   File C:\46-maint\leo\plugins\quicksearch.py, line 40, in module
 g.assertUi('qt')

   File C:\46-maint\leo\core\leoGlobals.py, line 6779, in assertUi
 assert g.app.gui.guiName() == uitype

 AssertionError

 Can not import quicksearch from plugin quicksearch
 unexpected exception in g.importFromPath(contextmenu)
 Traceback (most recent call last):

   File C:\46-maint\leo\core\leoGlobals.py, line 6723, in
 importFromPath
 module = imp.load_module(moduleName,theFile,pathname,description)

   File C:\46-maint\leo\plugins\contextmenu.py, line 58, in module
 g.assertUi('qt')

   File C:\46-maint\leo\core\leoGlobals.py, line 6779, in assertUi
 assert g.app.gui.guiName() == uitype

 AssertionError

 Can not import contextmenu from plugin contextmenu
 unexpected exception in g.importFromPath(nav_qt)
 Traceback (most recent call last):

   File C:\46-maint\leo\core\leoGlobals.py, line 6723, in
 importFromPath
 module = imp.load_module(moduleName,theFile,pathname,description)

   File C:\46-maint\leo\plugins\nav_qt.py, line 33, in module
 g.assertUi('qt')

   File C:\46-maint\leo\core\leoGlobals.py, line 6779, in assertUi
 assert g.app.gui.guiName() == uitype

 AssertionError

 Can not import nav_qt from plugin nav_qt
 @enabled-plugins found in leoSettings.leo
 unexpected exception in g.importFromPath(quicksearch)
 Traceback (most recent call last):

   File C:\46-maint\leo\core\leoGlobals.py, line 6723, in
 importFromPath
 module = imp.load_module(moduleName,theFile,pathname,description)

   File C:\46-maint\leo\plugins\quicksearch.py, line 40, in module
 g.assertUi('qt')

   File C:\46-maint\leo\core\leoGlobals.py, line 6779, in assertUi
 assert g.app.gui.guiName() == uitype

 AssertionError

 Can not import quicksearch from plugin quicksearch
 unexpected exception in g.importFromPath(contextmenu)
 Traceback (most recent call last):

   File C:\46-maint\leo\core\leoGlobals.py, line 6723, in
 importFromPath
 module = imp.load_module(moduleName,theFile,pathname,description)

   File C:\46-maint\leo\plugins\contextmenu.py, line 58, in module
 g.assertUi('qt')

   File C:\46-maint\leo\core\leoGlobals.py, line 6779, in assertUi
 assert g.app.gui.guiName() == uitype

 AssertionError

 Can not import contextmenu from plugin contextmenu
 unexpected exception in g.importFromPath(nav_qt)
 Traceback (most recent call last):

   File C:\46-maint\leo\core\leoGlobals.py, line 6723, in
 importFromPath
 module = imp.load_module(moduleName,theFile,pathname,description)

   File C:\46-maint\leo\plugins\nav_qt.py, line 33, in module
 g.assertUi('qt')

   File C:\46-maint\leo\core\leoGlobals.py, line 6779, in assertUi
 assert g.app.gui.guiName() == uitype

 AssertionError

 Can not import nav_qt from plugin nav_qt
 Can not load c:\aspell\bin\aspell-15.dll
 reading: C:\Dokumente und Einstellungen\VR\Eigene Dateien\PWL\PWL-on-
 Neptune.leo

 /Log

 I did retry the windows installer again. - The problem can be
 resolved
 manually in a simple way:

 * Change the content of the 'open-action' in windows explorer for
 filetype 'leo'

* from C:\Python26\\pythonw.exe 

Re: Cleaning up Leo's iterators

2009-09-06 Thread Ville M. Vainio

On Sun, Sep 6, 2009 at 7:53 PM, Edward K. Ream edream...@gmail.com wrote:

 2. Generators returning (unified)nodes simply use the corresponding
 position generators.  Thus, all such generators must be members of the
 commands or position class, *not* the vnode class.

 def allNodes(c):
    for p in allPositions(c):
        yield p.v
    raise StopIteration

I think it would be a better idea to bypass positions for this
generator, because we can implement *much* more efficient generators
by using nodes alone. Also, the node generator could return the whole
parent stack (because it maintains it anyway).

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Leo 4.6.3 released

2009-09-06 Thread Ville M. Vainio

On Sun, Sep 6, 2009 at 8:50 AM, VR viktor.ransm...@gmail.com wrote:

 I was able to get Leo working again from the latest '46-main' branch.

 However I do get the following tracebacks, when starting Leo:

Do you have pyqt installed from

http://riverbankcomputing.co.uk/software/pyqt/download

The file you want is

http://riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-Py2.6-gpl-4.5.4-1.exe

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Leo 4.6.3 released

2009-09-06 Thread Ville M. Vainio

On Sun, Sep 6, 2009 at 7:55 PM, Seth Johnson seth.p.john...@gmail.com wrote:

 :-) Hmm, so I wonder why it's not working for me.  I'll fiddle with it
 some more later.

Also for you - do you have PyQt installed?

You may also want to install something more modern than windows 98
;-). If you are dependent on particular program, it may well be that
Wine can run it on Linux...

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Difficult to Install

2009-09-06 Thread Teres W

Dear All,

I've following error when execute the batch file as suggested:
-
Traceback (most recent call last):
  File C:\Python31\Lib\site-packages\leo\launchLeo.py, line 7, in
module
import leo.core.runLeo
  File C:\Python31\Lib\site-packages\leo\leo\core\runLeo.py, line
35, in module
import leo.core.leoGlobals as leoGlobals
  File C:\Python31\Lib\site-packages\leo\leo\core\leoGlobals.py,
line 119
print '** leoGlobals.py: caching disabled'
 ^
SyntaxError: invalid syntax


OS: Microsoft Windows 7
Paython installed: 3.1 amd 64
PyQt4 installed
Leo-4-6-3-final

Any suggestion?

Best regards,
Teres





On Aug 21, 2:30 pm, Vicent uve...@gmail.com wrote:
 Hi,

 On 20 Ago, 21:49, Matt Wilkie map...@gmail.com wrote:



  ...

  I've installed Leo several times on windows, yet this morning still
  took me a few minutes to find the section you reference above because
  there are at least two other document sections with phrases similar to
  installing leo...

 I suppose that it proofs again that some documentation has to be
 rewritten.
 That's a work in progress and we (users) can report bugs, mistakes,
 inconsistencies, etc.

 Vicent

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Difficult to Install

2009-09-06 Thread Ville M. Vainio

On Sun, Sep 6, 2009 at 8:08 PM, Teres W teres.w...@gmail.com wrote:

 Dear All,

 I've following error when execute the batch file as suggested:

You have Python 3.1 installed. Please use Python 2.6 for Leo (it's not
yet ported for 3.1)

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Leo 4.6.3 released

2009-09-06 Thread Seth Johnson

:-) Hmm, so I wonder why it's not working for me.  I'll fiddle with it
some more later.


Seth

On Sun, Sep 6, 2009 at 11:23 AM, Ville M. Vainiovivai...@gmail.com wrote:

 On Sun, Sep 6, 2009 at 6:15 PM, Seth Johnson seth.p.john...@gmail.com wrote:

 Hey, what's the latest and greatest version of Leo that can run on
 Python 2.5?  That's the last Python for Win98.

 4.6.3 ;-).

 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



4.6.3 final tag

2009-09-06 Thread Ville M. Vainio

I see that there is a 4.6.3 final tag in 46-maint. However, there is
prepare for 4.6.3 final checkin comment after it. So what's the
actual revision for 4.6.3 final?

Also, it appears 46-maint is not currently merged to trunk (i.e. trunk
doesn't have the tag).

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Cleaning up Leo's iterators

2009-09-06 Thread Edward K. Ream

As part of the clean-one-node world I am going to clean up Leo's
iterators using Python generators. As always, the old names will
remain for compatibility with scripts and plugins.

1.  Position generators are the base of the scheme.  For example, here
is a partially tested rewrite of c.allNodes_iter, called, much more
properly, allPositions().  These functions will eventually become
generators of the commands and positions classes, so the 'c' arg will
turn into 'self':

def allPositions(c):
this,next = None,c.rootPosition()
while next:
this = next
next = this.threadNext()
yield this
raise StopIteration

2. Generators returning (unified)nodes simply use the corresponding
position generators.  Thus, all such generators must be members of the
commands or position class, *not* the vnode class.

def allNodes(c):
for p in allPositions(c):
yield p.v
raise StopIteration

This scheme will eliminate all lambda bindings in the iterators,
something that must be done for Python 3k. More importantly, the new
code is substantially simpler than the old.

The new scheme will retain the unique iterators that return
positions p such that p.v appears only once.  These will use the
moveToThreadNextUnique pretty much unchanged, except we can dispense
with the unique lambda binding.

Edward

P.S.  I have, once again, to thank the late great Bernhard Mulder for
this work. It was he who wanted to use generators years ago.  I do
wish he were here to see it.

EKR
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Cleaning up Leo's iterators

2009-09-06 Thread Ville M. Vainio

On Sun, Sep 6, 2009 at 7:53 PM, Edward K. Ream edream...@gmail.com wrote:

 1.  Position generators are the base of the scheme.  For example, here
 is a partially tested rewrite of c.allNodes_iter, called, much more
 properly, allPositions().  These functions will eventually become

Could we have more pythonic  shorter names for these methods that
don't use camelCase? Something like c.walk() and c.walknodes()

In general following pep-8 would be nice.

http://www.python.org/dev/peps/pep-0008/

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Cleaning up Leo's iterators

2009-09-06 Thread Edward K. Ream
On Sun, Sep 6, 2009 at 12:06 PM, Ville M. Vainio vivai...@gmail.com wrote:


 On Sun, Sep 6, 2009 at 7:53 PM, Edward K. Ream edream...@gmail.com
 wrote:

  2. Generators returning (unified)nodes simply use the corresponding
  position generators.  Thus, all such generators must be members of the
  commands or position class, *not* the vnode class.
 
  def allNodes(c):
 for p in allPositions(c):
 yield p.v
 raise StopIteration

 I think it would be a better idea to bypass positions for this
 generator, because we can implement *much* more efficient generators
 by using nodes alone. Also, the node generator could return the whole
 parent stack (because it maintains it anyway).


This can't be correct, for several reasons.

Most importantly, iterators are naturally related to positions, not nodes.
It would thus be bad design to have iterators be part of a node class.
Except for some unusual special cases in the read logic (when positions
don't yet exist), Leo (properly) treats position as the essential data to
have, and nodes as derived from positions.  Changing this would greatly (and
wrongly) change Leo's core.  I'm not going to do it.  Instead, the
contemplated revision merely replaces clumsy code by elegant code.

Second, (v)nodes are never enough, by themselves, to generate most kinds of
next positions.  Two more data are needed for the next position to be well
defined: the specific parent of the  node and the node's child index. The
p.moveToX methods used by the present (and future) iterators pass such data
to the low-level vnode methods.

Finally, the data structures needed by your suggested node iterators are
available to positions via p.v.  Thus, if need be, we could implement the
same optimizations you contemplate for vnode-based iterators in the position
class.

I have no appetite for further optimizations.  The code is good, and
previous optimizations have been complex.  However, I won't rule them out
entirely, if it turns out that optimizations are much easier to do in the
one-node world.

Edward

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Cleaning up Leo's iterators

2009-09-06 Thread Edward K. Ream
On Sun, Sep 6, 2009 at 1:16 PM, Edward K. Ream edream...@gmail.com wrote:


 This can't be correct, for several reasons.


Actually, I can be even more emphatic about this statement.

It is not immediately obvious from the code, but it is a fact nonetheless,
that Leo's present iterators are already highly optimized.  A loop such as:

for p in c.allNodes_iter():
 whatever 

generates *exactly one* position p, and this position is moved by the
iterator using p.moveToX methods. This is a crucial space optimization.  The
comment in the p.moveToX node says:

QQQ
These routines change self to a new position in place.
That is, these methods must _never_ call p.copy().
QQQ

Furthermore,  p.stack turns out to be essential in computing the next
position.  To contemplate optimized vnode iterators is misguided: they
would have to simulate p.stack in order to work properly.

Edward

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Difficult to Install

2009-09-06 Thread Teres W

Dear All,

Tried to install:
OS: Win Xp x86
Python: 2.5.4
PyQt-Py2.5-gpl-4.4.3-1
Leo-4-6-3-final

Now having the following error:
---
Traceback (most recent call last):
  File C:\Python25\Lib\site-packages\leo\launchLeo.py, line 8, in
module
leo.core.runLeo.run(fileName=test)
  File C:\Program Files\Leo-4.6.3-final\leo\core\runLeo.py, line 88,
in run
fn,relFn,script = doPrePluginsInit(fileName,pymacs)
  File C:\Program Files\Leo-4.6.3-final\leo\core\runLeo.py, line
111, in doPre
PluginsInit
initApp(verbose)
  File C:\Program Files\Leo-4.6.3-final\leo\core\runLeo.py, line
234, in initA
pp
g.app.setLeoID(verbose=verbose)
  File C:\Program Files\Leo-4.6.3-final\leo\core\leoApp.py, line
651, in setLe
oID
g.app.createTkGui(startup)
  File C:\Program Files\Leo-4.6.3-final\leo\core\leoApp.py, line
358, in creat
eTkGui
leoPlugins.loadOnePlugin ('tkGui',verbose=verbose)
  File C:\Program Files\Leo-4.6.3-final\leo\core\leoPlugins.py, line
398, in l
oadOnePlugin
verbose = False or verbose or g.app.config.getBool
(c=None,setting='trace_plu
gins')
AttributeError: 'NoneType' object has no attribute 'getBool'

---
Need a break for hours of testing. Any suggestion?

Best regards,
Teres

On Sep 7, 2:01 am, Ville M. Vainio vivai...@gmail.com wrote:
 On Sun, Sep 6, 2009 at 8:08 PM, Teres W teres.w...@gmail.com wrote:
  Dear All,

  I've following error when execute the batch file as suggested:

 You have Python 3.1 installed. Please use Python 2.6 for Leo (it's not
 yet ported for 3.1)

 --
 Ville M. Vainiohttp://tinyurl.com/vainio
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Cleaning up Leo's iterators

2009-09-06 Thread Ville M. Vainio

On Sun, Sep 6, 2009 at 9:25 PM, Edward K. Ream edream...@gmail.com wrote:


 Actually, I can be even more emphatic about this statement.

 It is not immediately obvious from the code, but it is a fact nonetheless,
 that Leo's present iterators are already highly optimized.  A loop such as:

     for p in c.allNodes_iter():
      whatever 

 generates *exactly one* position p, and this position is moved by the
 iterator using p.moveToX methods. This is a crucial space optimization.  The

Yeah, a space optimization. I'm thinking of time optimization here.

 comment in the p.moveToX node says:

 QQQ
 These routines change self to a new position in place.
 That is, these methods must _never_ call p.copy().
 QQQ

 Furthermore,  p.stack turns out to be essential in computing the next
 position.  To contemplate optimized vnode iterators is misguided: they
 would have to simulate p.stack in order to work properly.

I'm thinking of using a recursive generator for this.  OTOH, emulating
the position stack is easy.

Don't bother too much about this yet, just implement the
straightforward version in terms of positions as you suggested and
I'll provide  benchmark the optimized version later. My gut feeling
tells me significant speedup can be achieved, but of course I might be
wrong.

This is a harmless optimization in that no changes outside of this
function will be needed.

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Difficult to Install

2009-09-06 Thread Teres W

Dear All,

Get Solved with the following combination:
OS: Window XP x86
Python: 2.5.4
PyQt-Py2.5-gpl-4.4.3-1
Leo-4-6-2-final

Actuall, I should try only the version specified in the documentation
mentioned here and not tried new version.

Best regards,
Teres

P.S. I'll try back on Windows 7 x64 and the Python 2.5.4 AMD x64.

On Sep 7, 2:27 am, Teres W teres.w...@gmail.com wrote:
 Dear All,

 Tried to install:
 OS: Win Xp x86
 Python: 2.5.4
 PyQt-Py2.5-gpl-4.4.3-1
 Leo-4-6-3-final

 Now having the following error:
 ---
 Traceback (most recent call last):
   File C:\Python25\Lib\site-packages\leo\launchLeo.py, line 8, in
 module
     leo.core.runLeo.run(fileName=test)
   File C:\Program Files\Leo-4.6.3-final\leo\core\runLeo.py, line 88,
 in run
     fn,relFn,script = doPrePluginsInit(fileName,pymacs)
   File C:\Program Files\Leo-4.6.3-final\leo\core\runLeo.py, line
 111, in doPre
 PluginsInit
     initApp(verbose)
   File C:\Program Files\Leo-4.6.3-final\leo\core\runLeo.py, line
 234, in initA
 pp
     g.app.setLeoID(verbose=verbose)
   File C:\Program Files\Leo-4.6.3-final\leo\core\leoApp.py, line
 651, in setLe
 oID
     g.app.createTkGui(startup)
   File C:\Program Files\Leo-4.6.3-final\leo\core\leoApp.py, line
 358, in creat
 eTkGui
     leoPlugins.loadOnePlugin ('tkGui',verbose=verbose)
   File C:\Program Files\Leo-4.6.3-final\leo\core\leoPlugins.py, line
 398, in l
 oadOnePlugin
     verbose = False or verbose or g.app.config.getBool
 (c=None,setting='trace_plu
 gins')
 AttributeError: 'NoneType' object has no attribute 'getBool'

 ---
 Need a break for hours of testing. Any suggestion?

 Best regards,
 Teres

 On Sep 7, 2:01 am, Ville M. Vainio vivai...@gmail.com wrote:



  On Sun, Sep 6, 2009 at 8:08 PM, Teres W teres.w...@gmail.com wrote:
   Dear All,

   I've following error when execute the batch file as suggested:

  You have Python 3.1 installed. Please use Python 2.6 for Leo (it's not
  yet ported for 3.1)

  --
  Ville M. Vainiohttp://tinyurl.com/vainio- Hide quoted text -

 - Show quoted text -
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Leo 4.6.3 released

2009-09-06 Thread Ville M. Vainio

On Sun, Sep 6, 2009 at 9:43 PM, VR viktor.ransm...@gmail.com wrote:

 No, as I stated in my initial email to Edward, that I do not use PyQt.

 I do not use it, since until now there is no compelling reason for me
 to introduce yet another dependency ...

That's why you get those messages. To get rid of them, remove the
reported plugins from LeoSettings.leo @enabled-plugins.

 However I may have been wrongly under the impression that Leo is
 treating
 PyQt and Tkinter with equal priorities as a supported GUI-TK ...

Of course we want to avoid introducing new bugs in Tk side (e.g. these
messages were not indication of a bug), but it certainly doesn't have
equivalent priority in the sense of receiving new GUI features (or
regular testing, apart from that done by those who actually use Tk).

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Cleaning up Leo's iterators

2009-09-06 Thread Edward K. Ream
On Sun, Sep 6, 2009 at 1:12 PM, Ville M. Vainio vivai...@gmail.com wrote:


  1.  Position generators are the base of the scheme.  For example, here
  is a partially tested rewrite of c.allNodes_iter, called, much more
  properly, allPositions().  These functions will eventually become

 Could we have more pythonic  shorter names for these methods that
 don't use camelCase? Something like c.walk() and c.walknodes()


I agree, it would be good to shorten and clarify names. The names of some of
the new unique iterators are way too long.

Let me think about a scheme that will be relatively consistent across all
iterators.  I would like to get rid of the _iter suffix, but it's not clear
that can be done cleanly.

As for camelCase, I usually prefer xY to x_y, but not always, and Leo uses
both without much plan.  That's not likely to change, absent a safe script
for making the changes.

Edward

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Leo 4.6.3 released

2009-09-06 Thread Seth Johnson

I have GNU/Linux on my laptop.  I'll fiddle later.

On Sun, Sep 6, 2009 at 1:51 PM, Ville M. Vainiovivai...@gmail.com wrote:

 On Sun, Sep 6, 2009 at 7:55 PM, Seth Johnson seth.p.john...@gmail.com wrote:

 :-) Hmm, so I wonder why it's not working for me.  I'll fiddle with it
 some more later.

 Also for you - do you have PyQt installed?

 You may also want to install something more modern than windows 98
 ;-). If you are dependent on particular program, it may well be that
 Wine can run it on Linux...

 --
 Ville M. Vainio
 http://tinyurl.com/vainio

 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Difficult to Install

2009-09-06 Thread Teres W

Dear All,

Python 2.5.4 for AMX x64 doesn't work.

Best regards,
Teres

On Sep 7, 2:40 am, Teres W teres.w...@gmail.com wrote:
 Dear All,

 Get Solved with the following combination:
 OS: Window XP x86
 Python: 2.5.4
 PyQt-Py2.5-gpl-4.4.3-1
 Leo-4-6-2-final

 Actuall, I should try only the version specified in the documentation
 mentioned here and not tried new version.

 Best regards,
 Teres

 P.S. I'll try back on Windows 7 x64 and the Python 2.5.4 AMD x64.

 On Sep 7, 2:27 am, Teres W teres.w...@gmail.com wrote:



  Dear All,

  Tried to install:
  OS: Win Xp x86
  Python: 2.5.4
  PyQt-Py2.5-gpl-4.4.3-1
  Leo-4-6-3-final

  Now having the following error:
  ---
  Traceback (most recent call last):
    File C:\Python25\Lib\site-packages\leo\launchLeo.py, line 8, in
  module
      leo.core.runLeo.run(fileName=test)
    File C:\Program Files\Leo-4.6.3-final\leo\core\runLeo.py, line 88,
  in run
      fn,relFn,script = doPrePluginsInit(fileName,pymacs)
    File C:\Program Files\Leo-4.6.3-final\leo\core\runLeo.py, line
  111, in doPre
  PluginsInit
      initApp(verbose)
    File C:\Program Files\Leo-4.6.3-final\leo\core\runLeo.py, line
  234, in initA
  pp
      g.app.setLeoID(verbose=verbose)
    File C:\Program Files\Leo-4.6.3-final\leo\core\leoApp.py, line
  651, in setLe
  oID
      g.app.createTkGui(startup)
    File C:\Program Files\Leo-4.6.3-final\leo\core\leoApp.py, line
  358, in creat
  eTkGui
      leoPlugins.loadOnePlugin ('tkGui',verbose=verbose)
    File C:\Program Files\Leo-4.6.3-final\leo\core\leoPlugins.py, line
  398, in l
  oadOnePlugin
      verbose = False or verbose or g.app.config.getBool
  (c=None,setting='trace_plu
  gins')
  AttributeError: 'NoneType' object has no attribute 'getBool'

  ---
  Need a break for hours of testing. Any suggestion?

  Best regards,
  Teres

  On Sep 7, 2:01 am, Ville M. Vainio vivai...@gmail.com wrote:

   On Sun, Sep 6, 2009 at 8:08 PM, Teres W teres.w...@gmail.com wrote:
Dear All,

I've following error when execute the batch file as suggested:

   You have Python 3.1 installed. Please use Python 2.6 for Leo (it's not
   yet ported for 3.1)

   --
   Ville M. Vainiohttp://tinyurl.com/vainio-Hide quoted text -

  - Show quoted text -- Hide quoted text -

 - Show quoted text -
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Leo 4.6.3 released

2009-09-06 Thread Yannick Duchêne Hibou57

On 5 sep, 16:02, Edward K. Ream edream...@gmail.com wrote:
 Leo 4.6.3 final is now available 
 at:http://sourceforge.net/project/showfiles.php?group_id=3458package_id...

 Leo 4.6.3 fixes a significant caching bug in Leo 4.6.2.
 Leo 4.6.3 also comes with an executable installer for Windows.

 Please report any problems immediately.

 Edward

Hello :)

I may be back to Leo after a long time

I get Leo 4.6.3 and installed it from ZIP.

When I launched it for the first time, I get this message (detailed
form) :

 Traceback (most recent call last):
   File launchLeo.py, line 8, in module
 leo.core.runLeo.run()
   File C:\Program Files\Leo\leo\core\runLeo.py, line 88, in run
 fn,relFn,script = doPrePluginsInit(fileName,pymacs)
   File C:\Program Files\Leo\leo\core\runLeo.py, line 111, in 
 doPrePluginsInit
 initApp(verbose)
   File C:\Program Files\Leo\leo\core\runLeo.py, line 234, in initApp
 g.app.setLeoID(verbose=verbose)
   File C:\Program Files\Leo\leo\core\leoApp.py, line 651, in setLeoID
 g.app.createTkGui(startup)
   File C:\Program Files\Leo\leo\core\leoApp.py, line 358, in createTkGui
 leoPlugins.loadOnePlugin ('tkGui',verbose=verbose)
   File C:\Program Files\Leo\leo\core\leoPlugins.py, line 398, in 
 loadOnePlugin

 verbose = False or verbose or 
 g.app.config.getBool(c=None,setting='trace_plugins')
 AttributeError: 'NoneType' object has no attribute 'getBool'

Searching the web, I've discovered that this had occurred with some
prior versions of Leo, and has been solved.

Perhaps it's finally back in 4.6.3 ?

I've tried 4.6.2, and the trouble wasn't there, it is this way only
with 4.6.3

Like suggested by conversations I've found on the web, it was due to
the missing .leo\.leoID.txt, because when I manually created it, then
I saw Leo 4.6.3 starting up fine, ... but only after another later
stuff was revolved (see next).

Another things which has surprised me : when I was using Leo some time
ago (about two years ago), it was requiring Python and TclTk. It seems
that now it requires QtPy ? What make me think about it, was the new
startup error messages I get on the console after I've manually
created the .leoID.txt file : it was then complaining something about
QtGui or something like that. So I looked for QtPy, installed it, and
finally, everything was really working normally.


For the little story now and far apart of the latter. I had switched
to another outline editor, called CodeBrowser, which is nice, but
which also has some design flaw (I know it, because I had participated
in some part of it). Along of that, I also used GPS, an IDE targeting
Ada. Finally, I'm still not able to find what could exactly fits my
needs : GPS as no literate capabilities, but has nice refactoring
features (but only for Ada). CodeBrowser does not have customization
facilities but it has nice literate-with-links features (literate head
lines are browsable links in CB), Leo does not have link and editing
facilities like CB, but it has easy customization and generates unique
ID for nodes.

LOL

Do you think I've driving neurotic ?

It's the third time I'm coming back to Leo : the first time was prior
2000 (at this time, Leo was not using XML and it was a Windows
binary), then the second time, two years ago, and he third time now :)

Have to say that since the first time, I could not forget it.

While to be honest, CodeBrowser was looking a bit nearer to what I was
imagining at the time I was seeking for this things and faced Leo, and
GPS is nearest concerning some maintenance stuffs. So I'm still
looking for the one which could make me have the three things at the
time (surely not GPS... I'm at least sure about that as there is no
way to make it a literate environment, so I will have to integrate its
refactoring and entity search tools in either CodeBrowser or Leo)

Well, this was 0.1 cent story

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Re: Leo 4.6.3 released

2009-09-06 Thread Ville M. Vainio

On Sun, Sep 6, 2009 at 10:15 PM, Yannick Duchêne Hibou57
yannick_duch...@yahoo.fr wrote:

 lines are browsable links in CB), Leo does not have link and editing
 facilities like CB, but it has easy customization and generates unique
 ID for nodes.

Depending what you mean by link capability, backlink.py plugin might
provide what you want.

-- 
Ville M. Vainio
http://tinyurl.com/vainio

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
leo-editor group.
To post to this group, send email to leo-editor@googlegroups.com
To unsubscribe from this group, send email to 
leo-editor+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en
-~--~~~~--~~--~--~---



Revisiting the generation of the .nsi install script

2009-09-06 Thread David Szent-Györgyi

Bear with me in this long essay. I have to convince Edward to abandon
code that he has just written. I do have a replacement in mind, which
I describe. I also have a Leo story to tell -- one that shows that my
experience using Leo has soured me on working without it!

With a new scheme for generating the .nsi file just launched with the
release of Leo 4.6.3, my timing is poor, but I think the generation
needs to be revisited;. The version just finished greatly simplifies
the maintenance of the lists of files installed and files uninstalled,
but it renders maintenance of the rest of the script painfully
difficult, much more difficult than was the case with the .nsi install
scripts used for Leo 4.4 and earlier. I propose an approach that would
preserve Edward's automated generation of lists of files and allow the
maintenance of the script source code in Leo.

For the sake of the reader whose interest ends with the proposed
approach, let us start with that. It is straightforward. The list of
File commands and the list of Delete commands that represent the
files to be installed or uninstalled go in separate
LeoInstallManifest.nsi and LeoDeleteManifest.nsi files; the source
code for leo.nsi uses !include commands to use the NSIS compiler's
preprocessor to incorporate these two files. The definitions created
by the Python script are written to a LeoDefinitions.nsi file; the
source code for leo.nsi uses another !include command to pull in the
contents of that file.

This way, we can generate LeoInstallManifest.nsi and
LeoDeleteManifest.nsi and LeoDefinitions.nsi using the Python code
from the Leo 4.6.3 leoDist.leo. Edward retains the automation for
which he worked; because we can abandon the special-purpose Python
code that writes the source code for the rest of the .nsi file;
because we can abandon the one-off preprocessor written in Python; and
because the leoDist.leo outline becomes more stable because the ever-
changing manifests and definitions are generated by code that does not
change. Developers working on the logic of the installer gain because
the .nsi file lives in a Leo outline.

I have already hand-tested the use of the !include command to
include a LeoInstallManifest.msi file, and the NSIS compiler runs to
completion on the result, so I'm confident that this is feasable. The
required changes to leoDist.leo should be minimal, a few hours' work
at most.

Any comments? I am willing to get started on the changes, beginning
with a switch to my proposed approach incorporating no changes to the
installer; with that accomplished, Edward, Rob Sheppard, any other
interested folk and I can start enhancing the installer itself.

Now, on to my Leo story.

In working on the new Leo installer script, Edward went to some
trouble to automate the generation of the lists of files that are to
be installed or uninstalled -- because hand-editing those lists is at
best a distraction from the work he really wants to do. That makes
sense to me; I hate such distractions in my own development work. I
ran into many such in making changes to the logic of the installer
script as that script exists in the released Leo 4.6.3. This release
of the script is broken into small pieces, each of which is altered to
allow for preprocessing and stored in a Python string. The code in
each string is no longer exactly in NSIS installer syntax, and any
changes to it must be altered so that the preprocessor produces a
legal .nsi file.

The script is source code, and treating it as boilerplate text in
Python strings prevents the use of Leo to maintain the source code. As
the script grows more complicated, that becomes a barrier to
development. Here I illustrate.

The changes on which I am working introduce additional logic in a
number of the sections of code. In the Leo outline that contains my
installer for Version 4.4-rc1 of Leo, the added logic exists in nodes
that are children of the sections to which they apply. How to add that
logic to the Version 4.6.3 installer? I can think of two schemes for
this. According to the first, I would simply paste the longer logic in
the existing strings. That quickly buries the logic, rendering the
code Really Hard to Read. According to the second scheme, I would
replace the relevant guts of the generator. For each Python function
that required new logic, I tear out the simple string assignment and
put statement, and in its place I write more functions, each of which
contains a simple string assignment and put statement.

I tried this second scheme. For example, in place of the putOnInit
function, I produced a new putOnInit, which calls ten functions, three
of which also call functions. Why is this a Leo story? It is such
because I am used to using Leo to break down long sections of code
into comprehensible parts, and I was doing that by hand in this code.
In short, I was mimicing the Leo outline in the hand-written source
code in the hope of returning the code to Leo later! I was working
very hard in