/[enigma]/enigma/gui.cc
ViewVC logotype

Diff of /enigma/gui.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by dheck, Sun Nov 3 14:03:34 2002 UTC revision 1.8 by dheck, Wed Dec 4 19:52:03 2002 UTC
# Line 43  Widget::redraw() Line 43  Widget::redraw()
43  // Button implementation  // Button implementation
44  //----------------------------------------  //----------------------------------------
45  void  void
46  Button::draw(px::GC &gc)  Button::draw(px::GC &gc, const px::Rect &r)
47  {  {
48      char bordername[50];      char bordername[50];
49      sprintf(bordername, "b%dx%d%s", get_w(), get_h(),      sprintf(bordername, "b%dx%d%s", get_w(), get_h(),
# Line 53  Button::draw(px::GC &gc) Line 53  Button::draw(px::GC &gc)
53  }  }
54    
55    
56  void Image::draw (px::GC &gc)  void Image::draw (px::GC &gc, const px::Rect &r)
57  {  {
58      if (px::Surface *s = enigma::GetImage(imgname.c_str()))      if (px::Surface *s = enigma::GetImage(imgname.c_str()))
59          blit(gc, get_x(), get_y(), s);          blit(gc, get_x(), get_y(), s);
# Line 81  Container::add_child (Widget *w) Line 81  Container::add_child (Widget *w)
81    
82    
83  void  void
84  Container::draw (px::GC& gc)  Container::draw (px::GC& gc, const px::Rect &r)
85  {  {
86      for (iterator i=begin(); i!=end(); ++i) {      for (iterator i=begin(); i!=end(); ++i) {
87          Widget *w = *i;          Widget *w = *i;
88          w->draw(gc);          Rect rr = intersect(r, w->get_area());
89            clip(gc, rr);
90            w->draw(gc,rr);
91      }      }
92  }  }
93    
# Line 141  TextButton::TextButton(const string &t, Line 143  TextButton::TextButton(const string &t,
143      : text(t), pressed(false), listener(al)      : text(t), pressed(false), listener(al)
144  {  {
145      if (menufont == 0) {      if (menufont == 0) {
146          menufont = enigma::GetFont("menufont");          menufont = enigma::GetFont("labelfont"); //menufont");
147          menufont_pressed = enigma::GetFont("menufontsel");          menufont_pressed = enigma::GetFont("menufontsel");
148      }      }
149  }  }
# Line 153  TextButton::set_text(const std::string & Line 155  TextButton::set_text(const std::string &
155      redraw();      redraw();
156  }  }
157    
158  void  bool
159  TextButton::on_event(const SDL_Event &e)  TextButton::on_event(const SDL_Event &e)
160  {  {
161      switch (e.type) {      switch (e.type) {
162      case SDL_MOUSEBUTTONDOWN:      case SDL_MOUSEBUTTONDOWN:
163          pressed=true;          pressed=true;
164          redraw();          redraw();
165          break;          return true;
166      case SDL_MOUSEBUTTONUP:      case SDL_MOUSEBUTTONUP:
167          if (pressed)          if (pressed)
168          {          {
# Line 170  TextButton::on_event(const SDL_Event &e) Line 172  TextButton::on_event(const SDL_Event &e)
172              if (listener)              if (listener)
173                  listener->on_action(this);                  listener->on_action(this);
174          }          }
175          break;          return true;
176      default:      default:
177          break;          return false;
178      }      }
179  }  }
180    
181  void  void
182  TextButton::draw(px::GC &gc)  TextButton::draw(px::GC &gc, const px::Rect &r)
183  {  {
184      Button::draw(gc);      Button::draw(gc,r);
185      Font *f = pressed ? menufont_pressed : menufont;      Font *f = pressed ? menufont_pressed : menufont;
186      int h = f->get_height();      int h = f->get_height();
187      int w = f->get_width(text.c_str());      int w = f->get_width(text.c_str());
# Line 208  Menu::invalidate_all() Line 210  Menu::invalidate_all()
210  }  }
211    
212    
213  void  bool
214  Menu::manage(px::Screen *scr)  Menu::manage(px::Screen *scr)
215  {  {
216      screen=scr;      screen=scr;
217      draw_all(scr);      draw_all(scr);
218      quit_menu=false;      quitp=abortp=false;
219      while (!quit_menu) {      while (!(quitp || abortp)) {
220          screen->flush_updates();          screen->flush_updates();
221          SDL_Event e;          SDL_Event e;
222          while (SDL_PollEvent(&e)) {          while (SDL_PollEvent(&e)) {
# Line 229  Menu::manage(px::Screen *scr) Line 231  Menu::manage(px::Screen *scr)
231          }          }
232          SDL_Delay(10);          SDL_Delay(10);
233      }      }
234        return !abortp;
235  }  }
236    
237  void  void
238  Menu::handle_event(const SDL_Event &e)  Menu::handle_event(const SDL_Event &e)
239  {  {
240      on_event(e);      if (on_event(e))
241            return;
242        
243      switch (e.type) {      switch (e.type) {
244      case SDL_QUIT:      case SDL_QUIT:
245          quit_menu=true;          abort();
246          break;          break;
247      case SDL_MOUSEMOTION:      case SDL_MOUSEMOTION:
248          track_active_widget( e.motion.x, e.motion.y );          track_active_widget( e.motion.x, e.motion.y );
249          break;          break;
250      case SDL_KEYDOWN:      case SDL_KEYDOWN:
251          if (e.key.keysym.sym == SDLK_ESCAPE) {          if (e.key.keysym.sym == SDLK_ESCAPE) {
252              quit_menu=true;              abort();
253          }          }
254          else if (active_widget) {          else if (active_widget) {
255              active_widget->on_event(e);              active_widget->on_event(e);
# Line 252  Menu::handle_event(const SDL_Event &e) Line 257  Menu::handle_event(const SDL_Event &e)
257          break;          break;
258      case SDL_MOUSEBUTTONDOWN:      case SDL_MOUSEBUTTONDOWN:
259      case SDL_MOUSEBUTTONUP:      case SDL_MOUSEBUTTONUP:
     default:  
260          track_active_widget( e.button.x, e.button.y );          track_active_widget( e.button.x, e.button.y );
261          if (active_widget) active_widget->on_event(e);          if (active_widget) active_widget->on_event(e);
262          break;          break;
263        default:
264            if (active_widget) active_widget->on_event(e);
265      }      }
266  }  }
267    
# Line 310  Menu::redraw_area(const px::Rect &r) Line 316  Menu::redraw_area(const px::Rect &r)
316      clip(gc, r);      clip(gc, r);
317      draw_background(gc);      draw_background(gc);
318    
319      Container::draw(gc);      Container::draw(gc,r);
320    
321      screen->update_rect(r);      screen->update_rect(r);
322      video::ShowMouse();      video::ShowMouse();

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26