Revision: 17789
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17789
Author:   ton
Date:     2008-12-11 16:38:16 +0100 (Thu, 11 Dec 2008)

Log Message:
-----------
2.5

TimeLine window pulldowns work sorta (for the options that were coded :)

Still trying to bring back code without recoding uiDefButs. In future these
will get directly operator stuff linked. For time being made a simple 
operator call function, like:

WM_operator_call(C, "ED_MARKER_OT_add");

and for forcing operator to run in the main region-window:

WM_operator_call_rwin(C, "ED_MARKER_OT_add");

These calls also work for modal operators, like marker grab in this case.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/ED_util.h
    branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
    branches/blender2.5/blender/source/blender/editors/interface/view2d.c
    branches/blender2.5/blender/source/blender/editors/space_time/time_header.c
    branches/blender2.5/blender/source/blender/editors/util/ed_util.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
    
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_util.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_util.h        
2008-12-11 14:59:57 UTC (rev 17788)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_util.h        
2008-12-11 15:38:16 UTC (rev 17789)
@@ -34,8 +34,8 @@
 #define YIC 20
 
 void apply_keyb_grid(float *val, float fac1, float fac2, float fac3, int 
invert);
-
 int GetButStringLength(char *str);
+char *windowtype_pup(void);
 
 #endif /* ED_UTIL_H */
 

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h      
2008-12-11 14:59:57 UTC (rev 17788)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h      
2008-12-11 15:38:16 UTC (rev 17789)
@@ -115,6 +115,7 @@
 
 /* utilities */
 struct View2D *UI_view2d_fromcontext(const struct bContext *C);
+struct View2D *UI_view2d_fromcontext_rwin(const struct bContext *C);
 void UI_view2d_getscale(struct View2D *v2d, float *x, float *y);
 
 

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d.c       
2008-12-11 14:59:57 UTC (rev 17788)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c       
2008-12-11 15:38:16 UTC (rev 17789)
@@ -1226,6 +1226,22 @@
        return &(C->region->v2d);
 }
 
+/* same as above, but it returns regionwindow. Utility for pulldowns or 
buttons */
+View2D *UI_view2d_fromcontext_rwin(const bContext *C)
+{
+       if (C->area == NULL) return NULL;
+       if (C->region == NULL) return NULL;
+       if (C->region->regiontype!=RGN_TYPE_WINDOW) {
+               ARegion *ar= C->area->regionbase.first;
+               for(; ar; ar= ar->next)
+                       if(ar->regiontype==RGN_TYPE_WINDOW)
+                               return &(ar->v2d);
+               return NULL;
+       }
+       return &(C->region->v2d);
+}
+
+
 /* Calculate the scale per-axis of the drawing-area
  *     - Is used to inverse correct drawing of icons, etc. that need to follow 
view 
  *       but not be affected by scale

Modified: 
branches/blender2.5/blender/source/blender/editors/space_time/time_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_time/time_header.c 
2008-12-11 14:59:57 UTC (rev 17788)
+++ branches/blender2.5/blender/source/blender/editors/space_time/time_header.c 
2008-12-11 15:38:16 UTC (rev 17789)
@@ -62,93 +62,7 @@
 
 /* ************************ header time area region *********************** */
 
-static void start_animated_screen(SpaceTime *stime)
-{
-// XXX add_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM, stime->redraws);
-       
-//     if(stime->redraws & TIME_WITH_SEQ_AUDIO)
-//             audiostream_start( CFRA );
-       
-//     BKE_ptcache_set_continue_physics((stime->redraws & 
TIME_CONTINUE_PHYSICS));
-}
 
