rework camera/projector tool_guis, add horz tumbler orient, update es.po
[goodguy/cinelerra.git] / cinelerra-5.1 / guicast / bctumble.C
index 1a807d4d4be048eae5f1e6c4fe3bd0242c3ad2f3..a605630034e53f9286a03ea55bd64a6bcf264bb6 100644 (file)
@@ -33,7 +33,7 @@
 #define TUMBLETOP_DN 3
 #define TOTAL_STATES 4
 
-BC_Tumbler::BC_Tumbler(int x, int y, VFrame **data)
+BC_Tumbler::BC_Tumbler(int x, int y, VFrame **data, int orient)
  : BC_SubWindow(x, y, 0, 0, -1)
 {
        for(int i = 0; i < TOTAL_STATES; i++)
@@ -41,6 +41,7 @@ BC_Tumbler::BC_Tumbler(int x, int y, VFrame **data)
        status = TUMBLE_UP;
        repeat_count = 0;
        this->data = data;
+       this->orient = orient;
 }
 
 
@@ -51,24 +52,23 @@ BC_Tumbler::~BC_Tumbler()
 }
 
 
-int BC_Tumbler::calculate_w()
+int BC_Tumbler::calculate_w(VFrame **data)
 {
-       return BC_WindowBase::get_resources()->tumble_data[0]->get_w();
+       VFrame **vfrms = data ? data : BC_WindowBase::get_resources()->tumble_data;
+       return vfrms[0]->get_w();
 }
 
