I got one small problem. The method suggested by u is working fine. But it
is failing when user enters input, it is not taking of that situation.
Application is simply exiting. I added WHEN_CHANGED also. Why because I am
using that in input. That means am taking the input value for each and
every character.

I think handler function take care of this situation. can u suggest me what
should I do now???

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

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


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

Reply via email to