GTKD - CSS class color "flash" delay

TheDGuy via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 29 03:41:21 PDT 2016


On Sunday, 26 June 2016 at 21:06:58 UTC, TheDGuy wrote:
>
> Thanks for your answer,
>
> but as i said before, i want to flash each button on it's own 
> (the game is kinda like 'Simon Says').

I tried to debug a little and what i don't understand is, that i 
get two times 'blue' on the console, even though yellow and blue 
lit up but yellow stayed at the flash color:

     private void letButtonsFlash(){
         foreach(Button btn;bArr){
             btn.setSensitive(false);
         }
         for(int i = 0; i < level; i++){
             index = i;
             Button currentButton = bArr[rndButtonBlink[i]]; 
//Array holds randomized Buttons
             ListG list = 
currentButton.getStyleContext().listClasses();
             string CSSClassName = 
to!string(cast(char*)list.next().data);
             currentButton.getStyleContext().addClass(CSSClassName 
~ "-flash");
             Timeout t = new Timeout(() => 
this.timeout_delay(currentButton),1,false);
         }

         foreach(Button btn;bArr){
             btn.setSensitive(true);
         }
     }
     bool timeout_delay(Button currentButton){
         ListG list = 
currentButton.getStyleContext().listClasses();
         string CSSClassName = 
to!string(cast(char*)list.next().data);
         writeln(CSSClassName); //try to debug
         currentButton.getStyleContext().removeClass(CSSClassName 
~ "-flash");
         return false;
     }

The reason for the problem that buttons are flashing 
simultaneously might be, that the Timeout is running in an extra 
thread and therefore another Timeout is created by the mainthread 
in the for-loop even though the last one hasn't finished yet.

But what i don't understand is why the last button doesn't go 
back to the normal CSSClass and that the first button has two 
timeouts (according to my console debug text)?

It would be very much appreciated if someone who has GTKD 
installed can try my code:

http://pastebin.com/h0Nx1mL6




More information about the Digitalmars-d-learn mailing list