Resolves tdf#120333 - Access to color palettes via tight extensions

Change-Id: I3311115854a29eaddf76b847642250626b7032ec
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121498
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx
index 3f18d06..b5af247 100644
--- a/cui/source/inc/cuitabarea.hxx
+++ b/cui/source/inc/cuitabarea.hxx
@@ -675,6 +675,7 @@ private:
    std::unique_ptr<weld::Button> m_xBtnAdd;
    std::unique_ptr<weld::Button> m_xBtnDelete;
    std::unique_ptr<weld::Button> m_xBtnWorkOn;
    std::unique_ptr<weld::Button> m_xMoreColors;
    std::unique_ptr<weld::CustomWeld> m_xCtlPreviewOld;
    std::unique_ptr<weld::CustomWeld> m_xCtlPreviewNew;
    std::unique_ptr<weld::CustomWeld> m_xValSetColorListWin;
@@ -692,6 +693,7 @@ private:
    DECL_LINK(ClickAddHdl_Impl, weld::Button&, void);
    DECL_LINK(ClickWorkOnHdl_Impl, weld::Button&, void);
    DECL_LINK(ClickDeleteHdl_Impl, weld::Button&, void);
    DECL_STATIC_LINK(SvxColorTabPage, OnMoreColorsClick, weld::Button&, void);

    DECL_LINK(SelectPaletteLBHdl, weld::ComboBox&, void);
    DECL_LINK( SelectValSetHdl_Impl, ValueSet*, void );
diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx
index 7be82dc..a5f2e7b 100644
--- a/cui/source/tabpages/tpcolor.cxx
+++ b/cui/source/tabpages/tpcolor.cxx
@@ -35,6 +35,7 @@
#include <svx/strings.hrc>
#include <officecfg/Office/Common.hxx>
#include <osl/diagnose.h>
#include <comphelper/dispatchcommand.hxx>

using namespace com::sun::star;

