Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2005-05-08 15:24:46 +0400
committerTon Roosendaal <ton@blender.org>2005-05-08 15:24:46 +0400
commit744bb6f19a4e0679bc047c0311a187d2121eb23b (patch)
tree25bcc2bddff5431ba5c373196e036070cff53bfa /source/blender/src/edittime.c
parent74ec3d4f51909bc998cce63a300b5488e97c3f5e (diff)
UI goodies & cleanup
- TimeLine: Marker grabbing works now. Use GKEY or select+drag, as usual Holding CTRL will step with 1 second (corrected for ntsc dudes yes!) Also added this in header pulldown - Time values and Time grid draw fixed for Seconds display. It used to draw steps of 2/5/10/20/50/100 etc. frames. Now does steps in seconds. Again corrected for "Frames/Sec" value. - "Frames/Sec" button redraws TimeLine, Secquencer, etc - Bug fixed in editing Theme for TimeLine (was editing Image Select...) - Added Grid color to Theme choices for Ipo, TimeLine, Sequencer, NLA, Action, Sound. Was missing!
Diffstat (limited to 'source/blender/src/edittime.c')
-rw-r--r--source/blender/src/edittime.c105
1 files changed, 102 insertions, 3 deletions
diff --git a/source/blender/src/edittime.c b/source/blender/src/edittime.c
index d611d1d6422..165ea53480b 100644
--- a/source/blender/src/edittime.c
+++ b/source/blender/src/edittime.c
@@ -69,6 +69,8 @@
#include "BSE_headerbuttons.h"
#include "BSE_time.h"
+#include "BDR_editobject.h"
+
#include "blendef.h"
#include "mydevice.h"
@@ -328,6 +330,101 @@ void timeline_frame_to_center(void)
scrarea_queue_winredraw(curarea);
}
+void timeline_grab(int mode, int smode) // mode and smode unused here, for callback
+{
+ SpaceTime *stime= curarea->spacedata.first;
+ TimeMarker *marker, *selmarker=NULL;
+ float dx, fac;
+ int a, ret_val= 0, totmark=0, *oldframe, offs, firsttime=1;
+ unsigned short event;
+ short val, pmval[2], mval[2];
+ char str[32];
+
+ for(marker= G.scene->markers.first; marker; marker= marker->next) {
+ if(marker->flag & SELECT) totmark++;
+ }
+ if(totmark==0) return;
+
+ oldframe= MEM_mallocN(totmark*sizeof(int), "marker array");
+ for(a=0, marker= G.scene->markers.first; marker; marker= marker->next) {
+ if(marker->flag & SELECT) {
+ oldframe[a]= marker->frame;
+ selmarker= marker; // used for hederprint
+ a++;
+ }
+ }
+
+ dx= G.v2d->mask.xmax-G.v2d->mask.xmin;
+ dx= (G.v2d->cur.xmax-G.v2d->cur.xmin)/dx;
+
+ getmouseco_areawin(pmval);
+
+ while(ret_val == 0) {
+
+ getmouseco_areawin(mval);
+
+ if (mval[0] != pmval[0] || firsttime) {
+ firsttime= 0;
+
+ fac= (((float)(mval[0] - pmval[0]))*dx);
+
+ apply_keyb_grid(&fac, 0.0, (float)G.scene->r.frs_sec, 0.1*(float)G.scene->r.frs_sec, 0);
+ offs= (int)fac;
+
+ for(a=0, marker= G.scene->markers.first; marker; marker= marker->next) {
+ if(marker->flag & SELECT) {
+ marker->frame= oldframe[a] + offs;
+ a++;
+ }
+ }
+
+ if(totmark==1) { // we print current marker value
+ if(stime->flag & TIME_DRAWFRAMES)
+ sprintf(str, "Marker %d offset %d", selmarker->frame, offs);
+ else
+ sprintf(str, "Marker %.2f offset %.2f", (selmarker->frame/(float)G.scene->r.frs_sec), (offs/(float)G.scene->r.frs_sec));
+ }
+ else {
+ if(stime->flag & TIME_DRAWFRAMES)
+ sprintf(str, "Marker offset %d ", offs);
+ else
+ sprintf(str, "Marker offset %.2f ", (offs/(float)G.scene->r.frs_sec));
+ }
+ headerprint(str);
+
+ force_draw(0); // areas identical to this, 0 = no header
+ }
+
+ /* essential for idling subloop */
+ if( qtest()==0) PIL_sleep_ms(2);
+
+ /* emptying queue and reading events */
+ while( qtest() ) {
+ event= extern_qread(&val);
+
+ if(val) {
+ if(event==ESCKEY || event==RIGHTMOUSE) ret_val= 2;
+ else if(event==LEFTMOUSE || event==RETKEY || event==SPACEKEY) ret_val= 1;
+ }
+ }
+ }
+
+ /* restore? */
+ if(ret_val==2) {
+ for(a=0, marker= G.scene->markers.first; marker; marker= marker->next) {
+ if(marker->flag & SELECT) {
+ marker->frame= oldframe[a];
+ a++;
+ }
+ }
+ }
+ else {
+ BIF_undo_push("Move Markers");
+ }
+ MEM_freeN(oldframe);
+ allqueue(REDRAWTIME, 0);
+}
+
/* ***************************** */
/* Right. Now for some implementation: */
@@ -396,8 +493,9 @@ void winqreadtimespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
select_timeline_marker_frame(cfra, 1);
else
select_timeline_marker_frame(cfra, 0);
-
- doredraw= 1;
+
+ force_draw(0);
+ std_rmouse_transform(timeline_grab);
break;
case MIDDLEMOUSE:
@@ -450,7 +548,8 @@ void winqreadtimespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
case CKEY:
timeline_frame_to_center();
break;
- case GKEY: /* move marker ... not yet implemented */
+ case GKEY: /* move marker */
+ timeline_grab('g', 0);
break;
case EKEY: /* set end frame */
G.scene->r.efra = CFRA;