forked from bartvdbraak/blender
RNA
* RNA_enum_items_add_value and RNA_enum_item_add_separator utility functions, to add an item from an existing array with a certain value, and to add a separator.
This commit is contained in:
parent
42e2796a51
commit
4b3dafcaa7
@ -5796,19 +5796,12 @@ static EnumPropertyItem merge_type_items[]= {
|
||||
|
||||
static EnumPropertyItem *merge_type_itemf(bContext *C, PointerRNA *ptr, int *free)
|
||||
{
|
||||
Object *obedit;
|
||||
EnumPropertyItem *item= NULL;
|
||||
int totitem= 0;
|
||||
|
||||
Object *obedit;
|
||||
|
||||
if(C==NULL) {
|
||||
/* needed for doc generation */
|
||||
RNA_enum_items_add(&item, &totitem, merge_type_items);
|
||||
RNA_enum_item_end(&item, &totitem);
|
||||
|
||||
*free= 1;
|
||||
return item;
|
||||
}
|
||||
if(!C) /* needed for docs */
|
||||
return merge_type_items;
|
||||
|
||||
obedit= CTX_data_edit_object(C);
|
||||
if(obedit && obedit->type == OB_MESH) {
|
||||
@ -5817,18 +5810,18 @@ static EnumPropertyItem *merge_type_itemf(bContext *C, PointerRNA *ptr, int *fre
|
||||
if(em->selectmode & SCE_SELECT_VERTEX) {
|
||||
if(em->selected.first && em->selected.last &&
|
||||
((EditSelection*)em->selected.first)->type == EDITVERT && ((EditSelection*)em->selected.last)->type == EDITVERT) {
|
||||
RNA_enum_item_add(&item, &totitem, &merge_type_items[0]);
|
||||
RNA_enum_item_add(&item, &totitem, &merge_type_items[1]);
|
||||
RNA_enum_items_add_value(&item, &totitem, merge_type_items, 6);
|
||||
RNA_enum_items_add_value(&item, &totitem, merge_type_items, 1);
|
||||
}
|
||||
else if(em->selected.first && ((EditSelection*)em->selected.first)->type == EDITVERT)
|
||||
RNA_enum_item_add(&item, &totitem, &merge_type_items[1]);
|
||||
RNA_enum_items_add_value(&item, &totitem, merge_type_items, 1);
|
||||
else if(em->selected.last && ((EditSelection*)em->selected.last)->type == EDITVERT)
|
||||
RNA_enum_item_add(&item, &totitem, &merge_type_items[0]);
|
||||
RNA_enum_items_add_value(&item, &totitem, merge_type_items, 6);
|
||||
}
|
||||
|
||||
RNA_enum_item_add(&item, &totitem, &merge_type_items[2]);
|
||||
RNA_enum_item_add(&item, &totitem, &merge_type_items[3]);
|
||||
RNA_enum_item_add(&item, &totitem, &merge_type_items[4]);
|
||||
RNA_enum_items_add_value(&item, &totitem, merge_type_items, 3);
|
||||
RNA_enum_items_add_value(&item, &totitem, merge_type_items, 4);
|
||||
RNA_enum_items_add_value(&item, &totitem, merge_type_items, 5);
|
||||
RNA_enum_item_end(&item, &totitem);
|
||||
|
||||
*free= 1;
|
||||
|
@ -366,7 +366,6 @@ EnumPropertyItem *BIF_enumTransformOrientation(bContext *C)
|
||||
EnumPropertyItem normal = {V3D_MANIP_NORMAL, "NORMAL", 0, "Normal", ""};
|
||||
EnumPropertyItem local = {V3D_MANIP_LOCAL, "LOCAL", 0, "Local", ""};
|
||||
EnumPropertyItem view = {V3D_MANIP_VIEW, "VIEW", 0, "View", ""};
|
||||
EnumPropertyItem sepr = {0, "", 0, NULL, NULL};
|
||||
EnumPropertyItem tmp = {0, "", 0, "", ""};
|
||||
EnumPropertyItem *item= NULL;
|
||||
int i = V3D_MANIP_CUSTOM, totitem= 0;
|
||||
@ -386,7 +385,7 @@ EnumPropertyItem *BIF_enumTransformOrientation(bContext *C)
|
||||
}
|
||||
|
||||
if(ts)
|
||||
RNA_enum_item_add(&item, &totitem, &sepr);
|
||||
RNA_enum_item_add_separator(&item, &totitem);
|
||||
|
||||
for(; ts; ts = ts->next) {
|
||||
tmp.identifier = "CUSTOM";
|
||||
|
@ -164,7 +164,9 @@ void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
|
||||
* strings are not freed, assumed pointing to static location. */
|
||||
|
||||
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item);
|
||||
void RNA_enum_item_add_separator(EnumPropertyItem **items, int *totitem);
|
||||
void RNA_enum_items_add(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item);
|
||||
void RNA_enum_items_add_value(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item, int value);
|
||||
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -2284,12 +2284,25 @@ void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, EnumPropertyItem
|
||||
*totitem= tot+1;
|
||||
}
|
||||
|
||||
void RNA_enum_item_add_separator(EnumPropertyItem **items, int *totitem)
|
||||
{
|
||||
static EnumPropertyItem sepr = {0, "", 0, NULL, NULL};
|
||||
RNA_enum_item_add(items, totitem, &sepr);
|
||||
}
|
||||
|
||||
void RNA_enum_items_add(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item)
|
||||
{
|
||||
for(; item->identifier; item++)
|
||||
RNA_enum_item_add(items, totitem, item);
|
||||
}
|
||||
|
||||
void RNA_enum_items_add_value(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item, int value)
|
||||
{
|
||||
for(; item->identifier; item++)
|
||||
if(item->value == value)
|
||||
RNA_enum_item_add(items, totitem, item);
|
||||
}
|
||||
|
||||
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
|
||||
{
|
||||
static EnumPropertyItem empty = {0, NULL, 0, NULL, NULL};
|
||||
|
Loading…
Reference in New Issue
Block a user