cui/Library_cui.mk | 3 cui/UIConfig_cui.mk | 3 cui/inc/treeopt.hrc | 2 cui/qa/unit/data/cui-dialogs-test.txt | 1 cui/qa/unit/data/cui-dialogs-test_3.txt | 1 cui/qa/unit/data/cui-dialogs-test_4.txt | 1 cui/source/options/optcolor.cxx | 1075 ----- cui/source/options/optcolor.hxx | 75 cui/source/options/optgdlg.cxx | 30 cui/source/options/optgdlg.hxx | 4 cui/source/options/personalization.cxx | 199 - cui/source/options/personalization.hxx | 66 cui/source/options/treeopt.cxx | 8 cui/source/options/treeopthelper.cxx | 2 cui/uiconfig/ui/colorconfigwin.ui | 2563 ------------- cui/uiconfig/ui/optappearancepage.ui | 298 - cui/uiconfig/ui/optviewpage.ui | 109 cui/uiconfig/ui/personalization_tab.ui | 237 - include/sfx2/pageids.hxx | 2 include/vcl/notebookbar/notebookbar.hxx | 1 include/vcl/settings.hxx | 6 officecfg/registry/schema/org/openoffice/Office/Common.xcs | 34 sc/qa/uitest/calc_tests6/tdf116996.py | 2 solenv/sanitizers/ui/cui.suppr | 12 static/CustomTarget_emscripten_fs_image.mk | 3 sw/qa/uitest/options/tdf131581.py | 2 sw/qa/uitest/options/tdf78133.py | 44 vcl/inc/salmenu.hxx | 2 vcl/inc/unx/gtk/gtksalmenu.hxx | 5 vcl/qt5/QtFrame.cxx | 2 vcl/source/app/salvtables.cxx | 2 vcl/source/app/settings.cxx | 120 vcl/source/control/NotebookbarPopup.cxx | 16 vcl/source/control/notebookbar.cxx | 37 vcl/source/window/brdwin.cxx | 15 vcl/source/window/dockingarea.cxx | 29 vcl/source/window/menubarwindow.cxx | 38 vcl/source/window/toolbox.cxx | 8 vcl/unx/generic/window/salframe.cxx | 2 vcl/unx/gtk3/gtksalmenu.cxx | 61 vcl/unx/gtk3/salnativewidgets-gtk.cxx | 4 vcl/win/gdi/salnativewidgets-luna.cxx | 2 vcl/win/window/salframe.cxx | 7 43 files changed, 28 insertions(+), 5105 deletions(-)
New commits: commit c4962247e40b5e6750c522d43359d9436dcfec68 Author: Sahil Gautam <sahil.gautam.ext...@allotropia.de> AuthorDate: Wed Nov 20 16:43:43 2024 +0530 Commit: Sahil Gautam <sahil.gautam.ext...@allotropia.de> CommitDate: Wed Dec 18 16:23:39 2024 +0100 tdf#163620 [API CHANGE] remove persona/appearance-toggle related code - remove ui and source files related to app colors and personalization tabs - remove persona entries from registry - remove functions related to persona settings from StyleSettings, vcl.. - remove ui and code related to tools - options - view - appearance combo box Change-Id: I98f0c38dc1facddd0e8dd03197c61a92287fdbc4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176836 Tested-by: Jenkins Reviewed-by: Sahil Gautam <sahil.gautam.ext...@allotropia.de> diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk index 5745cf821341..ef64e0fea5f6 100644 --- a/cui/Library_cui.mk +++ b/cui/Library_cui.mk @@ -182,7 +182,6 @@ $(eval $(call gb_Library_add_exception_objects,cui,\ $(call gb_Helper_optional,SCRIPTING, \ cui/source/options/optbasic) \ cui/source/options/optchart \ - cui/source/options/optcolor \ cui/source/options/optctl \ cui/source/options/optdict \ cui/source/options/optfltr \ @@ -200,8 +199,6 @@ $(eval $(call gb_Library_add_exception_objects,cui,\ cui/source/options/optpath \ cui/source/options/optsave \ cui/source/options/optupdt \ - $(call gb_Helper_optional,DESKTOP,\ - cui/source/options/personalization) \ cui/source/options/sdbcdriverenum \ cui/source/options/securityoptions \ cui/source/options/treeopt \ diff --git a/cui/UIConfig_cui.mk b/cui/UIConfig_cui.mk index 601e58d2c9c4..953227c874c0 100644 --- a/cui/UIConfig_cui.mk +++ b/cui/UIConfig_cui.mk @@ -51,7 +51,6 @@ $(eval $(call gb_UIConfig_add_uifiles,cui,\ cui/uiconfig/ui/certdialog \ cui/uiconfig/ui/chapterfragment \ cui/uiconfig/ui/charnamepage \ - cui/uiconfig/ui/colorconfigwin \ cui/uiconfig/ui/colorfragment \ cui/uiconfig/ui/colorpage \ cui/uiconfig/ui/colorpickerdialog \ @@ -134,7 +133,6 @@ $(eval $(call gb_UIConfig_add_uifiles,cui,\ cui/uiconfig/ui/objecttitledescdialog \ cui/uiconfig/ui/optaccessibilitypage \ cui/uiconfig/ui/optadvancedpage \ - cui/uiconfig/ui/optappearancepage \ cui/uiconfig/ui/optasianpage \ cui/uiconfig/ui/optbasicidepage \ cui/uiconfig/ui/optctlpage \ @@ -170,7 +168,6 @@ $(eval $(call gb_UIConfig_add_uifiles,cui,\ cui/uiconfig/ui/pastespecial \ cui/uiconfig/ui/patterntabpage \ cui/uiconfig/ui/percentdialog \ - cui/uiconfig/ui/personalization_tab \ cui/uiconfig/ui/pickbulletpage \ cui/uiconfig/ui/pickgraphicpage \ cui/uiconfig/ui/picknumberingpage \ diff --git a/cui/inc/treeopt.hrc b/cui/inc/treeopt.hrc index 602eb5b6b47a..e79a65eabb89 100644 --- a/cui/inc/treeopt.hrc +++ b/cui/inc/treeopt.hrc @@ -39,8 +39,6 @@ const std::pair<TranslateId, sal_uInt16> SID_GENERAL_OPTIONS_RES[] = { NC_("SID_GENERAL_OPTIONS_RES", "Paths"), RID_SFXPAGE_PATH }, { NC_("SID_GENERAL_OPTIONS_RES", "Fonts"), RID_SVX_FONT_SUBSTITUTION }, { NC_("SID_GENERAL_OPTIONS_RES", "Security"), RID_SVXPAGE_INET_SECURITY }, - { NC_("SID_GENERAL_OPTIONS_RES", "Personalization"), RID_SVXPAGE_PERSONALIZATION }, - { NC_("SID_GENERAL_OPTIONS_RES", "Application Colors"), RID_SVXPAGE_COLORCONFIG }, { NC_("SID_GENERAL_OPTIONS_RES", "Accessibility"), RID_SVXPAGE_ACCESSIBILITYCONFIG }, { NC_("SID_GENERAL_OPTIONS_RES", "Advanced"), RID_SVXPAGE_OPTIONS_JAVA }, { NC_("SID_GENERAL_OPTIONS_RES", "Basic IDE"), RID_SVXPAGE_BASICIDE_OPTIONS }, diff --git a/cui/qa/unit/data/cui-dialogs-test.txt b/cui/qa/unit/data/cui-dialogs-test.txt index 7a8e55240c93..ea3e74cc3fab 100644 --- a/cui/qa/unit/data/cui-dialogs-test.txt +++ b/cui/qa/unit/data/cui-dialogs-test.txt @@ -76,7 +76,6 @@ cui/ui/calloutpage.ui cui/ui/cellalignment.ui cui/ui/certdialog.ui cui/ui/charnamepage.ui -cui/ui/colorconfigwin.ui cui/ui/colorpage.ui cui/ui/colorpickerdialog.ui cui/ui/comment.ui diff --git a/cui/qa/unit/data/cui-dialogs-test_3.txt b/cui/qa/unit/data/cui-dialogs-test_3.txt index f2f0491ff58c..6fd7fb0ff21d 100644 --- a/cui/qa/unit/data/cui-dialogs-test_3.txt +++ b/cui/qa/unit/data/cui-dialogs-test_3.txt @@ -15,7 +15,6 @@ cui/ui/objectnamedialog.ui cui/ui/objecttitledescdialog.ui cui/ui/optaccessibilitypage.ui cui/ui/optadvancedpage.ui -cui/ui/optappearancepage.ui cui/ui/optasianpage.ui cui/ui/optbasicidepage.ui cui/ui/optchartcolorspage.ui diff --git a/cui/qa/unit/data/cui-dialogs-test_4.txt b/cui/qa/unit/data/cui-dialogs-test_4.txt index a537b2b09d1e..8d751be0c26b 100644 --- a/cui/qa/unit/data/cui-dialogs-test_4.txt +++ b/cui/qa/unit/data/cui-dialogs-test_4.txt @@ -18,7 +18,6 @@ cui/ui/paratabspage.ui cui/ui/password.ui cui/ui/pastespecial.ui cui/ui/percentdialog.ui -cui/ui/personalization_tab.ui cui/ui/pickbulletpage.ui cui/ui/pickgraphicpage.ui cui/ui/picknumberingpage.ui diff --git a/cui/source/options/optcolor.cxx b/cui/source/options/optcolor.cxx deleted file mode 100644 index 1f2d455a1cf0..000000000000 --- a/cui/source/options/optcolor.cxx +++ /dev/null @@ -1,1075 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include <sal/config.h> - -#include <bitset> - -#include <com/sun/star/configuration/ReadWriteAccess.hpp> -#include <com/sun/star/beans/PropertyAttribute.hpp> -#include <tools/debug.hxx> -#include <editeng/editids.hrc> -#include <svtools/colorcfg.hxx> -#include <svtools/extcolorcfg.hxx> -#include <svx/colorbox.hxx> -#include <unotools/moduleoptions.hxx> -#include <vcl/svapp.hxx> -#include <vcl/weld.hxx> -#include <svx/svxdlg.hxx> -#include <helpids.h> -#include <dialmgr.hxx> -#include "optcolor.hxx" -#include <svtools/restartdialog.hxx> -#include <strings.hrc> -#include <svtools/miscopt.hxx> -#include <officecfg/Office/Common.hxx> -#include <officecfg/Office/ExtendedColorScheme.hxx> -#include <officecfg/Office/UI.hxx> -using namespace ::com::sun::star; -using namespace ::svtools; - -namespace -{ - -// list of default groups -enum Group -{ - Group_General, - Group_Writer, - Group_Html, - Group_Calc, - Group_Draw, - Group_Comment, - Group_Basic, - Group_Sql, - - nGroupCount -}; - -// group data -struct -{ - // group - Group eGroup; - // .ui group name - OUString pGroup; -} -const vGroupInfo[] = -{ - // the groups are in the same order as in enum Group above - { Group_General, u"general"_ustr }, - { Group_Writer, u"writer"_ustr }, - { Group_Html, u"html"_ustr }, - { Group_Calc, u"calc"_ustr }, - { Group_Draw, u"draw"_ustr }, - { Group_Comment, u"comment"_ustr }, - { Group_Basic, u"basic"_ustr }, - { Group_Sql, u"sql"_ustr }, -}; - -// color config entry data (see ColorConfigWindow_Impl::Entry below) -struct -{ - // group - Group eGroup; - //checkbox (or simple text) - OUString pText; - //color listbox - OUString pColor; - // has checkbox? - bool bCheckBox; - //prop name - std::u16string_view sPropName; -} -const vEntryInfo[] = -{ - #define IDS(Name) \ - u"" SAL_STRINGIFY(Name) ""_ustr, u"" SAL_STRINGIFY(Name##_lb) ""_ustr, false - - #define IDS_CB(Name) \ - u"" SAL_STRINGIFY(Name) ""_ustr, u"" SAL_STRINGIFY(Name##_lb) ""_ustr, true - - // The list of these entries (enum ColorConfigEntry) are in colorcfg.hxx. - - { Group_General, IDS(doccolor), std::u16string_view(u"/DocColor") }, - { Group_General, IDS(docboundaries), std::u16string_view(u"/DocBoundaries") }, - { Group_General, IDS(appback), std::u16string_view(u"/AppBackground") }, - { Group_General, IDS(tblboundaries), std::u16string_view(u"/TableBoundaries") }, - { Group_General, IDS(font), std::u16string_view(u"/FontColor") }, - { Group_General, IDS_CB(unvisitedlinks), std::u16string_view(u"/Links") }, - { Group_General, IDS_CB(visitedlinks), std::u16string_view(u"/LinksVisited") }, - { Group_General, IDS(autospellcheck), std::u16string_view(u"/Spell") }, - { Group_General, IDS(grammarcheck), std::u16string_view(u"/Grammar") }, - { Group_General, IDS(smarttags), std::u16string_view(u"/SmartTags") }, - { Group_General, IDS_CB(shadows), std::u16string_view(u"/Shadow") }, - - { Group_Writer, IDS(writergrid), std::u16string_view(u"/WriterTextGrid") }, - { Group_Writer, IDS_CB(field), std::u16string_view(u"/WriterFieldShadings") }, - { Group_Writer, IDS_CB(index), std::u16string_view(u"/WriterIdxShadings") }, - { Group_Writer, IDS(direct), std::u16string_view(u"/WriterDirectCursor") }, - { Group_Writer, IDS(script), std::u16string_view(u"/WriterScriptIndicator") }, - { Group_Writer, IDS(section), std::u16string_view(u"/WriterSectionBoundaries") }, - { Group_Writer, IDS(hdft), std::u16string_view(u"/WriterHeaderFooterMark") }, - { Group_Writer, IDS(pagebreak), std::u16string_view(u"/WriterPageBreaks") }, - { Group_Writer, IDS(nonprintchars), std::u16string_view(u"/WriterNonPrintChars") }, - - { Group_Html, IDS(sgml), std::u16string_view(u"/HTMLSGML") }, - { Group_Html, IDS(htmlcomment), std::u16string_view(u"/HTMLComment") }, - { Group_Html, IDS(htmlkeyword), std::u16string_view(u"/HTMLKeyword") }, - { Group_Html, IDS(unknown), std::u16string_view(u"/HTMLUnknown") }, - - { Group_Calc, IDS(calcgrid), std::u16string_view(u"/CalcGrid") }, - { Group_Calc, IDS(calccellfocus), std::u16string_view(u"/CalcCellFocus") }, - { Group_Calc, IDS(brk), std::u16string_view(u"/CalcPageBreak") }, - { Group_Calc, IDS(brkmanual), std::u16string_view(u"/CalcPageBreakManual") }, - { Group_Calc, IDS(brkauto), std::u16string_view(u"/CalcPageBreakAutomatic") }, - { Group_Calc, IDS_CB(hiddencolrow), std::u16string_view(u"/CalcHiddenColRow") }, - { Group_Calc, IDS_CB(textoverflow), std::u16string_view(u"/CalcTextOverflow") }, - { Group_Calc, IDS(comments), std::u16string_view(u"/CalcComments") }, - { Group_Calc, IDS(det), std::u16string_view(u"/CalcDetective") }, - { Group_Calc, IDS(deterror), std::u16string_view(u"/CalcDetectiveError") }, - { Group_Calc, IDS(ref), std::u16string_view(u"/CalcReference") }, - { Group_Calc, IDS(notes), std::u16string_view(u"/CalcNotesBackground") }, - { Group_Calc, IDS(values), std::u16string_view(u"/CalcValue") }, - { Group_Calc, IDS(formulas), std::u16string_view(u"/CalcFormula") }, - { Group_Calc, IDS(text), std::u16string_view(u"/CalcText") }, - { Group_Calc, IDS(protectedcells), std::u16string_view(u"/CalcProtectedBackground") }, - - { Group_Draw, IDS(drawgrid), std::u16string_view(u"/DrawGrid") }, - - { Group_Comment, IDS(author1), std::u16string_view(u"/Author1") }, - { Group_Comment, IDS(author2), std::u16string_view(u"/Author2") }, - { Group_Comment, IDS(author3), std::u16string_view(u"/Author3") }, - { Group_Comment, IDS(author4), std::u16string_view(u"/Author4") }, - { Group_Comment, IDS(author5), std::u16string_view(u"/Author5") }, - { Group_Comment, IDS(author6), std::u16string_view(u"/Author6") }, - { Group_Comment, IDS(author7), std::u16string_view(u"/Author7") }, - { Group_Comment, IDS(author8), std::u16string_view(u"/Author8") }, - { Group_Comment, IDS(author9), std::u16string_view(u"/Author9") }, - - { Group_Basic, IDS(basiceditor), std::u16string_view(u"/BASICEditor") }, - { Group_Basic, IDS(basicid), std::u16string_view(u"/BASICIdentifier") }, - { Group_Basic, IDS(basiccomment), std::u16string_view(u"/BASICComment") }, - { Group_Basic, IDS(basicnumber), std::u16string_view(u"/BASICNumber") }, - { Group_Basic, IDS(basicstring), std::u16string_view(u"/BASICString") }, - { Group_Basic, IDS(basicop), std::u16string_view(u"/BASICOperator") }, - { Group_Basic, IDS(basickeyword), std::u16string_view(u"/BASICKeyword") }, - { Group_Basic, IDS(error), std::u16string_view(u"/BASICError") }, - - { Group_Sql, IDS(sqlid), std::u16string_view(u"/SQLIdentifier") }, - { Group_Sql, IDS(sqlnumber), std::u16string_view(u"/SQLNumber") }, - { Group_Sql, IDS(sqlstring), std::u16string_view(u"/SQLString") }, - { Group_Sql, IDS(sqlop), std::u16string_view(u"/SQLOperator") }, - { Group_Sql, IDS(sqlkeyword), std::u16string_view(u"/SQLKeyword") }, - { Group_Sql, IDS(sqlparam), std::u16string_view(u"/SQLParameter") }, - { Group_Sql, IDS(sqlcomment), std::u16string_view(u"/SQLComment") } - - #undef IDS -}; - -// Maps the names of default color schemes to the corresponding TranslateId -const std::map<OUString, OUString> &getColorSchemes() -{ - static std::map<OUString, OUString> const vColorSchemes = { - {"COLOR_SCHEME_LIBREOFFICE_AUTOMATIC", CuiResId(RID_COLOR_SCHEME_LIBREOFFICE_AUTOMATIC)}, - }; - return vColorSchemes; -}; - -// If the color scheme name has a translated string, then return the translation -// Or else simply return the input string -// For non-translatable color schemes, the ID and the name are the same -OUString lcl_SchemeIdToTranslatedName(const OUString& sSchemeId) -{ - auto it = getColorSchemes().find(sSchemeId); - if (it != getColorSchemes().end()) - return it->second; - return sSchemeId; -} - -// Given a translated color scheme name, return the scheme ID used in the UI.xcu file -// For non-translatable color schemes, the ID and the name are the same -OUString lcl_TranslatedNameToSchemeId(const OUString& sName) -{ - for (auto it = getColorSchemes().begin(); it != getColorSchemes().end(); ++it) - if (it->second == sName) - return it->first; - return sName; -} - -// ColorConfigWindow_Impl - -class ColorConfigWindow_Impl -{ -public: - explicit ColorConfigWindow_Impl(weld::Window* pTopLevel, weld::Container* pParent); - -public: - void SetLinks(Link<weld::Toggleable&,void> const&, - Link<ColorListBox&,void> const&, - Link<weld::Widget&,void> const&, - weld::ScrolledWindow& rScroll); - void Update(EditableColorConfig const*, EditableExtendedColorConfig const*); - void UpdateEntries(); - void ClickHdl(EditableColorConfig*, const weld::Toggleable&); - void ColorHdl(EditableColorConfig*, EditableExtendedColorConfig*, const ColorListBox*); - - weld::Widget& GetWidget1() - { - return *m_xWidget1; - } - - weld::Widget& GetWidget2() - { - return *m_xWidget2; - } - - weld::Widget& GetBody() - { - return *m_xBox; - } - - int GetLabelIndent() const - { - return m_nCheckBoxLabelOffset; - } - -private: - // Chapter -- horizontal group separator stripe with text - class Chapter - { - // text - std::unique_ptr<weld::Label> m_xText; - public: - Chapter(weld::Builder& rBuilder, const OUString& pLabelWidget, bool bShow); - void SetText(const OUString& rLabel) { m_xText->set_label(rLabel); } - }; - - // Entry -- a color config entry: - // text (checkbox) + color list box - struct Entry - { - Entry(weld::Window* pTopLevel, weld::Builder& rBuilder, const OUString& pTextWidget, const OUString& pColorWidget, - const Color& rColor, int nCheckBoxLabelOffset, const ColorListBox* pCache, bool bCheckBox, bool bShow); - void SetText(const OUString& rLabel) { dynamic_cast<weld::Label&>(*m_xText).set_label(rLabel); } - int get_height_request() const - { - return std::max(m_xText->get_preferred_size().Height(), - m_xColorList->get_widget().get_preferred_size().Height()); - } - void Hide(); - - void SetLinks(Link<weld::Toggleable&,void> const&, - Link<ColorListBox&,void> const&, - Link<weld::Widget&,void> const&); - void Update (ColorConfigValue const&, std::u16string_view, - css::uno::Reference<css::configuration::XReadWriteAccess> const&); - void Update (ExtendedColorConfigValue const&, std::u16string_view, - css::uno::Reference<css::configuration::XReadWriteAccess> const&); - void ColorChanged (ColorConfigValue&); - void ColorChanged (ExtendedColorConfigValue&); - - bool Is(const weld::Toggleable* pBox) const { return m_xText.get() == pBox; } - bool Is(const ColorListBox* pBox) const { return m_xColorList.get() == pBox; } - - // checkbox (CheckBox) or simple text (FixedText) - std::unique_ptr<weld::Widget> m_xText; - // color list box - std::unique_ptr<ColorListBox> m_xColorList; - // default color - Color m_aDefaultColor; - }; - - css::uno::Reference<css::configuration::XReadWriteAccess> m_xReadWriteAccess; - -private: - weld::Window* m_pTopLevel; - int m_nCheckBoxLabelOffset; - std::unique_ptr<weld::Builder> m_xBuilder; - std::unique_ptr<weld::Box> m_xBox; - std::unique_ptr<weld::Widget> m_xWidget1; - std::unique_ptr<weld::Widget> m_xWidget2; - - std::vector<std::unique_ptr<weld::Builder>> vExtBuilders; - std::vector<std::unique_ptr<weld::Container>> vExtContainers; - // vChapters -- groups (group headers) - std::vector<std::shared_ptr<Chapter> > vChapters; - // vEntries -- color options - std::vector<std::shared_ptr<Entry> > vEntries; - - // module options - SvtModuleOptions aModuleOptions; - - // initialization - void CreateEntries(); - -private: - - bool IsGroupVisible (Group) const; -}; - -} // namespace - -// ColorConfigWindow_Impl::Chapter - -// ctor for default groups -// rParent: parent window (ColorConfigWindow_Impl) -// eGroup: which group is this? -ColorConfigWindow_Impl::Chapter::Chapter(weld::Builder& rBuilder, const OUString& pLabelWidget, bool bShow) - : m_xText(rBuilder.weld_label(pLabelWidget)) -{ - if (!bShow) - m_xText->hide(); -} - -// ColorConfigWindow_Impl::Entry -ColorConfigWindow_Impl::Entry::Entry(weld::Window* pTopLevel, weld::Builder& rBuilder, - const OUString& pTextWidget, const OUString& pColorWidget, - const Color& rColor, int nCheckBoxLabelOffset, - const ColorListBox* pCache, bool bCheckBox, bool bShow) - : m_xColorList(new ColorListBox(rBuilder.weld_menu_button(pColorWidget), - [pTopLevel]{ return pTopLevel; }, pCache)) - , m_aDefaultColor(rColor) -{ - if (bCheckBox) - m_xText = rBuilder.weld_check_button(pTextWidget); - else - m_xText = rBuilder.weld_label(pTextWidget); - - // color list - m_xColorList->SetSlotId(SID_ATTR_CHAR_COLOR); - m_xColorList->SetAutoDisplayColor(m_aDefaultColor); - - if (!bCheckBox) - { - m_xText->set_margin_start(m_xText->get_margin_start() + - nCheckBoxLabelOffset); - } - - if (!bShow) - Hide(); -} - -void ColorConfigWindow_Impl::Entry::Hide() -{ - m_xText->hide(); - m_xColorList->hide(); -} - -// SetLinks() -void ColorConfigWindow_Impl::Entry::SetLinks(Link<weld::Toggleable&,void> const& rCheckLink, - Link<ColorListBox&,void> const& rColorLink, - Link<weld::Widget&,void> const& rGetFocusLink) -{ - m_xColorList->SetSelectHdl(rColorLink); - m_xColorList->connect_focus_in(rGetFocusLink); - if (weld::Toggleable* pCheckBox = dynamic_cast<weld::Toggleable*>(m_xText.get())) - { - pCheckBox->connect_toggled(rCheckLink); - pCheckBox->connect_focus_in(rGetFocusLink); - } -} - -// updates a default color config entry -void ColorConfigWindow_Impl::Entry::Update(ColorConfigValue const& rValue, std::u16string_view rConfigPath, - css::uno::Reference<css::configuration::XReadWriteAccess> const& xReadWriteAccess) -{ - Color aColor(rValue.nColor); - m_xColorList->SelectEntry(aColor); - - bool bReadOnly = false; - OUString aConfigPath = OUString::Concat(rConfigPath) + "/Color"; - if (xReadWriteAccess->hasPropertyByHierarchicalName(aConfigPath)) - { - css::beans::Property aProperty = xReadWriteAccess->getPropertyByHierarchicalName(aConfigPath); - bReadOnly = (aProperty.Attributes & css::beans::PropertyAttribute::READONLY) != 0; - } - m_xColorList->set_sensitive(!bReadOnly); - - if (weld::Toggleable* pCheckBox = dynamic_cast<weld::Toggleable*>(m_xText.get())) - { - bReadOnly = false; - pCheckBox->set_active(rValue.bIsVisible); - - aConfigPath = OUString::Concat(rConfigPath) + "/IsVisible"; - if (xReadWriteAccess->hasPropertyByHierarchicalName(aConfigPath)) - { - css::beans::Property aProperty = xReadWriteAccess->getPropertyByHierarchicalName(aConfigPath); - bReadOnly = (aProperty.Attributes & css::beans::PropertyAttribute::READONLY) != 0; - } - pCheckBox->set_sensitive(!bReadOnly); - } -} - -// updates an extended color config entry -void ColorConfigWindow_Impl::Entry::Update(ExtendedColorConfigValue const& rValue, std::u16string_view rConfigPath, - css::uno::Reference<css::configuration::XReadWriteAccess> const& xReadWriteAccess) -{ - Color aColor(rValue.getColor()); - if (rValue.getColor() == rValue.getDefaultColor()) - m_xColorList->SelectEntry(COL_AUTO); - else - m_xColorList->SelectEntry(aColor); - - bool bReadOnly = false; - OUString aConfigPath = OUString::Concat(rConfigPath) + rValue.getName() + "/Color"; - if (xReadWriteAccess->hasPropertyByHierarchicalName(aConfigPath)) - { - css::beans::Property aProperty = xReadWriteAccess->getPropertyByHierarchicalName(aConfigPath); - bReadOnly = (aProperty.Attributes & css::beans::PropertyAttribute::READONLY) != 0; - } - m_xColorList->set_sensitive(!bReadOnly); -} - -// color of a default entry has changed -void ColorConfigWindow_Impl::Entry::ColorChanged(ColorConfigValue& rValue) -{ - Color aColor = m_xColorList->GetSelectEntryColor(); - rValue.nColor = aColor; -} - -// color of an extended entry has changed -void ColorConfigWindow_Impl::Entry::ColorChanged(ExtendedColorConfigValue& rValue) -{ - Color aColor = m_xColorList->GetSelectEntryColor(); - rValue.setColor(aColor); - if (aColor == COL_AUTO) - { - rValue.setColor(rValue.getDefaultColor()); - } -} - -// ColorConfigWindow_Impl -ColorConfigWindow_Impl::ColorConfigWindow_Impl(weld::Window* pTopLevel, weld::Container* pParent) - : m_pTopLevel(pTopLevel) - , m_xBuilder(Application::CreateBuilder(pParent, u"cui/ui/colorconfigwin.ui"_ustr)) - , m_xBox(m_xBuilder->weld_box(u"ColorConfigWindow"_ustr)) - , m_xWidget1(m_xBuilder->weld_widget(u"docboundaries"_ustr)) - , m_xWidget2(m_xBuilder->weld_widget(u"docboundaries_lb"_ustr)) -{ - const css::uno::Reference < css::uno::XComponentContext >& xContext(::comphelper::getProcessComponentContext()); - m_xReadWriteAccess = css::configuration::ReadWriteAccess::create(xContext, u"*"_ustr); - - CreateEntries(); -} - -void ColorConfigWindow_Impl::CreateEntries() -{ - std::bitset<nGroupCount> aModulesInstalled; - // creating group headers - vChapters.reserve(nGroupCount); - for (unsigned i = 0; i != nGroupCount; ++i) - { - aModulesInstalled[i] = IsGroupVisible(vGroupInfo[i].eGroup); - vChapters.push_back(std::make_shared<Chapter>(*m_xBuilder, vGroupInfo[i].pGroup, aModulesInstalled[i])); - } - - // Here we want to get the amount to add to the position of a FixedText to - // get it to align its contents with that of a CheckBox - { - OUString sSampleText(u"XXXXXX"_ustr); - std::unique_ptr<weld::CheckButton> xCheckBox(m_xBuilder->weld_check_button(u"unvisitedlinks"_ustr)); - std::unique_ptr<weld::Label> xFixedText(m_xBuilder->weld_label(u"doccolor"_ustr)); - OUString sOrigCheck(xCheckBox->get_label()); - OUString sOrigFixed(xFixedText->get_label()); - xCheckBox->set_label(sSampleText); - xFixedText->set_label(sSampleText); - Size aCheckSize(xCheckBox->get_preferred_size()); - Size aFixedSize(xFixedText->get_preferred_size()); - xCheckBox->set_label(sOrigCheck); - xFixedText->set_label(sOrigFixed); - m_nCheckBoxLabelOffset = aCheckSize.Width() - aFixedSize.Width(); - } - - const ColorListBox* pCache = nullptr; - - // creating entries - vEntries.reserve(ColorConfigEntryCount - THEME_APPLICATION_COLORS_COUNT); - for (size_t i = 0; i < std::size(vEntryInfo); ++i) - { - vEntries.push_back(std::make_shared<Entry>(m_pTopLevel, *m_xBuilder, - vEntryInfo[i].pText, vEntryInfo[i].pColor, - ColorConfig::GetDefaultColor(static_cast<ColorConfigEntry>(i)), - m_nCheckBoxLabelOffset, pCache, - vEntryInfo[i].bCheckBox, - aModulesInstalled[vEntryInfo[i].eGroup])); - if (!pCache) - pCache = vEntries.back()->m_xColorList.get(); - } - - // extended entries - ExtendedColorConfig aExtConfig; - unsigned const nExtGroupCount = aExtConfig.GetComponentCount(); - if (!nExtGroupCount) - return; - - for (unsigned j = 0; j != nExtGroupCount; ++j) - { - vExtBuilders.emplace_back(Application::CreateBuilder(m_xBox.get(), u"cui/ui/chapterfragment.ui"_ustr)); - vExtContainers.emplace_back(vExtBuilders.back()->weld_frame(u"ChapterFragment"_ustr)); - - OUString const sComponentName = aExtConfig.GetComponentName(j); - vChapters.push_back(std::make_shared<Chapter>( - *vExtBuilders.back(), "chapter", true)); - vChapters.back()->SetText(aExtConfig.GetComponentDisplayName(sComponentName)); - - vExtContainers.emplace_back(vExtBuilders.back()->weld_box(u"contents"_ustr)); - weld::Container* pChapterBox = vExtContainers.back().get(); - - unsigned nColorCount = aExtConfig.GetComponentColorCount(sComponentName); - for (unsigned i = 0; i != nColorCount; ++i) - { - vExtBuilders.emplace_back(Application::CreateBuilder(pChapterBox, u"cui/ui/colorfragment.ui"_ustr)); - vExtContainers.emplace_back(vExtBuilders.back()->weld_container(u"ColorFragment"_ustr)); - - ExtendedColorConfigValue const aColorEntry = - aExtConfig.GetComponentColorConfigValue(sComponentName, i); - vEntries.push_back(std::make_shared<Entry>(m_pTopLevel, *vExtBuilders.back(), - "label", "button", aColorEntry.getDefaultColor(), - m_nCheckBoxLabelOffset, pCache, false, true)); - vEntries.back()->SetText(aColorEntry.getDisplayName()); - } - } -} - -// SetLinks() -void ColorConfigWindow_Impl::SetLinks(Link<weld::Toggleable&,void> const& aCheckLink, - Link<ColorListBox&,void> const& aColorLink, - Link<weld::Widget&,void> const& rGetFocusLink, - weld::ScrolledWindow& rScroll) -{ - if (vEntries.empty()) - return; - for (auto const & i: vEntries) - i->SetLinks(aCheckLink, aColorLink, rGetFocusLink); - // 6 is the spacing set on ColorConfigWindow - rScroll.vadjustment_set_step_increment(vEntries[0]->get_height_request() + 6); -} - -// Update() -void ColorConfigWindow_Impl::Update ( - EditableColorConfig const* pConfig, - EditableExtendedColorConfig const* pExtConfig) -{ - // updating default entries - std::optional<OUString> aUIColorSchemeName = officecfg::Office::UI::ColorScheme::CurrentColorScheme::get(); - OUString aUIColorSchemePath = officecfg::Office::UI::ColorScheme::ColorSchemes::path() + u"/" + aUIColorSchemeName.value(); - - for (unsigned i = 0; i != ColorConfigEntryCount - THEME_APPLICATION_COLORS_COUNT; ++i) - { - OUString sPath = aUIColorSchemePath + vEntryInfo[i].sPropName; - ColorConfigEntry const aColorEntry = static_cast<ColorConfigEntry>(i); - vEntries[i]->Update( - pConfig->GetColorValue(aColorEntry), - sPath, - m_xReadWriteAccess - ); - } - - // updating extended entries - decltype(vEntries)::size_type i = ColorConfigEntryCount - THEME_APPLICATION_COLORS_COUNT; - unsigned const nExtCount = pExtConfig->GetComponentCount(); - for (unsigned j = 0; j != nExtCount; ++j) - { - OUString sComponentName = pExtConfig->GetComponentName(j); - aUIColorSchemePath = officecfg::Office::ExtendedColorScheme::ExtendedColorScheme::ColorSchemes::path() + u"/" + - aUIColorSchemeName.value() + u"/" + sComponentName + u"/Entries/"; - unsigned const nColorCount = pExtConfig->GetComponentColorCount(sComponentName); - for (unsigned k = 0; i != vEntries.size() && k != nColorCount; ++i, ++k) - vEntries[i]->Update( - pExtConfig->GetComponentColorConfigValue(sComponentName, k), - aUIColorSchemePath, - m_xReadWriteAccess - ); - } -} - -void ColorConfigWindow_Impl::UpdateEntries() -{ - for (unsigned i = 0; i != ColorConfigEntryCount - THEME_APPLICATION_COLORS_COUNT; ++i) - { - ColorConfigEntry const aEntry = static_cast<ColorConfigEntry>(i); - Color aColor = ColorConfig::GetDefaultColor(aEntry); - vEntries[i]->m_xColorList->SetAutoDisplayColor(aColor); - } -} - -// ClickHdl() -void ColorConfigWindow_Impl::ClickHdl(EditableColorConfig* pConfig, const weld::Toggleable& rBox) -{ - for (unsigned i = 0; i != ColorConfigEntryCount - THEME_APPLICATION_COLORS_COUNT; ++i) - { - if (vEntries[i]->Is(&rBox)) - { - ColorConfigEntry const aEntry = static_cast<ColorConfigEntry>(i); - ColorConfigValue aValue = pConfig->GetColorValue(aEntry); - aValue.bIsVisible = rBox.get_active(); - pConfig->SetColorValue(aEntry, aValue); - break; - } - } -} - -// ColorHdl() -void ColorConfigWindow_Impl::ColorHdl( - EditableColorConfig* pConfig, EditableExtendedColorConfig* pExtConfig, - const ColorListBox* pBox) -{ - unsigned i = 0; - - // default entries - for ( ; i != ColorConfigEntryCount - THEME_APPLICATION_COLORS_COUNT; ++i) - { - if (pBox && vEntries[i]->Is(pBox)) - { - ColorConfigEntry const aColorEntry = static_cast<ColorConfigEntry>(i); - ColorConfigValue aValue = pConfig->GetColorValue(aColorEntry); - vEntries[i]->ColorChanged(aValue); - pConfig->SetColorValue(aColorEntry, aValue); - break; - } - } - - // extended entries - unsigned const nExtCount = pExtConfig->GetComponentCount(); - i = ColorConfigEntryCount - THEME_APPLICATION_COLORS_COUNT; - for (unsigned j = 0; j != nExtCount; ++j) - { - OUString sComponentName = pExtConfig->GetComponentName(j); - unsigned const nColorCount = pExtConfig->GetComponentColorCount(sComponentName); - unsigned const nCount = vEntries.size(); - for (unsigned k = 0; i != nCount && k != nColorCount; ++i, ++k) - { - if (pBox && vEntries[i]->Is(pBox)) - { - ExtendedColorConfigValue aValue = - pExtConfig->GetComponentColorConfigValue(sComponentName, k); - vEntries[i]->ColorChanged(aValue); - pExtConfig->SetColorValue(sComponentName, aValue); - break; - } - } - } -} - - -// IsGroupVisible() -bool ColorConfigWindow_Impl::IsGroupVisible (Group eGroup) const -{ - switch (eGroup) - { - case Group_Writer: - case Group_Html: - return aModuleOptions.IsWriterInstalled(); - case Group_Calc: - return aModuleOptions.IsCalcInstalled(); - case Group_Draw: - return - aModuleOptions.IsDrawInstalled() || - aModuleOptions.IsImpressInstalled(); - case Group_Sql: - return aModuleOptions.IsDataBaseInstalled(); - default: - return true; - } -} - -class ColorConfigCtrl_Impl -{ - std::unique_ptr<weld::ScrolledWindow> m_xVScroll; - std::unique_ptr<weld::Container> m_xBody; - std::unique_ptr<ColorConfigWindow_Impl> m_xScrollWindow; - - EditableColorConfig* pColorConfig; - EditableExtendedColorConfig* pExtColorConfig; - - DECL_LINK(ClickHdl, weld::Toggleable&, void); - DECL_LINK(ColorHdl, ColorListBox&, void); - DECL_LINK(ControlFocusHdl, weld::Widget&, void); - -public: - explicit ColorConfigCtrl_Impl(weld::Window* pTopLevel, weld::Builder& rbuilder); - - void SetConfig (EditableColorConfig& rConfig) { pColorConfig = &rConfig; } - void SetExtendedConfig (EditableExtendedColorConfig& rConfig) { pExtColorConfig = &rConfig; } - void Update(); - void UpdateEntries(); - tools::Long GetScrollPosition() const - { - return m_xVScroll->vadjustment_get_value(); - } - void SetScrollPosition(tools::Long nSet) - { - m_xVScroll->vadjustment_set_value(nSet); - } - weld::Widget& GetWidget1() - { - return m_xScrollWindow->GetWidget1(); - } - weld::Widget& GetWidget2() - { - return m_xScrollWindow->GetWidget2(); - } - int GetLabelIndent() const - { - return m_xScrollWindow->GetLabelIndent(); - } -}; - -ColorConfigCtrl_Impl::ColorConfigCtrl_Impl(weld::Window* pTopLevel, weld::Builder& rBuilder) - : m_xVScroll(rBuilder.weld_scrolled_window(u"scroll"_ustr)) - , m_xBody(rBuilder.weld_container(u"colorconfig"_ustr)) - , m_xScrollWindow(std::make_unique<ColorConfigWindow_Impl>(pTopLevel, m_xBody.get())) - , pColorConfig(nullptr) - , pExtColorConfig(nullptr) -{ - m_xBody->set_stack_background(); - - Link<weld::Toggleable&,void> aCheckLink = LINK(this, ColorConfigCtrl_Impl, ClickHdl); - Link<ColorListBox&,void> aColorLink = LINK(this, ColorConfigCtrl_Impl, ColorHdl); - Link<weld::Widget&,void> const aGetFocusLink = LINK(this, ColorConfigCtrl_Impl, ControlFocusHdl); - m_xScrollWindow->SetLinks(aCheckLink, aColorLink, aGetFocusLink, *m_xVScroll); -} - -void ColorConfigCtrl_Impl::Update () -{ - DBG_ASSERT(pColorConfig, "Configuration not set"); - m_xScrollWindow->Update(pColorConfig, pExtColorConfig); -} - -void ColorConfigCtrl_Impl::UpdateEntries() -{ - m_xScrollWindow->UpdateEntries(); -} - -IMPL_LINK(ColorConfigCtrl_Impl, ClickHdl, weld::Toggleable&, rBox, void) -{ - DBG_ASSERT(pColorConfig, "Configuration not set"); - m_xScrollWindow->ClickHdl(pColorConfig, rBox); -} - -// a color list has changed -IMPL_LINK(ColorConfigCtrl_Impl, ColorHdl, ColorListBox&, rBox, void) -{ - DBG_ASSERT(pColorConfig, "Configuration not set" ); - m_xScrollWindow->ColorHdl(pColorConfig, pExtColorConfig, &rBox); -} - -IMPL_LINK(ColorConfigCtrl_Impl, ControlFocusHdl, weld::Widget&, rCtrl, void) -{ - // determine whether a control is completely visible - // and make it visible - unsigned const nWinHeight = m_xVScroll->vadjustment_get_page_size(); - - // calc visible area - auto nThumbPos = m_xVScroll->vadjustment_get_value(); - int const nWinTop = nThumbPos; - int const nWinBottom = nWinTop + nWinHeight; - - int x, nCtrlPosY, width, nHeight; - rCtrl.get_extents_relative_to(m_xScrollWindow->GetBody(), x, nCtrlPosY, width, nHeight); - - int const nSelectedItemTop = nCtrlPosY; - int const nSelectedItemBottom = nCtrlPosY + nHeight; - bool const shouldScrollDown = nSelectedItemBottom >= nWinBottom; - bool const shouldScrollUp = nSelectedItemTop <= nWinTop; - bool const isNeedToScroll = shouldScrollDown || shouldScrollUp || nCtrlPosY < 0; - - if (!isNeedToScroll) - return; - - if (shouldScrollDown) - { - int nOffset = nSelectedItemBottom - nWinBottom; - nThumbPos += nOffset + 2; - } - else - { - int nOffset = nWinTop - nSelectedItemTop; - nThumbPos -= nOffset + 2; - if(nThumbPos < 0) - nThumbPos = 0; - } - m_xVScroll->vadjustment_set_value(nThumbPos); -} - -// SvxColorOptionsTabPage -SvxColorOptionsTabPage::SvxColorOptionsTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rCoreSet) - : SfxTabPage(pPage, pController, u"cui/ui/optappearancepage.ui"_ustr, u"OptAppearancePage"_ustr, &rCoreSet) - , bFillItemSetCalled(false) - , m_bShowRestartDialog(false) - , m_nSizeAllocEventId(nullptr) - , m_xAutoColorLB(m_xBuilder->weld_combo_box(u"autocolorlb"_ustr)) - , m_xAutoColorImg(m_xBuilder->weld_widget(u"lockautocolorlb"_ustr)) - , m_xColorSchemeLB(m_xBuilder->weld_combo_box(u"colorschemelb"_ustr)) - , m_xColorSchemeImg(m_xBuilder->weld_widget(u"lockcolorschemelb"_ustr)) - , m_xSaveSchemePB(m_xBuilder->weld_button(u"save"_ustr)) - , m_xDeleteSchemePB(m_xBuilder->weld_button(u"delete"_ustr)) - , m_xColorConfigCT(new ColorConfigCtrl_Impl(pController->getDialog(), *m_xBuilder)) - , m_xTable(m_xBuilder->weld_widget(u"table"_ustr)) - , m_xOnFT(m_xBuilder->weld_label(u"on"_ustr)) - , m_xColorFT(m_xBuilder->weld_label(u"colorsetting"_ustr)) - , m_rWidget1(m_xColorConfigCT->GetWidget1()) - , m_rWidget2(m_xColorConfigCT->GetWidget2()) -{ - m_xColorSchemeLB->make_sorted(); - m_xColorSchemeLB->connect_changed(LINK(this, SvxColorOptionsTabPage, SchemeChangedHdl_Impl)); - m_xAutoColorLB->connect_changed(LINK(this, SvxColorOptionsTabPage, onAutoColorChanged)); - Link<weld::Button&,void> aLk = LINK(this, SvxColorOptionsTabPage, SaveDeleteHdl_Impl ); - m_xSaveSchemePB->connect_clicked(aLk); - m_xDeleteSchemePB->connect_clicked(aLk); - - m_rWidget1.connect_size_allocate(LINK(this, SvxColorOptionsTabPage, AdjustHeaderBar)); - m_rWidget2.connect_size_allocate(LINK(this, SvxColorOptionsTabPage, AdjustHeaderBar)); -} - -SvxColorOptionsTabPage::~SvxColorOptionsTabPage() -{ - if (pColorConfig) - { - //when the dialog is cancelled but the color scheme ListBox has been changed these - //changes need to be undone - if (!bFillItemSetCalled && m_xColorSchemeLB->get_value_changed_from_saved()) - { - OUString sOldScheme = m_xColorSchemeLB->get_saved_value(); - if(!sOldScheme.isEmpty()) - { - pColorConfig->SetCurrentSchemeName(sOldScheme); - pExtColorConfig->SetCurrentSchemeName(sOldScheme); - } - } - pColorConfig->ClearModified(); - pColorConfig->EnableBroadcast(); - pColorConfig.reset(); - - pExtColorConfig->ClearModified(); - pExtColorConfig->EnableBroadcast(); - pExtColorConfig.reset(); - } - m_xColorConfigCT.reset(); - if (m_nSizeAllocEventId) - Application::RemoveUserEvent(m_nSizeAllocEventId); - - if (m_bShowRestartDialog) - { - ::svtools::executeRestartDialog(comphelper::getProcessComponentContext(), GetFrameWeld(), - svtools::RESTART_REASON_THEME_CHANGE); - } -} - -std::unique_ptr<SfxTabPage> SvxColorOptionsTabPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet) -{ - return std::make_unique<SvxColorOptionsTabPage>(pPage, pController, *rAttrSet); -} - -OUString SvxColorOptionsTabPage::GetAllStrings() -{ - // buttons are excluded - OUString sAllStrings; - OUString labels[] = { u"label2"_ustr, u"label3"_ustr, u"autocolor"_ustr, u"uielements"_ustr, u"colorsetting"_ustr }; - - for (const auto& label : labels) - { - if (const auto pString = m_xBuilder->weld_label(label)) - sAllStrings += pString->get_label() + " "; - } - - return sAllStrings.replaceAll("_", ""); -} - -bool SvxColorOptionsTabPage::FillItemSet( SfxItemSet* ) -{ - bFillItemSetCalled = true; - if (m_xColorSchemeLB->get_value_changed_from_saved()) - { - pColorConfig->SetModified(); - pExtColorConfig->SetModified(); - } - if (pColorConfig->IsModified()) - pColorConfig->Commit(); - if (pExtColorConfig->IsModified()) - pExtColorConfig->Commit(); - return true; -} - -void SvxColorOptionsTabPage::Reset( const SfxItemSet* ) -{ - if(pColorConfig) - { - pColorConfig->ClearModified(); - pColorConfig->DisableBroadcast(); - } - pColorConfig.reset(new EditableColorConfig); - m_xColorConfigCT->SetConfig(*pColorConfig); - - if(pExtColorConfig) - { - pExtColorConfig->ClearModified(); - pExtColorConfig->DisableBroadcast(); - } - pExtColorConfig.reset(new EditableExtendedColorConfig); - m_xColorConfigCT->SetExtendedConfig(*pExtColorConfig); - - m_xAutoColorLB->set_active( MiscSettings::GetAppColorMode() ); - - bool bReadOnly = officecfg::Office::ExtendedColorScheme::ExtendedColorScheme::CurrentColorScheme::isReadOnly() || - officecfg::Office::UI::ColorScheme::CurrentColorScheme::isReadOnly(); - m_xAutoColorLB->set_sensitive(!bReadOnly); - m_xSaveSchemePB->set_sensitive(!bReadOnly); - m_xDeleteSchemePB->set_sensitive(!bReadOnly); - m_xAutoColorImg->set_visible(bReadOnly); - - OUString sUser = GetUserData(); - //has to be called always to speed up accessibility tools - m_xColorConfigCT->SetScrollPosition(sUser.toInt32()); - m_xColorSchemeLB->clear(); - const uno::Sequence< OUString > aSchemes = pColorConfig->GetSchemeNames(); - for(const OUString& s : aSchemes) - m_xColorSchemeLB->append_text(lcl_SchemeIdToTranslatedName(s)); - - m_xColorSchemeLB->set_active_text(lcl_SchemeIdToTranslatedName(pColorConfig->GetCurrentSchemeName())); - m_xColorSchemeLB->set_sensitive(!officecfg::Office::Common::Misc::ApplicationAppearance::isReadOnly()); - m_xColorSchemeImg->set_visible(officecfg::Office::Common::Misc::ApplicationAppearance::isReadOnly()); - m_xColorSchemeLB->save_value(); - - m_xDeleteSchemePB->set_sensitive( aSchemes.getLength() > 1 && - !officecfg::Office::ExtendedColorScheme::ExtendedColorScheme::CurrentColorScheme::isReadOnly() ); - UpdateColorConfig(); -} - -DeactivateRC SvxColorOptionsTabPage::DeactivatePage( SfxItemSet* pSet_ ) -{ - if ( pSet_ ) - FillItemSet( pSet_ ); - return DeactivateRC::LeavePage; -} - -void SvxColorOptionsTabPage::UpdateColorConfig() -{ - //update the color config control - m_xColorConfigCT->Update(); -} - -IMPL_LINK_NOARG(SvxColorOptionsTabPage, onAutoColorChanged, weld::ComboBox&, void) -{ - MiscSettings::SetAppColorMode( m_xAutoColorLB->get_active() ); - - m_xColorConfigCT->UpdateEntries(); - - pColorConfig->LoadScheme(lcl_TranslatedNameToSchemeId(m_xColorSchemeLB->get_active_text())); - pExtColorConfig->LoadScheme(lcl_TranslatedNameToSchemeId(m_xColorSchemeLB->get_active_text())); - UpdateColorConfig(); -} - -IMPL_LINK(SvxColorOptionsTabPage, SchemeChangedHdl_Impl, weld::ComboBox&, rBox, void) -{ - pColorConfig->LoadScheme(lcl_TranslatedNameToSchemeId(rBox.get_active_text())); - pExtColorConfig->LoadScheme(lcl_TranslatedNameToSchemeId(rBox.get_active_text())); - UpdateColorConfig(); - - // show restart dialog only when LibreOffice Theme is enabled and - // the theme was changed. - if (officecfg::Office::Common::Misc::LibreOfficeTheme::get() - && rBox.get_value_changed_from_saved()) - m_bShowRestartDialog = true; -} - -IMPL_LINK(SvxColorOptionsTabPage, SaveDeleteHdl_Impl, weld::Button&, rButton, void) -{ - if (m_xSaveSchemePB.get() == &rButton) - { - OUString sName; - - SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - ScopedVclPtr<AbstractSvxNameDialog> aNameDlg(pFact->CreateSvxNameDialog(GetFrameWeld(), - sName, CuiResId(RID_CUISTR_COLOR_CONFIG_SAVE2) )); - aNameDlg->SetCheckNameHdl( LINK(this, SvxColorOptionsTabPage, CheckNameHdl_Impl)); - aNameDlg->SetText(CuiResId(RID_CUISTR_COLOR_CONFIG_SAVE1)); - aNameDlg->SetHelpId(HID_OPTIONS_COLORCONFIG_SAVE_SCHEME); - aNameDlg->SetCheckNameHdl( LINK(this, SvxColorOptionsTabPage, CheckNameHdl_Impl)); - if(RET_OK == aNameDlg->Execute()) - { - sName = aNameDlg->GetName(); - pColorConfig->AddScheme(sName); - pExtColorConfig->AddScheme(sName); - m_xColorSchemeLB->append_text(sName); - m_xColorSchemeLB->set_active_text(sName); - SchemeChangedHdl_Impl(*m_xColorSchemeLB); - } - } - else - { - DBG_ASSERT(m_xColorSchemeLB->get_count() > 1, "don't delete the last scheme"); - std::unique_ptr<weld::MessageDialog> xQuery(Application::CreateMessageDialog(GetFrameWeld(), - VclMessageType::Question, VclButtonsType::YesNo, - CuiResId(RID_CUISTR_COLOR_CONFIG_DELETE))); - xQuery->set_title(CuiResId(RID_CUISTR_COLOR_CONFIG_DELETE_TITLE)); - if (RET_YES == xQuery->run()) - { - OUString sDeleteScheme(m_xColorSchemeLB->get_active_text()); - m_xColorSchemeLB->remove(m_xColorSchemeLB->get_active()); - m_xColorSchemeLB->set_active(0); - SchemeChangedHdl_Impl(*m_xColorSchemeLB); - //first select the new scheme and then delete the old one - pColorConfig->DeleteScheme(sDeleteScheme); - pExtColorConfig->DeleteScheme(sDeleteScheme); - } - } - m_xDeleteSchemePB->set_sensitive(m_xColorSchemeLB->get_count() > 1); -} - -IMPL_LINK(SvxColorOptionsTabPage, CheckNameHdl_Impl, AbstractSvxNameDialog&, rDialog, bool ) -{ - OUString sName = rDialog.GetName(); - return !sName.isEmpty() && m_xColorSchemeLB->find_text(sName) == -1; -} - -void SvxColorOptionsTabPage::FillUserData() -{ - SetUserData(OUString::number(m_xColorConfigCT->GetScrollPosition())); -} - -IMPL_LINK_NOARG(SvxColorOptionsTabPage, AdjustHeaderBar, const Size&, void) -{ - if (m_nSizeAllocEventId) - return; - m_nSizeAllocEventId = Application::PostUserEvent(LINK(this, SvxColorOptionsTabPage, PostAdjustHeaderBar)); -} - -IMPL_LINK_NOARG(SvxColorOptionsTabPage, PostAdjustHeaderBar, void*, void) -{ - m_nSizeAllocEventId = nullptr; - - // horizontal positions - int nX1, nX2, nX3, y, width, height; - if (!m_rWidget1.get_extents_relative_to(*m_xTable, nX1, y, width, height)) - return; - if (!m_rWidget2.get_extents_relative_to(*m_xTable, nX2, y, width, height)) - return; - if (!m_xTable->get_extents_relative_to(*m_xTable, nX3, y, width, height)) - return; - - // 6 is the column-spacing of the parent grid of these labels - auto nTextWidth1 = nX1 + m_xColorConfigCT->GetLabelIndent() - 6; - m_xOnFT->set_size_request(nTextWidth1, -1); - auto nTextWidth3 = width - nX2; - m_xColorFT->set_size_request(nTextWidth3, -1); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/options/optcolor.hxx b/cui/source/options/optcolor.hxx deleted file mode 100644 index d2d487bdc2fc..000000000000 --- a/cui/source/options/optcolor.hxx +++ /dev/null @@ -1,75 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -#pragma once - -#include <sfx2/tabdlg.hxx> - -namespace svtools {class EditableColorConfig;class EditableExtendedColorConfig;} -class ColorConfigCtrl_Impl; -class AbstractSvxNameDialog; -struct ImplSVEvent; - -class SvxColorOptionsTabPage : public SfxTabPage -{ - bool bFillItemSetCalled; - bool m_bShowRestartDialog; - - ImplSVEvent* m_nSizeAllocEventId; - - std::unique_ptr<weld::ComboBox> m_xAutoColorLB; - std::unique_ptr<weld::Widget> m_xAutoColorImg; - std::unique_ptr<weld::ComboBox> m_xColorSchemeLB; - std::unique_ptr<weld::Widget> m_xColorSchemeImg; - std::unique_ptr<weld::Button> m_xSaveSchemePB; - std::unique_ptr<weld::Button> m_xDeleteSchemePB; - std::unique_ptr<ColorConfigCtrl_Impl> m_xColorConfigCT; - std::unique_ptr<weld::Widget> m_xTable; - std::unique_ptr<weld::Label> m_xOnFT; - std::unique_ptr<weld::Label> m_xColorFT; - - weld::Widget& m_rWidget1; - weld::Widget& m_rWidget2; - - std::unique_ptr<svtools::EditableColorConfig> pColorConfig; - std::unique_ptr<svtools::EditableExtendedColorConfig> pExtColorConfig; - - DECL_LINK(SchemeChangedHdl_Impl, weld::ComboBox&, void); - DECL_LINK(onAutoColorChanged, weld::ComboBox&, void); - DECL_LINK(SaveDeleteHdl_Impl, weld::Button&, void); - DECL_LINK(CheckNameHdl_Impl, AbstractSvxNameDialog&, bool); - DECL_LINK(AdjustHeaderBar, const Size&, void); - DECL_LINK(PostAdjustHeaderBar, void *, void); - void UpdateColorConfig(); - -public: - SvxColorOptionsTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet); - virtual ~SvxColorOptionsTabPage() override; - - static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet ); - - virtual OUString GetAllStrings() override; - - virtual bool FillItemSet( SfxItemSet* rSet ) override; - virtual void Reset( const SfxItemSet* rSet ) override; - - virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; - virtual void FillUserData() override; -}; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx index 65717c944956..94f87bcc3dcd 100644 --- a/cui/source/options/optgdlg.cxx +++ b/cui/source/options/optgdlg.cxx @@ -225,7 +225,7 @@ OUString OfaMiscTabPage::GetAllStrings() { OUString sAllStrings; OUString labels[] = { u"label1"_ustr, u"label2"_ustr, u"label4"_ustr, u"label5"_ustr, u"yearslabel"_ustr, - u"toyear"_ustr, u"label7"_ustr, u"label8"_ustr, u"label9"_ustr }; + u"toyear"_ustr, u"label8"_ustr, u"label9"_ustr }; for (const auto& label : labels) { @@ -587,10 +587,6 @@ OfaViewTabPage::OfaViewTabPage(weld::Container* pPage, weld::DialogController* p , m_xNotebookbarIconSizeLabel(m_xBuilder->weld_label(u"label8"_ustr)) , m_xNotebookbarIconSizeLB(m_xBuilder->weld_combo_box(u"notebookbariconsize"_ustr)) , m_xNotebookbarIconSizeImg(m_xBuilder->weld_widget(u"locknotebookbariconsize"_ustr)) - , m_xDarkModeFrame(m_xBuilder->weld_widget(u"darkmode"_ustr)) - , m_xAppearanceStyleLabel(m_xBuilder->weld_label(u"label7"_ustr)) - , m_xAppearanceStyleLB(m_xBuilder->weld_combo_box(u"appearance"_ustr)) - , m_xAppearanceStyleImg(m_xBuilder->weld_widget(u"lockappearance"_ustr)) , m_xIconStyleLabel(m_xBuilder->weld_label(u"label6"_ustr)) , m_xIconStyleLB(m_xBuilder->weld_combo_box(u"iconstyle"_ustr)) , m_xIconStyleImg(m_xBuilder->weld_widget(u"lockiconstyle"_ustr)) @@ -619,11 +615,6 @@ OfaViewTabPage::OfaViewTabPage(weld::Container* pPage, weld::DialogController* p , m_xRunGPTests(m_xBuilder->weld_button(u"btn_rungptest"_ustr)) , m_sAutoStr(m_xIconStyleLB->get_text(0)) { - OUString sToolKitName(Application::GetToolkitName()); - const bool bHasDarkMode = sToolKitName.startsWith("gtk") || sToolKitName == "osx" || sToolKitName == "win"; - if (!bHasDarkMode) - m_xDarkModeFrame->hide(); - m_xFontAntiAliasing->connect_toggled( LINK( this, OfaViewTabPage, OnAntialiasingToggled ) ); m_xUseSkia->connect_toggled(LINK(this, OfaViewTabPage, OnUseSkiaToggled)); @@ -762,7 +753,7 @@ std::unique_ptr<SfxTabPage> OfaViewTabPage::Create( weld::Container* pPage, weld OUString OfaViewTabPage::GetAllStrings() { OUString sAllStrings; - OUString labels[] = { u"label16"_ustr, u"label7"_ustr, u"label1"_ustr, u"label6"_ustr, u"label15"_ustr, + OUString labels[] = { u"label16"_ustr, u"label1"_ustr, u"label6"_ustr, u"label15"_ustr, u"label14"_ustr, u"label8"_ustr, u"label9"_ustr, u"label4"_ustr, u"label12"_ustr, u"label2"_ustr, u"skiaenabled"_ustr, u"skiadisabled"_ustr, u"label5"_ustr, u"aafrom"_ustr }; @@ -789,7 +780,6 @@ OUString OfaViewTabPage::GetAllStrings() bool OfaViewTabPage::FillItemSet( SfxItemSet* ) { bool bModified = false; - bool bDarkModeOptModified = false; bool bRepaintWindows(false); std::shared_ptr<comphelper::ConfigurationChanges> xChanges(comphelper::ConfigurationChanges::create()); @@ -885,12 +875,6 @@ bool OfaViewTabPage::FillItemSet( SfxItemSet* ) bModified = true; } - if (m_xAppearanceStyleLB->get_value_changed_from_saved()) - { - bDarkModeOptModified = true; - bModified = true; - } - // #i95644# if disabled, do not use value, see in ::Reset() if (m_xUseHardwareAccell->get_sensitive()) { @@ -922,9 +906,6 @@ bool OfaViewTabPage::FillItemSet( SfxItemSet* ) xChanges->commit(); - if (bDarkModeOptModified) - MiscSettings::SetDarkMode(m_xAppearanceStyleLB->get_active()); - if ( bAppearanceChanged ) { batch->commit(); @@ -1027,13 +1008,6 @@ void OfaViewTabPage::Reset( const SfxItemSet* ) m_xIconStyleImg->set_visible(!bEnable); m_xIconStyleLB->save_value(); - bEnable = !officecfg::Office::Common::Misc::Appearance::isReadOnly(); - m_xAppearanceStyleLB->set_active(officecfg::Office::Common::Misc::Appearance::get()); - m_xAppearanceStyleLabel->set_sensitive(bEnable); - m_xAppearanceStyleLB->set_sensitive(bEnable); - m_xAppearanceStyleImg->set_visible(!bEnable); - m_xAppearanceStyleLB->save_value(); - // Middle Mouse Button bEnable = !officecfg::Office::Common::View::Dialog::MiddleMouseButton::isReadOnly(); sal_Int16 nMiddleMouseButton = officecfg::Office::Common::View::Dialog::MiddleMouseButton::get(); diff --git a/cui/source/options/optgdlg.hxx b/cui/source/options/optgdlg.hxx index 2c62e569ea75..572e273f4c83 100644 --- a/cui/source/options/optgdlg.hxx +++ b/cui/source/options/optgdlg.hxx @@ -104,10 +104,6 @@ private: std::unique_ptr<weld::Label> m_xNotebookbarIconSizeLabel; std::unique_ptr<weld::ComboBox> m_xNotebookbarIconSizeLB; std::unique_ptr<weld::Widget> m_xNotebookbarIconSizeImg; - std::unique_ptr<weld::Widget> m_xDarkModeFrame; - std::unique_ptr<weld::Label> m_xAppearanceStyleLabel; - std::unique_ptr<weld::ComboBox> m_xAppearanceStyleLB; - std::unique_ptr<weld::Widget> m_xAppearanceStyleImg; std::unique_ptr<weld::Label> m_xIconStyleLabel; std::unique_ptr<weld::ComboBox> m_xIconStyleLB; std::unique_ptr<weld::Widget> m_xIconStyleImg; diff --git a/cui/source/options/personalization.cxx b/cui/source/options/personalization.cxx deleted file mode 100644 index 51af4ec8e39c..000000000000 --- a/cui/source/options/personalization.cxx +++ /dev/null @@ -1,199 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#include <config_folders.h> - -#include "personalization.hxx" - -#include <dialmgr.hxx> - -#include <comphelper/processfactory.hxx> -#include <officecfg/Office/Common.hxx> -#include <rtl/bootstrap.hxx> -#include <tools/urlobj.hxx> -#include <tools/stream.hxx> -#include <vcl/event.hxx> -#include <vcl/svapp.hxx> -#include <vcl/settings.hxx> -#include <vcl/graphicfilter.hxx> -#include <vcl/virdev.hxx> -#include <personas.hrc> - -using namespace com::sun::star; -using namespace ::com::sun::star::beans; - -// persona -SvxPersonalizationTabPage::SvxPersonalizationTabPage(weld::Container* pPage, - weld::DialogController* pController, - const SfxItemSet& rSet) - : SfxTabPage(pPage, pController, u"cui/ui/personalization_tab.ui"_ustr, - u"PersonalizationTabPage"_ustr, &rSet) - , m_xNoPersona(m_xBuilder->weld_radio_button(u"no_persona"_ustr)) - , m_xPersonaImg(m_xBuilder->weld_widget(u"lockpersona"_ustr)) - , m_xDefaultPersona(m_xBuilder->weld_radio_button(u"default_persona"_ustr)) - , m_xContentGrid(m_xBuilder->weld_container(u"gridpersonasetting"_ustr)) -{ - for (sal_uInt32 i = 0; i < MAX_DEFAULT_PERSONAS; ++i) - { - OUString sDefaultId("default" + OUString::number(i)); - m_vDefaultPersonaImages[i] = m_xBuilder->weld_toggle_button(sDefaultId); - m_vDefaultPersonaImages[i]->connect_clicked( - LINK(this, SvxPersonalizationTabPage, DefaultPersona)); - } - - LoadDefaultImages(); -} - -SvxPersonalizationTabPage::~SvxPersonalizationTabPage() {} - -std::unique_ptr<SfxTabPage> SvxPersonalizationTabPage::Create(weld::Container* pPage, - weld::DialogController* pController, - const SfxItemSet* rSet) -{ - return std::make_unique<SvxPersonalizationTabPage>(pPage, pController, *rSet); -} - -OUString SvxPersonalizationTabPage::GetAllStrings() -{ - OUString sAllStrings; - OUString radioButton[] = { u"no_persona"_ustr, u"default_persona"_ustr }; - - for (const auto& radio : radioButton) - { - if (const auto pString = m_xBuilder->weld_radio_button(radio)) - sAllStrings += pString->get_label() + " "; - } - - if (const auto pString = m_xBuilder->weld_label(u"personas_label"_ustr)) - sAllStrings += pString->get_label() + " "; - - return sAllStrings.replaceAll("_", ""); -} - -bool SvxPersonalizationTabPage::FillItemSet(SfxItemSet*) -{ - // persona - OUString aPersona(u"default"_ustr); - if (m_xNoPersona->get_active()) - aPersona = "no"; - - bool bModified = false; - if (aPersona != officecfg::Office::Common::Misc::Persona::get() - || m_aPersonaSettings != officecfg::Office::Common::Misc::PersonaSettings::get()) - { - bModified = true; - } - - // write - std::shared_ptr<comphelper::ConfigurationChanges> batch( - comphelper::ConfigurationChanges::create()); - if (aPersona == "no") - m_aPersonaSettings.clear(); - officecfg::Office::Common::Misc::Persona::set(aPersona, batch); - officecfg::Office::Common::Misc::PersonaSettings::set(m_aPersonaSettings, batch); - batch->commit(); - - if (bModified) - { - // broadcast the change - DataChangedEvent aDataChanged(DataChangedEventType::SETTINGS, nullptr, - AllSettingsFlags::STYLE); - Application::NotifyAllWindows(aDataChanged); - } - - return bModified; -} - -void SvxPersonalizationTabPage::Reset(const SfxItemSet*) -{ - // persona - OUString aPersona = officecfg::Office::Common::Misc::Persona::get(); - m_aPersonaSettings = officecfg::Office::Common::Misc::PersonaSettings::get(); - - if (aPersona == "no") - m_xNoPersona->set_active(true); - else - m_xDefaultPersona->set_active(true); - - if (officecfg::Office::Common::Misc::Persona::isReadOnly()) - { - m_xNoPersona->set_sensitive(false); - m_xDefaultPersona->set_sensitive(false); - m_xPersonaImg->set_visible(true); - } - - if (officecfg::Office::Common::Misc::PersonaSettings::isReadOnly()) - m_xContentGrid->set_sensitive(false); -} - -void SvxPersonalizationTabPage::LoadDefaultImages() -{ - // Load the pre saved personas - - OUString gallery = u"$BRAND_BASE_DIR/" LIBO_SHARE_FOLDER "/gallery/personas/"_ustr; - rtl::Bootstrap::expandMacros(gallery); - OUString aPersonasList = gallery + "personas_list.txt"; - SvFileStream aStream(aPersonasList, StreamMode::READ); - GraphicFilter aFilter; - Graphic aGraphic; - sal_Int32 nIndex = 0; - bool foundOne = false; - - OStringBuffer aLine; - int nLineNumberFilePersona = 0; - while (aStream.IsOpen() && !aStream.eof() && nIndex < MAX_DEFAULT_PERSONAS) - { - OUString aPersonaSetting, aPreviewFile, aName; - sal_Int32 nParseIndex = 0; - - aStream.ReadLine(aLine); - aPersonaSetting = OStringToOUString(aLine, RTL_TEXTENCODING_UTF8); - aName = CuiResId(RID_PERSONAS_COLOR[nLineNumberFilePersona].first); - aPreviewFile = aPersonaSetting.getToken(2, ';', nParseIndex); - - if (aPreviewFile.isEmpty()) - break; - - m_vDefaultPersonaSettings.push_back(aPersonaSetting); - - INetURLObject aURLObj(rtl::Concat2View(gallery + aPreviewFile)); - aFilter.ImportGraphic(aGraphic, aURLObj); - - Size aSize(aGraphic.GetSizePixel()); - aSize.setWidth(aSize.Width() / 4); - aSize.setHeight(aSize.Height() / 1.5); - ScopedVclPtr<VirtualDevice> xVirDev - = m_vDefaultPersonaImages[nIndex]->create_virtual_device(); - xVirDev->SetOutputSizePixel(aSize); - aGraphic.Draw(*xVirDev, Point(0, 0)); - m_vDefaultPersonaImages[nIndex]->set_image(xVirDev.get()); - xVirDev.disposeAndClear(); - - m_vDefaultPersonaImages[nIndex]->set_tooltip_text(aName); - m_vDefaultPersonaImages[nIndex++]->show(); - foundOne = true; - ++nLineNumberFilePersona; - } - - m_xDefaultPersona->set_sensitive(foundOne); -} - -IMPL_LINK(SvxPersonalizationTabPage, DefaultPersona, weld::Button&, rButton, void) -{ - m_xDefaultPersona->set_active(true); - for (sal_Int32 nIndex = 0; nIndex < MAX_DEFAULT_PERSONAS; ++nIndex) - { - if (&rButton == m_vDefaultPersonaImages[nIndex].get()) - m_aPersonaSettings = m_vDefaultPersonaSettings[nIndex]; - else - m_vDefaultPersonaImages[nIndex]->set_active(false); - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/options/personalization.hxx b/cui/source/options/personalization.hxx deleted file mode 100644 index 786b22c7d7b3..000000000000 --- a/cui/source/options/personalization.hxx +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#pragma once - -#include <sfx2/tabdlg.hxx> -#include <vector> - -#define MAX_DEFAULT_PERSONAS 6 // Maximum number of default personas - -class SvxPersonalizationTabPage : public SfxTabPage -{ -private: - std::unique_ptr<weld::RadioButton> m_xNoPersona; ///< Just the default look, without any bitmap - std::unique_ptr<weld::Widget> m_xPersonaImg; - std::unique_ptr<weld::RadioButton> m_xDefaultPersona; ///< Use the built-in bitmap - std::unique_ptr<weld::Container> m_xContentGrid; - std::unique_ptr<weld::ToggleButton> m_vDefaultPersonaImages - [MAX_DEFAULT_PERSONAS]; ///< Buttons to show the default persona images - OUString m_aPersonaSettings; ///< Header and footer images + color to be set in the settings. - - std::vector<OUString> m_vDefaultPersonaSettings; - -public: - SvxPersonalizationTabPage(weld::Container* pPage, weld::DialogController* pController, - const SfxItemSet& rSet); - virtual ~SvxPersonalizationTabPage() override; - - static std::unique_ptr<SfxTabPage> - Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rSet); - - virtual OUString GetAllStrings() override; - - /// Apply the settings ([OK] button). - virtual bool FillItemSet(SfxItemSet* rSet) override; - - /// Reset to default settings ([Revert] button). - virtual void Reset(const SfxItemSet* rSet) override; - - /* - * Loads the default personas from the shared personas directory - * which resides in the shared gallery. - * There needs to be a separate subdirectory for each default persona, - * which includes the preview, header, and footer images. - * And there needs to be a personas_list.txt file in the personas directory - * which keeps the index/info of the default personas, one persona per line. - * A line should look like this: - * persona_slug;Persona Name;subdir/preview.jpg;subdir/header.jpg;subdir/footer.jpg;#textcolor - * (It is recommended to keep the subdir name the same as the slug) - * Example line: - * abstract;Abstract;abstract/preview.jpg;abstract/Header2.jpg;abstract/Footer2.jpg;#ffffff - */ - void LoadDefaultImages(); - -private: - /// Handle the default Persona selection - DECL_LINK(DefaultPersona, weld::Button&, void); -}; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx index 32dd79d90a5c..7ef78edb7f9e 100644 --- a/cui/source/options/treeopt.cxx +++ b/cui/source/options/treeopt.cxx @@ -45,7 +45,6 @@ #include "optaccessibility.hxx" #include <optasian.hxx> #include "optchart.hxx" -#include "optcolor.hxx" #include "optctl.hxx" #include "optfltr.hxx" #include "optgdlg.hxx" @@ -60,7 +59,6 @@ #include <optpath.hxx> #include "optsave.hxx" #include "optupdt.hxx" -#include "personalization.hxx" #include <treeopt.hxx> #include "optbasic.hxx" #include "optlanguagetool.hxx" @@ -261,10 +259,6 @@ static std::unique_ptr<SfxTabPage> CreateGeneralTabPage(sal_uInt16 nId, weld::Co case RID_SVXPAGE_INET_PROXY: fnCreate = &SvxProxyTabPage::Create; break; case RID_SVXPAGE_INET_SECURITY: fnCreate = &SvxSecurityTabPage::Create; break; case RID_SVXPAGE_INET_MAIL: fnCreate = &SvxEMailTabPage::Create; break; -#if HAVE_FEATURE_DESKTOP - case RID_SVXPAGE_PERSONALIZATION: fnCreate = &SvxPersonalizationTabPage::Create; break; -#endif - case RID_SVXPAGE_COLORCONFIG: fnCreate = &SvxColorOptionsTabPage::Create; break; case RID_OFAPAGE_HTMLOPT: fnCreate = &OfaHtmlTabPage::Create; break; case SID_OPTFILTER_MSOFFICE: fnCreate = &OfaMSFilterTabPage::Create; break; case RID_OFAPAGE_MSFILTEROPT2: fnCreate = &OfaMSFilterTabPage2::Create; break; @@ -311,8 +305,6 @@ constexpr OptionsMapping_Impl OptionsMap_Impl[] { u"ProductName"_ustr, u"Paths"_ustr, RID_SFXPAGE_PATH }, { u"ProductName"_ustr, u"Fonts"_ustr, RID_SVX_FONT_SUBSTITUTION }, { u"ProductName"_ustr, u"Security"_ustr, RID_SVXPAGE_INET_SECURITY }, - { u"ProductName"_ustr, u"Personalization"_ustr, RID_SVXPAGE_PERSONALIZATION }, - { u"ProductName"_ustr, u"Appearance"_ustr, RID_SVXPAGE_COLORCONFIG }, { u"ProductName"_ustr, u"Accessibility"_ustr, RID_SVXPAGE_ACCESSIBILITYCONFIG }, { u"ProductName"_ustr, u"Java"_ustr, RID_SVXPAGE_OPTIONS_JAVA }, { u"ProductName"_ustr, u"BasicIDEOptions"_ustr, RID_SVXPAGE_BASICIDE_OPTIONS }, diff --git a/cui/source/options/treeopthelper.cxx b/cui/source/options/treeopthelper.cxx index b644a96da14c..294364cafe37 100644 --- a/cui/source/options/treeopthelper.cxx +++ b/cui/source/options/treeopthelper.cxx @@ -53,8 +53,6 @@ static PageIdToFileNameMap_Impl FileMap_Impl[] = { { RID_SVXPAGE_INET_SECURITY, u""_ustr }, // Security - { RID_SVXPAGE_PERSONALIZATION, u""_ustr }, // Personalization - { RID_SVXPAGE_COLORCONFIG, u""_ustr }, // ApplicationColors { RID_SVXPAGE_ACCESSIBILITYCONFIG, u""_ustr }, // Accessibility { RID_SVXPAGE_OPTIONS_JAVA, u""_ustr }, // Java { RID_SVXPAGE_BASICIDE_OPTIONS, u""_ustr }, // BasicIDEOptions diff --git a/cui/uiconfig/ui/colorconfigwin.ui b/cui/uiconfig/ui/colorconfigwin.ui deleted file mode 100644 index 8196a72668e2..000000000000 --- a/cui/uiconfig/ui/colorconfigwin.ui +++ /dev/null @@ -1,2563 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.40.0 --> -<interface domain="cui"> - <requires lib="gtk+" version="3.20"/> - <object class="GtkBox" id="ColorConfigWindow"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="margin-start">6</property> - <property name="margin-end">6</property> - <property name="margin-top">6</property> - <property name="hexpand">True</property> - <property name="orientation">vertical</property> - <property name="spacing">12</property> - <child> - <object class="GtkFrame" id="frmGeneral"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="label-xalign">0</property> - <property name="shadow-type">none</property> - <child> - <!-- n-columns=2 n-rows=10 --> - <object class="GtkGrid" id="gdGeneral"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="margin-start">6</property> - <property name="margin-end">12</property> - <property name="row-spacing">3</property> - <property name="column-spacing">6</property> - <child> - <object class="GtkLabel" id="doccolor"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="label" translatable="yes" context="colorconfigwin|doccolor">Document background</property> - <property name="use-underline">True</property> - <property name="mnemonic-widget">doccolor_lb</property> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">0</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="doccolor_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="hexpand">True</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="docboundaries"> - <property name="label" translatable="yes" context="colorconfigwin|docboundaries">Text boundaries</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="halign">start</property> - <property name="valign">center</property> - <accessibility> - <relation type="label-for" target="docboundaries_lb"/> - </accessibility> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">1</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="docboundaries_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - <accessibility> - <relation type="labelled-by" target="docboundaries"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="docboundaries_lb-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="colorconfigwin|docboundaries_lb">Text boundaries color</property> - </object> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">1</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="appback"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="label" translatable="yes" context="colorconfigwin|appback">Application background</property> - <property name="use-underline">True</property> - <property name="mnemonic-widget">appback_lb</property> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">2</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="appback_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">2</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="tblboundaries"> - <property name="label" translatable="yes" context="colorconfigwin|tblboundaries">Table boundaries</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="halign">start</property> - <property name="valign">center</property> - <accessibility> - <relation type="label-for" target="tblboundaries_lb"/> - </accessibility> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">3</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="tblboundaries_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - <accessibility> - <relation type="labelled-by" target="tblboundaries"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="tblboundaries_lb-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="colorconfigwin|tblboundaries_lb">Table boundaries color</property> - </object> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">3</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="font"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="label" translatable="yes" context="colorconfigwin|font">Font color</property> - <property name="use-underline">True</property> - <property name="mnemonic-widget">font_lb</property> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">4</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="font_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">4</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="unvisitedlinks"> - <property name="label" translatable="yes" context="colorconfigwin|unvisitedlinks">Unvisited links</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="draw-indicator">True</property> - <accessibility> - <relation type="label-for" target="unvisitedlinks_lb"/> - </accessibility> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">5</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="unvisitedlinks_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - <accessibility> - <relation type="labelled-by" target="unvisitedlinks"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="unvisitedlinks_lb-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="colorconfigwin|unvisitedlinks_lb">Unvisited links color</property> - </object> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">5</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="visitedlinks"> - <property name="label" translatable="yes" context="colorconfigwin|visitedlinks">Visited links</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="draw-indicator">True</property> - <accessibility> - <relation type="label-for" target="visitedlinks_lb"/> - </accessibility> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">6</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="visitedlinks_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - <accessibility> - <relation type="labelled-by" target="visitedlinks"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="visitedlinks_lb-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="colorconfigwin|visitedlinks_lb">Visited links color</property> - </object> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">6</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="autospellcheck"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="label" translatable="yes" context="colorconfigwin|autospellcheck">Spelling mistakes</property> - <property name="use-underline">True</property> - <property name="mnemonic-widget">autospellcheck_lb</property> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">7</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="autospellcheck_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">7</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="smarttags"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="label" translatable="yes" context="colorconfigwin|smarttags">Smart Tags</property> - <property name="use-underline">True</property> - <property name="mnemonic-widget">smarttags_lb</property> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">8</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="smarttags_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">8</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="shadows"> - <property name="label" translatable="yes" context="colorconfigwin|shadows">Shadows</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="draw-indicator">True</property> - <accessibility> - <relation type="label-for" target="shadows_lb"/> - </accessibility> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">9</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="shadows_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - <accessibility> - <relation type="labelled-by" target="shadows"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="shadows_lb-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="colorconfigwin|shadows_lb">Shadows color</property> - </object> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">9</property> - </packing> - </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="general"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="label" translatable="yes" context="colorconfigwin|general">General</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="frmWriter"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="label-xalign">0</property> - <property name="shadow-type">none</property> - <child> - <!-- n-columns=2 n-rows=10 --> - <object class="GtkGrid"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="margin-start">6</property> - <property name="margin-end">12</property> - <property name="row-spacing">3</property> - <property name="column-spacing">6</property> - <child> - <object class="GtkLabel" id="writergrid"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="label" translatable="yes" context="colorconfigwin|writergrid">Grid</property> - <property name="use-underline">True</property> - <property name="mnemonic-widget">writergrid_lb</property> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">0</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="writergrid_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="hexpand">True</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">0</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="field"> - <property name="label" translatable="yes" context="colorconfigwin|field">Field shadings</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="draw-indicator">True</property> - <accessibility> - <relation type="label-for" target="field_lb"/> - </accessibility> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">1</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="field_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - <accessibility> - <relation type="labelled-by" target="field"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="field_lb-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="colorconfigwin|field_lb">Field shadings color</property> - </object> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">1</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="index"> - <property name="label" translatable="yes" context="colorconfigwin|index">Index and table shadings</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="draw-indicator">True</property> - <accessibility> - <relation type="label-for" target="index_lb"/> - </accessibility> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">2</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="index_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - <accessibility> - <relation type="labelled-by" target="index"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="index_lb-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="colorconfigwin|index_lb">Index and table shadings color</property> - </object> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">2</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="script"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="halign">start</property> - <property name="valign">center</property> - <property name="label" translatable="yes" context="colorconfigwin|script">Script Indicator</property> - <property name="use-underline">True</property> - <property name="mnemonic-widget">script_lb</property> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">4</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="script_lb"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">False</property> - <property name="halign">end</property> - <property name="xalign">0</property> - <property name="draw-indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="left-attach">1</property> - <property name="top-attach">4</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="section"> - <property name="label" translatable="yes" context="colorconfigwin|section">Section boundaries</property> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="halign">start</property> - <property name="valign">center</property> - <accessibility> - <relation type="label-for" target="section_lb"/> - </accessibility> - </object> - <packing> - <property name="left-attach">0</property> - <property name="top-attach">5</property> - </packing> -e ... etc. - the rest is truncated