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

