Pascal Georges wrote:
Since you still have "storeEpdTexts" in preMoveCommand i suppose you should still experience problems when EPD window is open. However i don't use EPD files so speaking for normal comments only it works good for me.2009/12/4 Fulvio <[email protected] <mailto:[email protected]>> Pascal Georges wrote:2009/12/2 Fulvio <[email protected] <mailto:[email protected]>> Pascal Georges wrote: >> Many tricks are used in code to try to fix it: temporarily disabling, >> erasing the comment window text to avoid duplication, etc... >> But in my opinion it's a design error: preMoveCommand and every >> reference to it should be deleted. >> > > "preMoveCommand" is indeed difficult to handle, but I think I found > the solution. I will test and commit later in CVS. > Let's take for example some lines of code that i write for arrows with variations starting with the same move: if {$move == $main_move} { sc_var moveInto $i set move [sc_game info nextMoveUCI] sc_var exit } I didn't take in consideration the preMoveCommand, but how could I? I mean, i can look at the preMoveCommand code. And probably if you write a comment and leave the comment window open, when moving forward the comment will be duplicated in every variation. (preMoveCommand stores text, so calling "sc_var exit" stores the text of the comment window in every variation). Maybe i can write some code trick to temporarily fix it. But the point is: How can i foresee what the preMoveCommand will do in the future? That's why i said that in my opinion it's a design error. If preMoveCommand is useful (i don't like that comments are stored without user permission) in my opinion it should be explicitly called by ::move functions.Finally I think your analysis is perfectly correct. "preMoveCommand" is evil. I thought I could work with it butthere are many use cases where it will not work. There is one simple solution to work around it : remove the auto-store of comments when the board changes. The user simply has to click on the save button which seems logical. There is no easy way to call explicitely preMoveCommand from ::move functions as those functions are not the only way to move, and preMoveCommand is triggered from C++ code, not only from TCL. So I commited this (disabling auto storage of comments), let me know what you think about it (for the least I hope there will be no more weird stuff with comments !). PascalIn my opinion the code need to be completely cleaned up: - the "PreMoveCommand" in tkscid.cpp and all the reference to it should be deleted (this is easy: the compiler will complain if some reference remains) - the "preMoveCommand" proc in main.tcl and all the reference to it should be deleted (no compiler :'-( in the end "grep -iR premovec* *" should return no result) - code tricks wrote to try to fix the "preMoveCommand" should be deleted (this is difficult: for example in main.tcl in proc addMove the line if {[winfo exists .commentWin]} { .commentWin.cf.text delete 0.0 end } should be deleted. "grep -iR .commentwin* *" can help to find some tricks) This cleaning is not so urgent. The question is : does current CVS work ?
Bye, Fulvio
------------------------------------------------------------------------------ Join us December 9, 2009 for the Red Hat Virtual Experience, a free event focused on virtualization and cloud computing. Attend in-depth sessions from your desk. Your couch. Anywhere. http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________ Scid-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/scid-users
