Readded layer menu and fixed color picker button
This commit is contained in:
parent
267a66dd32
commit
516f48993e
7 changed files with 586 additions and 522 deletions
|
|
@ -44,7 +44,7 @@ NetworkingObjects::NetObjTemporaryPtr<BookmarkListItem> BookmarkManager::get_boo
|
|||
return toRet;
|
||||
}
|
||||
|
||||
void BookmarkManager::setup_list_gui(const char* id) {
|
||||
void BookmarkManager::setup_list_gui() {
|
||||
using namespace NetworkingObjects;
|
||||
using namespace GUIStuff;
|
||||
using namespace ElementHelpers;
|
||||
|
|
@ -439,6 +439,7 @@ NetworkingObjects::NetObjOrderedListIterator<BookmarkListItem> BookmarkManager::
|
|||
auto& it = insertedBookmarkPair.second;
|
||||
world.undo.push(std::make_unique<AddBookmarkWorldUndoAction>(it->pos, world.undo.get_undoid_from_netid(insertedBookmarkPair.first), world.undo.get_undoid_from_netid(it->obj.get_net_id())));
|
||||
world.main.g.gui.set_to_layout();
|
||||
refresh_gui_data();
|
||||
return it;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ class BookmarkManager {
|
|||
BookmarkManager(World& w);
|
||||
void server_init_no_file();
|
||||
void scale_up(const WorldScalar& scaleUpAmount);
|
||||
void setup_list_gui(const char* id);
|
||||
void setup_list_gui();
|
||||
void refresh_gui_data();
|
||||
void save_file(cereal::PortableBinaryOutputArchive& a) const;
|
||||
void load_file(cereal::PortableBinaryInputArchive& a, VersionNumber version);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -12,21 +12,26 @@ class DrawingProgramLayerManagerGUI {
|
|||
public:
|
||||
DrawingProgramLayerManagerGUI(DrawingProgramLayerManager& layerManager);
|
||||
void refresh_gui_data();
|
||||
void setup_list_gui(const char* id, bool& hoveringOverDropdown);
|
||||
void setup_list_gui();
|
||||
private:
|
||||
std::optional<std::pair<NetworkingObjects::NetObjID, NetworkingObjects::NetObjOrderedListIterator<DrawingProgramLayerListItem>>> try_to_create_in_proper_position(DrawingProgramLayerListItem* newItem);
|
||||
std::pair<NetworkingObjects::NetObjID, NetworkingObjects::NetObjOrderedListIterator<DrawingProgramLayerListItem>> create_in_proper_position(DrawingProgramLayerListItem* newItem);
|
||||
NetworkingObjects::NetObjOrderedListIterator<DrawingProgramLayerListItem> create_layer(DrawingProgramLayerListItem* newItem);
|
||||
void remove_layer(const NetworkingObjects::NetObjID& parentID, const NetworkingObjects::NetObjID& objectID);
|
||||
void remove_layer(const GUIStuff::TreeListingObjIndexList& objIndex);
|
||||
void editing_layer_check();
|
||||
|
||||
std::unordered_set<NetworkingObjects::NetObjID> oldSelection;
|
||||
NetworkingObjects::NetObjTemporaryPtr<DrawingProgramLayerListItem> get_layer_parent_from_obj_index(const GUIStuff::TreeListingObjIndexList& objIndex);
|
||||
NetworkingObjects::NetObjTemporaryPtr<DrawingProgramLayerListItem> get_layer_from_obj_index(const GUIStuff::TreeListingObjIndexList& objIndex);
|
||||
|
||||
std::string nameToEdit;
|
||||
std::string nameForNew;
|
||||
float alphaValToEdit = 0.0f;
|
||||
size_t blendModeValToEdit = 0;
|
||||
|
||||
std::optional<DrawingProgramLayerListItemMetaInfo> editingData;
|
||||
std::set<GUIStuff::TreeListingObjIndexList> selectedLayerIndices;
|
||||
NetworkingObjects::NetObjTemporaryPtr<DrawingProgramLayerListItem> editingLayer;
|
||||
|
||||
std::optional<DrawingProgramLayerListItemMetaInfo> editingLayerOldMetainfo;
|
||||
|
||||
DrawingProgramLayerManager& layerMan;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ template <typename T> void ColorPickerButton<T>::layout(const Clay_ElementId& id
|
|||
|
||||
GUIStuff::ElementHelpers::color_button(gui, "Color Picker Button", val, {
|
||||
.isSelected = isOpen,
|
||||
.hasAlpha = data.hasAlpha,
|
||||
.onClick = [&]{
|
||||
isOpen = !isOpen;
|
||||
gui.set_to_layout();
|
||||
|
|
|
|||
|
|
@ -545,15 +545,11 @@ void Toolbar::top_toolbar() {
|
|||
else
|
||||
gridMenu.popupOpen = true;
|
||||
});
|
||||
icon_button_top_toolbar("Layer Menu Button", "data/icons/layer.svg", layerMenuPopupOpen, [&] {
|
||||
if(layerMenuPopupOpen) {
|
||||
main.world->drawProg.layerMan.listGUI.refresh_gui_data();
|
||||
layerMenuPopupOpen = false;
|
||||
}
|
||||
else {
|
||||
Element* layerMenuButton = icon_button_top_toolbar("Layer Menu Button", "data/icons/layer.svg", layerMenuPopupOpen, [&] {
|
||||
if(layerMenuPopupOpen)
|
||||
stop_displaying_layer_menu();
|
||||
else
|
||||
layerMenuPopupOpen = true;
|
||||
layerMenuPopUpJustOpen = true;
|
||||
}
|
||||
});
|
||||
Element* bookmarkMenuButton = icon_button_top_toolbar("Bookmark Menu Button", "data/icons/bookmark.svg", bookmarkMenuPopupOpen, [&] {
|
||||
if(bookmarkMenuPopupOpen)
|
||||
|
|
@ -567,7 +563,7 @@ void Toolbar::top_toolbar() {
|
|||
if(bookmarkMenuPopupOpen)
|
||||
bookmark_menu(bookmarkMenuButton);
|
||||
if(layerMenuPopupOpen)
|
||||
layer_menu(layerMenuPopUpJustOpen);
|
||||
layer_menu(layerMenuButton);
|
||||
}
|
||||
if(menuPopUpOpen) {
|
||||
gui.set_z_index(5, [&] {
|
||||
|
|
@ -959,12 +955,18 @@ void Toolbar::stop_displaying_bookmark_menu() {
|
|||
main.g.gui.set_to_layout();
|
||||
}
|
||||
|
||||
void Toolbar::stop_displaying_layer_menu() {
|
||||
main.world->drawProg.layerMan.listGUI.refresh_gui_data();
|
||||
layerMenuPopupOpen = false;
|
||||
main.g.gui.set_to_layout();
|
||||
}
|
||||
|
||||
void Toolbar::bookmark_menu(Element* bookmarkMenuButton) {
|
||||
auto& gui = main.g.gui;
|
||||
auto& io = gui.io;
|
||||
|
||||
gui.set_z_index(gui.get_z_index() + 1, [&] {
|
||||
gui.element<LayoutElement>("grid menu", [&] (LayoutElement*, const Clay_ElementId& lId) {
|
||||
gui.element<LayoutElement>("bookmark menu", [&] (LayoutElement*, const Clay_ElementId& lId) {
|
||||
CLAY(lId, {
|
||||
.layout = {
|
||||
.sizing = {.width = CLAY_SIZING_FIT(300), .height = CLAY_SIZING_FIT(0, 600) },
|
||||
|
|
@ -978,7 +980,7 @@ void Toolbar::bookmark_menu(Element* bookmarkMenuButton) {
|
|||
.floating = {.offset = {.x = 0, .y = static_cast<float>(io.theme->padding1)}, .zIndex = gui.get_z_index(), .attachPoints = {.element = CLAY_ATTACH_POINT_RIGHT_TOP, .parent = CLAY_ATTACH_POINT_RIGHT_BOTTOM}, .attachTo = CLAY_ATTACH_TO_PARENT}
|
||||
}) {
|
||||
text_label_centered(gui, "Bookmarks");
|
||||
main.world->bMan.setup_list_gui("bookmark menu list");
|
||||
main.world->bMan.setup_list_gui();
|
||||
}
|
||||
}, LayoutElement::Callbacks {
|
||||
.mouseButton = [&, bookmarkMenuButton] (LayoutElement* l, const InputManager::MouseButtonCallbackArgs& button) {
|
||||
|
|
@ -989,33 +991,33 @@ void Toolbar::bookmark_menu(Element* bookmarkMenuButton) {
|
|||
});
|
||||
}
|
||||
|
||||
void Toolbar::layer_menu(bool justOpened) {
|
||||
void Toolbar::layer_menu(Element* layerMenuButton) {
|
||||
auto& gui = main.g.gui;
|
||||
auto& io = gui.io;
|
||||
|
||||
gui.new_id("layer menu", [&] {
|
||||
//Clay_ElementId localId = CLAY_ID_LOCAL("INFINIPAINT LAYER MENU");
|
||||
//CLAY(localId, {
|
||||
// .layout = {
|
||||
// .sizing = {.width = CLAY_SIZING_FIT(300), .height = CLAY_SIZING_FIT(0, 600) },
|
||||
// .padding = CLAY_PADDING_ALL(io.theme->padding1),
|
||||
// .childGap = io.theme->childGap1,
|
||||
// .childAlignment = { .x = CLAY_ALIGN_X_CENTER, .y = CLAY_ALIGN_Y_TOP},
|
||||
// .layoutDirection = CLAY_TOP_TO_BOTTOM
|
||||
// },
|
||||
// .backgroundColor = convert_vec4<Clay_Color>(io.theme->backColor1),
|
||||
// .cornerRadius = CLAY_CORNER_RADIUS(io.theme->windowCorners1),
|
||||
// .floating = {.offset = {.x = 0, .y = static_cast<float>(io.theme->padding1)}, .attachPoints = {.element = CLAY_ATTACH_POINT_RIGHT_TOP, .parent = CLAY_ATTACH_POINT_RIGHT_BOTTOM}, .attachTo = CLAY_ATTACH_TO_PARENT}
|
||||
//}) {
|
||||
// gui.obstructing_window(localId);
|
||||
// text_label_centered(gui, "Layers");
|
||||
// bool hoveringOverDropdown = false;
|
||||
// main.world->drawProg.layerMan.listGUI.setup_list_gui("layer menu list", hoveringOverDropdown);
|
||||
// if(io.mouse.leftClick && !Clay_Hovered() && !justOpened && !hoveringOverDropdown) {
|
||||
// layerMenuPopupOpen = false;
|
||||
// main.world->drawProg.layerMan.listGUI.refresh_gui_data();
|
||||
// }
|
||||
//}
|
||||
gui.set_z_index(gui.get_z_index() + 1, [&] {
|
||||
gui.element<LayoutElement>("layer menu", [&] (LayoutElement*, const Clay_ElementId& lId) {
|
||||
CLAY(lId, {
|
||||
.layout = {
|
||||
.sizing = {.width = CLAY_SIZING_FIT(300), .height = CLAY_SIZING_FIT(0, 600) },
|
||||
.padding = CLAY_PADDING_ALL(io.theme->padding1),
|
||||
.childGap = io.theme->childGap1,
|
||||
.childAlignment = { .x = CLAY_ALIGN_X_CENTER, .y = CLAY_ALIGN_Y_TOP},
|
||||
.layoutDirection = CLAY_TOP_TO_BOTTOM
|
||||
},
|
||||
.backgroundColor = convert_vec4<Clay_Color>(io.theme->backColor1),
|
||||
.cornerRadius = CLAY_CORNER_RADIUS(io.theme->windowCorners1),
|
||||
.floating = {.offset = {.x = 0, .y = static_cast<float>(io.theme->padding1)}, .zIndex = gui.get_z_index(), .attachPoints = {.element = CLAY_ATTACH_POINT_RIGHT_TOP, .parent = CLAY_ATTACH_POINT_RIGHT_BOTTOM}, .attachTo = CLAY_ATTACH_TO_PARENT}
|
||||
}) {
|
||||
text_label_centered(gui, "Layers");
|
||||
main.world->drawProg.layerMan.listGUI.setup_list_gui();
|
||||
}
|
||||
}, LayoutElement::Callbacks {
|
||||
.mouseButton = [&, layerMenuButton] (LayoutElement* l, const InputManager::MouseButtonCallbackArgs& button) {
|
||||
if(!l->mouseHovering && !l->childMouseHovering && !layerMenuButton->mouseHovering && button.down)
|
||||
stop_displaying_layer_menu();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -95,8 +95,9 @@ class Toolbar {
|
|||
void add_grid();
|
||||
void stop_displaying_grid_menu();
|
||||
void stop_displaying_bookmark_menu();
|
||||
void stop_displaying_layer_menu();
|
||||
void bookmark_menu(GUIStuff::Element* bookmarkMenuButton);
|
||||
void layer_menu(bool justOpened);
|
||||
void layer_menu(GUIStuff::Element* layerMenuButton);
|
||||
void drawing_program_gui();
|
||||
void options_menu();
|
||||
void file_picker_gui_refresh_entries();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue