[Bf-blender-cvs] [d191cbe1d6f] filebrowser_redesign: Cleanup: Use struct to wrap details column data
Julian Eisel
noreply at git.blender.org
Mon Jul 22 22:42:06 CEST 2019
Commit: d191cbe1d6f5a32799f17fc98424c8c95300ade3
Author: Julian Eisel
Date: Mon Jul 22 19:52:12 2019 +0200
Branches: filebrowser_redesign
https://developer.blender.org/rBd191cbe1d6f5a32799f17fc98424c8c95300ade3
Cleanup: Use struct to wrap details column data
Also, related cleanup.
===================================================================
M source/blender/editors/include/ED_fileselect.h
M source/blender/editors/space_file/file_draw.c
M source/blender/editors/space_file/filesel.c
===================================================================
diff --git a/source/blender/editors/include/ED_fileselect.h b/source/blender/editors/include/ED_fileselect.h
index 12e75ba872f..ca26ff89d54 100644
--- a/source/blender/editors/include/ED_fileselect.h
+++ b/source/blender/editors/include/ED_fileselect.h
@@ -34,16 +34,22 @@ struct wmWindowManager;
#define FILE_LAYOUT_HOR 1
#define FILE_LAYOUT_VER 2
-#define MAX_FILE_COLUMN 4
-
typedef enum FileListColumns {
COLUMN_NONE = -1,
COLUMN_NAME = 0,
COLUMN_DATE,
COLUMN_TIME,
COLUMN_SIZE,
+
+ COLUMN_MAX
} FileListColumns;
+typedef struct FileDetailsColumn {
+ float width;
+ /** UI name for this column */
+ const char *name;
+} FileDetailsColumn;
+
typedef struct FileLayout {
/* view settings - XXX - move into own struct */
int offset_top;
@@ -63,8 +69,7 @@ typedef struct FileLayout {
int flag;
int dirty;
int textheight;
- float column_widths[MAX_FILE_COLUMN];
- const char *column_names[MAX_FILE_COLUMN];
+ FileDetailsColumn details_columns[COLUMN_MAX];
/* When we change display size, we may have to update static strings like size of files... */
short curr_size;
diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c
index 21c22efa7fa..6bd993b4175 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -744,13 +744,13 @@ static void draw_columnheader_columns(const FileSelectParams *params,
sx = ofs_x + layout->tile_w;
sy = v2d->cur.ymax;
- for (FileListColumns column = MAX_FILE_COLUMN - 1; column >= 0; column--) {
+ for (FileListColumns column = COLUMN_MAX - 1; column >= 0; column--) {
if (!filelist_column_enabled(params, column)) {
continue;
}
const int width = (column == COLUMN_NAME) ?
remaining_width :
- layout->column_widths[column] + DETAILS_COLUMN_PADDING;
+ layout->details_columns[column].width + DETAILS_COLUMN_PADDING;
/* Active sort type triangle */
if (filelist_column_matches_sort(params, column)) {
@@ -768,7 +768,7 @@ static void draw_columnheader_columns(const FileSelectParams *params,
file_draw_string(sx + ofs_x,
sy,
- layout->column_names[column],
+ layout->details_columns[column].name,
width,
layout->columnheader_h,
UI_STYLE_TEXT_LEFT,
@@ -852,7 +852,7 @@ static void draw_details_columns(const FileSelectParams *params,
const bool update_stat_strings = small_size != SMALL_SIZE_CHECK(layout->curr_size);
int sx = pos_x + layout->tile_w, sy = pos_y;
- for (FileListColumns column = MAX_FILE_COLUMN - 1; column >= 0; column--) {
+ for (FileListColumns column = COLUMN_MAX - 1; column >= 0; column--) {
/* Name column is not a detail column (should already be drawn), always skip here. */
if ((column == COLUMN_NAME) || !filelist_column_enabled(params, column)) {
continue;
@@ -860,12 +860,12 @@ static void draw_details_columns(const FileSelectParams *params,
const char *str = filelist_get_details_column_string(
column, file, small_size, update_stat_strings);
- sx -= (int)layout->column_widths[column] + DETAILS_COLUMN_PADDING;
+ sx -= (int)layout->details_columns[column].width + DETAILS_COLUMN_PADDING;
if (str) {
file_draw_string(sx + DETAILS_COLUMN_PADDING,
sy,
str,
- layout->column_widths[column],
+ layout->details_columns[column].width,
layout->tile_h,
align,
text_col);
@@ -921,8 +921,9 @@ void file_draw_list(const bContext *C, ARegion *ar)
filelist_file_cache_slidingwindow_set(files, numfiles_layout);
- textwidth = (FILE_IMGDISPLAY == params->display) ? layout->tile_w :
- (int)layout->column_widths[COLUMN_NAME];
+ textwidth = (FILE_IMGDISPLAY == params->display) ?
+ layout->tile_w :
+ (int)layout->details_columns[COLUMN_NAME].width;
textheight = (int)(layout->textheight * 3.0 / 2.0 + 0.5);
align = (FILE_IMGDISPLAY == params->display) ? UI_STYLE_TEXT_CENTER : UI_STYLE_TEXT_LEFT;
@@ -1037,7 +1038,7 @@ void file_draw_list(const bContext *C, ARegion *ar)
width = layout->tile_w - 2 * padx;
}
else if (params->display == FILE_LONGDISPLAY) {
- width = layout->column_widths[COLUMN_NAME] + DETAILS_COLUMN_PADDING - 2 * padx;
+ width = layout->details_columns[COLUMN_NAME].width + DETAILS_COLUMN_PADDING - 2 * padx;
}
else {
BLI_assert(params->display == FILE_IMGDISPLAY);
@@ -1074,7 +1075,7 @@ void file_draw_list(const bContext *C, ARegion *ar)
sx + 1 + icon_ofs, tpos, file->name, (float)textwidth, textheight, align, text_col);
}
- sx += (int)layout->column_widths[COLUMN_NAME] + DETAILS_COLUMN_PADDING;
+ sx += (int)layout->details_columns[COLUMN_NAME].width + DETAILS_COLUMN_PADDING;
draw_details_columns(params, layout, file, xmin, sy, align, text_col);
}
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index ad0de41c2fa..88d3da04ef8 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -543,28 +543,27 @@ float file_font_pointsize(void)
static void column_widths(FileSelectParams *params, struct FileLayout *layout)
{
- int i;
+ FileDetailsColumn *columns = layout->details_columns;
const bool small_size = SMALL_SIZE_CHECK(params->thumbnail_size);
const int pad = small_size ? 0 : DETAILS_COLUMN_PADDING;
- for (i = 0; i < MAX_FILE_COLUMN; ++i) {
- layout->column_widths[i] = 0;
+ for (int i = 0; i < COLUMN_MAX; ++i) {
+ columns[i].width = 0;
}
- layout->column_widths[COLUMN_NAME] = ((float)params->thumbnail_size / 8.0f) * UI_UNIT_X;
+ columns[COLUMN_NAME].width = ((float)params->thumbnail_size / 8.0f) * UI_UNIT_X;
/* Biggest possible reasonable values... */
- layout->column_widths[COLUMN_DATE] = file_string_width(small_size ? "23/08/89" : "23-Dec-89") +
- pad;
- layout->column_widths[COLUMN_TIME] = file_string_width("23:59") + pad;
- layout->column_widths[COLUMN_SIZE] = file_string_width(small_size ? "98.7 M" : "98.7 MiB") + pad;
+ columns[COLUMN_DATE].width = file_string_width(small_size ? "23/08/89" : "23-Dec-89") + pad;
+ columns[COLUMN_TIME].width = file_string_width("23:59") + pad;
+ columns[COLUMN_SIZE].width = file_string_width(small_size ? "98.7 M" : "98.7 MiB") + pad;
}
static void column_names(FileLayout *layout)
{
- layout->column_names[COLUMN_NAME] = "Name";
- layout->column_names[COLUMN_DATE] = "Date";
- layout->column_names[COLUMN_TIME] = "Time";
- layout->column_names[COLUMN_SIZE] = "Size";
+ layout->details_columns[COLUMN_NAME].name = "Name";
+ layout->details_columns[COLUMN_DATE].name = "Date";
+ layout->details_columns[COLUMN_TIME].name = "Time";
+ layout->details_columns[COLUMN_SIZE].name = "Size";
}
void ED_fileselect_init_layout(struct SpaceFile *sfile, ARegion *ar)
@@ -658,10 +657,10 @@ void ED_fileselect_init_layout(struct SpaceFile *sfile, ARegion *ar)
column_widths(params, layout);
maxlen = ICON_DEFAULT_WIDTH_SCALE + column_icon_space +
- (int)layout->column_widths[COLUMN_NAME] + column_space +
- (int)layout->column_widths[COLUMN_DATE] + column_space +
- (int)layout->column_widths[COLUMN_TIME] + column_space +
- (int)layout->column_widths[COLUMN_SIZE] + column_space;
+ (int)layout->details_columns[COLUMN_NAME].width + column_space +
+ (int)layout->details_columns[COLUMN_DATE].width + column_space +
+ (int)layout->details_columns[COLUMN_TIME].width + column_space +
+ (int)layout->details_columns[COLUMN_SIZE].width + column_space;
layout->tile_w = maxlen;
if (layout->rows > 0) {
layout->columns = numfiles / layout->rows + 1; // XXX dirty, modulo is zero
More information about the Bf-blender-cvs
mailing list