Pascal Georges wrote:


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 but
    there 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 !).

    Pascal
    In 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 ?

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.
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

Reply via email to