[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28290] trunk/blender/source/blender/ editors/space_file: == file browser ==

Andrea Weikert elubie at gmx.net
Mon Apr 19 21:29:40 CEST 2010


Revision: 28290
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28290
Author:   elubie
Date:     2010-04-19 21:29:40 +0200 (Mon, 19 Apr 2010)

Log Message:
-----------
== file browser ==
Select from last selection. This new setting allows to select all files from the last selected to the current. (Works like SHIFT+SELECT in Windows file browser)
Keymap is LEFTMOUSE+ALT for now since LEFTMOUSE+CTRL is already used for renaming (like in outliner)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_file/file_draw.c
    trunk/blender/source/blender/editors/space_file/file_ops.c
    trunk/blender/source/blender/editors/space_file/space_file.c

Modified: trunk/blender/source/blender/editors/space_file/file_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/file_draw.c	2010-04-19 19:25:40 UTC (rev 28289)
+++ trunk/blender/source/blender/editors/space_file/file_draw.c	2010-04-19 19:29:40 UTC (rev 28290)
@@ -78,10 +78,6 @@
 
 /* button events */
 enum {
-	B_REDR 	= 0,
-	B_FS_EXEC,
-	B_FS_CANCEL,
-	B_FS_PARENT,
 	B_FS_DIRNAME,
 	B_FS_FILENAME
 } eFile_ButEvents;
@@ -90,9 +86,6 @@
 static void do_file_buttons(bContext *C, void *arg, int event)
 {
 	switch(event) {
-		case B_FS_PARENT:
-			file_parent_exec(C, NULL); /* file_ops.c */
-			break;
 		case B_FS_FILENAME:
 			file_filename_exec(C, NULL);
 			break;

Modified: trunk/blender/source/blender/editors/space_file/file_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/file_ops.c	2010-04-19 19:25:40 UTC (rev 28289)
+++ trunk/blender/source/blender/editors/space_file/file_ops.c	2010-04-19 19:29:40 UTC (rev 28290)
@@ -121,7 +121,7 @@
 	}
 }
 
-static FileSelect file_select(bContext* C, const rcti* rect, short selecting, short toggle_one)
+static FileSelect file_select(bContext* C, const rcti* rect, short selecting, short toggle_one, short fill)
 {
 	ARegion *ar= CTX_wm_region(C);
 	SpaceFile *sfile= CTX_wm_space_file(C);
@@ -141,6 +141,19 @@
 	
 	clamp_to_filelist(numfiles, &first_file, &last_file);
 
+	if (fill && (last_file >= 0) && (last_file < numfiles) ) {
+		int f= last_file;
+		while (f >= 0) {
+			struct direntry* file = filelist_file(sfile->files, f);
+			if (file->flags & ACTIVEFILE)
+				break;
+			f--;
+		}
+		if (f >= 0) {
+			first_file = f+1;
+		}
+	}
+
 	/* select all valid files between first and last indicated */
 	if ( (first_file >= 0) && (first_file < numfiles) && (last_file >= 0) && (last_file < numfiles) ) {
 		for (act_file = first_file; act_file <= last_file; act_file++) {
@@ -213,7 +226,7 @@
 
 	BLI_isect_rcti(&(ar->v2d.mask), &rect, &rect);
 	
-	if (FILE_SELECT_DIR == file_select(C, &rect, selecting, 0)) {
+	if (FILE_SELECT_DIR == file_select(C, &rect, selecting, 0, 0)) {
 		WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL);
 	} else {
 		WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
@@ -245,6 +258,7 @@
 	short val;
 	rcti rect;
 	int extend = RNA_boolean_get(op->ptr, "extend");
+	int fill = RNA_boolean_get(op->ptr, "fill");
 
 	if(ar->regiontype != RGN_TYPE_WINDOW)
 		return OPERATOR_CANCELLED;
@@ -259,7 +273,7 @@
 	/* single select, deselect all selected first */
 	if (!extend) file_deselect_all(sfile);
 
-	if (FILE_SELECT_DIR == file_select(C, &rect, 1, extend ))
+	if (FILE_SELECT_DIR == file_select(C, &rect, 1, extend, fill ))
 		WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL);
 	else
 		WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
@@ -283,6 +297,7 @@
 
 	/* rna */
 	RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first.");
+	RNA_def_boolean(ot->srna, "fill", 0, "Fill", "Select everything beginning with the last selection.");
 }
 
 static int file_select_all_exec(bContext *C, wmOperator *op)
@@ -657,8 +672,10 @@
 
 int file_refresh_exec(bContext *C, wmOperator *unused)
 {
-	file_change_dir(C, 1);
+	SpaceFile *sfile= CTX_wm_space_file(C);
 
+	ED_fileselect_clear(C, sfile);
+
 	WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL);
 
 	return OPERATOR_FINISHED;

Modified: trunk/blender/source/blender/editors/space_file/space_file.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/space_file.c	2010-04-19 19:25:40 UTC (rev 28289)
+++ trunk/blender/source/blender/editors/space_file/space_file.c	2010-04-19 19:29:40 UTC (rev 28290)
@@ -374,9 +374,12 @@
 	/* keys for main area */
 	keymap= WM_keymap_find(keyconf, "File Browser Main", SPACE_FILE, 0);
 	WM_keymap_add_item(keymap, "FILE_OT_select_execute", LEFTMOUSE, KM_DBL_CLICK, 0, 0);
-	WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, 0, 0);
-	kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, KM_SHIFT, 0);
+	WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, 0, 0);
+	kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0);
 	RNA_boolean_set(kmi->ptr, "extend", 1);
+	kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, KM_ALT, 0);
+	RNA_boolean_set(kmi->ptr, "extend", 1);
+	RNA_boolean_set(kmi->ptr, "fill", 1);
 	WM_keymap_add_item(keymap, "FILE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "FILE_OT_select_border", BKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "FILE_OT_select_border", EVT_TWEAK_L, KM_ANY, 0, 0);





More information about the Bf-blender-cvs mailing list