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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2006-10-12 17:13:45 +0400
committerCampbell Barton <ideasman42@gmail.com>2006-10-12 17:13:45 +0400
commitce0f9a3cac64600c437e6983fdd0d37d22a48fcc (patch)
tree5f95d861983989985c31034ecf8b2f4b2a37b5ce /source
parentb2a8417fce8d231188ee75062804be4d471c57be (diff)
On Matt's suggestion moved "Make Link->Groups" to the add groups menu as "Add to Active Objects Groups"
removed "Make Link -> DupliGroup" because Copy->Duplis does the same thing. Python's Group.c had an unneeded scene/base lookup.
Diffstat (limited to 'source')
-rwxr-xr-xsource/blender/python/api2_2x/Group.c2
-rw-r--r--source/blender/src/editgroup.c38
-rw-r--r--source/blender/src/editobject.c220
-rw-r--r--source/blender/src/header_view3d.c31
4 files changed, 146 insertions, 145 deletions
diff --git a/source/blender/python/api2_2x/Group.c b/source/blender/python/api2_2x/Group.c
index 7c5e230f9ce..328b438a6f4 100755
--- a/source/blender/python/api2_2x/Group.c
+++ b/source/blender/python/api2_2x/Group.c
@@ -741,8 +741,6 @@ static PyObject *GroupObSeq_add( BPy_GroupObSeq * self, PyObject *args )
blen_ob = ( ( BPy_Object * ) pyobj )->object;
- base= object_in_scene(blen_ob, G.scene);
-
add_to_group_wraper(self->bpygroup->group, blen_ob); /* this checks so as not to add the object into the group twice*/
Py_RETURN_NONE;
diff --git a/source/blender/src/editgroup.c b/source/blender/src/editgroup.c
index f26eaa0f4e3..bc1b26739fd 100644
--- a/source/blender/src/editgroup.c
+++ b/source/blender/src/editgroup.c
@@ -77,6 +77,39 @@ void add_selected_to_group(Group *group)
BIF_undo_push("Add to Group");
}
+void add_selected_to_act_ob_groups(void)
+{
+ Object *ob= OBACT, *obt;
+ Base *base;
+
+ if (!ob) return;
+
+ /* linking to same group requires its own loop so we can avoid
+ looking up the active objects groups each time */
+ Group *group= G.main->group.first;
+ while(group) {
+ if(object_in_group(ob, group)) {
+ /* Assign groups to selected objects */
+ base= FIRSTBASE;
+ while(base) {
+ if(TESTBASE(base)) {
+ obt= base->object;
+ add_to_group(group, obt);
+ obt->flag |= OB_FROMGROUP;
+ base->flag |= OB_FROMGROUP;
+ }
+ base= base->next;
+ }
+ }
+ group= group->id.next;
+ }
+ allqueue(REDRAWVIEW3D, 0);
+ allqueue(REDRAWBUTSOBJECT, 0);
+ DAG_scene_sort(G.scene);
+ BIF_undo_push("Add to Active Objects Group");
+}
+
+
void rem_selected_from_group(void)
{
Base *base;
@@ -110,7 +143,7 @@ void group_operation_with_menu(void)
break;
if(group)
- mode= pupmenu("Groups %t|Add to Existing Group %x3|Add to New Group %x1|Remove from All Groups %x2");
+ mode= pupmenu("Groups %t|Add to Existing Group %x3|Add to Active Objects Groups %x4|Add to New Group %x1|Remove from All Groups %x2");
else
mode= pupmenu("Groups %t|Add to New Group %x1|Remove from All Groups %x2");
@@ -144,7 +177,8 @@ void group_operation(int mode)
else return;
}
- if(mode==1 || mode==3) add_selected_to_group(group);
+ if(mode==4) add_selected_to_act_ob_groups();
+ else if(mode==1 || mode==3) add_selected_to_group(group);
else if(mode==2) rem_selected_from_group();
}
}
diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c
index 5ce68ce0050..21966289d4b 100644
--- a/source/blender/src/editobject.c
+++ b/source/blender/src/editobject.c
@@ -3162,11 +3162,11 @@ void make_links_menu()
{
Object *ob;
short event=0;
- char str[160];
+ char str[140];
if(!(ob=OBACT)) return;
- strcpy(str, "Make Links %t|To Scene...%x1|%l|Object Ipo%x4|Object Groups%x7");
+ strcpy(str, "Make Links %t|To Scene...%x1|%l|Object Ipo%x4");
if(ob->type==OB_MESH)
strcat(str, "|Mesh Data%x2|Materials%x3");
@@ -3186,8 +3186,6 @@ void make_links_menu()
strcat(str, "|Lattice Data%x2");
else if(ob->type==OB_ARMATURE)
strcat(str, "|Armature Data%x2");
- else if(ob->type==OB_EMPTY)
- strcat(str, "|DupliGroup%x6");
event= pupmenu(str);
@@ -3243,144 +3241,120 @@ void make_links(short event)
}
}
- /* linking to same group requires its own loop so we can avoid
- looking up the active objects groups each time */
- if(event==7) {
- Group *group= G.main->group.first;
- while(group) {
- if(object_in_group(ob, group)) {
- /* Assign groups to selected objects */
- base= FIRSTBASE;
- while(base) {
- if(TESTBASE(base)) {
- obt= base->object;
- add_to_group(group, obt);
- obt->flag |= OB_FROMGROUP;
- base->flag |= OB_FROMGROUP;
+ /* All non group linking */
+ base= FIRSTBASE;
+ while(base) {
+ if(event==1 || base != BASACT) {
+
+ obt= base->object;
+
+ if(TESTBASE(base)) {
+
+ if(event==1) { /* to scene */
+
+ /* test if already linked */
+ sbase= sce->base.first;
+ while(sbase) {
+ if(sbase->object==base->object) break;
+ sbase= sbase->next;
}
- base= base->next;
+ if(sbase) { /* remove */
+ base= base->next;
+ continue;
+ }
+
+ nbase= MEM_mallocN( sizeof(Base), "newbase");
+ *nbase= *base;
+ BLI_addhead( &(sce->base), nbase);
+ id_us_plus((ID *)base->object);
}
-
}
- group= group->id.next;
- }
-
- } else {
- /* All non group linking */
- base= FIRSTBASE;
- while(base) {
- if(event==1 || base != BASACT) {
-
- obt= base->object;
-
- if(TESTBASE(base)) {
-
- if(event==1) { /* to scene */
+ if(TESTBASELIB(base)) {
+ if(event==2 || event==5) { /* obdata */
+ if(ob->type==obt->type) {
- /* test if already linked */
- sbase= sce->base.first;
- while(sbase) {
- if(sbase->object==base->object) break;
- sbase= sbase->next;
- }
- if(sbase) { /* remove */
- base= base->next;
- continue;
+ id= obt->data;
+ id->us--;
+
+ id= ob->data;
+ id_us_plus(id);
+ obt->data= id;
+
+ /* if amount of material indices changed: */
+ test_object_materials(obt->data);
+
+ obt->recalc |= OB_RECALC_DATA;
}
-
- nbase= MEM_mallocN( sizeof(Base), "newbase");
- *nbase= *base;
- BLI_addhead( &(sce->base), nbase);
- id_us_plus((ID *)base->object);
+ }
+ else if(event==4) { /* ob ipo */
+ if(obt->ipo) obt->ipo->id.us--;
+ obt->ipo= ob->ipo;
+ if(obt->ipo) {
+ id_us_plus((ID *)obt->ipo);
+ do_ob_ipo(obt);
}
}
- if(TESTBASELIB(base)) {
- if(event==2 || event==5) { /* obdata */
- if(ob->type==obt->type) {
-
- id= obt->data;
- id->us--;
-
- id= ob->data;
- id_us_plus(id);
- obt->data= id;
-
- /* if amount of material indices changed: */
- test_object_materials(obt->data);
+ else if(event==6) {
+ if(ob->dup_group) ob->dup_group->id.us--;
+ obt->dup_group= ob->dup_group;
+ if(obt->dup_group) {
+ id_us_plus((ID *)obt->dup_group);
+ obt->transflag |= OB_DUPLIGROUP;
+ }
+ }
+ else if(event==3) { /* materials */
+
+ /* only if obt has no material: make arrays */
+ /* from ob to obt! */
+
+ obmatarar= give_matarar(ob);
+ matarar= give_matarar(obt);
+ totcolp= give_totcolp(obt);
- obt->recalc |= OB_RECALC_DATA;
- }
+ /* if one of the two is zero: no render-able object */
+ if( matarar && obmatarar) {
+
+ /* take care of users! so first a copy of original: */
+
+ if(ob->totcol) {
+ matar1= MEM_dupallocN(ob->mat);
+ matar2= MEM_dupallocN(*obmatarar);
}
- else if(event==4) { /* ob ipo */
- if(obt->ipo) obt->ipo->id.us--;
- obt->ipo= ob->ipo;
- if(obt->ipo) {
- id_us_plus((ID *)obt->ipo);
- do_ob_ipo(obt);
+ else {
+ matar1= matar2= NULL;
}
- }
- else if(event==6) {
- if(ob->dup_group) ob->dup_group->id.us--;
- obt->dup_group= ob->dup_group;
- if(obt->dup_group) {
- id_us_plus((ID *)obt->dup_group);
- obt->transflag |= OB_DUPLIGROUP;
+
+ /* remove links from obt */
+ for(a=0; a<obt->totcol; a++) {
+ if(obt->mat[a]) obt->mat[a]->id.us--;
+ if( (*matarar)[a]) (*matarar)[a]->id.us--;
}
- }
- else if(event==3) { /* materials */
- /* only if obt has no material: make arrays */
- /* from ob to obt! */
+ /* free */
+ if(obt->mat) MEM_freeN(obt->mat);
+ if(*matarar) MEM_freeN(*matarar);
- obmatarar= give_matarar(ob);
- matarar= give_matarar(obt);
- totcolp= give_totcolp(obt);
-
- /* if one of the two is zero: no render-able object */
- if( matarar && obmatarar) {
-
- /* take care of users! so first a copy of original: */
+ /* connect a copy */
+ obt->mat= matar1;
+ *matarar= matar2;
+ obt->totcol= ob->totcol;
+ *totcolp= ob->totcol;
+
+ /* increase users */
+ for(a=0; a<obt->totcol; a++) {
+ if(obt->mat[a]) id_us_plus((ID *)obt->mat[a]);
+ if( (*matarar)[a]) id_us_plus((ID *)(*matarar)[a]);
+ }
- if(ob->totcol) {
- matar1= MEM_dupallocN(ob->mat);
- matar2= MEM_dupallocN(*obmatarar);
- }
- else {
- matar1= matar2= NULL;
- }
-
- /* remove links from obt */
- for(a=0; a<obt->totcol; a++) {
- if(obt->mat[a]) obt->mat[a]->id.us--;
- if( (*matarar)[a]) (*matarar)[a]->id.us--;
- }
-
- /* free */
- if(obt->mat) MEM_freeN(obt->mat);
- if(*matarar) MEM_freeN(*matarar);
-
- /* connect a copy */
- obt->mat= matar1;
- *matarar= matar2;
- obt->totcol= ob->totcol;
- *totcolp= ob->totcol;
+ obt->colbits= ob->colbits;
- /* increase users */
- for(a=0; a<obt->totcol; a++) {
- if(obt->mat[a]) id_us_plus((ID *)obt->mat[a]);
- if( (*matarar)[a]) id_us_plus((ID *)(*matarar)[a]);
- }
-
- obt->colbits= ob->colbits;
-
- /* if amount of material indices changed: */
- test_object_materials(obt->data);
- }
+ /* if amount of material indices changed: */
+ test_object_materials(obt->data);
}
}
}
- base= base->next;
}
+ base= base->next;
}
allqueue(REDRAWVIEW3D, 0);
diff --git a/source/blender/src/header_view3d.c b/source/blender/src/header_view3d.c
index ef37625d2c9..0b4b79802d5 100644
--- a/source/blender/src/header_view3d.c
+++ b/source/blender/src/header_view3d.c
@@ -1758,8 +1758,6 @@ static void do_view3d_edit_object_makelinksmenu(void *arg, int event)
case 2:
case 3:
case 4:
- case 6:
- case 7:
make_links((short)event);
break;
}
@@ -1781,34 +1779,31 @@ static uiBlock *view3d_edit_object_makelinksmenu(void *arg_unused)
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Ipo|Ctrl L, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Groups|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
if ((ob=OBACT)) {
if(ob->type==OB_MESH) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mesh Data|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mesh Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
} else if(ob->type==OB_CURVE) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve Data|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
} else if(ob->type==OB_FONT) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Text Data|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Text Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
} else if(ob->type==OB_SURF) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Surface Data|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- } else if(ob->type==OB_MBALL) {
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Surface Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
+ } else if(ob->type==OB_MBALL) {
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Materials|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
} else if(ob->type==OB_CAMERA) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Camera Data|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Camera Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
} else if(ob->type==OB_LAMP) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lamp Data|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lamp Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
} else if(ob->type==OB_LATTICE) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lattice Data|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lattice Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
} else if(ob->type==OB_ARMATURE) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Armature Data|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- } else if(ob->type==OB_EMPTY) {
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "DupliGroup|Ctrl L, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Armature Data|Ctrl L, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
}
}