GTKD - CSS class color "flash" delay
TheDGuy via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Jun 25 08:26:00 PDT 2016
On Saturday, 25 June 2016 at 13:01:09 UTC, TheDGuy wrote:
> Thanks for your answer.
> I have to pass the Button object to my timeout function to
> change the CSS class. But how do i do that within the Timeout
> constructor?
I mean:
I have to pass my function and delay time to the constructor, but
i can't pass any data to the function here, also only functions
are allowed (at least it looks like that to me) who don't have
parameters.
If i want to add a new function i have to use the function
.add(), with this function i can pass 'userData' (so my button
for example). But why am i unable to do that in the constructor?
Do i have 2 different functions for the same thing, one with the
other one without parameter?
My current approach:
private void letButtonsFlash(){
foreach(Button btn;bArr){
btn.setSensitive(false);
}
for(int i = 0; i < level; i++){
Button currentButton = bArr[rndButtonBlink[i]];
ListG list =
currentButton.getStyleContext().listClasses();
string CSSClassName =
to!string(cast(char*)list.next().data);
currentButton.getStyleContext().addClass(CSSClassName
~ "-flash");
//writeln(CSSClassName);
Timeout t = new Timeout(&timeout_delay,5,false);
//error appears here
t.add(5,&timeout_delay,currentButton);
}
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);
currentButton.getStyleContext().removeClass(CSSClassName
~ "-flash");
return false;
}
But i get the error:
Error: none of the overloads of '__ctor' are callable using
argument types (bool delegate(void* userData), int, bool),
candidates are:
glib.Timeout.Timeout.this(uint interval, bool delegate() dlg,
bool fireNow = false)
glib.Timeout.Timeout.this(uint interval, bool delegate() dlg,
GPriority priority, bool fireNow = false)
glib.Timeout.Timeout.this(bool delegate() dlg, uint seconds, bool
fireNow = false)
glib.Timeout.Timeout.this(bool delegate() dlg, uint seconds,
GPriority priority, bool fireNow = false)
If i take a look at GTK for C it looks like there is a function
for that:
http://www.gtk.org/tutorial1.2/gtk_tut-17.html
Why is this so confusing?
More information about the Digitalmars-d-learn
mailing list