diff options
author | Ton Roosendaal <ton@blender.org> | 2009-02-08 22:15:59 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-02-08 22:15:59 +0300 |
commit | eb929804d20341b22c4217ec436ebcf4b2192c9d (patch) | |
tree | a3683beda2575be45a47201e55fadbae65c190a2 /source/blender/windowmanager | |
parent | 3fcc36d0b0677a0eb437d5ac941ea9e70a33b71f (diff) |
2.5
Added CTRL+W save Blender file.
It's the first user of the uiPupMenuSaveOver() function,
which I've recoded to accept an operator pointer.
This is required because the operator property 'filename'
has to be set to work. Other 'save over' users will
require running operators too I guess.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index c54d738822f..5ebca6842b1 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -417,6 +417,7 @@ static int wm_save_as_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *even return OPERATOR_RUNNING_MODAL; } +/* function used for WM_OT_save_mainfile too */ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op) { char filename[FILE_MAX]; @@ -431,7 +432,7 @@ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op) static void WM_OT_save_as_mainfile(wmOperatorType *ot) { - ot->name= "Open Blender File"; + ot->name= "Save As Blender File"; ot->idname= "WM_OT_save_as_mainfile"; ot->invoke= wm_save_as_mainfile_invoke; @@ -444,6 +445,33 @@ static void WM_OT_save_as_mainfile(wmOperatorType *ot) } +/* *************** Save file directly ******** */ + +static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + + RNA_string_set(op->ptr, "filename", G.sce); + uiPupMenuSaveOver(C, op, G.sce); + + return OPERATOR_RUNNING_MODAL; +} + +static void WM_OT_save_mainfile(wmOperatorType *ot) +{ + ot->name= "Save Blender File"; + ot->idname= "WM_OT_save_mainfile"; + + ot->invoke= wm_save_mainfile_invoke; + ot->exec= wm_save_as_mainfile_exec; + ot->poll= WM_operator_winactive; + + ot->flag= 0; + + RNA_def_property(ot->srna, "filename", PROP_STRING, PROP_FILEPATH); + +} + + /* *********************** */ static void WM_OT_window_fullscreen_toggle(wmOperatorType *ot) @@ -1192,6 +1220,7 @@ void wm_operatortype_init(void) WM_operatortype_append(WM_OT_open_mainfile); WM_operatortype_append(WM_OT_jobs_timer); WM_operatortype_append(WM_OT_save_as_mainfile); + WM_operatortype_append(WM_OT_save_mainfile); } /* default keymap for windows and screens, only call once per WM */ @@ -1208,6 +1237,7 @@ void wm_window_keymap(wmWindowManager *wm) WM_keymap_verify_item(keymap, "WM_OT_save_homefile", UKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "WM_OT_open_recentfile", OKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "WM_OT_open_mainfile", F1KEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "WM_OT_save_mainfile", WKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "WM_OT_save_as_mainfile", F2KEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "WM_OT_window_fullscreen_toggle", F11KEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "WM_OT_exit_blender", QKEY, KM_PRESS, KM_CTRL, 0); |