Changeset 492

Show
Ignore:
Timestamp:
03/17/2008 10:36:04 (5 months ago)
Author:
why
Message:
  • shoes/canvas.c: introducing start and finish which are sort of like html's load and unload.
Location:
trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/lib/shoes/cache.rb

    r489 r492  
    7979          para "", :size => 10, :margin => 0, :margin_top => 8, :width => 220 
    8080          progress :width => 1.0, :top => 80 
    81         end 
    82         Thread.start(self) do |app| 
    83           begin 
    84             sleep(1) until app.started? 
    85             setup.start 
    86           rescue => e 
    87             puts e.message 
     81 
     82          start do 
     83            Thread.start(self) do |app| 
     84              begin 
     85                sleep(1) until app.started? 
     86                setup.start 
     87              rescue => e 
     88                puts e.message 
     89              end 
     90            end 
    8891          end 
    8992        end 
  • trunk/shoes/canvas.c

    r483 r492  
    365365  rb_gc_mark_maybe(canvas->motion); 
    366366  rb_gc_mark_maybe(canvas->keypress); 
     367  rb_gc_mark_maybe(canvas->start); 
     368  rb_gc_mark_maybe(canvas->finish); 
    367369  rb_gc_mark_maybe(canvas->attr); 
    368370  rb_gc_mark_maybe(canvas->parent); 
     
    382384  SHOE_MEMZERO(canvas, shoes_canvas, 1); 
    383385  canvas->app = NULL; 
     386  canvas->stage = CANVAS_NADA; 
    384387  canvas->width = 0; 
    385388  canvas->height = 0; 
     
    441444  canvas->release = Qnil; 
    442445  canvas->keypress = Qnil; 
     446  canvas->start = Qnil; 
     447  canvas->finish = Qnil; 
    443448#ifdef SHOES_GTK 
    444449  canvas->radios = NULL; 
     
    14331438    if (self_t->cr == canvas->cr) 
    14341439      self_t->cr = NULL; 
    1435   } 
     1440 
     1441    if (canvas->stage == CANVAS_NADA) 
     1442    { 
     1443      canvas->stage = CANVAS_STARTED; 
     1444      if (!NIL_P(self_t->start)) 
     1445      { 
     1446        shoes_safe_block(self, self_t->start, rb_ary_new()); 
     1447      } 
     1448    } 
     1449  } 
     1450 
    14361451  return self; 
    14371452} 
     
    16821697EVENT_HANDLER(motion); 
    16831698EVENT_HANDLER(keypress); 
     1699EVENT_HANDLER(start); 
     1700EVENT_HANDLER(finish); 
    16841701 
    16851702static VALUE 
  • trunk/shoes/canvas.h

    r483 r492  
    207207#endif 
    208208} shoes_timer; 
     209 
     210#define CANVAS_NADA    0 
     211#define CANVAS_STARTED 1 
     212#define CANVAS_REMOVED 2 
    209213 
    210214// 
     
    224228  VALUE attr; 
    225229  VALUE click, release,     // canvas-level event handlers 
    226     motion, keypress; 
     230    motion, keypress, 
     231    start, finish; 
     232  unsigned char stage; 
    227233  double sw;                // current stroke-width 
    228234  int cx, cy;               // cursor x and y (stored in absolute coords) 
     
    349355VALUE shoes_canvas_toggle(VALUE); 
    350356VALUE shoes_canvas_mouse(VALUE); 
     357VALUE shoes_canvas_start(int, VALUE *, VALUE); 
     358VALUE shoes_canvas_finish(int, VALUE *, VALUE); 
    351359VALUE shoes_canvas_click(int, VALUE *, VALUE); 
    352360VALUE shoes_canvas_release(int, VALUE *, VALUE); 
  • trunk/shoes/ruby.h

    r482 r492  
    172172  f("show", show, 0); \ 
    173173  f("toggle", toggle, 0); \ 
     174  f("start", start, -1); \ 
     175  f("finish", finish, -1); \ 
    174176  f("click", click, -1); \ 
    175177  f("release", release, -1); \