diff options
Diffstat (limited to 'source/blender/windowmanager/intern/wm_operators.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 67 |
1 files changed, 39 insertions, 28 deletions
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 3b6d605df61..d7cac82ef90 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -82,7 +82,22 @@ static ListBase global_ops= {NULL, NULL}; /* ************ operator API, exported ********** */ -wmOperatorType *WM_operatortype_find(const char *idname) +wmOperatorType *WM_operatortype_find(const char *idname, int quiet) +{ + wmOperatorType *ot; + + for(ot= global_ops.first; ot; ot= ot->next) { + if(strncmp(ot->idname, idname, OP_MAX_TYPENAME)==0) + return ot; + } + + if(!quiet) + printf("search for unknown operator %s\n", idname); + + return NULL; +} + +wmOperatorType *WM_operatortype_exists(const char *idname) { wmOperatorType *ot; @@ -90,7 +105,6 @@ wmOperatorType *WM_operatortype_find(const char *idname) if(strncmp(ot->idname, idname, OP_MAX_TYPENAME)==0) return ot; } - printf("search for unknown operator %s\n", idname); return NULL; } @@ -126,7 +140,7 @@ void WM_operatortype_append_ptr(void (*opfunc)(wmOperatorType*, void*), void *us int WM_operatortype_remove(const char *idname) { - wmOperatorType *ot = WM_operatortype_find(idname); + wmOperatorType *ot = WM_operatortype_find(idname, 0); if (ot==NULL) return 0; @@ -145,7 +159,6 @@ char *WM_operator_pystring(wmOperator *op) const char *arg_name= NULL; PropertyRNA *prop, *iterprop; - CollectionPropertyIterator iter; /* for building the string */ DynStr *dynstr= BLI_dynstr_new(); @@ -155,10 +168,9 @@ char *WM_operator_pystring(wmOperator *op) BLI_dynstr_appendf(dynstr, "%s(", op->idname); iterprop= RNA_struct_iterator_property(op->ptr->type); - RNA_property_collection_begin(op->ptr, iterprop, &iter); - for(; iter.valid; RNA_property_collection_next(&iter)) { - prop= iter.ptr.data; + RNA_PROP_BEGIN(op->ptr, propptr, iterprop) { + prop= propptr.data; arg_name= RNA_property_identifier(prop); if (strcmp(arg_name, "rna_type")==0) continue; @@ -170,8 +182,7 @@ char *WM_operator_pystring(wmOperator *op) MEM_freeN(buf); first_iter = 0; } - - RNA_property_collection_end(&iter); + RNA_PROP_END; BLI_dynstr_append(dynstr, ")"); @@ -182,7 +193,7 @@ char *WM_operator_pystring(wmOperator *op) void WM_operator_properties_create(PointerRNA *ptr, const char *opstring) { - wmOperatorType *ot= WM_operatortype_find(opstring); + wmOperatorType *ot= WM_operatortype_find(opstring, 0); if(ot) RNA_pointer_create(NULL, ot->srna, NULL, ptr); @@ -291,7 +302,7 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op) RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr); layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 300, 20, style); - uiDefAutoButsRNA(C, layout, &ptr); + uiDefAutoButsRNA(C, layout, &ptr, 2); uiPopupBoundsBlock(block, 4.0f, 0, 0); uiEndBlock(C, block); @@ -299,7 +310,7 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op) return block; } -int WM_operator_redo(bContext *C, wmOperator *op, wmEvent *event) +int WM_operator_props_popup(bContext *C, wmOperator *op, wmEvent *event) { int retval= OPERATOR_CANCELLED; @@ -333,7 +344,7 @@ static uiBlock *wm_block_create_menu(bContext *C, ARegion *ar, void *arg_op) uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1); layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 300, 20, style); - uiDefAutoButsRNA(C, layout, op->ptr); + uiDefAutoButsRNA(C, layout, op->ptr, 2); uiPopupBoundsBlock(block, 4.0f, 0, 0); uiEndBlock(C, block); @@ -402,7 +413,7 @@ static void operator_search_cb(const struct bContext *C, void *arg, char *str, u name[len]= '|'; } - if(0==uiSearchItemAdd(items, name, ot)) + if(0==uiSearchItemAdd(items, name, ot, 0)) break; } } @@ -421,7 +432,7 @@ static uiBlock *wm_block_search_menu(bContext *C, ARegion *ar, void *arg_op) uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_RET_1); but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, 10, 10, 180, 19, ""); - uiButSetSearchFunc(but, operator_search_cb, NULL, operator_call_cb); + uiButSetSearchFunc(but, operator_search_cb, NULL, operator_call_cb, NULL); /* fake button, it holds space for search items */ uiDefBut(block, LABEL, 0, "", 10, 10 - uiSearchBoxhHeight(), 180, uiSearchBoxhHeight(), NULL, 0, 0, 0, 0, NULL); @@ -503,7 +514,7 @@ static void WM_OT_read_homefile(wmOperatorType *ot) static int recentfile_exec(bContext *C, wmOperator *op) { - int event= RNA_enum_get(op->ptr, "nr"); + int event= RNA_int_get(op->ptr, "nr"); // XXX wm in context is not set correctly after WM_read_file -> crash // do it before for now, but is this correct with multiple windows? @@ -557,7 +568,7 @@ static void WM_OT_open_recentfile(wmOperatorType *ot) ot->exec= recentfile_exec; ot->poll= WM_operator_winactive; - RNA_def_property(ot->srna, "nr", PROP_ENUM, PROP_NONE); + RNA_def_property(ot->srna, "nr", PROP_INT, PROP_UNSIGNED); } /* ********* main file *********** */ @@ -1399,10 +1410,10 @@ void WM_radial_control_string(wmOperator *op, char str[], int maxlen) void WM_OT_radial_control_partial(wmOperatorType *ot) { static EnumPropertyItem prop_mode_items[] = { - {WM_RADIALCONTROL_SIZE, "SIZE", "Size", ""}, - {WM_RADIALCONTROL_STRENGTH, "STRENGTH", "Strength", ""}, - {WM_RADIALCONTROL_ANGLE, "ANGLE", "Angle", ""}, - {0, NULL, NULL, NULL}}; + {WM_RADIALCONTROL_SIZE, "SIZE", 0, "Size", ""}, + {WM_RADIALCONTROL_STRENGTH, "STRENGTH", 0, "Strength", ""}, + {WM_RADIALCONTROL_ANGLE, "ANGLE", 0, "Angle", ""}, + {0, NULL, 0, NULL, NULL}}; /* Should be set in custom invoke() */ RNA_def_float(ot->srna, "initial_value", 0, 0, FLT_MAX, "Initial Value", "", 0, FLT_MAX); @@ -1484,12 +1495,12 @@ static int ten_timer_exec(bContext *C, wmOperator *op) static void WM_OT_ten_timer(wmOperatorType *ot) { static EnumPropertyItem prop_type_items[] = { - {0, "DRAW", "Draw Region", ""}, - {1, "DRAWSWAP", "Draw Region + Swap", ""}, - {2, "DRAWWINSWAP", "Draw Window + Swap", ""}, - {3, "ANIMSTEP", "Anim Step", ""}, - {4, "UNDO", "Undo/Redo", ""}, - {0, NULL, NULL, NULL}}; + {0, "DRAW", 0, "Draw Region", ""}, + {1, "DRAWSWAP", 0, "Draw Region + Swap", ""}, + {2, "DRAWWINSWAP", 0, "Draw Window + Swap", ""}, + {3, "ANIMSTEP", 0, "Anim Step", ""}, + {4, "UNDO", 0, "Undo/Redo", ""}, + {0, NULL, 0, NULL, NULL}}; ot->name= "Ten Timer"; ot->idname= "WM_OT_ten_timer"; @@ -1546,7 +1557,7 @@ void wm_window_keymap(wmWindowManager *wm) 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_window_fullscreen_toggle", F11KEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_verify_item(keymap, "WM_OT_exit_blender", QKEY, KM_PRESS, KM_CTRL, 0); /* debug/testing */ |