inlib  1.2.0
Public Member Functions | Protected Member Functions
inlib::sg::ui Class Reference

List of all members.

Public Member Functions

virtual void win_render ()=0
virtual bool stop_works ()
 ui ()
virtual ~ui ()
bool to_exit () const
void set_to_exit ()
void add_work (inlib::sg::cbk *a_work)
bool remove_works (const std::string &a_class)
bool has_work (const std::string &a_class) const
void do_works ()
unsigned int num_cbks () const
const std::vector
< inlib::sg::cbk * > & 
cbks () const

Protected Member Functions

 ui (const ui &a_from)
uioperator= (const ui &a_from)

Detailed Description

Definition at line 14 of file ui.


Constructor & Destructor Documentation

inlib::sg::ui::ui ( ) [inline]

Definition at line 19 of file ui.

:m_to_exit(false){}
virtual inlib::sg::ui::~ui ( ) [inline, virtual]

Definition at line 20 of file ui.

{clear();}
inlib::sg::ui::ui ( const ui a_from) [inline, protected]

Definition at line 22 of file ui.

                      :m_to_exit(a_from.m_to_exit){
    copy_cbks(a_from);
  }

Member Function Documentation

void inlib::sg::ui::add_work ( inlib::sg::cbk a_work) [inline]

Definition at line 34 of file ui.

                                    {
    m_cbks.push_back(a_work); //we take ownership of a_work.
  }
const std::vector<inlib::sg::cbk*>& inlib::sg::ui::cbks ( ) const [inline]

Definition at line 169 of file ui.

{return m_cbks;}
void inlib::sg::ui::do_works ( ) [inline]

Definition at line 60 of file ui.

                  {
    //WARNING : the below (*it)->action() may touch m_cbks.

    //bool to_dump = false;
    //if(m_cbks.size()) to_dump = true;
    //if(to_dump) 
    //  std::cout << "debug : zzzz : begin " << m_cbks.size() << std::endl;

    std::vector<inlib::sg::cbk*> to_do = m_cbks;
   {std::vector<inlib::sg::cbk*>::iterator it;
    for(it=to_do.begin();it!=to_do.end();++it) {
      if(is_in_m_cbks(*it)) {
        //do a copy in case (*it)->action() indirectly deletes (*it) !
        inlib::sg::cbk* cbk = (*it)->copy();
        bool to_render = (cbk->action()==cbk::return_to_render?true:false);
        if(cbk->is_single_shoot()) {
          //NOTE : cbk->action() may raise "single_shoot" on cbk. We have
          //       to report that to the original (*it) callback.
          //       This happens with gui_viewer::jpeg_read_work.
          (*it)->set_single_shoot(true);
        }
        delete cbk;
        if(to_render) win_render();
      }
    }}

   {std::vector<inlib::sg::cbk*>::iterator it;
    for(it=to_do.begin();it!=to_do.end();++it) {
      if(is_in_m_cbks(*it)) {
        inlib::sg::cbk* cbk = *it;
        if(cbk->is_single_shoot()) {
          delete cbk;
          std::vector<inlib::sg::cbk*>::iterator it2;
          for(it2=m_cbks.begin();it2!=m_cbks.end();) {
            if(cbk==(*it2)) {
              it2 = m_cbks.erase(it2);
            } else {
              it2++;
            }
          }
        }
      }
    }}

    //if(to_dump) 
    //  std::cout << "debug : zzzz : end " << m_cbks.size() << std::endl;
  }
bool inlib::sg::ui::has_work ( const std::string &  a_class) const [inline]

Definition at line 50 of file ui.

                                                {
    std::vector<inlib::sg::cbk*>::const_iterator it;
    for(it=m_cbks.begin();it!=m_cbks.end();++it) {
      if((*it)->cast(a_class)) {
        return true;
      }
    }
    return false;
  }
unsigned int inlib::sg::ui::num_cbks ( ) const [inline]

Definition at line 168 of file ui.

{return m_cbks.size();}
ui& inlib::sg::ui::operator= ( const ui a_from) [inline, protected]

Definition at line 25 of file ui.

                                 {
    m_to_exit = a_from.m_to_exit;
    copy_cbks(a_from);
    return *this;
  }
bool inlib::sg::ui::remove_works ( const std::string &  a_class) [inline]

Definition at line 37 of file ui.

                                              {
    std::vector<inlib::sg::cbk*>::iterator it;
    for(it=m_cbks.begin();it!=m_cbks.end();) {
      inlib::sg::cbk* cbk = *it;
      if(cbk->cast(a_class)) {
        it = m_cbks.erase(it);        
        delete cbk;
      } else {
        ++it;
      }
    }
    return true;
  }
void inlib::sg::ui::set_to_exit ( ) [inline]

Definition at line 32 of file ui.

{m_to_exit = true;}
virtual bool inlib::sg::ui::stop_works ( ) [inline, virtual]

Definition at line 17 of file ui.

{return false;}
bool inlib::sg::ui::to_exit ( ) const [inline]

Definition at line 31 of file ui.

{return m_to_exit;}
virtual void inlib::sg::ui::win_render ( ) [pure virtual]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines