summaryrefslogtreecommitdiff
path: root/cui/source/dialogs/FontFeaturesDialog.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-09-07 13:42:54 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-09-08 15:07:22 +0200
commit842c71a1fae1def3e8b694ae3b820b34ad26bce4 (patch)
tree8b00253118bb278c5dda9b2a97897e93e2f9e691 /cui/source/dialogs/FontFeaturesDialog.cxx
parent97b6fd8e9ec4c655a5b73cbb4f64be06e7057242 (diff)
weld FontFeaturesDialog
Change-Id: I67ab7388593aceb00b660e4d40904a4eef247620 Reviewed-on: https://gerrit.libreoffice.org/60148 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'cui/source/dialogs/FontFeaturesDialog.cxx')
-rw-r--r--cui/source/dialogs/FontFeaturesDialog.cxx122
1 files changed, 47 insertions, 75 deletions
diff --git a/cui/source/dialogs/FontFeaturesDialog.cxx b/cui/source/dialogs/FontFeaturesDialog.cxx
index 078e9a630a80..272031bc54a4 100644
--- a/cui/source/dialogs/FontFeaturesDialog.cxx
+++ b/cui/source/dialogs/FontFeaturesDialog.cxx
@@ -16,28 +16,23 @@ using namespace css;
namespace cui
{
-FontFeaturesDialog::FontFeaturesDialog(vcl::Window* pParent, OUString const& rFontName)
- : ModalDialog(pParent, "FontFeaturesDialog", "cui/ui/fontfeaturesdialog.ui")
+FontFeaturesDialog::FontFeaturesDialog(weld::Window* pParent, OUString const& rFontName)
+ : GenericDialogController(pParent, "cui/ui/fontfeaturesdialog.ui", "FontFeaturesDialog")
, m_sFontName(rFontName)
+ , m_xContentWindow(m_xBuilder->weld_scrolled_window("contentWindow"))
+ , m_xContentGrid(m_xBuilder->weld_container("contentGrid"))
+ , m_xPreviewWindow(new weld::CustomWeld(*m_xBuilder, "preview", m_aPreviewWindow))
{
- get(m_pContentGrid, "contentGrid");
- get(m_pPreviewWindow, "preview");
initialize();
}
-FontFeaturesDialog::~FontFeaturesDialog() { disposeOnce(); }
+FontFeaturesDialog::~FontFeaturesDialog() {}
-VclPtr<ComboBox> makeEnumComboBox(vcl::Window* pParent,
- vcl::font::FeatureDefinition const& rFeatureDefinition)
+void makeEnumComboBox(weld::ComboBoxText& rNameBox,
+ vcl::font::FeatureDefinition const& rFeatureDefinition)
{
- VclPtr<ComboBox> aNameBox(
- VclPtr<ComboBox>::Create(pParent, WB_TABSTOP | WB_DROPDOWN | WB_AUTOHSCROLL));
for (vcl::font::FeatureParameter const& rParameter : rFeatureDefinition.getEnumParameters())
- {
- aNameBox->InsertEntry(rParameter.getDescription());
- }
- aNameBox->EnableAutoSize(true);
- return aNameBox;
+ rNameBox.append_text(rParameter.getDescription());
}
void FontFeaturesDialog::initialize()
@@ -88,7 +83,7 @@ void FontFeaturesDialog::fillGrid(std::vector<vcl::font::Feature> const& rFontFe
if (!aDefinition)
aDefinition = { nFontFeatureCode, nullptr };
- m_aFeatureItems.emplace_back();
+ m_aFeatureItems.emplace_back(m_xContentGrid.get());
sal_uInt32 nValue = 0;
if (aExistingFeatures.find(nFontFeatureCode) != aExistingFeatures.end())
@@ -99,63 +94,47 @@ void FontFeaturesDialog::fillGrid(std::vector<vcl::font::Feature> const& rFontFe
sal_Int32 nGridPositionX = (i % 2) * 2;
sal_Int32 nGridPositionY = i / 2;
+ aCurrentItem.m_xContainer->set_grid_left_attach(nGridPositionX);
+ aCurrentItem.m_xContainer->set_grid_top_attach(nGridPositionY);
- Link<ComboBox&, void> aComboBoxSelectHandler
+ Link<weld::ComboBoxText&, void> aComboBoxSelectHandler
= LINK(this, FontFeaturesDialog, ComboBoxSelectedHdl);
- Link<CheckBox&, void> aCheckBoxToggleHandler
+ Link<weld::ToggleButton&, void> aCheckBoxToggleHandler
= LINK(this, FontFeaturesDialog, CheckBoxToggledHdl);
if (aDefinition.getType() == vcl::font::FeatureParameterType::ENUM)
{
- aCurrentItem.m_pText
- = VclPtr<FixedText>::Create(m_pContentGrid, WB_LEFT | WB_VCENTER | WB_3DLOOK);
- aCurrentItem.m_pText->set_grid_left_attach(nGridPositionX);
- aCurrentItem.m_pText->set_grid_top_attach(nGridPositionY);
- aCurrentItem.m_pText->set_margin_left(6);
- aCurrentItem.m_pText->set_margin_right(6);
- aCurrentItem.m_pText->set_margin_top(3);
- aCurrentItem.m_pText->set_margin_bottom(3);
- aCurrentItem.m_pText->SetText(aDefinition.getDescription());
- aCurrentItem.m_pText->Show();
-
- aCurrentItem.m_pCombo = makeEnumComboBox(m_pContentGrid, aDefinition);
-
- aCurrentItem.m_pCombo->SelectEntryPos(nValue);
- aCurrentItem.m_pCombo->set_grid_left_attach(nGridPositionX + 1);
- aCurrentItem.m_pCombo->set_grid_top_attach(nGridPositionY);
- aCurrentItem.m_pCombo->set_margin_left(6);
- aCurrentItem.m_pCombo->set_margin_right(6);
- aCurrentItem.m_pCombo->set_margin_top(3);
- aCurrentItem.m_pCombo->set_margin_bottom(3);
- aCurrentItem.m_pCombo->SetSelectHdl(aComboBoxSelectHandler);
- aCurrentItem.m_pCombo->Show();
+ aCurrentItem.m_xText->set_label(aDefinition.getDescription());
+ aCurrentItem.m_xText->show();
+
+ makeEnumComboBox(*aCurrentItem.m_xCombo, aDefinition);
+
+ aCurrentItem.m_xCombo->set_active(nValue);
+ aCurrentItem.m_xCombo->connect_changed(aComboBoxSelectHandler);
+ aCurrentItem.m_xCombo->show();
}
else
{
- aCurrentItem.m_pCheck = VclPtr<CheckBox>::Create(
- m_pContentGrid, WB_CLIPCHILDREN | WB_LEFT | WB_VCENTER | WB_3DLOOK);
- aCurrentItem.m_pCheck->set_grid_left_attach(nGridPositionX);
- aCurrentItem.m_pCheck->set_grid_top_attach(nGridPositionY);
- aCurrentItem.m_pCheck->set_grid_width(2);
- aCurrentItem.m_pCheck->set_margin_left(6);
- aCurrentItem.m_pCheck->set_margin_right(6);
- aCurrentItem.m_pCheck->set_margin_top(3);
- aCurrentItem.m_pCheck->set_margin_bottom(3);
- aCurrentItem.m_pCheck->Check(nValue > 0);
- aCurrentItem.m_pCheck->SetText(aDefinition.getDescription());
- aCurrentItem.m_pCheck->SetToggleHdl(aCheckBoxToggleHandler);
- aCurrentItem.m_pCheck->Show();
+ aCurrentItem.m_xCheck->set_active(nValue > 0);
+ aCurrentItem.m_xCheck->set_label(aDefinition.getDescription());
+ aCurrentItem.m_xCheck->connect_toggled(aCheckBoxToggleHandler);
+ aCurrentItem.m_xCheck->show();
}
i++;
}
+
+ Size aSize(m_xContentWindow->get_preferred_size());
+ Size aMaxSize(std::min<int>(aSize.Width(), m_xContentGrid->get_approximate_digit_width() * 100),
+ std::min<int>(aSize.Height(), m_xContentGrid->get_text_height() * 20));
+ m_xContentWindow->set_size_request(aMaxSize.Width(), aMaxSize.Height());
}
void FontFeaturesDialog::updateFontPreview()
{
- vcl::Font rPreviewFont = m_pPreviewWindow->GetFont();
- vcl::Font rPreviewFontCJK = m_pPreviewWindow->GetCJKFont();
- vcl::Font rPreviewFontCTL = m_pPreviewWindow->GetCTLFont();
+ vcl::Font rPreviewFont = m_aPreviewWindow.GetFont();
+ vcl::Font rPreviewFontCJK = m_aPreviewWindow.GetCJKFont();
+ vcl::Font rPreviewFontCTL = m_aPreviewWindow.GetCTLFont();
OUString sNewFontName = createFontNameWithFeatures();
@@ -163,25 +142,18 @@ void FontFeaturesDialog::updateFontPreview()
rPreviewFontCJK.SetFamilyName(sNewFontName);
rPreviewFontCTL.SetFamilyName(sNewFontName);
- m_pPreviewWindow->SetFont(rPreviewFont, rPreviewFontCJK, rPreviewFontCTL);
+ m_aPreviewWindow.SetFont(rPreviewFont, rPreviewFontCJK, rPreviewFontCTL);
}
-void FontFeaturesDialog::dispose()
+IMPL_LINK_NOARG(FontFeaturesDialog, CheckBoxToggledHdl, weld::ToggleButton&, void)
{
- m_pContentGrid.clear();
- m_pPreviewWindow.clear();
- for (FontFeatureItem& rItem : m_aFeatureItems)
- {
- rItem.m_pText.disposeAndClear();
- rItem.m_pCombo.disposeAndClear();
- rItem.m_pCheck.disposeAndClear();
- }
- ModalDialog::dispose();
+ updateFontPreview();
}
-IMPL_LINK_NOARG(FontFeaturesDialog, CheckBoxToggledHdl, CheckBox&, void) { updateFontPreview(); }
-
-IMPL_LINK_NOARG(FontFeaturesDialog, ComboBoxSelectedHdl, ComboBox&, void) { updateFontPreview(); }
+IMPL_LINK_NOARG(FontFeaturesDialog, ComboBoxSelectedHdl, weld::ComboBoxText&, void)
+{
+ updateFontPreview();
+}
OUString FontFeaturesDialog::createFontNameWithFeatures()
{
@@ -191,9 +163,9 @@ OUString FontFeaturesDialog::createFontNameWithFeatures()
for (FontFeatureItem& rItem : m_aFeatureItems)
{
- if (rItem.m_pCheck)
+ if (rItem.m_xCheck->get_visible())
{
- if (rItem.m_pCheck->IsChecked())
+ if (rItem.m_xCheck->get_active())
{
if (!bFirst)
sNameSuffix.append(OUString(vcl::font::FeatureSeparator));
@@ -203,9 +175,9 @@ OUString FontFeaturesDialog::createFontNameWithFeatures()
sNameSuffix.append(vcl::font::featureCodeAsString(rItem.m_aFeatureCode));
}
}
- else if (rItem.m_pCombo && rItem.m_pText)
+ else if (rItem.m_xCombo->get_visible() && rItem.m_xText->get_visible())
{
- sal_uInt32 nSelection = rItem.m_pCombo->GetSelectedEntryPos();
+ int nSelection = rItem.m_xCombo->get_active();
if (nSelection > 0)
{
if (!bFirst)
@@ -225,9 +197,9 @@ OUString FontFeaturesDialog::createFontNameWithFeatures()
return sResultFontName;
}
-short FontFeaturesDialog::Execute()
+short FontFeaturesDialog::execute()
{
- short nResult = ModalDialog::Execute();
+ short nResult = m_xDialog->run();
if (nResult == RET_OK)
{
m_sResultFontName = createFontNameWithFeatures();