Great it works well. I included all events in switch statements ans checked
my application. It working. Can u suggest me any good website which
contains these type of codes or ideas.

On Wed, Mar 14, 2012 at 10:58 PM, Rajesh Kumar <[email protected]> wrote:

> thnks for the code, it really useful....
>
>
> On Wed, Mar 14, 2012 at 10:15 PM, MacArthur, Ian (SELEX GALILEO, UK) <
> [email protected]> wrote:
>
>> >             Ur's idea seems to work. Can u post a pseudo code so that I
>> > can
>> > easily implement becase I never worked on events and handle.
>> >
>>
>> Well, OK, here's the basic idea laid out in code.
>>
>> Seems to kind of work - though bearing in mind Albrecht's observations,
>> it may not be the right solution, and probably not all that robust.
>> Perhaps it will get you started in the right direction...
>>
>>
>>
>> /*****************************************************************************/
>> //   fltk-config --compile idle-window.cxx
>>
>> /* Standard headers */
>> #include <stdlib.h>
>> #include <stdio.h>
>>
>> /* Fltk headers */
>> #include <Fl/Fl.h>
>> #include <FL/Fl_Double_Window.H>
>> #include <FL/Fl_Button.H>
>> #include <FL/names.h>
>>
>> #define IDLE_CHECK_TIME 5.0
>>
>>
>> /*****************************************************************************/
>> /* This class provides an idle-detecting window */
>> class idle_win : public Fl_Double_Window {
>>        int handle(int event);
>>
>> public:
>>        idle_win(int w, int h, const char *L);
>>
>>    unsigned had_events;
>> };
>>
>>
>> /*****************************************************************************/
>> /* Constructor */
>> idle_win::idle_win(int w, int h, const char *L) : Fl_Double_Window(w,h,L){
>>    had_events = 0;
>> } // Constructor
>>
>>
>> /*****************************************************************************/
>> int idle_win::handle(int ev) {
>>
>>        switch(ev) {
>>        case FL_ENTER:
>>        case FL_MOVE:
>>        case FL_LEAVE:
>>        case FL_PUSH:
>>        case FL_DRAG:
>>        case FL_RELEASE:
>>        // and some other events?
>>        had_events ++;
>>                break;
>>
>>        default:
>>                break;
>>        }
>> //    printf("%6d - %s\n", had_events, fl_eventnames[ev]);fflush(stdout);
>>        // call the base class event handler
>>        return Fl_Double_Window::handle(ev);
>> } // handle
>>
>>
>> /*****************************************************************************/
>> // The main window for the demo
>> static idle_win *main_window = NULL;
>>
>>
>> /*****************************************************************************/
>> static void check_for_idle(void *) {
>>    static unsigned last_check = 0;
>>    static unsigned ticks = 0;
>>    static unsigned idle_count = 0;
>>
>>    ticks++;
>>    if(last_check == main_window->had_events)
>>    {
>>        printf("May be idle %d\n", ticks); fflush(stdout);
>>        idle_count++;
>>    }
>>    else
>>    {
>>        idle_count = 0;
>>        last_check = main_window->had_events;
>>    }
>>
>>    // are we idle for too long?
>>    if(idle_count > 5) // exit now...
>>    {
>>        main_window->hide();
>>    }
>>        // repeat the delay
>>        Fl::repeat_timeout(IDLE_CHECK_TIME, check_for_idle);
>> } // check_for_idle
>>
>>
>> /*****************************************************************************/
>> static void do_exit(Fl_Button *, void *v) {
>>    main_window->hide();
>> } // do_exit
>>
>> /*****************************************************************************/
>> int main (int argc, char **argv) {
>>        // create the main window
>>        main_window = new idle_win(600, 600, "Idle Demo");
>>        main_window->begin();
>>
>>    Fl_Button *b1 = new Fl_Button(100, 100, 60, 30, "A button");
>>
>>    Fl_Button *b2 = new Fl_Button(530, 560, 60, 30, "Exit");
>>    b2->callback((Fl_Callback *)do_exit);
>>        main_window->end();
>>        // show the app
>>        main_window->show(argc, argv);
>>        // add a timer to detect inactivity
>>        Fl::add_timeout(IDLE_CHECK_TIME, check_for_idle);
>>        // start the fltk loop
>>        return Fl::run();
>> } // main
>>
>> /* end of file */
>>
>> --------------------
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> SELEX Galileo Ltd
>> Registered Office: Sigma House, Christopher Martin Road, Basildon, Essex
>> SS14 3EL
>> A company registered in England & Wales.  Company no. 02426132
>> ********************************************************************
>> This email and any attachments are confidential to the intended
>> recipient and may also be privileged. If you are not the intended
>> recipient please delete it from your system and notify the sender.
>> You should not copy it or use it for any purpose nor disclose or
>> distribute its contents to any other person.
>> ********************************************************************
>>
>> _______________________________________________
>> fltk mailing list
>> [email protected]
>> http://lists.easysw.com/mailman/listinfo/fltk
>>
>
>
>
> --
> *
> Thanks & Regards,
> Rajesh Kumar P
> *
>
>


-- 
*
Thanks & Regards,
Rajesh Kumar P
*
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to