[Bf-blender-cvs] [29d3cbc] asset-experiments: Filelisting: First step of sanitanization...

Bastien Montagne noreply at git.blender.org
Mon Feb 23 14:52:46 CET 2015


Commit: 29d3cbc6f90db8d1c4526ef5fad730de18190a56
Author: Bastien Montagne
Date:   Mon Feb 23 14:47:34 2015 +0100
Branches: asset-experiments
https://developer.blender.org/rB29d3cbc6f90db8d1c4526ef5fad730de18190a56

Filelisting: First step of sanitanization...

Move typeflag and selflag back to FileDirEntry, and add blentype there too,
this will be needed by asset engines, and avoids rechecking lib ID types over and over!

There's much more to do here though. Also, FileDirEntryRevision is going to be
used quite higly, we want to keep it as light as possible (much lighter than
its current state for sure!). Think we can move back to FileDirEntry paths
(and try to get rid of abspath on the run, too), but also most likely
preview (we won't store a preview for all possible revisions anyway),
owner/permissions, etc.

Rev should probably only have its uuid, and date/time.

Also, simplified filetype generation (from extensions for real files, and BLO helpers
for libdata), now it's nicely encapsulated into each reading callback.

===================================================================

M	source/blender/editors/space_file/file_draw.c
M	source/blender/editors/space_file/file_ops.c
M	source/blender/editors/space_file/filelist.c
M	source/blender/editors/space_file/filesel.c
M	source/blender/editors/space_file/space_file.c
M	source/blender/makesdna/DNA_space_types.h

===================================================================

diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c
index 70216d2..81093ae 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -497,12 +497,12 @@ void file_draw_list(const bContext *C, ARegion *ar)
 		UI_ThemeColor4(TH_TEXT);
 
 
-		if (!(file->entry->selflag & FILE_SEL_EDITING)) {
-			if ((params->active_file == i) || (file->entry->selflag & FILE_SEL_HIGHLIGHTED) ||
-			    (file->entry->selflag & FILE_SEL_SELECTED))
+		if (!(file->selflag & FILE_SEL_EDITING)) {
+			if ((params->active_file == i) || (file->selflag & FILE_SEL_HIGHLIGHTED) ||
+			    (file->selflag & FILE_SEL_SELECTED))
 			{
-				int colorid = (file->entry->selflag & FILE_SEL_SELECTED) ? TH_HILITE : TH_BACK;
-				int shade = (params->active_file == i) || (file->entry->selflag & FILE_SEL_HIGHLIGHTED) ? 20 : 0;
+				int colorid = (file->selflag & FILE_SEL_SELECTED) ? TH_HILITE : TH_BACK;
+				int shade = (params->active_file == i) || (file->selflag & FILE_SEL_HIGHLIGHTED) ? 20 : 0;
 
 				/* readonly files (".." and ".") must not be drawn as selected - set color back to normal */
 				if (FILENAME_IS_CURRPAR(file->entry->relpath)) {
@@ -526,7 +526,7 @@ void file_draw_list(const bContext *C, ARegion *ar)
 			}
 
 			file_draw_preview(block, path, sx, sy, imb, icon, layout,
-			                  !is_icon && (file->entry->typeflag & FILE_TYPE_IMAGE), do_drag);
+			                  !is_icon && (file->typeflag & FILE_TYPE_IMAGE), do_drag);
 		}
 		else {
 			file_draw_icon(block, path, sx, sy - (UI_UNIT_Y / 6), filelist_geticon(files, i, true),
@@ -536,7 +536,7 @@ void file_draw_list(const bContext *C, ARegion *ar)
 
 		UI_ThemeColor4(TH_TEXT);
 
-		if (file->entry->selflag & FILE_SEL_EDITING) {
+		if (file->selflag & FILE_SEL_EDITING) {
 			uiBut *but;
 			short width;
 
@@ -559,18 +559,18 @@ void file_draw_list(const bContext *C, ARegion *ar)
 			UI_but_flag_enable(but, UI_BUT_NO_UTF8); /* allow non utf8 names */
 			UI_but_flag_disable(but, UI_BUT_UNDO);
 			if (false == UI_but_active_only(C, ar, block, but)) {
-				file->entry->selflag &= ~FILE_SEL_EDITING;
+				file->selflag &= ~FILE_SEL_EDITING;
 			}
 		}
 
-		if (!(file->entry->selflag & FILE_SEL_EDITING)) {
+		if (!(file->selflag & FILE_SEL_EDITING)) {
 			int tpos = (FILE_IMGDISPLAY == params->display) ? sy - layout->tile_h + layout->textheight : sy;
 			file_draw_string(sx + 1, tpos, name, (float)textwidth, textheight, align);
 		}
 
 		if (params->display == FILE_SHORTDISPLAY) {
 			sx += (int)layout->column_widths[COLUMN_NAME] + column_space;
-			if (!(file->entry->typeflag & FILE_TYPE_DIR)) {
+			if (!(file->typeflag & FILE_TYPE_DIR)) {
 				file_draw_string(sx, sy, file->entry->size, layout->column_widths[COLUMN_SIZE], layout->tile_h, align);
 				sx += (int)layout->column_widths[COLUMN_SIZE] + column_space;
 			}
@@ -599,7 +599,7 @@ void file_draw_list(const bContext *C, ARegion *ar)
 			file_draw_string(sx, sy, file->entry->time, layout->column_widths[COLUMN_TIME], layout->tile_h, align);
 			sx += (int)layout->column_widths[COLUMN_TIME] + column_space;
 
-			if (!(file->entry->typeflag & FILE_TYPE_DIR)) {
+			if (!(file->typeflag & FILE_TYPE_DIR)) {
 				file_draw_string(sx, sy, file->entry->size, layout->column_widths[COLUMN_SIZE], layout->tile_h, align);
 				sx += (int)layout->column_widths[COLUMN_SIZE] + column_space;
 			}
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index 35ee948..764c54c 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -178,7 +178,7 @@ static FileSelect file_select_do(bContext *C, int selected_idx, bool do_diropen)
 	{
 		params->active_file = selected_idx;
 
-		if (file->entry->typeflag & FILE_TYPE_DIR) {
+		if (file->typeflag & FILE_TYPE_DIR) {
 			const bool is_parent_dir = FILENAME_IS_PARENT(file->entry->relpath);
 
 			if (do_diropen == false) {
@@ -279,7 +279,7 @@ static int file_border_select_modal(bContext *C, wmOperator *op, const wmEvent *
 				struct FileDirEntry *file = filelist_file(sfile->files, idx);
 
 				if (FILENAME_IS_CURRPAR(file->entry->relpath)) {
-					file->entry->selflag &= ~FILE_SEL_HIGHLIGHTED;
+					file->selflag &= ~FILE_SEL_HIGHLIGHTED;
 				}
 
 				/* active_file gets highlighted as well - make sure it is no readonly file */
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 04db601..f7fadca 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -295,24 +295,24 @@ static int compare_direntry_generic(const FileDirEntry *entry1, const FileDirEnt
 {
 	/* type is equal to stat.st_mode */
 
-	if (entry1->entry->typeflag & FILE_TYPE_DIR) {
-	    if (entry2->entry->typeflag & FILE_TYPE_DIR) {
+	if (entry1->typeflag & FILE_TYPE_DIR) {
+	    if (entry2->typeflag & FILE_TYPE_DIR) {
 			/* If both entries are tagged as dirs, we make a 'sub filter' that shows first the real dirs,
 			 * then libs (.blend files), then categories in libs. */
-			if (entry1->entry->typeflag & FILE_TYPE_BLENDERLIB) {
-				if (!(entry2->entry->typeflag & FILE_TYPE_BLENDERLIB)) {
+			if (entry1->typeflag & FILE_TYPE_BLENDERLIB) {
+				if (!(entry2->typeflag & FILE_TYPE_BLENDERLIB)) {
 					return 1;
 				}
 			}
-			else if (entry2->entry->typeflag & FILE_TYPE_BLENDERLIB) {
+			else if (entry2->typeflag & FILE_TYPE_BLENDERLIB) {
 				return -1;
 			}
-			else if (entry1->entry->typeflag & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP)) {
-				if (!(entry2->entry->typeflag & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP))) {
+			else if (entry1->typeflag & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP)) {
+				if (!(entry2->typeflag & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP))) {
 					return 1;
 				}
 			}
-			else if (entry2->entry->typeflag & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP)) {
+			else if (entry2->typeflag & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP)) {
 				return -1;
 			}
 		}
@@ -320,7 +320,7 @@ static int compare_direntry_generic(const FileDirEntry *entry1, const FileDirEnt
 			return -1;
 		}
 	}
-	else if (entry2->entry->typeflag & FILE_TYPE_DIR) {
+	else if (entry2->typeflag & FILE_TYPE_DIR) {
 	    return 1;
 	}
 
@@ -430,9 +430,9 @@ static int compare_extension(const void *a1, const void *a2)
 	if (!sufix1) sufix1 = nil;
 	if (!sufix2) sufix2 = nil;
 
-	if ((entry1->entry->typeflag & FILE_TYPE_BLENDERLIB) && !(entry2->entry->typeflag & FILE_TYPE_BLENDERLIB)) return -1;
-	if (!(entry1->entry->typeflag & FILE_TYPE_BLENDERLIB) && (entry2->entry->typeflag & FILE_TYPE_BLENDERLIB)) return 1;
-	if ((entry1->entry->typeflag & FILE_TYPE_BLENDERLIB) && (entry2->entry->typeflag & FILE_TYPE_BLENDERLIB)) {
+	if ((entry1->typeflag & FILE_TYPE_BLENDERLIB) && !(entry2->typeflag & FILE_TYPE_BLENDERLIB)) return -1;
+	if (!(entry1->typeflag & FILE_TYPE_BLENDERLIB) && (entry2->typeflag & FILE_TYPE_BLENDERLIB)) return 1;
+	if ((entry1->typeflag & FILE_TYPE_BLENDERLIB) && (entry2->typeflag & FILE_TYPE_BLENDERLIB)) {
 		char lib1[FILE_MAX_LIBEXTRA], lib2[FILE_MAX_LIBEXTRA];
 		char *group1, *group2, *name1, *name2;
 		int grp_comp;
@@ -551,8 +551,8 @@ static bool is_filtered_file(FileDirEntry *file, const char *UNUSED(root), FileL
 	bool is_filtered = !is_hidden_file(file->entry->relpath, filter);
 
 	if (is_filtered && filter->filter && !FILENAME_IS_CURRPAR(file->entry->relpath)) {
-		if (file->entry->typeflag & FILE_TYPE_DIR) {
-			if (file->entry->typeflag & (FILE_TYPE_BLENDERLIB | FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP)) {
+		if (file->typeflag & FILE_TYPE_DIR) {
+			if (file->typeflag & (FILE_TYPE_BLENDERLIB | FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP)) {
 				if (!(filter->filter & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP))) {
 					is_filtered = false;
 				}
@@ -564,7 +564,7 @@ static bool is_filtered_file(FileDirEntry *file, const char *UNUSED(root), FileL
 			}
 		}
 		else {
-			if (!(file->entry->typeflag & filter->filter)) {
+			if (!(file->typeflag & filter->filter)) {
 				is_filtered = false;
 			}
 		}
@@ -588,8 +588,8 @@ static bool is_filtered_lib(FileDirEntry *file, const char *root, FileListFilter
 	if (BLO_library_path_explode(path, dir, &group, &name)) {
 		is_filtered = !is_hidden_file(file->entry->relpath, filter);
 		if (is_filtered && filter->filter && !FILENAME_IS_CURRPAR(file->entry->relpath)) {
-			if (file->entry->typeflag & FILE_TYPE_DIR) {
-				if (file->entry->typeflag & (FILE_TYPE_BLENDERLIB | FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP)) {
+			if (file->typeflag & FILE_TYPE_DIR) {
+				if (file->typeflag & (FILE_TYPE_BLENDERLIB | FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP)) {
 					if (!(filter->filter & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP))) {
 						is_filtered = false;
 					}
@@ -823,12 +823,11 @@ ImBuf *filelist_geticon_image(struct FileList *filelist, const int index)
 {
 	FileDirEntry *file = filelist_geticon_get_file(filelist, index);
 
-	return filelist_geticon_image_ex(file->entry->typeflag, file->entry->relpath);
+	return filelist_geticon_image_ex(file->typeflag, file->entry->relpath);
 }
 
 static int filelist_geticon_ex(
-        const unsigned int typeflag, const char *path, const char *relpath,
-        const bool is_main, const bool ignore_libdir)
+        const int typeflag, const int blentype, const char *relpath, const bool is_main, const bool ignore_libdir)
 {
 	if ((typeflag & FILE_TYPE_DIR) && !(ignore_libdir && (typeflag & (FILE_TYPE_BLENDERLIB | FILE_TYPE_BLENDER)))) {
 		if (FILENAME_IS_PARENT(relpath)) {
@@ -867,68 +866,62 @@ static int filelist_geticon_ex(
 	else if (typeflag & FILE_TYPE_TEXT)
 		return ICON_FILE_TEXT;
 	else if (typeflag & FILE_TYPE_BLENDERLIB) {
-		char lib[FILE_MAXDIR], *group;
-
-		if (BLO_library_path_explode(path, lib, &group, NULL) && group) {
-			int idcode = groupname_to_code(group);
-
-			/* TODO: this should most likely be completed and moved to UI_interface_icons.h ? unless it already exists somewhere... */
-			switch (idcode) {
-				case ID_AC:
-					return ICON_ANIM_DATA;
-				case ID_AR:
-					return ICON_ARMAT

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list