diff options
author | Caolán McNamara <caolanm@redhat.com> | 2013-07-03 11:39:16 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-07-03 12:46:31 +0100 |
commit | 30db63e8a3f8806a1b00e14cd70bc75f3e66211e (patch) | |
tree | 293736b67eed0717c0204c87b4e88814ec87fc44 | |
parent | f19cc396580726f9fa1c75a2b6346e2a4827acc2 (diff) |
arrange a way to describe non-dropdown MetricBoxes
i.e. use a VclComboBoxNumeric which now has an
adjustment option and a dropdown option (defaulting to true).
Rework existing glade widget placeholders to be children of that widget
placeholder.
Centralize the dropdown bit tweaking logic.
Change-Id: Ib6dc4d19b367986e9d6a2fc2bead51e198892893
-rw-r--r-- | extras/source/glade/libreoffice-catalog.xml.in | 89 | ||||
-rw-r--r-- | include/vcl/builder.hxx | 2 | ||||
-rw-r--r-- | svtools/source/control/ctrlbox.cxx | 25 | ||||
-rw-r--r-- | vcl/source/window/builder.cxx | 62 |
4 files changed, 129 insertions, 49 deletions
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in index f717ee06a96e..ad045c5f0714 100644 --- a/extras/source/glade/libreoffice-catalog.xml.in +++ b/extras/source/glade/libreoffice-catalog.xml.in @@ -30,30 +30,92 @@ <glade-widget-class title="Hyphen Edit" name="cuilo-HyphenEdit" generic-name="ReplaceEdit" parent="GtkEntry" icon-name="widget-gtk-textentry"/> + + <glade-widget-class title="VclComboBoxText" name="VclComboBoxText" + generic-name="ComboBoxText" parent="GtkComboBoxText" + icon-name="widget-gtk-comboboxtext"> + <properties> + <property save="True" query="False" id="dropdown" default="True" name="Use DropDown"> + <parameter-spec> + <type>GParamBoolean</type> + </parameter-spec> + </property> + <property save="True" query="False" id="max-width-chars" default="-1" name="Maximum Width in Characters"> + <parameter-spec> + <type>GParamInt</type> + <min>-1</min> + </parameter-spec> + <tooltip>The desired maximum width of the ComboBox, in characters</tooltip> + </property> + </properties> + </glade-widget-class> + + <glade-widget-class title="VclComboBoxNumeric" name="VclComboBoxNumeric" + generic-name="ComboBoxNumeric" parent="VclComboBoxText" + icon-name="widget-gtk-comboboxtext"> + <properties> + <property save="True" query="False" id="adjustment" name="Adjustment"> + <parameter-spec> + <type>GParamObject</type> + <value-type>GtkAdjustment</value-type> + </parameter-spec> + <tooltip>List of widgets in this group</tooltip> + </property> + </properties> + </glade-widget-class> + <glade-widget-class title="Color ListBox" name="svtlo-ColorListBox" generic-name="Color ListBox" parent="GtkComboBox" - icon-name="widget-gtk-combobox"/> + icon-name="widget-gtk-combobox"> + <properties> + <property id="dropdown" default="True" common="True"/> + </properties> + </glade-widget-class> + <glade-widget-class title="Other Color ListBox" name="svxlo-ColorLB" generic-name="Other Color ListBox" parent="GtkComboBox" icon-name="widget-gtk-combobox"/> + <glade-widget-class title="Font Name ListBox" name="svtlo-FontNameBox" generic-name="Font name ListBox" parent="GtkComboBox" - icon-name="widget-gtk-combobox"/> + icon-name="widget-gtk-combobox"> + <properties> + <property id="dropdown" default="True" common="True"/> + </properties> + </glade-widget-class> + <glade-widget-class title="Sidebar Font Name ListBox" name="svxlo-SvxSBFontNameBox" generic-name="Sidebar Font name ListBox" parent="GtkComboBox" icon-name="widget-gtk-combobox"/> + <glade-widget-class title="Font Size ListBox" name="svtlo-FontSizeBox" generic-name="Font Size ListBox" parent="GtkComboBox" - icon-name="widget-gtk-combobox"/> + icon-name="widget-gtk-combobox"> + <properties> + <property id="dropdown" default="True" common="True"/> + </properties> + </glade-widget-class> + <glade-widget-class title="Line ListBox" name="svtlo-LineListBox" generic-name="Line ListBox" parent="GtkComboBox" - icon-name="widget-gtk-combobox"/> + icon-name="widget-gtk-combobox"> + <properties> + <property id="dropdown" default="True" common="True"/> + </properties> + </glade-widget-class> + <glade-widget-class title="Language ListBox" name="svxcorelo-SvxLanguageBox" generic-name="LanguageBox" parent="GtkComboBox" icon-name="widget-gtk-combobox"/> + <glade-widget-class title="Font ListBox" name="svtlo-FontStyleBox" generic-name="FontStyleBox" parent="GtkComboBox" - icon-name="widget-gtk-combobox"/> + icon-name="widget-gtk-combobox"> + <properties> + <property id="dropdown" default="True" common="True"/> + </properties> + </glade-widget-class> + <glade-widget-class title="Text Encoding ListBox" name="svxlo-SvxTextEncodingBox" generic-name="TextEncodingBox" parent="GtkComboBox" icon-name="widget-gtk-combobox"/> @@ -198,23 +260,6 @@ <glade-widget-class title="Relative Numeric Field" name="svxlo-SvxRelativeField" generic-name="Relative Numeric Field" parent="GtkSpinButton" icon-name="widget-gtk-spinbutton"/> - <glade-widget-class title="VclComboBoxText" name="VclComboBoxText" - generic-name="ComboBoxText" parent="GtkComboBoxText" - icon-name="widget-gtk-comboboxtext"> - <properties> - <property save="True" query="False" id="max-width-chars" default="-1" name="Maximum Width in Characters"> - <parameter-spec> - <type>GParamInt</type> - <min>-1</min> - </parameter-spec> - <tooltip>The desired maximum width of the ComboBox, in characters</tooltip> - </property> - </properties> - </glade-widget-class> - - <glade-widget-class title="VclComboBoxNumeric" name="VclComboBoxNumeric" - generic-name="ComboBoxNumeric" parent="VclComboBoxText" - icon-name="widget-gtk-comboboxtext"/> <glade-widget-class title="SvtURLBox" name="svtlo-SvtURLBox" generic-name="URLBox" parent="VclComboBoxText" diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx index 13aba5836799..3708a34874ab 100644 --- a/include/vcl/builder.hxx +++ b/include/vcl/builder.hxx @@ -290,6 +290,8 @@ public: static OString extractCustomProperty(stringmap &rMap); + static bool extractDropdown(stringmap &rMap); + //add a default value of 25 width-chars to a map if width-chars not set static void ensureDefaultWidthChars(VclBuilder::stringmap &rMap); diff --git a/svtools/source/control/ctrlbox.cxx b/svtools/source/control/ctrlbox.cxx index 4d28a77a3113..d1599fae1aa3 100644 --- a/svtools/source/control/ctrlbox.cxx +++ b/svtools/source/control/ctrlbox.cxx @@ -114,24 +114,9 @@ ColorListBox::ColorListBox( Window* pParent, const ResId& rResId ) : SetEdgeBlending(true); } -namespace -{ - bool extractDropdown(VclBuilder::stringmap &rMap) - { - bool bDropdown = true; - VclBuilder::stringmap::iterator aFind = rMap.find(OString(RTL_CONSTASCII_STRINGPARAM("dropdown"))); - if (aFind != rMap.end()) - { - bDropdown = toBool(aFind->second); - rMap.erase(aFind); - } - return bDropdown; - } -} - extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeColorListBox(Window *pParent, VclBuilder::stringmap &rMap) { - bool bDropdown = extractDropdown(rMap); + bool bDropdown = VclBuilder::extractDropdown(rMap); WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP; if (bDropdown) nWinBits |= WB_DROPDOWN; @@ -797,7 +782,7 @@ LineListBox::LineListBox( Window* pParent, WinBits nWinStyle ) : extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeLineListBox(Window *pParent, VclBuilder::stringmap &rMap) { - bool bDropdown = extractDropdown(rMap); + bool bDropdown = VclBuilder::extractDropdown(rMap); WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP; if (bDropdown) nWinBits |= WB_DROPDOWN; @@ -1073,7 +1058,7 @@ FontNameBox::FontNameBox( Window* pParent, const ResId& rResId ) : extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeFontNameBox(Window *pParent, VclBuilder::stringmap &rMap) { - bool bDropdown = extractDropdown(rMap); + bool bDropdown = VclBuilder::extractDropdown(rMap); WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP; if (bDropdown) nWinBits |= WB_DROPDOWN; @@ -1461,7 +1446,7 @@ FontStyleBox::FontStyleBox( Window* pParent, WinBits nBits ) : extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeFontStyleBox(Window *pParent, VclBuilder::stringmap &rMap) { - bool bDropdown = extractDropdown(rMap); + bool bDropdown = VclBuilder::extractDropdown(rMap); WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP; if (bDropdown) nWinBits |= WB_DROPDOWN; @@ -1681,7 +1666,7 @@ FontSizeBox::FontSizeBox( Window* pParent, const ResId& rResId ) : extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeFontSizeBox(Window *pParent, VclBuilder::stringmap &rMap) { - bool bDropdown = extractDropdown(rMap); + bool bDropdown = VclBuilder::extractDropdown(rMap); WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP; if (bDropdown) nWinBits |= WB_DROPDOWN; diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index 4cea57f7afe0..5d02b3b5c703 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -877,6 +877,18 @@ bool VclBuilder::extractModel(const OString &id, stringmap &rMap) return false; } +bool VclBuilder::extractDropdown(VclBuilder::stringmap &rMap) +{ + bool bDropdown = true; + VclBuilder::stringmap::iterator aFind = rMap.find(OString("dropdown")); + if (aFind != rMap.end()) + { + bDropdown = toBool(aFind->second); + rMap.erase(aFind); + } + return bDropdown; +} + bool VclBuilder::extractBuffer(const OString &id, stringmap &rMap) { VclBuilder::stringmap::iterator aFind = rMap.find(OString("buffer")); @@ -1146,12 +1158,17 @@ Window *VclBuilder::makeObject(Window *pParent, const OString &name, const OStri OString sPattern = extractCustomProperty(rMap); extractModel(id, rMap); + WinBits nBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_DROPDOWN; + if (!sPattern.isEmpty()) { + OString sAdjustment = extractAdjustment(rMap); OString sUnit = extractUnit(sPattern); FieldUnit eUnit = detectMetricUnit(sUnit); - SAL_INFO("vcl.layout", "making metric box for " << name.getStr() << " " << sUnit.getStr()); - MetricBox *pBox = new MetricBox(pParent, WB_LEFT|WB_DROPDOWN|WB_VCENTER|WB_3DLOOK); + SAL_WARN("vcl.layout", "making metric box for " << name.getStr() << " " << sUnit.getStr() + << " use a VclComboBoxNumeric instead"); + MetricBox *pBox = new MetricBox(pParent, nBits); + pBox->EnableAutoSize(true); pBox->SetUnit(eUnit); if (eUnit == FUNIT_CUSTOM) pBox->SetCustomUnitText(OStringToOUString(sUnit, RTL_TEXTENCODING_UTF8)); @@ -1159,7 +1176,7 @@ Window *VclBuilder::makeObject(Window *pParent, const OString &name, const OStri } else if (extractEntry(rMap)) { - ComboBox* pComboBox = new ComboBox(pParent, WB_LEFT|WB_DROPDOWN|WB_VCENTER|WB_3DLOOK); + ComboBox* pComboBox = new ComboBox(pParent, nBits); pComboBox->EnableAutoSize(true); if (!rItems.empty()) { @@ -1173,7 +1190,7 @@ Window *VclBuilder::makeObject(Window *pParent, const OString &name, const OStri } else { - ListBox *pListBox = new ListBox(pParent, WB_LEFT|WB_DROPDOWN|WB_VCENTER|WB_3DLOOK|WB_SIMPLEMODE); + ListBox *pListBox = new ListBox(pParent, nBits|WB_SIMPLEMODE); pListBox->EnableAutoSize(true); if (!rItems.empty()) { @@ -1188,9 +1205,40 @@ Window *VclBuilder::makeObject(Window *pParent, const OString &name, const OStri } else if (name == "VclComboBoxNumeric") { - NumericBox* pComboBox = new NumericBox(pParent, WB_LEFT|WB_DROPDOWN|WB_VCENTER|WB_3DLOOK); - pComboBox->EnableAutoSize(true); - pWindow = pComboBox; + OString sPattern = extractCustomProperty(rMap); + OString sAdjustment = extractAdjustment(rMap); + extractModel(id, rMap); + + WinBits nBits = WB_LEFT|WB_VCENTER|WB_3DLOOK; + + bool bDropdown = VclBuilder::extractDropdown(rMap); + + if (bDropdown) + nBits |= WB_DROPDOWN; + + if (!sPattern.isEmpty()) + { + OString sUnit = extractUnit(sPattern); + FieldUnit eUnit = detectMetricUnit(sUnit); + SAL_INFO("vcl.layout", "making metric box for " << name.getStr() << " " << sUnit.getStr()); + connectNumericFormatterAdjustment(id, sAdjustment); + MetricBox *pBox = new MetricBox(pParent, nBits|WB_BORDER); + if (bDropdown) + pBox->EnableAutoSize(true); + pBox->SetUnit(eUnit); + if (eUnit == FUNIT_CUSTOM) + pBox->SetCustomUnitText(OStringToOUString(sUnit, RTL_TEXTENCODING_UTF8)); + pWindow = pBox; + } + else + { + SAL_INFO("vcl.layout", "making numeric box for " << name.getStr()); + connectNumericFormatterAdjustment(id, sAdjustment); + NumericBox* pBox = new NumericBox(pParent, nBits); + if (bDropdown) + pBox->EnableAutoSize(true); + pWindow = pBox; + } } else if (name == "GtkTreeView") { |