@@ -75,6 +76,7 @@ SvxColorTabPage::SvxColorTabPage(weld::Container* pPage, weld::DialogController*
    , m_xBtnAdd(m_xBuilder->weld_button("add"))
    , m_xBtnDelete(m_xBuilder->weld_button("delete"))
    , m_xBtnWorkOn(m_xBuilder->weld_button("edit"))
    , m_xMoreColors(m_xBuilder->weld_button("btnMoreColors"))
    , m_xCtlPreviewOld(new weld::CustomWeld(*m_xBuilder, "oldpreview", m_aCtlPreviewOld))
    , m_xCtlPreviewNew(new weld::CustomWeld(*m_xBuilder, "newpreview", m_aCtlPreviewNew))
    , m_xValSetColorListWin(new weld::CustomWeld(*m_xBuilder, "colorset", *m_xValSetColorList))
@@ -128,6 +130,9 @@ SvxColorTabPage::SvxColorTabPage(weld::Container* pPage, weld::DialogController*
    m_xBtnDelete->set_sensitive(false);
    m_xBtnDelete->set_tooltip_text( SvxResId(RID_SVXSTR_DELETEUSERCOLOR1) );

    m_xMoreColors->set_from_icon_name("cmd/sc_additionsdialog.png");
    m_xMoreColors->connect_clicked(LINK(this, SvxColorTabPage, OnMoreColorsClick));

    // disable preset color values
    m_xRGBpreset->set_sensitive(false);
    m_xCMYKpreset->set_sensitive(false);
@@ -536,6 +541,15 @@ IMPL_LINK_NOARG(SvxColorTabPage, SelectColorModeHdl_Impl, weld::Toggleable&, voi
    UpdateColorValues();
}


IMPL_STATIC_LINK_NOARG(SvxColorTabPage, OnMoreColorsClick, weld::Button&, void)
{
    css::uno::Sequence<css::beans::PropertyValue> aArgs(1);
    aArgs[0].Name = "AdditionsTag";
    aArgs[0].Value <<= OUString("Color Palette");
    comphelper::dispatchCommand(".uno:AdditionsDialog", aArgs);
}

void SvxColorTabPage::ChangeColor(const Color &rNewColor, bool bUpdatePreset )
{
    aPreviousColor = rNewColor;
diff --git a/cui/uiconfig/ui/colorpage.ui b/cui/uiconfig/ui/colorpage.ui
index 46f99e9..ac680de 100644
--- a/cui/uiconfig/ui/colorpage.ui
+++ b/cui/uiconfig/ui/colorpage.ui
@@ -1,84 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.36.0 -->
<!-- Generated with glade 3.38.2 -->
<interface domain="cui">
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkAdjustment" id="adjustment1">
    <property name="upper">100</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
    <property name="step-increment">1</property>
    <property name="page-increment">10</property>
  </object>
  <object class="GtkAdjustment" id="adjustment2">
    <property name="upper">255</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
    <property name="step-increment">1</property>
    <property name="page-increment">10</property>
  </object>
  <object class="GtkAdjustment" id="adjustment3">
    <property name="upper">100</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
    <property name="step-increment">1</property>
    <property name="page-increment">10</property>
  </object>
  <object class="GtkAdjustment" id="adjustment4">
    <property name="upper">100</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
    <property name="step-increment">1</property>
    <property name="page-increment">10</property>
  </object>
  <object class="GtkAdjustment" id="adjustment5">
    <property name="upper">100</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
    <property name="step-increment">1</property>
    <property name="page-increment">10</property>
  </object>
  <object class="GtkAdjustment" id="adjustment6">
    <property name="upper">255</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
    <property name="step-increment">1</property>
    <property name="page-increment">10</property>
  </object>
  <object class="GtkAdjustment" id="adjustment7">
    <property name="upper">255</property>
    <property name="step_increment">1</property>
    <property name="page_increment">10</property>
    <property name="step-increment">1</property>
    <property name="page-increment">10</property>
  </object>
  <object class="GtkImage" id="image3">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="icon_name">res/sc10350.png</property>
    <property name="can-focus">False</property>
    <property name="icon-name">res/sc10350.png</property>
  </object>
  <object class="GtkBox" id="ColorPage">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="can-focus">False</property>
    <property name="hexpand">True</property>
    <property name="vexpand">True</property>
    <property name="border_width">6</property>
    <property name="border-width">6</property>
    <property name="spacing">6</property>
    <child>
      <object class="GtkFrame" id="frame1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="can-focus">False</property>
        <property name="hexpand">True</property>
        <property name="label_xalign">0</property>
        <property name="shadow_type">none</property>
        <property name="label-xalign">0</property>
        <property name="shadow-type">none</property>
        <child>
          <!-- n-columns=1 n-rows=1 -->
          <!-- n-columns=1 n-rows=4 -->
          <object class="GtkGrid" id="grid2">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="can-focus">False</property>
            <property name="halign">start</property>
            <property name="valign">start</property>
            <property name="row_spacing">6</property>
            <property name="margin-start">12</property>
            <property name="margin-top">6</property>
            <property name="row-spacing">6</property>
            <child>
              <object class="GtkBox" id="box7">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="can-focus">False</property>
                <property name="spacing">3</property>
                <child>
                  <object class="GtkLabel" id="label21">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="valign">center</property>
                    <property name="label" translatable="yes" context="colorpage|label21">Palette:</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">paletteselector</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">paletteselector</property>
                    <property name="xalign">0</property>
                    <property name="yalign">0</property>
                  </object>
@@ -91,7 +91,7 @@
                <child>
                  <object class="GtkComboBoxText" id="paletteselector">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                  </object>
                  <packing>
                    <property name="expand">True</property>
@@ -99,26 +99,43 @@
                    <property name="position">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkButton" id="btnMoreColors">
                    <property name="visible">True</property>
                    <property name="can-focus">True</property>
                    <property name="receives-default">True</property>
                    <property name="tooltip-text" translatable="yes" context="colorpage|btnMoreColors">Add color palettes via extension</property>
                    <child>
                      <placeholder/>
                    </child>
                  </object>
                  <packing>
                    <property name="expand">False</property>
                    <property name="fill">True</property>
                    <property name="pack-type">end</property>
                    <property name="position">2</property>
                  </packing>
                </child>
              </object>
              <packing>
                <property name="left_attach">0</property>
                <property name="top_attach">0</property>
                <property name="left-attach">0</property>
                <property name="top-attach">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkBox" id="box6">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="margin_top">6</property>
                <property name="can-focus">False</property>
                <property name="margin-top">6</property>
                <property name="orientation">vertical</property>
                <property name="spacing">3</property>
                <child>
                  <object class="GtkLabel" id="label20">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label20">Recent Colors</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">recentcolorset</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">recentcolorset</property>
                    <property name="xalign">0</property>
                  </object>
                  <packing>
@@ -130,7 +147,7 @@
                <child>
                  <object class="GtkDrawingArea" id="recentcolorset">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="can-focus">True</property>
                    <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
                    <property name="hexpand">True</property>
                    <property name="vexpand">True</property>
@@ -143,65 +160,65 @@
                </child>
              </object>
              <packing>
                <property name="left_attach">0</property>
                <property name="top_attach">2</property>
                <property name="left-attach">0</property>
                <property name="top-attach">2</property>
              </packing>
            </child>
            <child>
              <!-- n-columns=1 n-rows=1 -->
              <!-- n-columns=2 n-rows=3 -->
              <object class="GtkGrid" id="grid1">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="margin_top">6</property>
                <property name="column_spacing">3</property>
                <property name="column_homogeneous">True</property>
                <property name="can-focus">False</property>
                <property name="margin-top">6</property>
                <property name="column-spacing">3</property>
                <property name="column-homogeneous">True</property>
                <child>
                  <object class="GtkButton" id="add">
                    <property name="label" translatable="yes" context="stock">_Add</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                    <property name="can-focus">True</property>
                    <property name="receives-default">True</property>
                    <property name="use-underline">True</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">1</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkRadioButton" id="RGB">
                    <property name="label" translatable="yes" context="colorpage|RGB">RGB</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">False</property>
                    <property name="use_underline">True</property>
                    <property name="can-focus">True</property>
                    <property name="receives-default">False</property>
                    <property name="use-underline">True</property>
                    <property name="active">True</property>
                    <property name="draw_indicator">True</property>
                    <property name="draw-indicator">True</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">2</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">2</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkRadioButton" id="CMYK">
                    <property name="label" translatable="yes" context="colorpage|CMYK">CMYK</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">False</property>
                    <property name="use_underline">True</property>
                    <property name="draw_indicator">True</property>
                    <property name="can-focus">True</property>
                    <property name="receives-default">False</property>
                    <property name="use-underline">True</property>
                    <property name="draw-indicator">True</property>
                    <property name="group">RGB</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">2</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">2</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkButton" id="delete">
                    <property name="label" translatable="yes" context="colorpage|delete">Delete</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="receives_default">True</property>
                    <property name="can-focus">True</property>
                    <property name="receives-default">True</property>
                    <child internal-child="accessible">
                      <object class="AtkObject" id="delete-atkobject">
                        <property name="AtkObject::accessible-description" translatable="yes" context="colorpage|extended_tip|delete">Deletes the selected element or elements without requiring confirmation.</property>
@@ -209,53 +226,53 @@
                    </child>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">1</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label22">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="margin_bottom">3</property>
                    <property name="can-focus">False</property>
                    <property name="margin-bottom">3</property>
                    <property name="label" translatable="yes" context="colorpage|label22">Custom Palette</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">colorset</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">colorset</property>
                    <property name="xalign">0</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">0</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">0</property>
                    <property name="width">2</property>
                  </packing>
                </child>
              </object>
              <packing>
                <property name="left_attach">0</property>
                <property name="top_attach">3</property>
                <property name="left-attach">0</property>
                <property name="top-attach">3</property>
              </packing>
            </child>
            <child>
              <object class="GtkBox" id="box2">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="can-focus">False</property>
                <property name="valign">start</property>
                <property name="orientation">vertical</property>
                <child>
                  <object class="GtkScrolledWindow" id="colorsetwin">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="hscrollbar_policy">never</property>
                    <property name="vscrollbar_policy">never</property>
                    <property name="shadow_type">in</property>
                    <property name="can-focus">True</property>
                    <property name="hscrollbar-policy">never</property>
                    <property name="vscrollbar-policy">never</property>
                    <property name="shadow-type">in</property>
                    <child>
                      <object class="GtkViewport">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="can-focus">False</property>
                        <child>
                          <object class="GtkDrawingArea" id="colorset">
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="can-focus">True</property>
                            <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
                            <property name="hexpand">True</property>
                            <property name="vexpand">True</property>
@@ -272,8 +289,8 @@
                </child>
              </object>
              <packing>
                <property name="left_attach">0</property>
                <property name="top_attach">1</property>
                <property name="left-attach">0</property>
                <property name="top-attach">1</property>
              </packing>
            </child>
          </object>
@@ -281,7 +298,7 @@
        <child type="label">
          <object class="GtkLabel" id="label1">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="can-focus">False</property>
            <property name="label" translatable="yes" context="colorpage|label1">Colors</property>
            <attributes>
              <attribute name="weight" value="bold"/>
@@ -298,41 +315,41 @@
    <child>
      <object class="GtkFrame" id="frame2">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="can-focus">False</property>
        <property name="halign">start</property>
        <property name="label_xalign">0</property>
        <property name="shadow_type">none</property>
        <property name="label-xalign">0</property>
        <property name="shadow-type">none</property>
        <child>
          <object class="GtkBox" id="box1">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="can-focus">False</property>
            <property name="valign">start</property>
            <property name="orientation">vertical</property>
            <property name="spacing">12</property>
            <property name="margin-start">12</property>
            <property name="margin-top">6</property>
            <property name="orientation">vertical</property>
            <property name="spacing">12</property>
            <child>
              <object class="GtkBox" id="box4">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="can-focus">False</property>
                <property name="orientation">vertical</property>
                <child>
                  <object class="GtkScrolledWindow">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="hexpand">True</property>
                    <property name="vexpand">True</property>
                    <property name="hscrollbar_policy">never</property>
                    <property name="vscrollbar_policy">never</property>
                    <property name="shadow_type">in</property>
                    <property name="hscrollbar-policy">never</property>
                    <property name="vscrollbar-policy">never</property>
                    <property name="shadow-type">in</property>
                    <child>
                      <object class="GtkViewport">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="can-focus">False</property>
                        <child>
                          <object class="GtkDrawingArea" id="oldpreview">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="can-focus">False</property>
                            <property name="hexpand">True</property>
                            <property name="vexpand">True</property>
                            <child internal-child="accessible">
@@ -359,117 +376,117 @@
              </packing>
            </child>
            <child>
              <!-- n-columns=1 n-rows=1 -->
              <!-- n-columns=2 n-rows=4 -->
              <object class="GtkGrid" id="rgbpreset">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="can-focus">False</property>
                <property name="halign">center</property>
                <property name="valign">start</property>
                <property name="vexpand">True</property>
                <property name="row_spacing">6</property>
                <property name="column_spacing">6</property>
                <property name="row-spacing">6</property>
                <property name="column-spacing">6</property>
                <child>
                  <object class="GtkLabel" id="label7">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label7">B</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">B_preset</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">B_preset</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">2</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">2</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label8">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label8">G</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">G_preset</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">G_preset</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">1</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label9">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label9">R</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">R_preset</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">R_preset</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">0</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label18">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label18">Hex</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">hex_preset</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">hex_preset</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">3</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">3</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkEntry" id="hex_preset">
                    <property name="width_request">6</property>
                    <property name="width-request">6</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="truncate-multiline">True</property>
                    <property name="can-focus">True</property>
                    <property name="editable">False</property>
                    <property name="truncate-multiline">True</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">3</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">3</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkEntry" id="R_preset">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="can-focus">True</property>
                    <property name="editable">False</property>
                    <property name="width-chars">3</property>
                    <property name="truncate-multiline">True</property>
                    <property name="width_chars">3</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">0</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkEntry" id="G_preset">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="can-focus">True</property>
                    <property name="editable">False</property>
                    <property name="width-chars">3</property>
                    <property name="truncate-multiline">True</property>
                    <property name="width_chars">3</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">1</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkEntry" id="B_preset">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="can-focus">True</property>
                    <property name="editable">False</property>
                    <property name="width-chars">3</property>
                    <property name="truncate-multiline">True</property>
                    <property name="width_chars">3</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">2</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">2</property>
                  </packing>
                </child>
              </object>
@@ -480,116 +497,116 @@
              </packing>
            </child>
            <child>
              <!-- n-columns=1 n-rows=1 -->
              <!-- n-columns=2 n-rows=4 -->
              <object class="GtkGrid" id="cmykpreset">
                <property name="can_focus">False</property>
                <property name="can-focus">False</property>
                <property name="halign">center</property>
                <property name="valign">start</property>
                <property name="vexpand">True</property>
                <property name="row_spacing">6</property>
                <property name="column_spacing">6</property>
                <property name="row-spacing">6</property>
                <property name="column-spacing">6</property>
                <child>
                  <object class="GtkLabel" id="label10">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label10">_C</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">C_preset</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">C_preset</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">0</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label16">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label16">_K</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">K_preset</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">K_preset</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">3</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">3</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label17">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label17">_Y</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">Y_preset</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">Y_preset</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">2</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">2</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkEntry" id="C_preset">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="can-focus">True</property>
                    <property name="editable">False</property>
                    <property name="width-chars">3</property>
                    <property name="truncate-multiline">True</property>
                    <property name="width_chars">3</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">0</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkEntry" id="M_preset">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="can-focus">True</property>
                    <property name="editable">False</property>
                    <property name="width-chars">3</property>
                    <property name="truncate-multiline">True</property>
                    <property name="width_chars">3</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">1</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkEntry" id="Y_preset">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="can-focus">True</property>
                    <property name="editable">False</property>
                    <property name="width-chars">3</property>
                    <property name="truncate-multiline">True</property>
                    <property name="width_chars">3</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">2</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">2</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkEntry" id="K_preset">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="can-focus">True</property>
                    <property name="editable">False</property>
                    <property name="width-chars">3</property>
                    <property name="truncate-multiline">True</property>
                    <property name="width_chars">3</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">3</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">3</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label15">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label15">_M</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">M_preset</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">M_preset</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">1</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">1</property>
                  </packing>
                </child>
              </object>
@@ -604,7 +621,7 @@
        <child type="label">
          <object class="GtkLabel" id="label5">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="can-focus">False</property>
            <property name="label" translatable="yes" context="colorpage|label5">Active</property>
            <attributes>
              <attribute name="weight" value="bold"/>
@@ -621,41 +638,41 @@
    <child>
      <object class="GtkFrame" id="frame3">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="can-focus">False</property>
        <property name="halign">start</property>
        <property name="label_xalign">0</property>
        <property name="shadow_type">none</property>
        <property name="label-xalign">0</property>
        <property name="shadow-type">none</property>
        <child>
          <object class="GtkBox" id="box3">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="can-focus">False</property>
            <property name="valign">start</property>
            <property name="orientation">vertical</property>
            <property name="spacing">12</property>
            <property name="margin-start">12</property>
            <property name="margin-top">6</property>
            <property name="orientation">vertical</property>
            <property name="spacing">12</property>
            <child>
              <object class="GtkBox" id="box5">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="can-focus">False</property>
                <property name="orientation">vertical</property>
                <child>
                  <object class="GtkScrolledWindow">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="hexpand">True</property>
                    <property name="vexpand">True</property>
                    <property name="hscrollbar_policy">never</property>
                    <property name="vscrollbar_policy">never</property>
                    <property name="shadow_type">in</property>
                    <property name="hscrollbar-policy">never</property>
                    <property name="vscrollbar-policy">never</property>
                    <property name="shadow-type">in</property>
                    <child>
                      <object class="GtkViewport">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="can-focus">False</property>
                        <child>
                          <object class="GtkDrawingArea" id="newpreview">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="can-focus">False</property>
                            <property name="hexpand">True</property>
                            <property name="vexpand">True</property>
                            <child internal-child="accessible">
@@ -682,121 +699,121 @@
              </packing>
            </child>
            <child>
              <!-- n-columns=1 n-rows=1 -->
              <!-- n-columns=2 n-rows=4 -->
              <object class="GtkGrid" id="rgbcustom">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="can-focus">False</property>
                <property name="halign">center</property>
                <property name="valign">start</property>
                <property name="vexpand">True</property>
                <property name="row_spacing">6</property>
                <property name="column_spacing">6</property>
                <property name="row-spacing">6</property>
                <property name="column-spacing">6</property>
                <child>
                  <object class="GtkSpinButton" id="B_custom">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="activates_default">True</property>
                    <property name="can-focus">True</property>
                    <property name="tooltip-text" translatable="yes" context="colorpage|B_custom">Blue</property>
                    <property name="activates-default">True</property>
                    <property name="truncate-multiline">True</property>
                    <property name="adjustment">adjustment7</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">2</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">2</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkSpinButton" id="R_custom">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="activates_default">True</property>
                    <property name="can-focus">True</property>
                    <property name="tooltip-text" translatable="yes" context="colorpage|R_custom">Red</property>
                    <property name="activates-default">True</property>
                    <property name="truncate-multiline">True</property>
                    <property name="adjustment">adjustment2</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">0</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label4">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label4">_B</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">B_custom</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">B_custom</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">2</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">2</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label3">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label3">_G</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">G_custom</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">G_custom</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">1</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label2">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label2">_R</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">R_custom</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">R_custom</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">0</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkSpinButton" id="G_custom">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="activates_default">True</property>
                    <property name="can-focus">True</property>
                    <property name="tooltip-text" translatable="yes" context="colorpage|G_custom">Green</property>
                    <property name="activates-default">True</property>
                    <property name="truncate-multiline">True</property>
                    <property name="adjustment">adjustment6</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">1</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label19">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label19">_Hex</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">hex_custom</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">hex_custom</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">3</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">3</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkEntry" id="hex_custom">
                    <property name="width_request">6</property>
                    <property name="width-request">6</property>
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="activates_default">True</property>
                    <property name="can-focus">True</property>
                    <property name="activates-default">True</property>
                    <property name="truncate-multiline">True</property>
                    <property name="overwrite_mode">True</property>
                    <property name="overwrite-mode">True</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">3</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">3</property>
                  </packing>
                </child>
              </object>
@@ -807,117 +824,117 @@
              </packing>
            </child>
            <child>
              <!-- n-columns=1 n-rows=1 -->
              <!-- n-columns=2 n-rows=4 -->
              <object class="GtkGrid" id="cmykcustom">
                <property name="can_focus">False</property>
                <property name="no_show_all">True</property>
                <property name="can-focus">False</property>
                <property name="no-show-all">True</property>
                <property name="halign">center</property>
                <property name="valign">start</property>
                <property name="vexpand">True</property>
                <property name="row_spacing">6</property>
                <property name="column_spacing">6</property>
                <property name="row-spacing">6</property>
                <property name="column-spacing">6</property>
                <child>
                  <object class="GtkLabel" id="label11">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label11">_C</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">C_custom</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">C_custom</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">0</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label12">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label12">_M</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">M_custom</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">M_custom</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">1</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">1</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label13">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label13">_K</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">K_custom</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">K_custom</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">3</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">3</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkSpinButton" id="C_custom">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="activates_default">True</property>
                    <property name="can-focus">True</property>
                    <property name="activates-default">True</property>
                    <property name="truncate-multiline">True</property>
                    <property name="adjustment">adjustment1</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">0</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">0</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkSpinButton" id="K_custom">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="activates_default">True</property>
                    <property name="can-focus">True</property>
                    <property name="activates-default">True</property>
                    <property name="truncate-multiline">True</property>
                    <property name="adjustment">adjustment5</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">3</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">3</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel" id="label14">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="can-focus">False</property>
                    <property name="label" translatable="yes" context="colorpage|label14">_Y</property>
                    <property name="use_underline">True</property>
                    <property name="mnemonic_widget">Y_custom</property>
                    <property name="use-underline">True</property>
                    <property name="mnemonic-widget">Y_custom</property>
                  </object>
                  <packing>
                    <property name="left_attach">0</property>
                    <property name="top_attach">2</property>
                    <property name="left-attach">0</property>
                    <property name="top-attach">2</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkSpinButton" id="Y_custom">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="activates_default">True</property>
                    <property name="can-focus">True</property>
                    <property name="activates-default">True</property>
                    <property name="truncate-multiline">True</property>
                    <property name="adjustment">adjustment4</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">2</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">2</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkSpinButton" id="M_custom">
                    <property name="visible">True</property>
                    <property name="can_focus">True</property>
                    <property name="activates_default">True</property>
                    <property name="can-focus">True</property>
                    <property name="activates-default">True</property>
                    <property name="truncate-multiline">True</property>
                    <property name="adjustment">adjustment3</property>
                  </object>
                  <packing>
                    <property name="left_attach">1</property>
                    <property name="top_attach">1</property>
                    <property name="left-attach">1</property>
                    <property name="top-attach">1</property>
                  </packing>
                </child>
              </object>
@@ -931,12 +948,12 @@
              <object class="GtkButton" id="edit">
                <property name="label" translatable="yes" context="colorpage|edit">Pick</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="can-focus">True</property>
                <property name="receives-default">True</property>
                <property name="valign">start</property>
                <property name="image">image3</property>
                <property name="image_position">right</property>
                <property name="always_show_image">True</property>
                <property name="image-position">right</property>
                <property name="always-show-image">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
@@ -949,7 +966,7 @@
        <child type="label">
          <object class="GtkLabel" id="label6">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="can-focus">False</property>
            <property name="label" translatable="yes" context="colorpage|label6">New</property>
            <attributes>
              <attribute name="weight" value="bold"/>