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 /vcl | |
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
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/window/builder.cxx | 62 |
1 files changed, 55 insertions, 7 deletions
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") { |