mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-15 11:51:33 +00:00
* Define validated color picker selection contract * Integrate web color picker with gradient and alpha controls Co-authored-by: yw4z <ywsyildiz@gmail.com> * Apply shared Orca theme to web color picker * Host color picker in a validated WebView dialog * Persist color picker favorites in user preferences * Integrate localized web color picker with filament actions * Add color picker browser regressions and verify direct includes * Fit color picker content in a borderless floating panel * Anchor color picker panels to their triggering controls * Use accent foreground for selected color picker switches * Integrate web color picker into generic color fields * Use web color picker for AMS custom colors * Use shared web color picker from Linux sidebar menu * Use web color picker when adding texture import material * Preserve alpha in filament color picker actions * Clean up color picker asset whitespace * Use application translations for color picker validation * Preserve existing formatting in color picker integration * Match SpeedDial rounded window handling on macOS * Align color picker host behavior with SpeedDial * Consolidate color picker implementation into its dialog * Remove native color picker fallback * Limit color picker interfaces to production consumers * Use shared WebView translation field name * Reapply anchored color picker placement after GTK show * update * fix increment buttons not working on spin inputs * Use thumb color from its own channel * init gradients with shifted color for second color * fix hsl sliders cannot move freely and lock downs other one * unify save button and color preview & increase stored color count to 32 * switch to hsl based calculation and fix plot and slider drag events * update * add support for multi colored gradients * Update test_filament_color_picker.cpp * add filtering color palette and store sidebar and combo state * open dialog with calculated size * apply shadow to dialog on windows * add tooltip for gradient add color button * Restore draggable fixed-size color picker frame * Fix color picker sidebar sizing in WebKit * Fix invisible default filament color button on macOS * Remove duplicated color defs for color picker * Remove duplicate HTML color picker frame * Match color picker tests to current theme roles * update icons * use focus color on background of filter box * align gradient switch with hex input * fix initial window sizing * Preserve caller color order when drawing filament icons --------- Co-authored-by: yw4z <ywsyildiz@gmail.com>
48 lines
1.5 KiB
C++
48 lines
1.5 KiB
C++
#include "slic3r/GUI/Field.hpp"
|
|
#include "libslic3r/Config.hpp"
|
|
#include <boost/any.hpp>
|
|
#include <catch2/catch_test_macros.hpp>
|
|
#include <string>
|
|
#include <wx/colour.h>
|
|
#include <wx/string.h>
|
|
|
|
using namespace Slic3r;
|
|
using namespace Slic3r::GUI;
|
|
|
|
namespace {
|
|
class TestColourPicker : public ColourPicker {
|
|
public:
|
|
TestColourPicker() : ColourPicker(ConfigOptionDef{}, "filament_colour") {}
|
|
std::string value() { return boost::any_cast<std::string>(get_value()); }
|
|
};
|
|
}
|
|
|
|
TEST_CASE("Undefined color fields remain distinct from opaque black", "[ColourPickerField]")
|
|
{
|
|
TestColourPicker field;
|
|
REQUIRE(field.value().empty());
|
|
field.set_value(std::string("#000000"));
|
|
REQUIRE(field.value() == "#000000");
|
|
field.set_value(std::string("invalid color"));
|
|
REQUIRE(field.value().empty());
|
|
field.set_value(boost::any(wxString("#123456")));
|
|
REQUIRE(field.value() == "#123456");
|
|
field.set_value(std::string());
|
|
REQUIRE(field.value().empty());
|
|
}
|
|
|
|
TEST_CASE("Programmatic color field assignment stays silent", "[ColourPickerField]")
|
|
{
|
|
TestColourPicker field;
|
|
int changes = 0;
|
|
field.m_on_change = [&](const std::string&, const boost::any&) { ++changes; };
|
|
field.set_value(std::string("#123456"), false);
|
|
field.set_value(boost::any(wxString("#654321")), true);
|
|
REQUIRE(changes == 0);
|
|
REQUIRE(field.value() == "#654321");
|
|
field.m_disable_change_event = true;
|
|
field.set_value(std::string("#FF0000"));
|
|
REQUIRE(field.value() == "#FF0000");
|
|
REQUIRE(changes == 0);
|
|
}
|