-static void end_animated_screen(SpaceTime *stime)
-{
-//     rem_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM);
-       
-//     audiostream_stop();
-//     BKE_ptcache_set_continue_physics(0);
-}
-
-#define B_TL_REW               751
-#define B_TL_PLAY              752
-#define B_TL_FF                        753
-#define B_TL_PREVKEY   754
-#define B_TL_NEXTKEY   755
-#define B_TL_STOP              756
-#define B_TL_PREVIEWON 757
-#define B_TL_INSERTKEY 758
-#define B_TL_DELETEKEY 759
-
-void do_time_buttons(bContext *C, void *arg, int event)
-{
-       SpaceTime *stime= C->area->spacedata.first;
-       
-       switch(event) {
-               
-               case B_TL_REW:
-                       CFRA= PSFRA;
-                       //update_for_newframe();
-                       break;
-               case B_TL_PLAY:
-                       start_animated_screen(stime);
-                       break;
-               case B_TL_STOP:
-                       end_animated_screen(stime);
-                       //allqueue(REDRAWALL, 0);
-                       break;
-               case B_TL_FF:
-                       /* end frame */
-                       CFRA= PEFRA;
-                       //update_for_newframe();
-                       break;
-               case B_TL_PREVKEY:
-                       /* previous keyframe */
-                       //nextprev_timeline_key(-1);
-                       break;
-               case B_TL_NEXTKEY:
-                       /* next keyframe */
-                       //nextprev_timeline_key(1);
-                       break;
-                       
-               case B_TL_PREVIEWON:
-                       if (G.scene->r.psfra) {
-                               /* turn on preview range */
-                               G.scene->r.psfra= G.scene->r.sfra;
-                               G.scene->r.pefra= G.scene->r.efra;
-                       }
-                       else {
-                               /* turn off preview range */
-                               G.scene->r.psfra= 0;
-                               G.scene->r.pefra= 0;
-                       }
-                       //BIF_undo_push("Set anim-preview range");
-                       //allqueue(REDRAWALL, 0);
-                       break;
-                       
-               case B_TL_INSERTKEY:
-                       /* insert keyframe */
-                       //common_insertkey();
-                       //allqueue(REDRAWTIME, 1);
-                       break;
-               case B_TL_DELETEKEY:
-                       /* delete keyframe */
-                       //common_deletekey();
-                       //allqueue(REDRAWTIME, 1);
-                       break;
-       }
-}
-
 static void do_time_redrawmenu(bContext *C, void *arg, int event)
 {
        SpaceTime *stime= C->area->spacedata.first;
@@ -162,7 +76,7 @@
        }
        else {
                if(event==1001) {
-//                     button(&G.scene->r.frs_sec,1,120,"FPS:");
+//                     button(&C->scene->r.frs_sec,1,120,"FPS:");
                }
        }
 }
@@ -206,7 +120,7 @@
        
        uiDefBut(block, SEPR, 0, "",        0, yco-=6, menuwidth, 6, NULL, 0.0, 
0.0, 0, 0, "");
        
-       sprintf(str, "Set Frames/Sec (%d/%f)", G.scene->r.frs_sec, 
G.scene->r.frs_sec_base);
+       sprintf(str, "Set Frames/Sec (%d/%f)", C->scene->r.frs_sec, 
C->scene->r.frs_sec_base);
        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, str,       0, yco-=20, 
menuwidth, 19, NULL, 0.0, 0.0, 1, 1001, "");
        
        uiDefBut(block, SEPR, 0, "",        0, yco-=6, menuwidth, 6, NULL, 0.0, 
0.0, 0, 0, "");
@@ -234,6 +148,7 @@
 {
        ScrArea *curarea= C->area;
        SpaceTime *stime= curarea->spacedata.first;
+       View2D *v2d= UI_view2d_fromcontext_rwin(C);
        int first;
        
        switch(event) {
@@ -242,19 +157,21 @@
                        //      start_animated_screen(stime);
                        break;
                case 3: /* View All */
-                       first= G.scene->r.sfra;
-                       if(first >= G.scene->r.efra) first= G.scene->r.efra;
-                               G.v2d->cur.xmin=G.v2d->tot.xmin= (float)first-2;
-                       G.v2d->cur.xmax=G.v2d->tot.xmax= 
(float)G.scene->r.efra+2;
+                       if(v2d) {
+                               first= C->scene->r.sfra;
+                               if(first >= C->scene->r.efra) first= 
C->scene->r.efra;
+                                       v2d->cur.xmin=v2d->tot.xmin= 
(float)first-2;
+                               v2d->cur.xmax=v2d->tot.xmax= 
(float)C->scene->r.efra+2;
                        
-                       //test_view2d(G.v2d, curarea->winx, curarea->winy);
-                       //scrarea_queue_winredraw(curarea);
+                               WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 
0, NULL);
+                       }
                        break;
                case 4: /* Maximize Window */
                        /* using event B_FULL */
                        break;
                case 5: /* show time or frames */
                        stime->flag ^= TIME_DRAWFRAMES;
+                       WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
                        break;
                case 6:
                        //nextprev_marker(1);
@@ -272,21 +189,24 @@
                        //timeline_frame_to_center();
                        break;
                case 11:
-                       //G.v2d->flag ^= V2D_VIEWSYNC_X;
-                       //if(G.v2d->flag & V2D_VIEWSYNC_X)
+                       if(v2d) {
+                       //v2d->flag ^= V2D_VIEWSYNC_X;
+                       //if(v2d->flag & V2D_VIEWSYNC_X)
                        //      view2d_do_locks(curarea, 0);
+                       }
                                break;
                case 12: /* only show keyframes from selected data */
                        stime->flag ^= TIME_ONLYACTSEL;
+                       WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
                        break;
        }
