diff options
author | Shivam Kumar Singh <shivamhere247@gmail.com> | 2020-05-09 19:41:25 +0530 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2020-05-18 11:01:41 +0200 |
commit | 9d6e64ba575c12ce4ab381332f8971e55ffe9972 (patch) | |
tree | 66be12a7c7ae9586cb88ffd10427113f84dacb82 | |
parent | 52442a4c0192cbedafe7b77459dd2c3d1cf3614b (diff) |
Added a new tab "Styles Inspector" at the side bar
Patch significance :-
1) Added a new tab "Styles Inspector" at the side bar
2) Added the "Character Styles" properties in the inspector
Change-Id: I717f0a555d9c90f833c61b641c8eba53f93d4655
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93909
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r-- | officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu | 49 | ||||
-rw-r--r-- | svx/Library_svx.mk | 1 | ||||
-rw-r--r-- | svx/UIConfig_svx.mk | 1 | ||||
-rw-r--r-- | svx/source/sidebar/PanelFactory.cxx | 5 | ||||
-rw-r--r-- | svx/source/sidebar/inspector/InspectorTextPanel.cxx | 77 | ||||
-rw-r--r-- | svx/source/sidebar/inspector/InspectorTextPanel.hxx | 55 | ||||
-rw-r--r-- | svx/uiconfig/ui/inspectortextpanel.ui | 156 |
7 files changed, 344 insertions, 0 deletions
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu index af6acf5218a9..fae993013b49 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu @@ -41,6 +41,29 @@ </prop> </node> + <node oor:name="InspectorDeck" oor:op="replace"> + <prop oor:name="Title" oor:type="xs:string"> + <value xml:lang="en-US">Styles Inspector</value> + </prop> + <prop oor:name="Id" oor:type="xs:string"> + <value>InspectorDeck</value> + </prop> + <prop oor:name="IconURL" oor:type="xs:string"> + <value>private:graphicrepository/cmd/lc_editglossary.png</value> + </prop> + <prop oor:name="ContextList"> + <value oor:separator=";"> + WriterVariants, any, visible ; + </value> + </prop> + <prop oor:name="OrderIndex" oor:type="xs:int"> + <value>450</value> + </prop> + <prop oor:name="IsExperimental" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> + <node oor:name="WriterPageDeck" oor:op="replace"> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="en-US">Page</value> @@ -372,6 +395,32 @@ </prop> </node> + <node oor:name="InspectorTextPanel" oor:op="replace"> + <prop oor:name="Title" oor:type="xs:string"> + <value xml:lang="en-US">Character Styles</value> + </prop> + <prop oor:name="Id" oor:type="xs:string"> + <value>InspectorTextPanel</value> + </prop> + <prop oor:name="DeckId" oor:type="xs:string"> + <value>InspectorDeck</value> + </prop> + <prop oor:name="ContextList"> + <value oor:separator=";"> + WriterVariants, any, visible ; + </value> + </prop> + <prop oor:name="ImplementationURL" oor:type="xs:string"> + <value>private:resource/toolpanel/SvxPanelFactory/InspectorTextPanel</value> + </prop> + <prop oor:name="OrderIndex" oor:type="xs:int"> + <value>120</value> + </prop> + <prop oor:name="IsExperimental" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> + <node oor:name="MediaPlaybackPanel" oor:op="replace"> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="en-US">Media Playback</value> diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk index 8f8dd0c7020f..a378df63702d 100644 --- a/svx/Library_svx.mk +++ b/svx/Library_svx.mk @@ -177,6 +177,7 @@ $(eval $(call gb_Library_add_exception_objects,svx,\ svx/source/mnuctrls/smarttagmenu \ svx/source/sidebar/ContextChangeEventMultiplexer \ svx/source/sidebar/EmptyPanel \ + svx/source/sidebar/inspector/InspectorTextPanel \ svx/source/sidebar/nbdtmg \ svx/source/sidebar/nbdtmgfact \ svx/source/sidebar/PanelFactory \ diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk index 1a6a87cca4de..fdc7d1b3bc52 100644 --- a/svx/UIConfig_svx.mk +++ b/svx/UIConfig_svx.mk @@ -80,6 +80,7 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\ svx/uiconfig/ui/headfootformatpage \ svx/uiconfig/ui/imapdialog \ svx/uiconfig/ui/imapmenu \ + svx/uiconfig/ui/inspectortextpanel \ svx/uiconfig/ui/interimdockparent \ svx/uiconfig/ui/interimparent \ svx/uiconfig/ui/labelbox \ diff --git a/svx/source/sidebar/PanelFactory.cxx b/svx/source/sidebar/PanelFactory.cxx index e37648b38c25..6b8ed657351e 100644 --- a/svx/source/sidebar/PanelFactory.cxx +++ b/svx/source/sidebar/PanelFactory.cxx @@ -20,6 +20,7 @@ #include <config_features.h> #include "text/TextPropertyPanel.hxx" +#include "inspector/InspectorTextPanel.hxx" #include "styles/StylesPropertyPanel.hxx" #include "paragraph/ParaPropertyPanel.hxx" #include "lists/ListsPropertyPanel.hxx" @@ -124,6 +125,10 @@ Reference<ui::XUIElement> SAL_CALL PanelFactory::createUIElement ( { pControl = TextPropertyPanel::Create(pParentWindow, xFrame); } + else if (rsResourceURL.endsWith("/InspectorTextPanel")) + { + pControl = InspectorTextPanel::Create(pParentWindow, xFrame); + } else if (rsResourceURL.endsWith("/StylesPropertyPanel")) { pControl = StylesPropertyPanel::Create(pParentWindow, xFrame); diff --git a/svx/source/sidebar/inspector/InspectorTextPanel.cxx b/svx/source/sidebar/inspector/InspectorTextPanel.cxx new file mode 100644 index 000000000000..0c719dfccb2f --- /dev/null +++ b/svx/source/sidebar/inspector/InspectorTextPanel.cxx @@ -0,0 +1,77 @@ +/* -*- 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 "InspectorTextPanel.hxx" + +#include <com/sun/star/lang/IllegalArgumentException.hpp> +#include <comphelper/lok.hxx> +#include <sfx2/lokhelper.hxx> + +using namespace css; + +namespace svx::sidebar +{ +VclPtr<vcl::Window> +InspectorTextPanel::Create(vcl::Window* pParent, + const css::uno::Reference<css::frame::XFrame>& rxFrame) +{ + if (pParent == nullptr) + throw lang::IllegalArgumentException("no parent Window given to InspectorTextPanel::Create", + nullptr, 0); + if (!rxFrame.is()) + throw lang::IllegalArgumentException("no XFrame given to InspectorTextPanel::Create", + nullptr, 1); + + return VclPtr<InspectorTextPanel>::Create(pParent, rxFrame); +} + +InspectorTextPanel::InspectorTextPanel(vcl::Window* pParent, + const css::uno::Reference<css::frame::XFrame>& rxFrame) + : PanelLayout(pParent, "InspectorTextPanel", "svx/ui/inspectortextpanel.ui", rxFrame) + , mxFont(m_xBuilder->weld_toolbar("font")) + , mxFontDispatch(new ToolbarUnoDispatcher(*mxFont, *m_xBuilder, rxFrame)) + , mxFontHeight(m_xBuilder->weld_toolbar("fontheight")) + , mxFontHeightDispatch(new ToolbarUnoDispatcher(*mxFontHeight, *m_xBuilder, rxFrame)) +{ +} + +InspectorTextPanel::~InspectorTextPanel() { disposeOnce(); } + +void InspectorTextPanel::dispose() +{ + mxFontHeightDispatch.reset(); + mxFontDispatch.reset(); + + mxFontHeight.reset(); + mxFont.reset(); + + PanelLayout::dispose(); +} + +void InspectorTextPanel::HandleContextChange(const vcl::EnumContext& rContext) +{ + if (maContext == rContext) + return; + + maContext = rContext; +} + +} // end of namespace svx::sidebar + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/source/sidebar/inspector/InspectorTextPanel.hxx b/svx/source/sidebar/inspector/InspectorTextPanel.hxx new file mode 100644 index 000000000000..ed8b24a52d48 --- /dev/null +++ b/svx/source/sidebar/inspector/InspectorTextPanel.hxx @@ -0,0 +1,55 @@ +/* -*- 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/sidebar/IContextChangeReceiver.hxx> +#include <sfx2/weldutils.hxx> +#include <vcl/EnumContext.hxx> +#include <sfx2/sidebar/PanelLayout.hxx> + +namespace svx +{ +namespace sidebar +{ +class InspectorTextPanel : public PanelLayout, public ::sfx2::sidebar::IContextChangeReceiver +{ +public: + virtual ~InspectorTextPanel() override; + virtual void dispose() override; + + static VclPtr<vcl::Window> Create(vcl::Window* pParent, + const css::uno::Reference<css::frame::XFrame>& rxFrame); + + virtual void HandleContextChange(const vcl::EnumContext& rContext) override; + + InspectorTextPanel(vcl::Window* pParent, + const css::uno::Reference<css::frame::XFrame>& rxFrame); + +private: + std::unique_ptr<weld::Toolbar> mxFont; + std::unique_ptr<ToolbarUnoDispatcher> mxFontDispatch; + std::unique_ptr<weld::Toolbar> mxFontHeight; + std::unique_ptr<ToolbarUnoDispatcher> mxFontHeightDispatch; + + vcl::EnumContext maContext; +}; +} +} // end of namespace svx::sidebar + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/uiconfig/ui/inspectortextpanel.ui b/svx/uiconfig/ui/inspectortextpanel.ui new file mode 100644 index 000000000000..f3966cc687fd --- /dev/null +++ b/svx/uiconfig/ui/inspectortextpanel.ui @@ -0,0 +1,156 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.22.0 --> +<interface domain="svx"> + <requires lib="gtk+" version="3.18"/> + <object class="GtkGrid" id="InspectorTextPanel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <child> + <object class="GtkBox" id="box1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="border_width">6</property> + <property name="orientation">vertical</property> + <property name="spacing">3</property> + <child> + <object class="GtkBox" id="box3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="fontnamelabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xpad">10</property> + <property name="label" translatable="yes" context="inspectortextpanel|fontnamelabel">Font Name</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">font</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkToolbar" id="font"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="toolbar_style">icons</property> + <property name="show_arrow">False</property> + <property name="icon_size">2</property> + <child> + <object class="GtkToolItem" id=".uno:CharFontName"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <child> + <object class="GtkComboBoxText" id="fontnamecombobox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="has_entry">True</property> + <property name="popup_fixed_width">False</property> + <child internal-child="entry"> + <object class="GtkEntry"> + <property name="can_focus">True</property> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="homogeneous">False</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="fontsizelabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xpad">15</property> + <property name="label" translatable="yes" context="inspectortextpanel|fontsizelabel">Font Size</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">fontheight</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkToolbar" id="fontheight"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="toolbar_style">icons</property> + <property name="show_arrow">False</property> + <property name="icon_size">2</property> + <child> + <object class="GtkToolItem" id=".uno:FontHeight"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkComboBoxText" id="fontsizecombobox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="has_entry">True</property> + <child internal-child="entry"> + <object class="GtkEntry"> + <property name="can_focus">True</property> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="homogeneous">False</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> + </child> + </object> +</interface> |