Compare commits
	
		
			3 Commits
		
	
	
		
			3544392fa8
			...
			ba1bf950a8
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ba1bf950a8 | |||
| 95950441d1 | |||
| 1b32bdfcad | 
| @@ -1,6 +1,7 @@ | ||||
| target_sources( | ||||
| 	NostalgiaCore-Studio PRIVATE | ||||
| 		commands/addcolorcommand.cpp | ||||
| 		commands/addpagecommand.cpp | ||||
| 		commands/applycolorallpagescommand.cpp | ||||
| 		commands/duplicatepagecommand.cpp | ||||
| 		commands/movecolorcommand.cpp | ||||
|   | ||||
| @@ -0,0 +1,28 @@ | ||||
| /* | ||||
|  * Copyright 2016 - 2025 Gary Talent (gary@drinkingtea.net). All rights reserved. | ||||
|  */ | ||||
|  | ||||
| #include "commands.hpp" | ||||
|  | ||||
| #include "addpagecommand.hpp" | ||||
|  | ||||
| namespace nostalgia::core { | ||||
|  | ||||
| AddPageCommand::AddPageCommand(Palette &pal) noexcept: | ||||
| 		m_pal(pal) {} | ||||
|  | ||||
| int AddPageCommand::commandId() const noexcept { | ||||
| 	return static_cast<int>(PaletteEditorCommandId::AddPage); | ||||
| } | ||||
|  | ||||
| ox::Error AddPageCommand::redo() noexcept { | ||||
| 	m_pal.pages.emplace_back(ox::sfmt("Page {}", m_pal.pages.size() + 1), ox::Vector<PaletteColor>{}); | ||||
| 	return {}; | ||||
| } | ||||
|  | ||||
| ox::Error AddPageCommand::undo() noexcept { | ||||
| 	m_pal.pages.pop_back(); | ||||
| 	return {}; | ||||
| } | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,31 @@ | ||||
| /* | ||||
|  * Copyright 2016 - 2025 Gary Talent (gary@drinkingtea.net). All rights reserved. | ||||
|  */ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <studio/studio.hpp> | ||||
|  | ||||
| #include <nostalgia/core/palette.hpp> | ||||
|  | ||||
| namespace nostalgia::core { | ||||
|  | ||||
| class AddPageCommand: public studio::UndoCommand { | ||||
| 	private: | ||||
| 		Palette &m_pal; | ||||
|  | ||||
| 	public: | ||||
| 		explicit AddPageCommand(Palette &pal) noexcept; | ||||
|  | ||||
| 		~AddPageCommand() noexcept override = default; | ||||
|  | ||||
| 		[[nodiscard]] | ||||
| 		int commandId() const noexcept final; | ||||
|  | ||||
| 		ox::Error redo() noexcept final; | ||||
|  | ||||
| 		ox::Error undo() noexcept final; | ||||
|  | ||||
| }; | ||||
|  | ||||
| } | ||||
| @@ -9,6 +9,7 @@ namespace nostalgia::core { | ||||
| enum class PaletteEditorCommandId { | ||||
| 	ApplyColorAllPages, | ||||
| 	RenamePage, | ||||
| 	AddPage, | ||||
| 	DuplicatePage, | ||||
| 	RemovePage, | ||||
| 	AddColor, | ||||
|   | ||||
| @@ -23,7 +23,7 @@ int DuplicatePageCommand::commandId() const noexcept { | ||||
| } | ||||
|  | ||||
| ox::Error DuplicatePageCommand::redo() noexcept { | ||||
| 	m_pal.pages.emplace(m_dstIdx, "", std::move(m_page)); | ||||
| 	m_pal.pages.emplace(m_dstIdx, ox::sfmt("Page {}", m_pal.pages.size() + 1), std::move(m_page)); | ||||
| 	return {}; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -7,6 +7,7 @@ | ||||
| #include <keel/media.hpp> | ||||
|  | ||||
| #include "commands/addcolorcommand.hpp" | ||||
| #include "commands/addpagecommand.hpp" | ||||
| #include "commands/applycolorallpagescommand.hpp" | ||||
| #include "commands/duplicatepagecommand.hpp" | ||||
| #include "commands/movecolorcommand.hpp" | ||||
| @@ -196,7 +197,11 @@ void PaletteEditorImGui::drawPagesEditor() noexcept { | ||||
| 	constexpr auto toolbarHeight = 40; | ||||
| 	auto const btnSz = ImVec2{paneSz.x / 4 - 5.5f, 24}; | ||||
| 	if (ImGui::Button("Add", btnSz)) { | ||||
| 		if (m_pal.pages.empty()) { | ||||
| 			std::ignore = pushCommand<AddPageCommand>(m_pal); | ||||
| 		} else { | ||||
| 			std::ignore = pushCommand<DuplicatePageCommand>(m_pal, 0u, m_pal.pages.size()); | ||||
| 		} | ||||
| 		m_page = m_pal.pages.size() - 1; | ||||
| 	} | ||||
| 	ImGui::SameLine(); | ||||
|   | ||||
| @@ -234,7 +234,7 @@ void TileSheetEditorImGui::draw(studio::StudioContext&) noexcept { | ||||
| 		ImGui::BeginChild("SubSheets", {s_palViewWidth - 24, ySize / 2.f}, true); | ||||
| 		{ | ||||
| 			static constexpr auto btnHeight = ig::BtnSz.y; | ||||
| 			auto const btnSize = ImVec2{btnHeight, btnHeight}; | ||||
| 			auto constexpr btnSize = ImVec2{btnHeight, btnHeight}; | ||||
| 			if (ig::PushButton("+", btnSize)) { | ||||
| 				auto insertOnIdx = m_model.activeSubSheetIdx(); | ||||
| 				auto const&parent = m_model.activeSubSheet(); | ||||
| @@ -258,7 +258,10 @@ void TileSheetEditorImGui::draw(studio::StudioContext&) noexcept { | ||||
| 				m_exportMenu.show(); | ||||
| 			} | ||||
| 			TileSheet::SubSheetIdx path; | ||||
| 			static constexpr auto flags = ImGuiTableFlags_RowBg | ImGuiTableFlags_NoBordersInBody; | ||||
| 			static constexpr auto flags = | ||||
| 				ImGuiTableFlags_RowBg | | ||||
|                 ImGuiTableFlags_NoBordersInBody | | ||||
|                 ImGuiTableFlags_ScrollY; | ||||
|             if (ImGui::BeginTable("Subsheets", 4, flags)) { | ||||
|                 ImGui::TableSetupColumn("Subsheet", ImGuiTableColumnFlags_NoHide); | ||||
|                 ImGui::TableSetupColumn("ID", ImGuiTableColumnFlags_WidthFixed, 25); | ||||
| @@ -462,8 +465,12 @@ void TileSheetEditorImGui::drawPaletteMenu() noexcept { | ||||
| 		} | ||||
| 	} | ||||
| 	// header | ||||
| 	auto constexpr palTblFlags = | ||||
| 		ImGuiTableFlags_RowBg | | ||||
|         ImGuiTableFlags_SizingStretchProp | | ||||
|         ImGuiTableFlags_ScrollY; | ||||
| 	if (ImGui::BeginTable( | ||||
| 			"PaletteTable", 4, ImGuiTableFlags_RowBg | ImGuiTableFlags_SizingStretchProp)) { | ||||
| 			"PaletteTable", 4, palTblFlags)) { | ||||
| 		ImGui::TableSetupColumn("Idx", 0, 0.6f); | ||||
| 		ImGui::TableSetupColumn("", 0, 0.22f); | ||||
| 		ImGui::TableSetupColumn("Name", 0, 3); | ||||
|   | ||||
| @@ -11,7 +11,7 @@ target_link_libraries( | ||||
|  | ||||
| target_compile_definitions( | ||||
| 	NostalgiaStudio PUBLIC | ||||
| 		OLYMPIC_APP_VERSION="d2024.12.2" | ||||
| 		OLYMPIC_APP_VERSION="d2024.12.3" | ||||
| ) | ||||
|  | ||||
| install( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user