-       //allqueue(REDRAWVIEW3D, 0);
 }
 
 static uiBlock *time_viewmenu(bContext *C, uiMenuBlockHandle *handle, void 
*arg_unused)
 {
        ScrArea *curarea= C->area;
        SpaceTime *stime= curarea->spacedata.first;
+       View2D *v2d= UI_view2d_fromcontext_rwin(C);
        uiBlock *block;
        short yco= 0, menuwidth=120;
        
@@ -317,7 +237,7 @@
        
        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center View|C", 0, 
yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
        uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "View All|Home", 0, 
yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-       uiDefIconTextBut(block, BUTM, 1, (handle->region->v2d.flag & 
V2D_VIEWSYNC_X)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, 
+       uiDefIconTextBut(block, BUTM, 1, (v2d->flag & 
V2D_VIEWSYNC_X)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, 
                                         "Lock Time to Other Windows|", 0, 
yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
        
 //     if (!curarea->full) 
@@ -343,46 +263,41 @@
 {
        switch(event) {
                case 1: /*Set as Start */
-                       if (G.scene->r.psfra) {
-                               if (G.scene->r.pefra < CFRA)
-                                       G.scene->r.pefra= CFRA;
-                               G.scene->r.psfra= CFRA;
+                       if (C->scene->r.psfra) {
+                               if (C->scene->r.pefra < CFRA)
+                                       C->scene->r.pefra= CFRA;
+                               C->scene->r.psfra= CFRA;
                        }                               
                        else
-                               G.scene->r.sfra = CFRA;
-                       //allqueue(REDRAWALL, 1);
+                               C->scene->r.sfra = CFRA;
+                       WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, 
NULL);
                        break;
                case 2: /* Set as End */
-                       if (G.scene->r.psfra) {
-                               if (CFRA < G.scene->r.psfra)
-                                       G.scene->r.psfra= CFRA;
-                               G.scene->r.pefra= CFRA;
+                       if (C->scene->r.psfra) {
+                               if (CFRA < C->scene->r.psfra)
+                                       C->scene->r.psfra= CFRA;
+                               C->scene->r.pefra= CFRA;
                        }                               
                        else
-                               G.scene->r.efra = CFRA;
-                       //allqueue(REDRAWALL, 1);
+                               C->scene->r.efra = CFRA;
+                       WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, 
NULL);
                        break;
                case 3: /* Add Marker */
-                       //add_marker(CFRA);
+                       WM_operator_call_rwin(C, "ED_MARKER_OT_add");
                        break;
                case 4: /* Remove Marker */
-                       //remove_marker();
+                       WM_operator_call_rwin(C, "ED_MARKER_OT_delete");
                        break;
                case 5: /* Rename Marker */
                        //rename_marker();
                        break;
                case 6: /* Grab Marker */
-                       //transform_markers('g', 0);
+                       WM_operator_call_rwin(C, "ED_MARKER_OT_move");
                        break;
                case 7: /* duplicate marker */
-                       //duplicate_marker();
+                       WM_operator_call_rwin(C, "ED_MARKER_OT_duplicate");
                        break;
        }
-       //allqueue(REDRAWTIME, 0);
-       //allqueue(REDRAWIPO, 0);
-       //allqueue(REDRAWACTION, 0);
-       //allqueue(REDRAWNLA, 0);
-       //allqueue(REDRAWSOUND, 0);
 }
 
 static uiBlock *time_framemenu(bContext *C, uiMenuBlockHandle *handle, void 
*arg_unused)
@@ -429,12 +344,104 @@
        return block;
 }
 
+static void start_animated_screen(SpaceTime *stime)
+{
+       // XXX  add_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM, 
stime->redraws);
+       
+       //      if(stime->redraws & TIME_WITH_SEQ_AUDIO)
+       //              audiostream_start( CFRA );
+       
+       //      BKE_ptcache_set_continue_physics((stime->redraws & 
TIME_CONTINUE_PHYSICS));
+}
+
+static void end_animated_screen(SpaceTime *stime)
+{
+       //      rem_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM);
+       
+       //      audiostream_stop();
+       //      BKE_ptcache_set_continue_physics(0);
+}
+
+#define B_REDRAWALL            750
+#define B_TL_REW               751
+#define B_TL_PLAY              752
+#define B_TL_FF                        753
+#define B_TL_PREVKEY   754
+#define B_TL_NEXTKEY   755
+#define B_TL_STOP              756
+#define B_TL_PREVIEWON 757
+#define B_TL_INSERTKEY 758
+#define B_TL_DELETEKEY 759
+
 #define B_NEWSPACE 0
 #define B_FLIPINFOMENU 0

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to