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:
authorMatt Ebb <matt@mke3.net>2003-10-20 06:19:17 +0400
committerMatt Ebb <matt@mke3.net>2003-10-20 06:19:17 +0400
commit2aec1fee77e5a916cc9221ade1531670b49288e9 (patch)
treed9245592c0910faabe75fbcf5bae55ac77e0c184 /source
parent052b909ee658796924a1ca246dead8d689b2972d (diff)
Object selection from tuhopuu2:
Select All by Type / Select All by Layer User info: Found in (object mode) 3D View header menu > Select > Select All by Type selects all objects on visible layers of a certain type Select All by Layer selects all objects on a certain layer (visible / invisible) These used together are useful for managing a complex scene, for example quickly selecting all the lamps and moving them to a separate layer, or selecting the contents of a layer without having to disrupt the view configuration of visible/invisible layers. Coder Info: Added two functions in editview.c void selectall_type(short obtype); void selectall_layer(int layernum); I committed both of these together since the code/changes are both very similar.
Diffstat (limited to 'source')
-rw-r--r--source/blender/src/editview.c42
-rw-r--r--source/blender/src/header_view3d.c147
2 files changed, 188 insertions, 1 deletions
diff --git a/source/blender/src/editview.c b/source/blender/src/editview.c
index 81813f7f837..0ebbe46e616 100644
--- a/source/blender/src/editview.c
+++ b/source/blender/src/editview.c
@@ -379,6 +379,48 @@ void deselectall(void) /* is toggle */
}
+/* selects all objects of a particular type, on currently visible layers */
+void selectall_type(short obtype)
+{
+ Base *base;
+
+ base= FIRSTBASE;
+ while(base) {
+ if((base->lay & G.vd->lay) && (base->object->type == obtype)) {
+ base->flag |= SELECT;
+ base->object->flag= base->flag;
+ }
+ base= base->next;
+ }
+
+ allqueue(REDRAWVIEW3D, 0);
+ allqueue(REDRAWDATASELECT, 0);
+ allqueue(REDRAWNLA, 0);
+
+ countall();
+
+}
+/* selects all objects on a particular layer */
+void selectall_layer(int layernum)
+{
+ Base *base;
+
+ base= FIRSTBASE;
+ while(base) {
+ if (base->lay == (1<< (layernum -1))) {
+ base->flag |= SELECT;
+ base->object->flag= base->flag;
+ }
+ base= base->next;
+ }
+
+ allqueue(REDRAWVIEW3D, 0);
+ allqueue(REDRAWDATASELECT, 0);
+ allqueue(REDRAWNLA, 0);
+
+ countall();
+
+}
static void deselectall_except(Base *b) /* deselect all except b */
{
Base *base;
diff --git a/source/blender/src/header_view3d.c b/source/blender/src/header_view3d.c
index 7d4c134bb50..fb7d40e3de7 100644
--- a/source/blender/src/header_view3d.c
+++ b/source/blender/src/header_view3d.c
@@ -360,6 +360,149 @@ static uiBlock *view3d_viewmenu(void *arg_unused)
return block;
}
+static void do_view3d_select_object_typemenu(void *arg, int event)
+{
+
+ extern void selectall_type(short obtype);
+
+ switch(event) {
+ case 0: /* Mesh */
+ selectall_type(OB_MESH);
+ break;
+ case 1: /* Curve */
+ selectall_type(OB_CURVE);
+ break;
+ case 2: /* Surface */
+ selectall_type(OB_SURF);
+ break;
+ case 3: /* Meta */
+ selectall_type(OB_MBALL);
+ break;
+ case 4: /* Armature */
+ selectall_type(OB_ARMATURE);
+ break;
+ case 5: /* Lattice */
+ selectall_type(OB_LATTICE);
+ break;
+ case 6: /* Text */
+ selectall_type(OB_FONT);
+ break;
+ case 7: /* Empty */
+ selectall_type(OB_EMPTY);
+ break;
+ case 8: /* Camera */
+ selectall_type(OB_CAMERA);
+ break;
+ case 9: /* Lamp */
+ selectall_type(OB_LAMP);
+ break;
+ }
+ allqueue(REDRAWVIEW3D, 0);
+}
+
+static uiBlock *view3d_select_object_typemenu(void *arg_unused)
+{
+ uiBlock *block;
+ short xco= 0, yco = 20, menuwidth = 120;
+
+ block= uiNewBlock(&curarea->uiblocks, "view3d_select_object_typemenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin);
+ uiBlockSetButmFunc(block, do_view3d_select_object_typemenu, NULL);
+ uiBlockSetCol(block, MENUCOL);
+
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mesh", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Curve", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Surface", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Meta", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
+
+ uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Armature", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lattice", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Text", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Empty", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
+
+ uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Camera", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lamp", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
+
+ uiBlockSetDirection(block, UI_RIGHT);
+ uiTextBoundsBlock(block, 60);
+ return block;
+}
+
+static void do_view3d_select_object_layermenu(void *arg, int event)
+{
+
+ extern void selectall_layer(int layernum);
+
+ switch(event) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ selectall_layer(event);
+ break;
+ }
+ allqueue(REDRAWVIEW3D, 0);
+}
+
+static uiBlock *view3d_select_object_layermenu(void *arg_unused)
+{
+ uiBlock *block;
+ short xco= 0, yco = 20, menuwidth = 22;
+
+ block= uiNewBlock(&curarea->uiblocks, "view3d_select_object_layermenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin);
+ uiBlockSetButmFunc(block, do_view3d_select_object_layermenu, NULL);
+ uiBlockSetCol(block, MENUCOL);
+
+ uiDefBut(block, BUTM, 1, "1", xco, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
+ uiDefBut(block, BUTM, 1, "2", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ uiDefBut(block, BUTM, 1, "3", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
+ uiDefBut(block, BUTM, 1, "4", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
+ uiDefBut(block, BUTM, 1, "5", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
+ xco += 6;
+ uiDefBut(block, BUTM, 1, "6", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
+ uiDefBut(block, BUTM, 1, "7", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
+ uiDefBut(block, BUTM, 1, "8", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
+ uiDefBut(block, BUTM, 1, "9", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
+ uiDefBut(block, BUTM, 1, "10", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
+ xco = 0;
+ uiDefBut(block, BUTM, 1, "11", xco, yco-=24, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
+ uiDefBut(block, BUTM, 1, "12", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
+ uiDefBut(block, BUTM, 1, "13", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
+ uiDefBut(block, BUTM, 1, "14", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 14, "");
+ uiDefBut(block, BUTM, 1, "15", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
+ xco += 6;
+ uiDefBut(block, BUTM, 1, "16", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
+ uiDefBut(block, BUTM, 1, "17", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
+ uiDefBut(block, BUTM, 1, "18", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
+ uiDefBut(block, BUTM, 1, "19", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
+ uiDefBut(block, BUTM, 1, "20", xco+=(menuwidth+1), yco, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, "");
+
+ uiBlockSetDirection(block, UI_RIGHT);
+ //uiTextBoundsBlock(block, 100);
+ return block;
+}
+
+
static void do_view3d_select_objectmenu(void *arg, int event)
{
// extern void borderselect(void);
@@ -397,7 +540,9 @@ static uiBlock *view3d_select_objectmenu(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, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
-
+ uiDefIconTextBlockBut(block, view3d_select_object_layermenu, NULL, ICON_RIGHTARROW_THIN, "Select All by Layer", 0, yco-=20, 120, 19, "");
+ uiDefIconTextBlockBut(block, view3d_select_object_typemenu, NULL, ICON_RIGHTARROW_THIN, "Select All by Type", 0, yco-=20, 120, 19, "");
+
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Linked...|Shift L", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");