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:
Diffstat (limited to 'source/blender/src/header_action.c')
-rw-r--r--source/blender/src/header_action.c120
1 files changed, 120 insertions, 0 deletions
diff --git a/source/blender/src/header_action.c b/source/blender/src/header_action.c
index de4cafbe3ec..0bb18014b4e 100644
--- a/source/blender/src/header_action.c
+++ b/source/blender/src/header_action.c
@@ -83,6 +83,7 @@
#define ACTMENU_VIEW_ALL 4
#define ACTMENU_VIEW_MAXIMIZE 5
#define ACTMENU_VIEW_LOCK 6
+#define ACTMENU_VIEW_SLIDERS 7
#define ACTMENU_SEL_BORDER 0
#define ACTMENU_SEL_ALL_KEYS 1
@@ -118,6 +119,12 @@
#define ACTMENU_KEY_EXTEND_CYCLIC 2
#define ACTMENU_KEY_EXTEND_CYCLICEXTRAPOLATION 3
+#define ACTMENU_MARKERS_ADD 0
+#define ACTMENU_MARKERS_DUPLICATE 1
+#define ACTMENU_MARKERS_DELETE 2
+#define ACTMENU_MARKERS_NAME 3
+#define ACTMENU_MARKERS_MOVE 4
+
void do_action_buttons(unsigned short event)
{
Object *ob= OBACT;
@@ -234,6 +241,9 @@ static void do_action_viewmenu(void *arg, int event)
if(G.v2d->flag & V2D_VIEWLOCK)
view2d_do_locks(curarea, 0);
break;
+ case ACTMENU_VIEW_SLIDERS: /* Show sliders (when applicable) */
+ G.saction->flag ^= SACTION_SLIDERS;
+ break;
case ACTMENU_VIEW_MAXIMIZE: /* Maximize Window */
/* using event B_FULL */
break;
@@ -262,6 +272,14 @@ static uiBlock *action_viewmenu(void *arg_unused)
"Update Automatically|", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1,
ACTMENU_VIEW_AUTOUPDATE, "");
+
+ uiDefBut(block, SEPR, 0, "", 0, yco-=6,
+ menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+
+ uiDefIconTextBut(block, BUTM, 1, (G.saction->flag & SACTION_SLIDERS)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT,
+ "Show Sliders|", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1,
+ ACTMENU_VIEW_SLIDERS, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6,
menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
@@ -866,6 +884,80 @@ static uiBlock *action_keymenu(void *arg_unused)
return block;
}
+static void do_action_markermenu(void *arg, int event)
+{
+ SpaceAction *saction;
+ ListBase *lb = NULL;
+
+ saction= curarea->spacedata.first;
+ if (!saction)
+ return;
+
+ /* get set of markers */
+ lb= get_saction_markers(saction);
+ if (lb == NULL)
+ return;
+
+ switch(event)
+ {
+ case ACTMENU_MARKERS_ADD:
+ add_saction_marker(lb, CFRA);
+ break;
+ case ACTMENU_MARKERS_DUPLICATE:
+ duplicate_saction_markers(lb);
+ break;
+ case ACTMENU_MARKERS_DELETE:
+ remove_saction_markers(lb);
+ break;
+ case ACTMENU_MARKERS_NAME:
+ rename_saction_markers(lb);
+ break;
+ case ACTMENU_MARKERS_MOVE:
+ transform_saction_markers('g', 0);
+ break;
+ }
+
+ allqueue(REDRAWACTION, 0);
+ allqueue(REDRAWTIME, 0);
+}
+
+static uiBlock *action_markermenu(void *arg_unused)
+{
+ uiBlock *block;
+ short yco= 0, menuwidth=120;
+
+ block= uiNewBlock(&curarea->uiblocks, "action_markermenu",
+ UI_EMBOSSP, UI_HELV, curarea->headwin);
+ uiBlockSetButmFunc(block, do_action_markermenu, NULL);
+
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Add Marker|M", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_ADD, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Duplicate Marker(s)|Ctrl Shift M", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_DUPLICATE, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Marker(s)|Alt M", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_DELETE, "");
+
+ uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "(Re)Name Marker(s)|Ctrl M", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_NAME, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move Marker(s)|Shift M", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, ACTMENU_MARKERS_MOVE, "");
+
+
+ if(curarea->headertype==HEADERTOP) {
+ uiBlockSetDirection(block, UI_DOWN);
+ }
+ else {
+ uiBlockSetDirection(block, UI_TOP);
+ uiBlockFlipOrder(block);
+ }
+
+ uiTextBoundsBlock(block, 50);
+
+ return block;
+}
+
void action_buttons(void)
{
uiBlock *block;
@@ -942,6 +1034,11 @@ void action_buttons(void)
uiDefPulldownBut(block, action_keymenu, NULL,
"Key", xco, -2, xmax-3, 24, "");
xco+= xmax;
+
+ xmax= GetButStringLength("Marker");
+ uiDefPulldownBut(block, action_markermenu, NULL,
+ "Marker", xco, -2, xmax-3, 24, "");
+ xco+= xmax;
}
uiBlockSetEmboss(block, UI_EMBOSS);
@@ -955,6 +1052,29 @@ void action_buttons(void)
from, &(G.saction->actnr), B_ACTALONE,
B_ACTLOCAL, B_ACTIONDELETE, 0, 0);
+
+ /* Draw marker set selection box */
+ xco+= 8;
+
+ if (G.saction->action != NULL) {
+ uiDefButS(block, MENU, B_REDR,
+ "Markers%t|None%x0|Scene%x1|Action%x2",
+ xco, 0, 80, 20, &(G.saction->markert), 0, 0, 0, 0,
+ "What set of markers to display.");
+ }
+ else {
+ if (G.saction->markert == SACTION_ACMARKERS)
+ G.saction->markert = SACTION_NOMARKERS;
+
+ uiDefButS(block, MENU, B_REDR,
+ "Markers%t|None%x0|Scene%x1",
+ xco, 0, 80, 20, &(G.saction->markert), 0, 0, 0, 0,
+ "What set of markers to display.");
+ }
+
+ xco+=80;
+
+
/* Draw action baker */
xco+= 8;