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:
authorMichael Fox <mfoxdogg@gmail.com>2008-12-28 04:28:31 +0300
committerMichael Fox <mfoxdogg@gmail.com>2008-12-28 04:28:31 +0300
commitbb02d1fd4f86cdb42b1d3dee7b56ec2bde20fbbc (patch)
tree0663fe42f9e758afd82d17191ba6dca873e025ba
parente3ddc08e5fb7eb7aa845db0125241cc8b584fdf2 (diff)
2.5
****** Ported object selection tools - (de)select all - invert selection (ctrl-i) - select random ( numpad *) each selection tool is own operator , mouse selection is seperated again to own operator select random has the hard coded fac of 50 as there is no number popup developed yet to be ported: select by layer and select by type
-rw-r--r--source/blender/editors/space_view3d/view3d_intern.h3
-rw-r--r--source/blender/editors/space_view3d/view3d_ops.c12
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c196
3 files changed, 140 insertions, 71 deletions
diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h
index 929e1f7751d..a83864a0b62 100644
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@ -118,6 +118,9 @@ void view3d_update_depths(ARegion *ar, View3D *v3d);
/* view3d_select.c */
void VIEW3D_OT_select(struct wmOperatorType *ot);
+void VIEW3D_OT_de_select_all(struct wmOperatorType *ot);
+void VIEW3D_OT_select_invert(struct wmOperatorType *ot);
+void VIEW3D_OT_select_random(struct wmOperatorType *ot);
void VIEW3D_OT_borderselect(struct wmOperatorType *ot);
void VIEW3D_OT_circle_select(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index 6ac110ea0cf..2be4e755b74 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -68,6 +68,9 @@ void view3d_operatortypes(void)
WM_operatortype_append(VIEW3D_OT_viewnumpad);
WM_operatortype_append(VIEW3D_OT_viewcenter);
WM_operatortype_append(VIEW3D_OT_select);
+ WM_operatortype_append(VIEW3D_OT_select_invert);
+ WM_operatortype_append(VIEW3D_OT_select_random);
+ WM_operatortype_append(VIEW3D_OT_de_select_all);
WM_operatortype_append(VIEW3D_OT_borderselect);
WM_operatortype_append(VIEW3D_OT_clipping);
WM_operatortype_append(VIEW3D_OT_circle_select);
@@ -115,10 +118,15 @@ void view3d_keymap(wmWindowManager *wm)
RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD6, KM_PRESS, KM_CTRL, 0)->ptr, "viewnum", V3D_VIEW_PANRIGHT);
RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD8, KM_PRESS, KM_CTRL, 0)->ptr, "viewnum", V3D_VIEW_PANUP);
- RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0)->ptr, "select_type", V3D_SELECT_MOUSE);
+ /* selection*/
+ WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "VIEW3D_OT_de_select_all",AKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "VIEW3D_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "VIEW3D_OT_select_random",PADASTERKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_borderselect", BKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "VIEW3D_OT_clipping", BKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_circle_select", CKEY, KM_PRESS, 0, 0);
+
+ WM_keymap_add_item(keymap, "VIEW3D_OT_clipping", BKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_render_border", BKEY, KM_PRESS, KM_SHIFT, 0);
/* TODO - this is just while we have no way to load a text datablock */
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index 2be8df678f0..04635021bfe 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -742,10 +742,10 @@ void selectswap(Scene *scene, View3D *v3d)
}
/* inverts object selection */
-void selectrandom(Scene *scene, View3D *v3d)
+void selectrandom(Scene *scene, View3D *v3d, short randfac)
{
Base *base;
- static short randfac = 50;
+ /*static short randfac = 50;*/
// XXX if(button(&randfac,0, 100,"Percentage:")==0) return;
for(base= FIRSTBASE; base; base= base->next) {
@@ -1231,74 +1231,7 @@ static void mouse_select(Scene *scene, ARegion *ar, View3D *v3d, short *mval)
/* note; make it notifier! */
ED_region_tag_redraw(ar);
-
-}
-
-/* *****************Selection Operations Operator******************* */
-
-static EnumPropertyItem prop_select_items[] = {
- {V3D_SELECT_MOUSE, "NORMAL", "Normal Select", "Select using the mouse"},
- {0, NULL, NULL, NULL}};
-
-static int view3d_select_exec(bContext *C, wmOperator *op)
-{
- ScrArea *sa= CTX_wm_area(C);
- ARegion *ar= CTX_wm_region(C);
- View3D *v3d= sa->spacedata.first;
- Scene *scene= CTX_data_scene(C);
- int select_type;
- short mval[2];
- select_type = RNA_enum_get(op->ptr, "select_type");
-
- view3d_operator_needs_opengl(C);
- printf("about to look at enum");
- switch (select_type) {
- case V3D_SELECT_MOUSE :
- printf("caught event");
- mval[0] = RNA_int_get(op->ptr, "mx");
- mval[1] = RNA_int_get(op->ptr, "my");
- mouse_select(scene, ar, v3d, mval);
- printf("selected object");
- break;
- }
- return OPERATOR_FINISHED;
-}
-
-static int view3d_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- ScrArea *sa= CTX_wm_area(C);
- ARegion *ar= CTX_wm_region(C);
- View3D *v3d= sa->spacedata.first;
- short mval[2];
-
- mval[0]= event->x - ar->winrct.xmin;
- mval[1]= event->y - ar->winrct.ymin;
-
- RNA_int_set(op->ptr, "mx", mval[0]);
- RNA_int_set(op->ptr, "my", mval[1]);
-
- return view3d_select_exec(C,op);
-
-}
-
-void VIEW3D_OT_select(wmOperatorType *ot)
-{
- PropertyRNA *prop;
-
- /* identifiers */
- ot->name= "Activate/Select";
- ot->idname= "VIEW3D_OT_select";
-
- /* api callbacks */
- ot->invoke= view3d_select_invoke;
- ot->poll= ED_operator_view3d_active;
-
- prop = RNA_def_property(ot->srna, "select_type", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_items(prop, prop_select_items);
-
- prop = RNA_def_property(ot->srna, "mx", PROP_INT, PROP_NONE);
- prop = RNA_def_property(ot->srna, "my", PROP_INT, PROP_NONE);
}
/* ******************** border and circle ************************************** */
@@ -1654,6 +1587,9 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
}
+/* *****************Selection Operators******************* */
+
+/* ****** Border Select ****** */
void VIEW3D_OT_borderselect(wmOperatorType *ot)
{
@@ -1676,7 +1612,129 @@ void VIEW3D_OT_borderselect(wmOperatorType *ot)
RNA_def_property(ot->srna, "ymax", PROP_INT, PROP_NONE);
}
+/* ****** Mouse Select ****** */
+static int view3d_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ ARegion *ar= CTX_wm_region(C);
+ View3D *v3d= sa->spacedata.first;
+ Scene *scene= CTX_data_scene(C);
+ short mval[2];
+
+ mval[0]= event->x - ar->winrct.xmin;
+ mval[1]= event->y - ar->winrct.ymin;
+
+ view3d_operator_needs_opengl(C);
+
+ mouse_select(scene, ar, v3d, mval);
+
+ return OPERATOR_FINISHED;
+}
+
+void VIEW3D_OT_select(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Activate/Select";
+ ot->idname= "VIEW3D_OT_select";
+
+ /* api callbacks */
+ ot->invoke= view3d_select_invoke;
+ ot->poll= ED_operator_view3d_active;
+
+}
+
+/* ****** invert selection *******/
+static int view3d_select_invert_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ View3D *v3d= sa->spacedata.first;
+ ARegion *ar= CTX_wm_region(C);
+ Scene *scene= CTX_data_scene(C);
+
+ selectswap(scene, v3d);
+
+ ED_region_tag_redraw(ar);
+
+ return OPERATOR_FINISHED;
+}
+
+void VIEW3D_OT_select_invert(wmOperatorType *ot)
+{
+
+ /* identifiers */
+ ot->name= "Invert selection";
+ ot->idname= "VIEW3D_OT_select_invert";
+
+ /* api callbacks */
+ ot->invoke= view3d_select_invert_invoke;
+ ot->poll= ED_operator_view3d_active;
+
+}
+/* ****** (de)select All *******/
+static int view3d_de_select_all_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ View3D *v3d= sa->spacedata.first;
+ ARegion *ar= CTX_wm_region(C);
+ Scene *scene= CTX_data_scene(C);
+
+ deselectall(scene, v3d);
+
+ ED_region_tag_redraw(ar);
+
+ return OPERATOR_FINISHED;
+}
+
+void VIEW3D_OT_de_select_all(wmOperatorType *ot)
+{
+
+ /* identifiers */
+ ot->name= "deselect all";
+ ot->idname= "VIEW3D_OT_de_select_all";
+
+ /* api callbacks */
+ ot->invoke= view3d_de_select_all_invoke;
+ ot->poll= ED_operator_view3d_active;
+
+}
+/* ****** random selection *******/
+static int view3d_select_random_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ View3D *v3d= sa->spacedata.first;
+ ARegion *ar= CTX_wm_region(C);
+ Scene *scene= CTX_data_scene(C);
+ short randfac;
+
+ /*uiPupmenuOperator(C, 0, op, "percent", "percent");*/
+
+ randfac = RNA_int_get(op->ptr, "percent");
+
+ selectrandom(scene, v3d, randfac);
+
+ ED_region_tag_redraw(ar);
+
+ return OPERATOR_FINISHED;
+}
+
+void VIEW3D_OT_select_random(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+
+ /* identifiers */
+ ot->name= "Random selection";
+ ot->idname= "VIEW3D_OT_select_random";
+
+ /* api callbacks */
+ ot->invoke= view3d_select_random_invoke;
+ ot->poll= ED_operator_view3d_active;
+
+ prop = RNA_def_property(ot->srna, "percent", PROP_INT, PROP_NONE);
+ RNA_def_property_ui_range(prop, 1, 100,1, 1);
+ RNA_def_property_ui_text(prop, "Percent", "Max persentage that will be selected");
+ RNA_def_property_int_default(prop, 50);
+}
/* ------------------------------------------------------------------------- */
/** The following functions are quick & dirty callback functions called