diff options
author | Shivam Kumar Singh <shivamhere247@gmail.com> | 2020-07-18 11:51:33 +0530 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2020-07-22 21:01:28 +0200 |
commit | 19f44fe53863ef8c9087aa965b786544f71ffdc8 (patch) | |
tree | d6a2ab749c9cf8899eb4ae4fafaa50ab090d4707 /svx | |
parent | 3d9f47e9b07ff7133814165a104369bf69634f3f (diff) |
tdf#134564 tdf#134578 Improve hierarchy viewing in Inspector
Significance of this patch -
* Added TreeView Lines in the ui file for Inspector
for better hierarchy viewing
* Properties and there respective values are divided
into separate columns.
* Grey out disabled properties
* bold PS, CS and DF
Change-Id: I825a75dd2c5bc54715fe59f3c639024a5e3ab5cb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98990
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/sidebar/inspector/InspectorTextPanel.cxx | 74 | ||||
-rw-r--r-- | svx/uiconfig/ui/inspectortextpanel.ui | 28 |
2 files changed, 98 insertions, 4 deletions
diff --git a/svx/source/sidebar/inspector/InspectorTextPanel.cxx b/svx/source/sidebar/inspector/InspectorTextPanel.cxx index 6ab6b1043de3..ddbee7f51624 100644 --- a/svx/source/sidebar/inspector/InspectorTextPanel.cxx +++ b/svx/source/sidebar/inspector/InspectorTextPanel.cxx @@ -19,6 +19,9 @@ #include <svx/sidebar/InspectorTextPanel.hxx> +#include <svl/languageoptions.hxx> +#include <com/sun/star/awt/FontSlant.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/lang/IllegalArgumentException.hpp> using namespace css; @@ -45,6 +48,56 @@ InspectorTextPanel::InspectorTextPanel(vcl::Window* pParent, , mpListBoxStyles(m_xBuilder->weld_tree_view("listbox_fonts")) { mpListBoxStyles->set_size_request(-1, mpListBoxStyles->get_height_rows(25)); + float fWidth = mpListBoxStyles->get_approximate_digit_width(); + std::vector<int> aWidths; + aWidths.push_back(fWidth * 34); + aWidths.push_back(fWidth * 15); + mpListBoxStyles->set_column_fixed_widths(aWidths); +} + +static bool GetPropertyValues(const OUString& rPropName, const uno::Any& rAny, OUString& rString) +{ + // Hide Asian and Complex properties + if (SvtLanguageOptions().IsCJKFontEnabled() && rPropName.indexOf("Asian") != -1) + return false; + if (SvtLanguageOptions().IsCTLFontEnabled() && rPropName.indexOf("Complex") != -1) + return false; + + if (bool bValue; rAny >>= bValue) + { + rString = OUString::boolean(bValue); + } + else if (OUString aValue; (rAny >>= aValue) && !(aValue.isEmpty())) + { + rString = aValue; + } + else if (awt::FontSlant eValue; rAny >>= eValue) + { + rString = (eValue == awt::FontSlant_ITALIC) ? OUStringLiteral("italic") + : OUStringLiteral("normal"); + } + else if (long nValueLong; rAny >>= nValueLong) + { + if (rPropName.indexOf("Color") != -1) + rString = "0x" + OUString::number(nValueLong, 16); + else + rString = OUString::number(nValueLong); + } + else if (double fValue; rAny >>= fValue) + { + if (rPropName.indexOf("Weight") != -1) + rString = (fValue > 100) ? OUStringLiteral("bold") : OUStringLiteral("normal"); + else + rString = OUString::number((round(fValue * 100)) / 100.00); + } + else if (short nValueShort; rAny >>= nValueShort) + { + rString = OUString::number(nValueShort); + } + else + return false; + + return true; } static void FillBox_Impl(weld::TreeView& rListBoxStyles, const TreeNode& rCurrent, @@ -52,10 +105,25 @@ static void FillBox_Impl(weld::TreeView& rListBoxStyles, const TreeNode& rCurren { std::unique_ptr<weld::TreeIter> pResult = rListBoxStyles.make_iterator(); const OUString& rName = rCurrent.sNodeName; - rListBoxStyles.insert(pParent, -1, &rName, nullptr, nullptr, nullptr, false, pResult.get()); + OUString sPairValue; - for (const TreeNode& rChildNode : rCurrent.children) - FillBox_Impl(rListBoxStyles, rChildNode, pResult.get()); + if (rCurrent.NodeType != TreeNode::SimpleProperty + || GetPropertyValues(rName, rCurrent.aValue, sPairValue)) + { + rListBoxStyles.insert(pParent, -1, &rName, nullptr, nullptr, nullptr, false, pResult.get()); + rListBoxStyles.set_sensitive(*pResult, !rCurrent.isGrey, 0); + rListBoxStyles.set_text_emphasis(*pResult, rCurrent.NodeType == TreeNode::Category, 0); + + if (rCurrent.NodeType == TreeNode::SimpleProperty) + { + rListBoxStyles.set_text(*pResult, sPairValue, 1); + rListBoxStyles.set_sensitive(*pResult, !rCurrent.isGrey, 1); + rListBoxStyles.set_text_emphasis(*pResult, false, 1); + } + + for (const TreeNode& rChildNode : rCurrent.children) + FillBox_Impl(rListBoxStyles, rChildNode, pResult.get()); + } } void InspectorTextPanel::updateEntries(const std::vector<TreeNode>& rStore) diff --git a/svx/uiconfig/ui/inspectortextpanel.ui b/svx/uiconfig/ui/inspectortextpanel.ui index af7c5cbe2ed5..71199a8e449d 100644 --- a/svx/uiconfig/ui/inspectortextpanel.ui +++ b/svx/uiconfig/ui/inspectortextpanel.ui @@ -4,10 +4,20 @@ <requires lib="gtk+" version="3.18"/> <object class="GtkTreeStore" id="liststore"> <columns> - <!-- column-name text --> + <!-- column-name text1 --> + <column type="gchararray"/> + <!-- column-name text2 --> <column type="gchararray"/> <!-- column-name id --> <column type="gchararray"/> + <!-- column-name weight1 --> + <column type="gint"/> + <!-- column-name weight2 --> + <column type="gint"/> + <!-- column-name sensitive1 --> + <column type="gboolean"/> + <!-- column-name sensitive2 --> + <column type="gboolean"/> </columns> </object> <object class="GtkGrid" id="InspectorTextPanel"> @@ -40,12 +50,14 @@ <object class="GtkTreeView" id="listbox_fonts"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="receives_default">True</property> <property name="hexpand">True</property> <property name="vexpand">True</property> <property name="model">liststore</property> <property name="headers_visible">False</property> <property name="headers_clickable">False</property> <property name="search_column">0</property> + <property name="enable_tree_lines">True</property> <child internal-child="selection"> <object class="GtkTreeSelection"/> </child> @@ -54,7 +66,21 @@ <child> <object class="GtkCellRendererText" id="cellrenderertext1"/> <attributes> + <attribute name="sensitive">5</attribute> <attribute name="text">0</attribute> + <attribute name="weight">3</attribute> + </attributes> + </child> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="treeviewcolumn2"> + <child> + <object class="GtkCellRendererText" id="cellrenderertext2"/> + <attributes> + <attribute name="sensitive">6</attribute> + <attribute name="text">1</attribute> + <attribute name="weight">4</attribute> </attributes> </child> </object> |