This patch upgrades node editor breadcrumbs to have slightly more visual weight, to including the base path of object/modifier/world, etc, have more visually pleasing spacing, and contain icons. In the code, a generic "context path" is added to interface code. The idea is that this could be used to draw other breadcrumbs in areas like the property editor or the spreadsheet, and features could be added to all of those areas at the same time. Ideally we would be able to control the color of the breadcrumbs with a specific theme color, but since they are drawn with the regular layout system, that is not easily possible. Thanks to @fabian_schempp for the original patch. Differential Revision: https://developer.blender.org/D10413
73 lines
2.0 KiB
C++
73 lines
2.0 KiB
C++
/*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
/** \file
|
|
* \ingroup editorui
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
|
|
#include "BLI_string_ref.hh"
|
|
#include "BLI_vector.hh"
|
|
|
|
#include "UI_resources.h"
|
|
|
|
namespace blender::nodes::geometry_nodes_eval_log {
|
|
struct GeometryAttributeInfo;
|
|
}
|
|
|
|
struct uiBlock;
|
|
struct StructRNA;
|
|
struct uiSearchItems;
|
|
|
|
namespace blender::ui {
|
|
|
|
class AbstractTreeView;
|
|
|
|
/**
|
|
* An item in a breadcrumb-like context. Currently this struct is very simple, but more
|
|
* could be added to it in the future, to support interactivity or tooltips, for example.
|
|
*/
|
|
struct ContextPathItem {
|
|
/* Text to display in the UI. */
|
|
std::string name;
|
|
/* #BIFIconID */
|
|
int icon;
|
|
};
|
|
|
|
void context_path_add_generic(Vector<ContextPathItem> &path,
|
|
StructRNA &rna_type,
|
|
void *ptr,
|
|
const BIFIconID icon_override = ICON_NONE);
|
|
|
|
void template_breadcrumbs(uiLayout &layout, Span<ContextPathItem> context_path);
|
|
|
|
void attribute_search_add_items(
|
|
StringRefNull str,
|
|
const bool is_output,
|
|
Span<const nodes::geometry_nodes_eval_log::GeometryAttributeInfo *> infos,
|
|
uiSearchItems *items,
|
|
const bool is_first);
|
|
|
|
} // namespace blender::ui
|
|
|
|
blender::ui::AbstractTreeView *UI_block_add_view(
|
|
uiBlock &block,
|
|
blender::StringRef idname,
|
|
std::unique_ptr<blender::ui::AbstractTreeView> tree_view);
|