hi,
i use stc for var declaration
…
end_var
…
end_var
when now collapsed all that sections
and the cursor is (HERE) and i type newline to start a new var declaration section
…
end_var
then the new section is inside the second
var constant
var input
end_var
end_var
is there a trick to avoid this. i want the new line to appear after the collapsed block.
thanks in advance
andreas
hi,
thanks for your answer.
i need to save the keycode from previous on_key_down ( in on_stc_modified, insertbefore the keycode is 0 )
what i have done so far, is:
finding out that fold level has headerflag ( x2000 (x2400) )
finding out that block is not expanded
finding the line of lastchild
…
10 [+] xxx (head, collapsed, lastchild in line 19)
…
end_xxx
20 [+] yyy
what now i have to do ?
do i have to write a method that inserts an \n in position after lastchild and wx.CallAfter that method and then event.Veto() the original \n at wrong position ?
or can i simply change the cursor-position and event.Skip() so that the \n is inserted in modified position ?
StyledTextEvent has no Veto() ?!
if instead of veto i simply return (no .Skip()) the \n is inserted, nevertheless. i thought insertbefore can avoid what is intended to be inserted ?
now i have a property .veto and in mod_before_insert i set .veto=true
in mod_inserttext i check .veto and if set i clear it and return (instead of not existing .Veto())
but no success.
please help.
···
Am Freitag, 26. April 2013 18:22:49 UTC+2 schrieb Cody Precord:
Hi,
is there a trick to avoid this. i want the new line to appear after the collapsed block.
You need to manually check the the fold state of the cursor line and apply the desired action when the Enter key is pressed.
Cody
hi,
thanks for help.
os and wxpy versions are rather old. maybe this causes some trouble. but in this case i guess, i simply not yet understand whats going on.
order of events
-
keydown
-
stc_modified mode=beforeinsert
-
stc_modified mode=inserttext
do you actually say, that i have to catch the newline in keydown and from keydown-handler or with CallAfter i have to insert the newline at correct position and do not skip(), so the stc_modified events ( 2 + 3 ) are not generated ?
i need to get all the info from stc-object instead of getting it from event-object ?!
when i use CallAfter is there danger that if typing rather quick or reading text from file, the second key could generate a new [keydown +] beforeinsert + insert before the moved newline is inserted ?
what are these beforeinsert beforedelete events good for ?
andreas
···
Am Montag, 29. April 2013 15:16:42 UTC+2 schrieb Cody Precord:
Hi,
what now i have to do ?
do i have to write a method that inserts an \n in position after lastchild and wx.CallAfter that method and then event.Veto() the original \n at wrong position ?
or can i simply change the cursor-position and event.Skip() so that the \n is inserted in modified position ?
Yes, while handling the EVT_KEY_DOWN event you just need to insert the new line at the desired location and return from the event without calling Skip.
StyledTextEvent has no Veto() ?!
if instead of veto i simply return (no .Skip()) the \n is inserted, nevertheless. i thought insertbefore can avoid what is intended to be inserted ?
Not calling Skip on the event should result in the behavior your looking for (nothing inserted). What version of wxPython are you using and on what OS?
now i have a property .veto and in mod_before_insert i set .veto=true
in mod_inserttext i check .veto and if set i clear it and return (instead of not existing .Veto())
but no success.
I don’t know what these events in your program are you are referring to but if they are related to EVT_STC_MODIFIED then this is expected as you cannot make modifications to the buffer while in this event handler.
Cody
xubuntu 10.04, wxpy 2.8.10.1
it is working now. i have used GotoPos(p) and AddText(). but will try InsertText() and os.linesep (little additional lesson)
thanks a lot.
···
Am Montag, 29. April 2013 16:17:51 UTC+2 schrieb Cody Precord:
Hi,
On Mon, Apr 29, 2013 at 9:05 AM, andreas graeper agra...@googlemail.com wrote:
hi,
thanks for help.
os and wxpy versions are rather old. maybe this causes some trouble. but in this case i guess, i simply not yet understand whats going on.
Are they so old that they are only representable in some ancient form of Sanskrit that prevents you from simply typing them into this message?
order of events
- keydown
- stc_modified mode=beforeinsert
- stc_modified mode=inserttext
do you actually say, that i have to catch the newline in keydown and from keydown-handler or with CallAfter i have to insert the newline at correct position and do not skip(), so the stc_modified events ( 2 + 3 ) are not generated ?
i need to get all the info from stc-object instead of getting it from event-object ?!
when i use CallAfter is there danger that if typing rather quick or reading text from file, the second key could generate a new [keydown +] beforeinsert + insert before the moved newline is inserted ?
def OnKeyDown(self, event):
…
if INeedToModifyEnter(): # your criteria check
self.InsertText(position_i_want_newline, os.linsep)
return
else:
event.Skip()
The modification events will still be triggered because you are still modifying the buffer, but it doesn’t matter.
what are these beforeinsert beforedelete events good for ?
They are strictly notifications for your application to use (i.e. can use to trigger update in document label to show its modified *myFile.txt).
Cody