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:
authorNicholas Bishop <nicholasbishop@gmail.com>2010-10-19 04:45:37 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2010-10-19 04:45:37 +0400
commita377a7edf67869722c585086ac6ab1f295cbff87 (patch)
tree1736de08fe9174761607dce5d54a16af25eba049 /source/blender/windowmanager/intern/wm_operators.c
parent08232350d5797302e3638e69ec78657d853976aa (diff)
parentb743454ce1c361e6161da8ae5f840c2befe3a081 (diff)
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r32300:32571soc-2010-nicolasbishop
Diffstat (limited to 'source/blender/windowmanager/intern/wm_operators.c')
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c163
1 files changed, 112 insertions, 51 deletions
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 121d2d3d21a..ef0572d3a12 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -31,7 +31,10 @@
#include <ctype.h>
#include <stdio.h>
#include <stddef.h>
-
+#ifdef WIN32
+#include <windows.h>
+#include <io.h>
+#endif
#include "DNA_ID.h"
#include "DNA_object_types.h"
@@ -619,7 +622,7 @@ void WM_operator_properties_free(PointerRNA *ptr)
/* ************ default op callbacks, exported *********** */
/* invoke callback, uses enum property named "type" */
-int WM_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
+int WM_menu_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
PropertyRNA *prop= op->type->prop;
uiPopupMenu *pup;
@@ -724,7 +727,7 @@ static uiBlock *wm_enum_search_menu(bContext *C, ARegion *ar, void *arg_op)
}
-int WM_enum_search_invoke(bContext *C, wmOperator *op, wmEvent *event)
+int WM_enum_search_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
uiPupBlock(C, wm_enum_search_menu, op);
return OPERATOR_CANCELLED;
@@ -751,13 +754,13 @@ int WM_operator_confirm_message(bContext *C, wmOperator *op, char *message)
}
-int WM_operator_confirm(bContext *C, wmOperator *op, wmEvent *event)
+int WM_operator_confirm(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
return WM_operator_confirm_message(C, op, NULL);
}
/* op->invoke, opens fileselect if path property not set, otherwise executes */
-int WM_operator_filesel(bContext *C, wmOperator *op, wmEvent *event)
+int WM_operator_filesel(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
if (RNA_property_is_set(op->ptr, "filepath")) {
return WM_operator_call(C, op);
@@ -862,7 +865,7 @@ int WM_operator_winactive(bContext *C)
}
/* op->invoke */
-static void redo_cb(bContext *C, void *arg_op, int event)
+static void redo_cb(bContext *C, void *arg_op, int UNUSED(event))
{
wmOperator *lastop= arg_op;
@@ -903,7 +906,7 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op)
op->layout= NULL;
}
else
- uiDefAutoButsRNA(C, layout, &ptr, columns);
+ uiDefAutoButsRNA(layout, &ptr, columns);
uiPopupBoundsBlock(block, 4.0f, 0, 0);
uiEndBlock(C, block);
@@ -922,7 +925,7 @@ static void dialog_exec_cb(bContext *C, void *arg1, void *arg2)
uiPupBlockClose(C, block);
}
-void dialog_check_cb(bContext *C, void *op_ptr, void *dummy2)
+void dialog_check_cb(bContext *C, void *op_ptr, void *UNUSED(arg))
{
wmOperator *op= op_ptr;
if(op->type->check) {
@@ -966,7 +969,7 @@ static uiBlock *wm_block_create_dialog(bContext *C, ARegion *ar, void *userData)
op->layout= NULL;
}
else
- uiDefAutoButsRNA(C, layout, &ptr, columns);
+ uiDefAutoButsRNA(layout, &ptr, columns);
uiBlockSetFunc(block, NULL, NULL, NULL);
@@ -1014,7 +1017,7 @@ static uiBlock *wm_operator_create_ui(bContext *C, ARegion *ar, void *userData)
return block;
}
-int WM_operator_props_popup(bContext *C, wmOperator *op, wmEvent *event)
+int WM_operator_props_popup(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
int retval= OPERATOR_CANCELLED;
@@ -1083,7 +1086,7 @@ static uiBlock *wm_block_create_menu(bContext *C, ARegion *ar, void *arg_op)
op->layout= NULL;
}
else
- uiDefAutoButsRNA(C, layout, op->ptr, 2);
+ uiDefAutoButsRNA(layout, op->ptr, 2);
uiPopupBoundsBlock(block, 4.0f, 0, 0);
uiEndBlock(C, block);
@@ -1100,7 +1103,7 @@ static int wm_debug_menu_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-static int wm_debug_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int wm_debug_menu_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
RNA_int_set(op->ptr, "debugval", G.rt);
@@ -1127,7 +1130,7 @@ static void WM_OT_debug_menu(wmOperatorType *ot)
/* ***************** Splash Screen ************************* */
-static void wm_block_splash_close(bContext *C, void *arg_block, void *arg_unused)
+static void wm_block_splash_close(bContext *C, void *arg_block, void *UNUSED(arg))
{
uiPupBlockClose(C, arg_block);
}
@@ -1136,7 +1139,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse
/* XXX: hack to refresh splash screen with updated prest menu name,
* since popup blocks don't get regenerated like panels do */
-void wm_block_splash_refreshmenu (bContext *C, void *arg_block, void *unused)
+void wm_block_splash_refreshmenu (bContext *UNUSED(C), void *UNUSED(arg_block), void *UNUSED(arg))
{
/* ugh, causes crashes in other buttons, disabling for now until
* a better fix
@@ -1145,7 +1148,7 @@ void wm_block_splash_refreshmenu (bContext *C, void *arg_block, void *unused)
*/
}
-static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unused)
+static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(arg))
{
uiBlock *block;
uiBut *but;
@@ -1153,7 +1156,6 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse
uiStyle *style= U.uistyles.first;
struct RecentFile *recent;
int i;
- Menu menu= {0};
MenuType *mt= WM_menutype_find("USERPREF_MT_splash", TRUE);
char url[64];
@@ -1193,9 +1195,13 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse
uiBlockSetEmboss(block, UI_EMBOSS);
/* show the splash menu (containing interaction presets), using python */
if (mt) {
+ Menu menu= {0};
menu.layout= layout;
menu.type= mt;
mt->draw(C, &menu);
+
+// wmWindowManager *wm= CTX_wm_manager(C);
+// uiItemM(layout, C, "USERPREF_MT_keyconfigs", U.keyconfigstr, 0);
}
uiBlockSetEmboss(block, UI_EMBOSSP);
@@ -1228,7 +1234,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse
return block;
}
-static int wm_splash_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int wm_splash_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent *UNUSED(event))
{
uiPupBlock(C, wm_block_create_splash, NULL);
@@ -1247,7 +1253,7 @@ static void WM_OT_splash(wmOperatorType *ot)
/* ***************** Search menu ************************* */
-static void operator_call_cb(struct bContext *C, void *arg1, void *arg2)
+static void operator_call_cb(struct bContext *C, void *UNUSED(arg1), void *arg2)
{
wmOperatorType *ot= arg2;
@@ -1255,7 +1261,7 @@ static void operator_call_cb(struct bContext *C, void *arg1, void *arg2)
WM_operator_name_call(C, ot->idname, WM_OP_INVOKE_DEFAULT, NULL);
}
-static void operator_search_cb(const struct bContext *C, void *arg, char *str, uiSearchItems *items)
+static void operator_search_cb(const struct bContext *C, void *UNUSED(arg), char *str, uiSearchItems *items)
{
wmOperatorType *ot = WM_operatortype_first();
@@ -1282,7 +1288,7 @@ static void operator_search_cb(const struct bContext *C, void *arg, char *str, u
}
}
-static uiBlock *wm_block_search_menu(bContext *C, ARegion *ar, void *arg_op)
+static uiBlock *wm_block_search_menu(bContext *C, ARegion *ar, void *UNUSED(arg_op))
{
static char search[256]= "";
wmEvent event;
@@ -1312,15 +1318,13 @@ static uiBlock *wm_block_search_menu(bContext *C, ARegion *ar, void *arg_op)
return block;
}
-static int wm_search_menu_exec(bContext *C, wmOperator *op)
+static int wm_search_menu_exec(bContext *UNUSED(C), wmOperator *UNUSED(op))
{
-
return OPERATOR_FINISHED;
}
-static int wm_search_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int wm_search_menu_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
-
uiPupBlock(C, wm_block_search_menu, op);
return OPERATOR_CANCELLED;
@@ -1386,7 +1390,7 @@ static void WM_OT_window_duplicate(wmOperatorType *ot)
ot->idname= "WM_OT_window_duplicate";
ot->description="Duplicate the current Blender window";
- ot->exec= wm_window_duplicate_op;
+ ot->exec= wm_window_duplicate_exec;
ot->poll= wm_operator_winactive_normal;
}
@@ -1437,9 +1441,9 @@ static void open_set_use_scripts(wmOperator *op)
RNA_boolean_set(op->ptr, "use_scripts", !(U.flag & USER_SCRIPT_AUTOEXEC_DISABLE));
}
-static int wm_open_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int wm_open_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
- RNA_string_set(op->ptr, "filepath", G.sce);
+ RNA_string_set(op->ptr, "filepath", G.main->name);
open_set_load_ui(op);
open_set_use_scripts(op);
@@ -1493,7 +1497,7 @@ static void WM_OT_open_mainfile(wmOperatorType *ot)
/* **************** link/append *************** */
-static int wm_link_append_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int wm_link_append_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
if(!RNA_property_is_set(op->ptr, "relative_path"))
RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS);
@@ -1718,7 +1722,7 @@ static int wm_recover_auto_save_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-static int wm_recover_auto_save_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int wm_recover_auto_save_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
char filename[FILE_MAX];
@@ -1766,13 +1770,13 @@ static void save_set_compress(wmOperator *op)
}
}
-static int wm_save_as_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int wm_save_as_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
char name[FILE_MAX];
save_set_compress(op);
- BLI_strncpy(name, G.sce, FILE_MAX);
+ BLI_strncpy(name, G.main->name, FILE_MAX);
untitled(name);
RNA_string_set(op->ptr, "filepath", name);
@@ -1793,7 +1797,7 @@ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op)
if(RNA_property_is_set(op->ptr, "filepath"))
RNA_string_get(op->ptr, "filepath", path);
else {
- BLI_strncpy(path, G.sce, FILE_MAX);
+ BLI_strncpy(path, G.main->name, FILE_MAX);
untitled(path);
}
@@ -1817,7 +1821,7 @@ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op)
}
/* function used for WM_OT_save_mainfile too */
-static int blend_save_check(bContext *C, wmOperator *op)
+static int blend_save_check(bContext *UNUSED(C), wmOperator *op)
{
char filepath[FILE_MAX];
RNA_string_get(op->ptr, "filepath", filepath);
@@ -1847,7 +1851,7 @@ static void WM_OT_save_as_mainfile(wmOperatorType *ot)
/* *************** save file directly ******** */
-static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
{
char name[FILE_MAX];
int check_existing=1;
@@ -1858,7 +1862,7 @@ static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event)
save_set_compress(op);
- BLI_strncpy(name, G.sce, FILE_MAX);
+ BLI_strncpy(name, G.main->name, FILE_MAX);
untitled(name);
RNA_string_set(op->ptr, "filepath", name);
@@ -1904,7 +1908,7 @@ static int wm_collada_export_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
if(!RNA_property_is_set(op->ptr, "filepath")) {
char filepath[FILE_MAX];
- BLI_strncpy(filepath, G.sce, sizeof(filepath));
+ BLI_strncpy(filepath, G.main->name, sizeof(filepath));
BLI_replace_extension(filepath, sizeof(filepath), ".dae");
RNA_string_set(op->ptr, "filepath", filepath);
}
@@ -1982,7 +1986,7 @@ static void WM_OT_window_fullscreen_toggle(wmOperatorType *ot)
ot->idname= "WM_OT_window_fullscreen_toggle";
ot->description="Toggle the current window fullscreen";
- ot->exec= wm_window_fullscreen_toggle_op;
+ ot->exec= wm_window_fullscreen_toggle_exec;
ot->poll= WM_operator_winactive;
}
@@ -1995,10 +1999,10 @@ static int wm_exit_blender_op(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-static void WM_OT_exit_blender(wmOperatorType *ot)
+static void WM_OT_quit_blender(wmOperatorType *ot)
{
- ot->name= "Exit Blender";
- ot->idname= "WM_OT_exit_blender";
+ ot->name= "Quit Blender";
+ ot->idname= "WM_OT_quit_blender";
ot->description= "Quit Blender";
ot->invoke= WM_operator_confirm;
@@ -2006,6 +2010,60 @@ static void WM_OT_exit_blender(wmOperatorType *ot)
ot->poll= WM_operator_winactive;
}
+/* *********************** */
+#ifdef WIN32
+static int console= 1;
+void WM_toggle_console(bContext *C, short show)
+{
+ if(show) {
+ FILE *fp;
+ char fn[FILE_MAX];
+ char tmp[FILE_MAXDIR];
+ BLI_where_is_temp(tmp, 1);
+ BLI_make_file_string("/", fn, tmp, "blenderlog.txt");
+ /* open the console */
+ AllocConsole();
+
+ /* redirect stdin */
+ fp= freopen(fn, "r", stdin);
+ SetStdHandle(STD_INPUT_HANDLE, (HANDLE)_get_osfhandle(_fileno(stdin)));
+ /* redirect stdout */
+ fp= freopen(fn, "w", stdout);
+ SetStdHandle(STD_OUTPUT_HANDLE, (HANDLE)_get_osfhandle(_fileno(stdout)));
+ /* redirect stderr */
+ fp= freopen(fn, "w", stderr);
+ SetStdHandle(STD_ERROR_HANDLE, (HANDLE)_get_osfhandle(_fileno(stderr)));
+
+ console= 1;
+ }
+ else {
+ FreeConsole();
+ console= 0;
+ }
+}
+
+static int wm_toggle_console_op(bContext *C, wmOperator *op)
+{
+ if(console) {
+ WM_toggle_console(C, 0);
+ }
+ else {
+ WM_toggle_console(C, 1);
+ }
+ return OPERATOR_FINISHED;
+}
+
+static void WM_OT_toggle_console(wmOperatorType *ot)
+{
+ ot->name= "Toggle System Console";
+ ot->idname= "WM_OT_toggle_console";
+ ot->description= "Toggle System Console";
+
+ ot->exec= wm_toggle_console_op;
+ ot->poll= WM_operator_winactive;
+}
+#endif
+
/* ************ default paint cursors, draw always around cursor *********** */
/*
- returns handler to free
@@ -2298,7 +2356,7 @@ static void tweak_gesture_modal(bContext *C, wmEvent *event)
rect->xmax= event->x - sx;
rect->ymax= event->y - sy;
- if((val= wm_gesture_evaluate(C, gesture))) {
+ if((val= wm_gesture_evaluate(gesture))) {
wmEvent event;
event= *(window->eventstate);
@@ -2391,7 +2449,7 @@ int WM_gesture_lines_invoke(bContext *C, wmOperator *op, wmEvent *event)
}
-static void gesture_lasso_apply(bContext *C, wmOperator *op, int event_type)
+static void gesture_lasso_apply(bContext *C, wmOperator *op)
{
wmGesture *gesture= op->customdata;
PointerRNA itemptr;
@@ -2460,7 +2518,7 @@ int WM_gesture_lasso_modal(bContext *C, wmOperator *op, wmEvent *event)
case MIDDLEMOUSE:
case RIGHTMOUSE:
if(event->val==KM_RELEASE) { /* key release */
- gesture_lasso_apply(C, op, event->type);
+ gesture_lasso_apply(C, op);
return OPERATOR_FINISHED;
}
break;
@@ -2853,11 +2911,11 @@ void WM_radial_control_string(wmOperator *op, char str[], int maxlen)
float v = RNA_float_get(op->ptr, "new_value");
if(mode == WM_RADIALCONTROL_SIZE)
- sprintf(str, "Size: %d", (int)v);
+ BLI_snprintf(str, maxlen, "Size: %d", (int)v);
else if(mode == WM_RADIALCONTROL_STRENGTH)
- sprintf(str, "Strength: %d", (int)v);
+ BLI_snprintf(str, maxlen, "Strength: %d", (int)v);
else if(mode == WM_RADIALCONTROL_ANGLE)
- sprintf(str, "Angle: %d", (int)(v * 180.0f/M_PI));
+ BLI_snprintf(str, maxlen, "Angle: %d", (int)(v * 180.0f/M_PI));
}
/** Important: this doesn't define an actual operator, it
@@ -3024,7 +3082,7 @@ static void WM_OT_redraw_timer(wmOperatorType *ot)
/* ************************** memory statistics for testing ***************** */
-static int memory_statistics_exec(bContext *C, wmOperator *op)
+static int memory_statistics_exec(bContext *UNUSED(C), wmOperator *UNUSED(op))
{
MEM_printmemlist_stats();
return OPERATOR_FINISHED;
@@ -3065,7 +3123,7 @@ void wm_operatortype_init(void)
WM_operatortype_append(WM_OT_read_factory_settings);
WM_operatortype_append(WM_OT_save_homefile);
WM_operatortype_append(WM_OT_window_fullscreen_toggle);
- WM_operatortype_append(WM_OT_exit_blender);
+ WM_operatortype_append(WM_OT_quit_blender);
WM_operatortype_append(WM_OT_open_mainfile);
WM_operatortype_append(WM_OT_link_append);
WM_operatortype_append(WM_OT_recover_last_session);
@@ -3078,6 +3136,9 @@ void wm_operatortype_init(void)
WM_operatortype_append(WM_OT_splash);
WM_operatortype_append(WM_OT_search_menu);
WM_operatortype_append(WM_OT_call_menu);
+#ifdef WIN32
+ WM_operatortype_append(WM_OT_toggle_console);
+#endif
#ifdef WITH_COLLADA
/* XXX: move these */
@@ -3268,7 +3329,7 @@ void wm_window_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "WM_OT_open_mainfile", OKEY, KM_PRESS, KM_OSKEY, 0);
WM_keymap_add_item(keymap, "WM_OT_save_mainfile", SKEY, KM_PRESS, KM_OSKEY, 0);
WM_keymap_add_item(keymap, "WM_OT_save_as_mainfile", SKEY, KM_PRESS, KM_SHIFT|KM_OSKEY, 0);
- WM_keymap_add_item(keymap, "WM_OT_exit_blender", QKEY, KM_PRESS, KM_OSKEY, 0);
+ WM_keymap_add_item(keymap, "WM_OT_quit_blender", QKEY, KM_PRESS, KM_OSKEY, 0);
#endif
WM_keymap_add_item(keymap, "WM_OT_read_homefile", NKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "WM_OT_save_homefile", UKEY, KM_PRESS, KM_CTRL, 0);
@@ -3288,7 +3349,7 @@ void wm_window_keymap(wmKeyConfig *keyconf)
RNA_boolean_set(kmi->ptr, "copy", 1);
WM_keymap_verify_item(keymap, "WM_OT_window_fullscreen_toggle", F11KEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "WM_OT_exit_blender", QKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "WM_OT_quit_blender", QKEY, KM_PRESS, KM_CTRL, 0);
/* debug/testing */
WM_keymap_verify_item(keymap, "WM_OT_redraw_timer", TKEY, KM_PRESS, KM_ALT|KM_CTRL, 0);
@@ -3349,7 +3410,7 @@ void wm_window_keymap(wmKeyConfig *keyconf)
}
/* Generic itemf's for operators that take library args */
-static EnumPropertyItem *rna_id_itemf(bContext *C, PointerRNA *ptr, int *free, ID *id, int local)
+static EnumPropertyItem *rna_id_itemf(bContext *UNUSED(C), PointerRNA *UNUSED(ptr), int *free, ID *id, int local)
{
EnumPropertyItem *item= NULL, item_tmp;
int totitem= 0;