-int BC_Tumbler::calculate_h()
+int BC_Tumbler::calculate_h(VFrame **data)
 {
-       return BC_WindowBase::get_resources()->tumble_data[0]->get_h();
+       VFrame **vfrms = data ? data : BC_WindowBase::get_resources()->tumble_data;
+       return vfrms[0]->get_h();
 }
 
 
 int BC_Tumbler::initialize()
 {
 // Get the image
-       if(data)
-               set_images(data);
-       else
-               set_images(get_resources()->tumble_data);
+       set_images(data ? data : get_resources()->tumble_data);
        w = images[TUMBLE_UP]->get_w();
        h = images[TUMBLE_UP]->get_h();
 
@@ -82,9 +82,6 @@ int BC_Tumbler::initialize()
 
 int BC_Tumbler::reposition_window(int x, int y, int w, int h)
 {
-       if (w > 0 || h > 0)
-               printf("BC_Tumbler::reposition_window - w & h haven't been implemented yet!! (probably never will be)");
-
        BC_WindowBase::reposition_window(x, y);
        draw_face(0);
        return 0;
@@ -101,12 +98,10 @@ int BC_Tumbler::update_bitmaps(VFrame **data)
 
 int BC_Tumbler::set_images(VFrame **data)
 {
-       for(int i = 0; i < TOTAL_STATES; i++)
-       {
-               if(images[i]) delete images[i];
+       for(int i = 0; i < TOTAL_STATES; ++i ) {
+               if( images[i] ) delete images[i];
                images[i] = new BC_Pixmap(parent_window, data[i], PIXMAP_ALPHA);
        }
-
        return 0;
 }
 
@@ -121,46 +116,28 @@ int BC_Tumbler::draw_face(int flush)
 int BC_Tumbler::repeat_event(int64_t duration)
 {
 //printf("BC_Tumbler::repeat_event 1 %d\n", duration);
-       if(duration == top_level->get_resources()->tooltip_delay)
-       {
-               if(tooltip_text && tooltip_text[0] != 0 &&
-                       status == TUMBLE_UPHI)
-               {
+       if( duration == top_level->get_resources()->tooltip_delay ) {
+               if( tooltip_text && tooltip_text[0] != 0 && status == TUMBLE_UPHI ) {
                        show_tooltip();
                        return 1;
                }
        }
-       else
-       if(duration == top_level->get_resources()->tumble_duration)
-       {
+       else if( duration == top_level->get_resources()->tumble_duration ) {
 //printf("BC_Tumbler::repeat_event 2\n");
-               repeat_count++;
 // delay the 1st repeat
-               if(repeat_count > 1 && repeat_count < 5) return 0;
-               if(status == TUMBLETOP_DN)
-               {
-                       handle_up_event();
-                       return 1;
-               }
-               else
-               if(status == TUMBLEBOTTOM_DN)
-               {
-                       handle_down_event();
-                       return 1;
-               }
+               if( ++repeat_count > 1 && repeat_count < 5 ) return 0;
+               if( status == TUMBLETOP_DN ) { handle_up_event(); return 1; }
+               if( status == TUMBLEBOTTOM_DN) { handle_down_event(); return 1; }
        }
        return 0;
 }
 
 int BC_Tumbler::cursor_enter_event()
 {
-       if(top_level->event_win == win)
-       {
-               if(! top_level->button_down && status == TUMBLE_UP)
-               {
-                       status = TUMBLE_UPHI;
-                       draw_face(1);
-               }
+       if( top_level->event_win != win ) return 0;
+       if( !top_level->button_down && status == TUMBLE_UP ) {
+               status = TUMBLE_UPHI;
+               draw_face(1);
        }
        return 0;
 }
@@ -168,8 +145,7 @@ int BC_Tumbler::cursor_enter_event()
 int BC_Tumbler::cursor_leave_event()
 {
        hide_tooltip();
-       if(status == TUMBLE_UPHI)
-       {
+       if( status == TUMBLE_UPHI ) {
                status = TUMBLE_UP;
                draw_face(1);
        }
@@ -179,62 +155,39 @@ int BC_Tumbler::cursor_leave_event()
 int BC_Tumbler::button_press_event()
 {
        hide_tooltip();
-       if(top_level->event_win == win)
-       {
+       if( top_level->event_win != win ) return 0;
 //printf("BC_Tumbler::button_press_event 1 %d\n", get_buttonpress());
-               if(get_buttonpress() == 4)
-               {
-                       status = TUMBLETOP_DN;
-                       draw_face(1);
-                       handle_up_event();
-//                     repeat_count = 0;
-//                     repeat_event(top_level->get_resources()->tumble_duration);
-               }
-               else
-               if(get_buttonpress() == 5)
-               {
+       if( get_buttonpress() == WHEEL_UP ) {
+               status = TUMBLETOP_DN;
+               draw_face(1);
+               handle_up_event();
+       }
+       else if( get_buttonpress() == WHEEL_DOWN ) {
                        status = TUMBLEBOTTOM_DN;
                        draw_face(1);
                        handle_down_event();
-//                     repeat_count = 0;
-//                     repeat_event(top_level->get_resources()->tumble_duration);
                }
-               else
-               {
-                       if(top_level->cursor_y < get_h() / 2)
-                       {
-                               status = TUMBLETOP_DN;
-                       }
-                       else
-                       {
-                               status = TUMBLEBOTTOM_DN;
-                       }
-
-                       draw_face(1);
+       else {
+               status = orient == TUMBLER_HORZ ?
+                       top_level->cursor_x > get_w()/2 ? TUMBLETOP_DN : TUMBLEBOTTOM_DN :
+                       top_level->cursor_y < get_h()/2 ? TUMBLETOP_DN : TUMBLEBOTTOM_DN ;
+               draw_face(1);
 
-                       top_level->set_repeat(top_level->get_resources()->tumble_duration);
-                       repeat_count = 0;
-                       repeat_event(top_level->get_resources()->tumble_duration);
+               top_level->set_repeat(top_level->get_resources()->tumble_duration);
+               repeat_count = 0;
+               repeat_event(top_level->get_resources()->tumble_duration);
 //printf("BC_Tumbler::button_press_event 2 %d\n", get_buttonpress());
-               }
-               return 1;
        }
-       return 0;
+       return 1;
 }
 
 int BC_Tumbler::button_release_event()
 {
        hide_tooltip();
-       if(top_level->event_win == win)
-       {
-               if(status == TUMBLEBOTTOM_DN || status == TUMBLETOP_DN)
-               {
-                       top_level->unset_repeat(top_level->get_resources()->tumble_duration);
-                       if(cursor_inside())
-                               status = TUMBLE_UPHI;
-                       else
-                               status = TUMBLE_UP;
-               }
+       if( top_level->event_win != win ) return 0;
+       if( status == TUMBLEBOTTOM_DN || status == TUMBLETOP_DN ) {
+               top_level->unset_repeat(top_level->get_resources()->tumble_duration);
+               status = cursor_inside() ? TUMBLE_UPHI : TUMBLE_UP;
                draw_face(1);
        }
        return 0;
@@ -242,10 +195,9 @@ int BC_Tumbler::button_release_event()
 
 int BC_Tumbler::cursor_motion_event()
 {
-       if(top_level->button_down && top_level->event_win == win &&
-               !cursor_inside() &&
-               !(status == TUMBLETOP_DN || status == TUMBLEBOTTOM_DN))
-       {
+       if( top_level->event_win != win ) return 0;
+       if( top_level->button_down && !cursor_inside() &&
+           !(status == TUMBLETOP_DN || status == TUMBLEBOTTOM_DN) ) {
                status = TUMBLE_UP;
                draw_face(1);
        }