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/windowmanager/intern/wm_operators.c')
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c67
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 */