Refactor: Port spreadsheet data set to UI tree view
This patch removes a bunch of specific code for drawing the spreadsheet data set region, which was an overly specific solution for a generic UI. Nowadays, the UI tree view API used for asset browser catalogs is a much better way to implement this behavior. To make this possible, the tree view API is extended in a few ways. Collapsibility can now be turned off, and whether an item should be active is moved to a separate virtual function. The only visual change is that the items are now drawn in a box, just like the asset catalog. Differential Revision: https://developer.blender.org/D13198
This commit is contained in:
@@ -16,49 +16,11 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <array>
|
||||
|
||||
#include "BKE_geometry_set.hh"
|
||||
#include "UI_interface.h"
|
||||
#include "spreadsheet_dataset_layout.hh"
|
||||
|
||||
struct ARegion;
|
||||
struct View2D;
|
||||
struct Panel;
|
||||
struct bContext;
|
||||
struct uiBlock;
|
||||
|
||||
namespace blender::ed::spreadsheet {
|
||||
|
||||
class DatasetDrawContext;
|
||||
|
||||
class DatasetRegionDrawer {
|
||||
public:
|
||||
const int row_height;
|
||||
float ymin_offset = 0;
|
||||
|
||||
int xmin;
|
||||
int xmax;
|
||||
uiBlock █
|
||||
const View2D &v2d;
|
||||
DatasetDrawContext &draw_context;
|
||||
|
||||
DatasetRegionDrawer(const ARegion *region, uiBlock &block, DatasetDrawContext &draw_context);
|
||||
|
||||
void draw_hierarchy(const DatasetLayoutHierarchy &layout);
|
||||
|
||||
void draw_attribute_domain_row(const DatasetComponentLayoutInfo &component,
|
||||
const DatasetAttrDomainLayoutInfo &domain_info);
|
||||
void draw_component_row(const DatasetComponentLayoutInfo &component_info);
|
||||
|
||||
private:
|
||||
void draw_dataset_row(const int indentation,
|
||||
const GeometryComponentType component,
|
||||
const std::optional<AttributeDomain> domain,
|
||||
const BIFIconID icon,
|
||||
const char *label,
|
||||
const bool is_active);
|
||||
};
|
||||
|
||||
void draw_dataset_in_region(const bContext *C, ARegion *region);
|
||||
void spreadsheet_data_set_panel_draw(const bContext *C, Panel *panel);
|
||||
|
||||
} // namespace blender::ed::spreadsheet
|
||||
|
||||
Reference in New Issue
Block a user