chart2/source/controller/dialogs/res_ErrorBar.cxx | 4 chart2/source/controller/dialogs/tp_DataSource.cxx | 2 chart2/source/controller/dialogs/tp_RangeChooser.cxx | 6 extras/source/glade/libreoffice-catalog.xml.in | 12 formula/source/ui/dlg/funcutl.cxx | 2 include/vcl/weld.hxx | 21 sc/inc/colorscale.hxx | 1 sc/source/core/data/colorscale.cxx | 11 sc/source/ui/condformat/condformatdlg.cxx | 345 ++---- sc/source/ui/condformat/condformatdlgentry.cxx | 1076 +++++++------------ sc/source/ui/inc/condformatdlg.hxx | 86 - sc/source/ui/inc/condformatdlgentry.hxx | 189 +-- sc/source/ui/inc/tabvwsh.hxx | 3 sc/source/ui/namedlg/namedefdlg.cxx | 8 sc/source/ui/namedlg/namedlg.cxx | 8 sc/source/ui/view/formatsh.cxx | 10 sc/source/ui/view/reffact.cxx | 43 sc/source/ui/view/tabvwshc.cxx | 91 - sc/uiconfig/scalc/ui/conditionalentry.ui | 722 +++++++----- sc/uiconfig/scalc/ui/conditionalformatdialog.ui | 179 ++- sc/uiconfig/scalc/ui/conditionaliconset.ui | 4 solenv/bin/native-code.py | 3 solenv/gbuild/UIConfig.mk | 4 solenv/sanitizers/ui/modules/scalc.false | 1 solenv/sanitizers/ui/modules/scalc.suppr | 15 svx/source/dialog/langbox.cxx | 4 svx/source/dialog/srchdlg.cxx | 4 vcl/source/app/salvtables.cxx | 110 + vcl/source/window/stacking.cxx | 2 vcl/unx/gtk3/gtk3gtkinst.cxx | 160 ++ 30 files changed, 1543 insertions(+), 1583 deletions(-)
New commits: commit 492b0d5d076d38234fea4e4e7c5dbec578296fd2 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue May 7 12:27:43 2019 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Sat May 11 18:34:23 2019 +0200 weld conditional formatting Change-Id: Ia9c99a17d5a95d67a412cfde959192c99caa70be Reviewed-on: https://gerrit.libreoffice.org/71956 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/chart2/source/controller/dialogs/res_ErrorBar.cxx b/chart2/source/controller/dialogs/res_ErrorBar.cxx index d2788b8e2d3f..f8fa420120f5 100644 --- a/chart2/source/controller/dialogs/res_ErrorBar.cxx +++ b/chart2/source/controller/dialogs/res_ErrorBar.cxx @@ -713,11 +713,11 @@ void ErrorBarResources::isRangeFieldContentValid(weld::Entry& rEdit) if( bIsValid || !rEdit.get_sensitive()) { - rEdit.set_error(false); + rEdit.set_message_type(weld::EntryMessageType::Normal); } else { - rEdit.set_error(true); + rEdit.set_message_type(weld::EntryMessageType::Error); } } diff --git a/chart2/source/controller/dialogs/tp_DataSource.cxx b/chart2/source/controller/dialogs/tp_DataSource.cxx index 00963cf054f7..c650e7951af6 100644 --- a/chart2/source/controller/dialogs/tp_DataSource.cxx +++ b/chart2/source/controller/dialogs/tp_DataSource.cxx @@ -296,7 +296,7 @@ bool DataSourceTabPage::isRangeFieldContentValid(weld::Entry& rEdit ) OUString aRange(rEdit.get_text()); bool bIsValid = aRange.isEmpty() || m_rDialogModel.getRangeSelectionHelper()->verifyCellRange(aRange); - rEdit.set_error(!bIsValid); + rEdit.set_message_type(bIsValid ? weld::EntryMessageType::Normal : weld::EntryMessageType::Error); return bIsValid; } diff --git a/chart2/source/controller/dialogs/tp_RangeChooser.cxx b/chart2/source/controller/dialogs/tp_RangeChooser.cxx index 6205f9f45a8d..a20a12f0ab4a 100644 --- a/chart2/source/controller/dialogs/tp_RangeChooser.cxx +++ b/chart2/source/controller/dialogs/tp_RangeChooser.cxx @@ -279,16 +279,14 @@ bool RangeChooserTabPage::isValid() if( bIsValid ) { - m_xED_Range->set_error(false); - m_xED_Range->set_error(false); + m_xED_Range->set_message_type(weld::EntryMessageType::Normal); if( m_pTabPageNotifiable ) m_pTabPageNotifiable->setValidPage( this ); m_aLastValidRangeString = aRange; } else { - m_xED_Range->set_error(true); - m_xED_Range->set_error(true); + m_xED_Range->set_message_type(weld::EntryMessageType::Error); if( m_pTabPageNotifiable ) m_pTabPageNotifiable->setInvalidPage( this ); } diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in index 7a450c288d92..581a3b844416 100644 --- a/extras/source/glade/libreoffice-catalog.xml.in +++ b/extras/source/glade/libreoffice-catalog.xml.in @@ -277,14 +277,6 @@ generic-name="LanguageBox" parent="VclComboBoxText" icon-name="widget-gtk-combobox"/> - <glade-widget-class title="Reference Button" name="foruilo-RefButton" - generic-name="Reference Button" parent="GtkButton" - icon-name="widget-gtk-button"/> - - <glade-widget-class title="Reference Edit" name="foruilo-RefEdit" - generic-name="Reference Edit" parent="GtkEntry" - icon-name="widget-gtk-textentry"/> - <glade-widget-class title="URL Entry" name="cuilo-SvxHyperURLBox" generic-name="URL Entry" parent="GtkEntry" icon-name="widget-gtk-textentry"/> @@ -358,10 +350,6 @@ generic-name="ClientBox" parent="GtkDrawingArea" icon-name="widget-gtk-drawingarea"/> - <glade-widget-class title="ScCondFormatList" name="sclo-ScCondFormatList" - generic-name="CondFormatList" parent="GtkDrawingArea" - icon-name="widget-gtk-drawingarea"/> - <glade-widget-class title="IndexFieldsControl" name="dbulo-DbaIndexFieldsControl" generic-name="IndexFieldsControl" parent="GtkTreeView" icon-name="widget-gtk-treeview"/> diff --git a/formula/source/ui/dlg/funcutl.cxx b/formula/source/ui/dlg/funcutl.cxx index 8cf4b2155d3d..13730efe00a8 100644 --- a/formula/source/ui/dlg/funcutl.cxx +++ b/formula/source/ui/dlg/funcutl.cxx @@ -401,7 +401,7 @@ void WeldRefEdit::SetRefString( const OUString& rStr ) void WeldRefEdit::SetRefValid(bool bValid) { - xEntry->set_error(!bValid); + xEntry->set_message_type(bValid ? weld::EntryMessageType::Normal : weld::EntryMessageType::Error); } void WeldRefEdit::SetText(const OUString& rStr) diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 15d5b609d1b8..646daa1aeea7 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -232,6 +232,9 @@ public: virtual VclPtr<VirtualDevice> create_virtual_device() const = 0; + //make this widget look like a page in a notebook + virtual void set_stack_background() = 0; + virtual css::uno::Reference<css::datatransfer::dnd::XDropTarget> get_drop_target() = 0; virtual ~Widget() {} @@ -448,6 +451,13 @@ struct VCL_DLLPUBLIC ComboBoxEntry } }; +enum class EntryMessageType +{ + Normal, + Warning, + Error, +}; + class VCL_DLLPUBLIC ComboBox : virtual public Container { private: @@ -520,7 +530,7 @@ public: //entry related virtual bool has_entry() const = 0; - virtual void set_entry_error(bool bError) = 0; + virtual void set_entry_message_type(EntryMessageType eType) = 0; virtual void set_entry_text(const OUString& rStr) = 0; virtual void set_entry_width_chars(int nChars) = 0; virtual void set_entry_max_length(int nChars) = 0; @@ -1036,7 +1046,7 @@ public: virtual int get_position() const = 0; virtual void set_editable(bool bEditable) = 0; virtual bool get_editable() const = 0; - virtual void set_error(bool bShowError) = 0; + virtual void set_message_type(EntryMessageType eType) = 0; // font size is in points, not pixels, e.g. see Window::[G]etPointFont virtual void set_font(const vcl::Font& rFont) = 0; @@ -1250,7 +1260,10 @@ public: //entry related virtual bool has_entry() const override { return true; } - virtual void set_entry_error(bool bError) override { m_xEntry->set_error(bError); } + virtual void set_entry_message_type(EntryMessageType eType) override + { + m_xEntry->set_message_type(eType); + } virtual void set_entry_text(const OUString& rStr) override { m_xEntry->set_text(rStr); } virtual void set_entry_width_chars(int nChars) override { m_xEntry->set_width_chars(nChars); } virtual void set_entry_max_length(int nChars) override { m_xEntry->set_max_length(nChars); } @@ -1502,7 +1515,7 @@ public: virtual void set_label(const OUString& rText) = 0; virtual OUString get_label() const = 0; virtual void set_mnemonic_widget(Widget* pTarget) = 0; - virtual void set_error(bool bShowError) = 0; + virtual void set_message_type(EntryMessageType eType) = 0; // font size is in points, not pixels, e.g. see Window::[G]etPointFont virtual void set_font(const vcl::Font& rFont) = 0; }; diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx index eb89d0cf2c34..aa3e6f6e7e60 100644 --- a/sc/inc/colorscale.hxx +++ b/sc/inc/colorscale.hxx @@ -381,6 +381,7 @@ public: static const ScIconSetMap g_IconSetMap[]; static const char* getIconSetName( ScIconSetType eType ); static sal_Int32 getIconSetElements( ScIconSetType eType ); + static OUString getIconName(ScIconSetType eType, sal_Int32 nIndex); static BitmapEx& getBitmap(sc::IconSetBitmapMap& rBitmapMap, ScIconSetType eType, sal_Int32 nIndex); typedef ScIconSetFormatData::Entries_t::iterator iterator; diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx index 53e9e63fc548..1a932df73b53 100644 --- a/sc/source/core/data/colorscale.cxx +++ b/sc/source/core/data/colorscale.cxx @@ -1383,8 +1383,7 @@ sal_Int32 ScIconSetFormat::getIconSetElements( ScIconSetType eType ) return 0; } -BitmapEx& ScIconSetFormat::getBitmap(sc::IconSetBitmapMap & rIconSetBitmapMap, - ScIconSetType const eType, sal_Int32 const nIndex) +OUString ScIconSetFormat::getIconName(ScIconSetType const eType, sal_Int32 const nIndex) { OUString sBitmap; @@ -1399,6 +1398,14 @@ BitmapEx& ScIconSetFormat::getBitmap(sc::IconSetBitmapMap & rIconSetBitmapMap, assert(!sBitmap.isEmpty()); + return sBitmap; +} + +BitmapEx& ScIconSetFormat::getBitmap(sc::IconSetBitmapMap & rIconSetBitmapMap, + ScIconSetType const eType, sal_Int32 const nIndex) +{ + OUString sBitmap(ScIconSetFormat::getIconName(eType, nIndex)); + std::map<OUString, BitmapEx>::iterator itr = rIconSetBitmapMap.find(sBitmap); if (itr != rIconSetBitmapMap.end()) return itr->second; diff --git a/sc/source/ui/condformat/condformatdlg.cxx b/sc/source/ui/condformat/condformatdlg.cxx index 0d0551129039..07f570b65529 100644 --- a/sc/source/ui/condformat/condformatdlg.cxx +++ b/sc/source/ui/condformat/condformatdlg.cxx @@ -25,42 +25,35 @@ #include <condformatdlgentry.hxx> #include <condformatdlgitem.hxx> -ScCondFormatList::ScCondFormatList(vcl::Window* pParent, WinBits nStyle) - : Control(pParent, nStyle | WB_DIALOGCONTROL) - , mbHasScrollBar(false) +ScCondFormatList::ScCondFormatList(ScCondFormatDlg* pDialogParent, + std::unique_ptr<weld::ScrolledWindow> xWindow, + std::unique_ptr<weld::Container> xGrid) + : mxScrollWindow(std::move(xWindow)) + , mxGrid(std::move(xGrid)) , mbFrozen(false) , mbNewEntry(false) - , mpScrollBar(VclPtr<ScrollBar>::Create(this, WB_VERT )) , mpDoc(nullptr) - , mpDialogParent(nullptr) + , mpDialogParent(pDialogParent) { - mpScrollBar->SetScrollHdl( LINK( this, ScCondFormatList, ScrollHdl ) ); - mpScrollBar->EnableDrag(); - SetControlBackground( GetSettings().GetStyleSettings().GetWindowColor() ); - SetBackground(GetControlBackground()); + mxScrollWindow->set_size_request(mxScrollWindow->get_approximate_digit_width() * 85, + mxScrollWindow->get_text_height() * 23); + mxGrid->set_stack_background(); } -ScCondFormatList::~ScCondFormatList() +weld::Window* ScCondFormatList::GetFrameWeld() { - disposeOnce(); + return mpDialogParent->getDialog(); } -void ScCondFormatList::dispose() +ScCondFormatList::~ScCondFormatList() { Freeze(); - mpDialogParent.clear(); - mpScrollBar.disposeAndClear(); - for (auto& rxEntry : maEntries) - rxEntry.disposeAndClear(); - maEntries.clear(); - Control::dispose(); } -void ScCondFormatList::init(ScDocument* pDoc, ScCondFormatDlg* pDialogParent, +void ScCondFormatList::init(ScDocument* pDoc, const ScConditionalFormat* pFormat, const ScRangeList& rRanges, const ScAddress& rPos, condformat::dialog::ScCondFormatDialogType eType) { - mpDialogParent = pDialogParent; mpDoc = pDoc; maPos = rPos; maRanges = rRanges; @@ -80,9 +73,9 @@ void ScCondFormatList::init(ScDocument* pDoc, ScCondFormatDlg* pDialogParent, { const ScCondFormatEntry* pConditionEntry = static_cast<const ScCondFormatEntry*>( pEntry ); if(pConditionEntry->GetOperation() != ScConditionMode::Direct) - maEntries.push_back(VclPtr<ScConditionFrmtEntry>::Create( this, mpDoc, pDialogParent, maPos, pConditionEntry ) ); + maEntries.emplace_back(new ScConditionFrmtEntry( this, mpDoc, mpDialogParent, maPos, pConditionEntry ) ); else - maEntries.push_back(VclPtr<ScFormulaFrmtEntry>::Create( this, mpDoc, pDialogParent, maPos, pConditionEntry ) ); + maEntries.emplace_back(new ScFormulaFrmtEntry( this, mpDoc, mpDialogParent, maPos, pConditionEntry ) ); } break; @@ -90,19 +83,19 @@ void ScCondFormatList::init(ScDocument* pDoc, ScCondFormatDlg* pDialogParent, { const ScColorScaleFormat* pColorScale = static_cast<const ScColorScaleFormat*>( pEntry ); if( pColorScale->size() == 2 ) - maEntries.push_back(VclPtr<ScColorScale2FrmtEntry>::Create( this, mpDoc, maPos, pColorScale ) ); + maEntries.emplace_back(new ScColorScale2FrmtEntry( this, mpDoc, maPos, pColorScale ) ); else - maEntries.push_back(VclPtr<ScColorScale3FrmtEntry>::Create( this, mpDoc, maPos, pColorScale ) ); + maEntries.emplace_back(new ScColorScale3FrmtEntry( this, mpDoc, maPos, pColorScale ) ); } break; case ScFormatEntry::Type::Databar: - maEntries.push_back(VclPtr<ScDataBarFrmtEntry>::Create( this, mpDoc, maPos, static_cast<const ScDataBarFormat*>( pEntry ) ) ); + maEntries.emplace_back(new ScDataBarFrmtEntry( this, mpDoc, maPos, static_cast<const ScDataBarFormat*>( pEntry ) ) ); break; case ScFormatEntry::Type::Iconset: - maEntries.push_back(VclPtr<ScIconSetFrmtEntry>::Create( this, mpDoc, maPos, static_cast<const ScIconSetFormat*>( pEntry ) ) ); + maEntries.emplace_back(new ScIconSetFrmtEntry( this, mpDoc, maPos, static_cast<const ScIconSetFormat*>( pEntry ) ) ); break; case ScFormatEntry::Type::Date: - maEntries.push_back(VclPtr<ScDateFrmtEntry>::Create( this, mpDoc, static_cast<const ScCondDateFormatEntry*>( pEntry ) ) ); + maEntries.emplace_back(new ScDateFrmtEntry( this, mpDoc, static_cast<const ScCondDateFormatEntry*>( pEntry ) ) ); break; } } @@ -114,19 +107,19 @@ void ScCondFormatList::init(ScDocument* pDoc, ScCondFormatDlg* pDialogParent, switch(eType) { case condformat::dialog::CONDITION: - maEntries.push_back(VclPtr<ScConditionFrmtEntry>::Create( this, mpDoc, pDialogParent, maPos )); + maEntries.emplace_back(new ScConditionFrmtEntry( this, mpDoc, mpDialogParent, maPos )); break; case condformat::dialog::COLORSCALE: - maEntries.push_back(VclPtr<ScColorScale3FrmtEntry>::Create( this, mpDoc, maPos )); + maEntries.emplace_back(new ScColorScale3FrmtEntry( this, mpDoc, maPos )); break; case condformat::dialog::DATABAR: - maEntries.push_back(VclPtr<ScDataBarFrmtEntry>::Create( this, mpDoc, maPos )); + maEntries.emplace_back(new ScDataBarFrmtEntry( this, mpDoc, maPos )); break; case condformat::dialog::ICONSET: - maEntries.push_back(VclPtr<ScIconSetFrmtEntry>::Create( this, mpDoc, maPos )); + maEntries.emplace_back(new ScIconSetFrmtEntry( this, mpDoc, maPos )); break; case condformat::dialog::DATE: - maEntries.push_back(VclPtr<ScDateFrmtEntry>::Create( this, mpDoc )); + maEntries.emplace_back(new ScDateFrmtEntry( this, mpDoc )); break; case condformat::dialog::NONE: break; @@ -149,27 +142,6 @@ void ScCondFormatList::SetRange(const ScRangeList& rRange) maRanges = rRange; } -VCL_BUILDER_FACTORY_CONSTRUCTOR(ScCondFormatList, 0) - -Size ScCondFormatList::GetOptimalSize() const -{ - return LogicToPixel(Size(300, 185), MapMode(MapUnit::MapAppFont)); -} - -void ScCondFormatList::Resize() -{ - Control::Resize(); - RecalcAll(); -} - -void ScCondFormatList::queue_resize(StateChangedType eReason) -{ - Control::queue_resize(eReason); - if (!mpDialogParent) //detects that this is during dispose - return; - RecalcAll(); -} - std::unique_ptr<ScConditionalFormat> ScCondFormatList::GetConditionalFormat() const { if(maEntries.empty()) @@ -204,68 +176,31 @@ void ScCondFormatList::RecalcAll() if (mbFrozen) return; - sal_Int32 nTotalHeight = 0; sal_Int32 nIndex = 1; for (const auto& item : maEntries) { if (!item) continue; - nTotalHeight += item->GetSizePixel().Height(); item->SetIndex(nIndex); + item->set_grid_top_attach(nIndex - 1); ++nIndex; } - - Size aCtrlSize = GetOutputSize(); - long nSrcBarSize = GetSettings().GetStyleSettings().GetScrollBarSize(); - if(nTotalHeight > GetSizePixel().Height()) - { - mbHasScrollBar = true; - mpScrollBar->SetPosSizePixel(Point(aCtrlSize.Width() -nSrcBarSize, 0), - Size(nSrcBarSize, aCtrlSize.Height()) ); - mpScrollBar->SetRangeMax(nTotalHeight); - mpScrollBar->SetVisibleSize(aCtrlSize.Height()); - mpScrollBar->Show(); - } - else - { - mbHasScrollBar = false; - mpScrollBar->Hide(); - } - - Point aPoint(0,-1*mpScrollBar->GetThumbPos()); - for (const auto& item : maEntries) - { - if (!item) - continue; - item->SetPosPixel(aPoint); - Size aSize = item->GetSizePixel(); - if(mbHasScrollBar) - aSize.setWidth( aCtrlSize.Width() - nSrcBarSize ); - else - aSize.setWidth( aCtrlSize.Width() ); - item->SetSizePixel(aSize); - - aPoint.AdjustY(item->GetSizePixel().Height() ); - } } -void ScCondFormatList::DoScroll(long nDelta) +IMPL_LINK(ScCondFormatList, ColFormatTypeHdl, weld::ComboBox&, rBox, void) { - Point aNewPoint = mpScrollBar->GetPosPixel(); - tools::Rectangle aRect(Point(), GetOutputSize()); - aRect.AdjustRight( -(mpScrollBar->GetSizePixel().Width()) ); - Scroll( 0, -nDelta, aRect ); - mpScrollBar->SetPosPixel(aNewPoint); + Application::PostUserEvent(LINK(this, ScCondFormatList, AfterColFormatTypeHdl), &rBox); } -IMPL_LINK(ScCondFormatList, ColFormatTypeHdl, ListBox&, rBox, void) +IMPL_LINK(ScCondFormatList, AfterColFormatTypeHdl, void*, p, void) { + weld::ComboBox* pBox = static_cast<weld::ComboBox*>(p); EntryContainer::iterator itr = std::find_if(maEntries.begin(), maEntries.end(), - [](const VclPtr<ScCondFrmtEntry>& widget) { return widget->IsSelected(); }); + [](const std::unique_ptr<ScCondFrmtEntry>& widget) { return widget->IsSelected(); }); if(itr == maEntries.end()) return; - sal_Int32 nPos = rBox.GetSelectedEntryPos(); + sal_Int32 nPos = pBox->get_active(); switch(nPos) { case 0: @@ -273,32 +208,28 @@ IMPL_LINK(ScCondFormatList, ColFormatTypeHdl, ListBox&, rBox, void) return; Freeze(); - itr->disposeAndClear(); - *itr = VclPtr<ScColorScale2FrmtEntry>::Create( this, mpDoc, maPos ); + itr->reset(new ScColorScale2FrmtEntry(this, mpDoc, maPos)); break; case 1: if((*itr)->GetType() == condformat::entry::COLORSCALE3) return; Freeze(); - itr->disposeAndClear(); - *itr = VclPtr<ScColorScale3FrmtEntry>::Create( this, mpDoc, maPos ); + itr->reset(new ScColorScale3FrmtEntry(this, mpDoc, maPos)); break; case 2: if((*itr)->GetType() == condformat::entry::DATABAR) return; Freeze(); - itr->disposeAndClear(); - *itr = VclPtr<ScDataBarFrmtEntry>::Create( this, mpDoc, maPos ); + itr->reset(new ScDataBarFrmtEntry(this, mpDoc, maPos)); break; case 3: if((*itr)->GetType() == condformat::entry::ICONSET) return; Freeze(); - itr->disposeAndClear(); - *itr = VclPtr<ScIconSetFrmtEntry>::Create( this, mpDoc, maPos ); + itr->reset(new ScIconSetFrmtEntry(this, mpDoc, maPos)); break; default: break; @@ -309,24 +240,24 @@ IMPL_LINK(ScCondFormatList, ColFormatTypeHdl, ListBox&, rBox, void) RecalcAll(); } -IMPL_LINK(ScCondFormatList, TypeListHdl, ListBox&, rBox, void) +IMPL_LINK(ScCondFormatList, TypeListHdl, weld::ComboBox&, rBox, void) { //Resolves: fdo#79021 At this point we are still inside the ListBox Select. //If we call maEntries.replace here then the pBox will be deleted before it //has finished Select and will crash on accessing its deleted this. So Post //to do the real work after the Select has completed - Application::PostUserEvent(LINK(this, ScCondFormatList, AfterTypeListHdl), &rBox, true); + Application::PostUserEvent(LINK(this, ScCondFormatList, AfterTypeListHdl), &rBox); } IMPL_LINK(ScCondFormatList, AfterTypeListHdl, void*, p, void) { - ListBox* pBox = static_cast<ListBox*>(p); + weld::ComboBox* pBox = static_cast<weld::ComboBox*>(p); EntryContainer::iterator itr = std::find_if(maEntries.begin(), maEntries.end(), - [](const VclPtr<ScCondFrmtEntry>& widget) { return widget->IsSelected(); }); + [](const std::unique_ptr<ScCondFrmtEntry>& widget) { return widget->IsSelected(); }); if(itr == maEntries.end()) return; - sal_Int32 nPos = pBox->GetSelectedEntryPos(); + sal_Int32 nPos = pBox->get_active(); switch(nPos) { case 0: @@ -343,8 +274,7 @@ IMPL_LINK(ScCondFormatList, AfterTypeListHdl, void*, p, void) return; } Freeze(); - itr->disposeAndClear(); - *itr = VclPtr<ScColorScale3FrmtEntry>::Create(this, mpDoc, maPos); + itr->reset(new ScColorScale3FrmtEntry(this, mpDoc, maPos)); mpDialogParent->InvalidateRefData(); (*itr)->SetActive(); break; @@ -353,8 +283,7 @@ IMPL_LINK(ScCondFormatList, AfterTypeListHdl, void*, p, void) return; Freeze(); - itr->disposeAndClear(); - *itr = VclPtr<ScConditionFrmtEntry>::Create(this, mpDoc, mpDialogParent, maPos); + itr->reset(new ScConditionFrmtEntry(this, mpDoc, mpDialogParent, maPos)); mpDialogParent->InvalidateRefData(); (*itr)->SetActive(); break; @@ -363,8 +292,7 @@ IMPL_LINK(ScCondFormatList, AfterTypeListHdl, void*, p, void) return; Freeze(); - itr->disposeAndClear(); - *itr = VclPtr<ScFormulaFrmtEntry>::Create(this, mpDoc, mpDialogParent, maPos); + itr->reset(new ScFormulaFrmtEntry(this, mpDoc, mpDialogParent, maPos)); mpDialogParent->InvalidateRefData(); (*itr)->SetActive(); break; @@ -373,8 +301,7 @@ IMPL_LINK(ScCondFormatList, AfterTypeListHdl, void*, p, void) return; Freeze(); - itr->disposeAndClear(); - *itr = VclPtr<ScDateFrmtEntry>::Create( this, mpDoc ); + itr->reset(new ScDateFrmtEntry( this, mpDoc )); mpDialogParent->InvalidateRefData(); (*itr)->SetActive(); break; @@ -384,30 +311,28 @@ IMPL_LINK(ScCondFormatList, AfterTypeListHdl, void*, p, void) RecalcAll(); } -IMPL_LINK_NOARG( ScCondFormatList, AddBtnHdl, Button*, void ) +IMPL_LINK_NOARG( ScCondFormatList, AddBtnHdl, weld::Button&, void ) { Freeze(); - VclPtr<ScCondFrmtEntry> pNewEntry = VclPtr<ScConditionFrmtEntry>::Create(this, mpDoc, mpDialogParent, maPos); - maEntries.push_back( pNewEntry ); + maEntries.emplace_back(new ScConditionFrmtEntry(this, mpDoc, mpDialogParent, maPos)); for(auto& rxEntry : maEntries) { rxEntry->SetInactive(); } mpDialogParent->InvalidateRefData(); - pNewEntry->SetActive(); + maEntries.back()->SetActive(); mpDialogParent->OnSelectionChange(maEntries.size() - 1, maEntries.size()); Thaw(); RecalcAll(); } -IMPL_LINK_NOARG( ScCondFormatList, RemoveBtnHdl, Button*, void ) +IMPL_LINK_NOARG( ScCondFormatList, RemoveBtnHdl, weld::Button&, void ) { Freeze(); auto itr = std::find_if(maEntries.begin(), maEntries.end(), - [](const VclPtr<ScCondFrmtEntry>& widget) { return widget->IsSelected(); }); + [](const std::unique_ptr<ScCondFrmtEntry>& widget) { return widget->IsSelected(); }); if (itr != maEntries.end()) { - itr->disposeAndClear(); maEntries.erase(itr); } mpDialogParent->InvalidateRefData(); @@ -416,13 +341,13 @@ IMPL_LINK_NOARG( ScCondFormatList, RemoveBtnHdl, Button*, void ) RecalcAll(); } -IMPL_LINK_NOARG(ScCondFormatList, UpBtnHdl, Button*, void) +IMPL_LINK_NOARG(ScCondFormatList, UpBtnHdl, weld::Button&, void) { Freeze(); size_t index = 0; for (size_t i = 0; i < maEntries.size(); i++) { - auto widget = maEntries[i]; + auto& widget = maEntries[i]; if (widget->IsSelected() && i > 0) { std::swap(maEntries[i], maEntries[i - 1]); @@ -436,13 +361,13 @@ IMPL_LINK_NOARG(ScCondFormatList, UpBtnHdl, Button*, void) RecalcAll(); } -IMPL_LINK_NOARG(ScCondFormatList, DownBtnHdl, Button*, void) +IMPL_LINK_NOARG(ScCondFormatList, DownBtnHdl, weld::Button&, void) { Freeze(); size_t index = 0; for (size_t i = 0; i < maEntries.size(); i++) { - auto widget = maEntries[i]; + auto& widget = maEntries[i]; if (widget->IsSelected()) { index = i; @@ -466,13 +391,10 @@ IMPL_LINK( ScCondFormatList, EntrySelectHdl, ScCondFrmtEntry&, rEntry, void ) return; Freeze(); - //A child has focus, but we will hide that, so regrab to whatever new thing gets - //shown instead of leaving it stuck in the inaccessible hidden element - bool bReGrabFocus = HasChildPathFocus(); size_t index = 0; for(size_t i = 0; i < maEntries.size(); i++) { - if (maEntries[i] == &rEntry) + if (maEntries[i].get() == &rEntry) { index = i; } @@ -483,37 +405,31 @@ IMPL_LINK( ScCondFormatList, EntrySelectHdl, ScCondFrmtEntry&, rEntry, void ) rEntry.SetActive(); Thaw(); RecalcAll(); - if (bReGrabFocus) - GrabFocus(); -} - -IMPL_LINK_NOARG( ScCondFormatList, ScrollHdl, ScrollBar*, void ) -{ - DoScroll(mpScrollBar->GetDelta()); } ScCondFormatDlg::ScCondFormatDlg(SfxBindings* pB, SfxChildWindow* pCW, - vcl::Window* pParent, ScViewData* pViewData, + weld::Window* pParent, ScViewData* pViewData, const ScCondFormatDlgItem* pItem) - : ScAnyRefDlg(pB, pCW, pParent, "ConditionalFormatDialog", - "modules/scalc/ui/conditionalformatdialog.ui") + : ScAnyRefDlgController(pB, pCW, pParent, + "modules/scalc/ui/conditionalformatdialog.ui", + "ConditionalFormatDialog") , mpViewData(pViewData) - , mpLastEdit(nullptr) , mpDlgItem(static_cast<ScCondFormatDlgItem*>(pItem->Clone())) -{ - get(mpBtnOk, "ok"); - get(mpBtnAdd, "add"); - get(mpBtnUp, "up"); - get(mpBtnDown, "down"); - get(mpBtnRemove, "delete"); - get(mpBtnCancel, "cancel"); - - get(mpFtRange, "ftassign"); - get(mpEdRange, "edassign"); - mpEdRange->SetReferences(this, mpFtRange); - - get(mpRbRange, "rbassign"); - mpRbRange->SetReferences(this, mpEdRange); + , mpLastEdit(nullptr) + , mxBtnOk(m_xBuilder->weld_button("ok")) + , mxBtnAdd(m_xBuilder->weld_button("add")) + , mxBtnRemove(m_xBuilder->weld_button("delete")) + , mxBtnUp(m_xBuilder->weld_button("up")) + , mxBtnDown(m_xBuilder->weld_button("down")) + , mxBtnCancel(m_xBuilder->weld_button("cancel")) + , mxFtRange(m_xBuilder->weld_label("ftassign")) + , mxEdRange(new formula::WeldRefEdit(m_xBuilder->weld_entry("edassign"))) + , mxRbRange(new formula::WeldRefButton(m_xBuilder->weld_button("rbassign"))) + , mxCondFormList(new ScCondFormatList(this, m_xBuilder->weld_scrolled_window("listwindow"), + m_xBuilder->weld_container("list"))) +{ + mxEdRange->SetReferences(this, mxFtRange.get()); + mxRbRange->SetReferences(this, mxEdRange.get()); ScConditionalFormat* pFormat = nullptr; mnKey = mpDlgItem->GetIndex(); @@ -545,58 +461,35 @@ ScCondFormatDlg::ScCondFormatDlg(SfxBindings* pB, SfxChildWindow* pCW, } maPos = aRange.GetTopLeftCorner(); - get(mpCondFormList, "list"); - mpCondFormList->init(mpViewData->GetDocument(), this, pFormat, aRange, maPos, mpDlgItem->GetDialogType()); + mxCondFormList->init(mpViewData->GetDocument(), pFormat, aRange, maPos, mpDlgItem->GetDialogType()); - // tdf#114603: enable setting the background to a different color; - // relevant for GTK; see also #i75179# - mpEdRange->SetForceControlBackground(true); - - mpBtnOk->SetClickHdl(LINK(this, ScCondFormatDlg, BtnPressedHdl ) ); - mpBtnAdd->SetClickHdl( LINK( mpCondFormList, ScCondFormatList, AddBtnHdl ) ); - mpBtnRemove->SetClickHdl( LINK( mpCondFormList, ScCondFormatList, RemoveBtnHdl ) ); - mpBtnUp->SetClickHdl(LINK(mpCondFormList, ScCondFormatList, UpBtnHdl)); - mpBtnDown->SetClickHdl(LINK(mpCondFormList, ScCondFormatList, DownBtnHdl)); - mpBtnCancel->SetClickHdl( LINK(this, ScCondFormatDlg, BtnPressedHdl ) ); - mpEdRange->SetModifyHdl( LINK( this, ScCondFormatDlg, EdRangeModifyHdl ) ); - mpEdRange->SetGetFocusHdl( LINK( this, ScCondFormatDlg, RangeGetFocusHdl ) ); + mxBtnOk->connect_clicked(LINK(this, ScCondFormatDlg, BtnPressedHdl ) ); + mxBtnAdd->connect_clicked( LINK( mxCondFormList.get(), ScCondFormatList, AddBtnHdl ) ); + mxBtnRemove->connect_clicked( LINK( mxCondFormList.get(), ScCondFormatList, RemoveBtnHdl ) ); + mxBtnUp->connect_clicked(LINK(mxCondFormList.get(), ScCondFormatList, UpBtnHdl)); + mxBtnDown->connect_clicked(LINK(mxCondFormList.get(), ScCondFormatList, DownBtnHdl)); + mxBtnCancel->connect_clicked( LINK(this, ScCondFormatDlg, BtnPressedHdl ) ); + mxEdRange->SetModifyHdl( LINK( this, ScCondFormatDlg, EdRangeModifyHdl ) ); + mxEdRange->SetGetFocusHdl( LINK( this, ScCondFormatDlg, RangeGetFocusHdl ) ); OUString aRangeString; aRange.Format(aRangeString, ScRefFlags::VALID, pViewData->GetDocument(), pViewData->GetDocument()->GetAddressConvention()); - mpEdRange->SetText(aRangeString); + mxEdRange->SetText(aRangeString); - msBaseTitle = GetText(); + msBaseTitle = m_xDialog->get_title(); updateTitle(); } void ScCondFormatDlg::updateTitle() { - OUString aTitle = msBaseTitle + " " + mpEdRange->GetText(); + OUString aTitle = msBaseTitle + " " + mxEdRange->GetText(); - SetText(aTitle); + m_xDialog->set_title(aTitle); } ScCondFormatDlg::~ScCondFormatDlg() { - disposeOnce(); -} - -void ScCondFormatDlg::dispose() -{ - mpBtnOk.clear(); - mpBtnAdd.clear(); - mpBtnRemove.clear(); - mpBtnUp.clear(); - mpBtnDown.clear(); - mpBtnCancel.clear(); - mpFtRange.clear(); - mpEdRange.clear(); - mpRbRange.clear(); - mpCondFormList.clear(); - mpLastEdit.clear(); - - ScAnyRefDlg::dispose(); } void ScCondFormatDlg::SetActive() @@ -604,14 +497,14 @@ void ScCondFormatDlg::SetActive() if(mpLastEdit) mpLastEdit->GrabFocus(); else - mpEdRange->GrabFocus(); + mxEdRange->GrabFocus(); RefInputDone(); } void ScCondFormatDlg::RefInputDone( bool bForced ) { - ScAnyRefDlg::RefInputDone(bForced); + ScAnyRefDlgController::RefInputDone(bForced); // ScAnyRefModalDlg::RefInputDone resets the title back // to its original state. @@ -627,39 +520,39 @@ void ScCondFormatDlg::RefInputDone( bool bForced ) bool ScCondFormatDlg::IsTableLocked() const { - return !mpLastEdit || mpLastEdit == mpEdRange; + return !mpLastEdit || mpLastEdit == mxEdRange.get(); } bool ScCondFormatDlg::IsRefInputMode() const { - return mpEdRange->IsEnabled(); + return mxEdRange->GetWidget()->get_sensitive(); } void ScCondFormatDlg::SetReference(const ScRange& rRef, ScDocument*) { - formula::RefEdit* pEdit = mpLastEdit; + formula::WeldRefEdit* pEdit = mpLastEdit; if (!mpLastEdit) - pEdit = mpEdRange; + pEdit = mxEdRange.get(); - if( pEdit->IsEnabled() ) + if (pEdit->GetWidget()->get_sensitive()) { if(rRef.aStart != rRef.aEnd) RefInputStart(pEdit); ScRefFlags nFlags; - if (mpLastEdit && mpLastEdit != mpEdRange) + if (mpLastEdit && mpLastEdit != mxEdRange.get()) nFlags = ScRefFlags::RANGE_ABS_3D; else nFlags = ScRefFlags::RANGE_ABS; OUString aRefStr(rRef.Format(nFlags, mpViewData->GetDocument(), ScAddress::Details(mpViewData->GetDocument()->GetAddressConvention(), 0, 0))); - if (pEdit != mpEdRange) + if (pEdit != mxEdRange.get()) { Selection sel = pEdit->GetSelection(); - sel.Justify(); // in case of RtL selection + sel.Justify(); // in case of RTL selection sel.Max() = sel.Min() + aRefStr.getLength(); - pEdit->ReplaceSelected(aRefStr); + pEdit->GetWidget()->replace_selection(aRefStr); pEdit->SetSelection(sel); // to replace it again with next drag event } else @@ -670,15 +563,15 @@ void ScCondFormatDlg::SetReference(const ScRange& rRef, ScDocument*) std::unique_ptr<ScConditionalFormat> ScCondFormatDlg::GetConditionalFormat() const { - OUString aRangeStr = mpEdRange->GetText(); + OUString aRangeStr = mxEdRange->GetText(); if(aRangeStr.isEmpty()) return nullptr; ScRangeList aRange; ScRefFlags nFlags = aRange.Parse(aRangeStr, mpViewData->GetDocument(), mpViewData->GetDocument()->GetAddressConvention(), maPos.Tab()); - mpCondFormList->SetRange(aRange); - std::unique_ptr<ScConditionalFormat> pFormat = mpCondFormList->GetConditionalFormat(); + mxCondFormList->SetRange(aRange); + std::unique_ptr<ScConditionalFormat> pFormat = mxCondFormList->GetConditionalFormat(); if((nFlags & ScRefFlags::VALID) && !aRange.empty() && pFormat) pFormat->SetRange(aRange); @@ -695,9 +588,9 @@ void ScCondFormatDlg::InvalidateRefData() // Close the Conditional Format Dialog // -bool ScCondFormatDlg::Close() +void ScCondFormatDlg::Close() { - return DoClose( ScCondFormatDlgWrapper::GetChildWindowId() ); + DoClose( ScCondFormatDlgWrapper::GetChildWindowId() ); } // Occurs when the Conditional Format Dialog the OK button is pressed. @@ -740,7 +633,7 @@ void ScCondFormatDlg::OkPressed() GetBindings().GetDispatcher()->Execute( SID_OPENDLG_CONDFRMT_MANAGER, SfxCallMode::ASYNCHRON ); } - Close(); + m_xDialog->response(RET_OK); } // Occurs when the Conditional Format Dialog is cancelled. @@ -755,24 +648,24 @@ void ScCondFormatDlg::CancelPressed() GetBindings().GetDispatcher()->Execute( SID_OPENDLG_CONDFRMT_MANAGER, SfxCallMode::ASYNCHRON ); } - Close(); + m_xDialog->response(RET_CANCEL); } void ScCondFormatDlg::OnSelectionChange(size_t nIndex, size_t nSize, bool bSelected) { if (nSize <= 1 || !bSelected) { - mpBtnUp->Enable(false); - mpBtnDown->Enable(false); + mxBtnUp->set_sensitive(false); + mxBtnDown->set_sensitive(false); } else { - mpBtnUp->Enable(nIndex != 0); - mpBtnDown->Enable(nIndex < nSize - 1); + mxBtnUp->set_sensitive(nIndex != 0); + mxBtnDown->set_sensitive(nIndex < nSize - 1); } } -IMPL_LINK( ScCondFormatDlg, EdRangeModifyHdl, Edit&, rEdit, void ) +IMPL_LINK(ScCondFormatDlg, EdRangeModifyHdl, formula::WeldRefEdit&, rEdit, void) { OUString aRangeStr = rEdit.GetText(); ScRangeList aRange; @@ -780,28 +673,28 @@ IMPL_LINK( ScCondFormatDlg, EdRangeModifyHdl, Edit&, rEdit, void ) mpViewData->GetDocument()->GetAddressConvention()); if(nFlags & ScRefFlags::VALID) { - rEdit.SetControlBackground(GetSettings().GetStyleSettings().GetWindowColor()); - mpBtnOk->Enable(true); + rEdit.GetWidget()->set_message_type(weld::EntryMessageType::Normal); + mxBtnOk->set_sensitive(true); } else { - rEdit.SetControlBackground(COL_LIGHTRED); - mpBtnOk->Enable(false); + rEdit.GetWidget()->set_message_type(weld::EntryMessageType::Error); + mxBtnOk->set_sensitive(false); } updateTitle(); } -IMPL_LINK( ScCondFormatDlg, RangeGetFocusHdl, Control&, rControl, void ) +IMPL_LINK(ScCondFormatDlg, RangeGetFocusHdl, formula::WeldRefEdit&, rControl, void) { - mpLastEdit = static_cast<formula::RefEdit*>(&rControl); + mpLastEdit = &rControl; } -IMPL_LINK( ScCondFormatDlg, BtnPressedHdl, Button*, pBtn, void) +IMPL_LINK( ScCondFormatDlg, BtnPressedHdl, weld::Button&, rBtn, void) { - if (pBtn == mpBtnOk) + if (&rBtn == mxBtnOk.get()) OkPressed(); - else if (pBtn == mpBtnCancel) + else if (&rBtn == mxBtnCancel.get()) CancelPressed(); } diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx index 8b1eb6e47c24..2a0e5f5ad34b 100644 --- a/sc/source/ui/condformat/condformatdlgentry.cxx +++ b/sc/source/ui/condformat/condformatdlgentry.cxx @@ -19,6 +19,7 @@ #include <svl/style.hxx> #include <sfx2/dispatch.hxx> +#include <sfx2/frame.hxx> #include <svl/stritem.hxx> #include <svl/intitem.hxx> #include <svx/colorbox.hxx> @@ -37,32 +38,21 @@ #include <set> -ScCondFrmtEntry::ScCondFrmtEntry(vcl::Window* pParent, ScDocument* pDoc, const ScAddress& rPos) - : VclContainer(pParent, WB_CLIPCHILDREN | WB_BORDER | WB_CHILDDLGCTRL) +ScCondFrmtEntry::ScCondFrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, const ScAddress& rPos) + : mpParent(pParent) + , mxBuilder(Application::CreateBuilder(pParent->GetContainer(), "modules/scalc/ui/conditionalentry.ui")) + , mxBorder(mxBuilder->weld_widget("border")) + , mxGrid(mxBuilder->weld_container("grid")) + , mxFtCondNr(mxBuilder->weld_label("number")) + , mxFtCondition(mxBuilder->weld_label("condition")) , mbActive(false) , maStrCondition(ScResId(SCSTR_CONDITION)) + , mxLbType(mxBuilder->weld_combo_box("type")) , mpDoc(pDoc) , maPos(rPos) { - m_pUIBuilder.reset(new VclBuilder(this, getUIRootDir(), "modules/scalc/ui/conditionalentry.ui")); - - get(maGrid, "grid"); - get(maFtCondNr, "number"); - get(maFtCondition, "condition"); - get(maLbType, "type"); - - Color aBack(GetSettings().GetStyleSettings().GetWindowColor()); - - SetControlBackground(aBack); - SetBackground(GetControlBackground()); - - maFtCondNr->SetControlBackground(aBack); - maFtCondNr->SetBackground(maFtCondNr->GetControlBackground()); - - maFtCondition->SetControlBackground(aBack); - maFtCondition->SetBackground(maFtCondition->GetControlBackground()); - - maLbType->SetSelectHdl( LINK( pParent, ScCondFormatList, TypeListHdl ) ); + mxLbType->connect_changed(LINK(pParent, ScCondFormatList, TypeListHdl)); + mxGrid->connect_mouse_press(LINK(this, ScCondFrmtEntry, EntrySelectHdl)); maClickHdl = LINK( pParent, ScCondFormatList, EntrySelectHdl ); Show(); @@ -70,81 +60,43 @@ ScCondFrmtEntry::ScCondFrmtEntry(vcl::Window* pParent, ScDocument* pDoc, const S ScCondFrmtEntry::~ScCondFrmtEntry() { - disposeOnce(); -} - -Size ScCondFrmtEntry::calculateRequisition() const -{ - return getLayoutRequisition(*maGrid); + mpParent->GetContainer()->move(mxBorder.get(), nullptr); } -void ScCondFrmtEntry::setAllocation(const Size &rAllocation) +IMPL_LINK_NOARG(ScCondFrmtEntry, EntrySelectHdl, const MouseEvent&, bool) { - setLayoutPosSize(*maGrid, Point(0, 0), rAllocation); -} - -void ScCondFrmtEntry::dispose() -{ - maFtCondNr.clear(); - maFtCondition.clear(); - maLbType.clear(); - maGrid.clear(); - disposeBuilder(); - VclContainer::dispose(); -} - -bool ScCondFrmtEntry::EventNotify( NotifyEvent& rNEvt ) -{ - if (rNEvt.GetType() == MouseNotifyEvent::MOUSEBUTTONDOWN) - { - maClickHdl.Call(*this); - } - return VclContainer::EventNotify(rNEvt); + maClickHdl.Call(*this); + return false; } void ScCondFrmtEntry::SetIndex(sal_Int32 nIndex) { - maFtCondNr->SetText(maStrCondition + OUString::number(nIndex)); -} - -void ScCondFrmtEntry::SetHeight() -{ - const long nMaxHeight = get_preferred_size().Height(); - if (nMaxHeight > 0) - { - Size aSize = GetSizePixel(); - const long nPad = LogicToPixel(Size(0, 2), MapMode(MapUnit::MapAppFont)).getHeight(); - aSize.setHeight( nMaxHeight + nPad ); - SetSizePixel(aSize); - } + mxFtCondNr->set_label(maStrCondition + OUString::number(nIndex)); } void ScCondFrmtEntry::Select() { - maFtCondition->SetText(OUString()); - maFtCondition->Hide(); - maLbType->Show(); + mxFtCondition->set_label(OUString()); + mxFtCondition->hide(); + mxLbType->show(); mbActive = true; - SetHeight(); } void ScCondFrmtEntry::Deselect() { OUString aCondText = GetExpressionString(); - maFtCondition->SetText(aCondText); - maFtCondition->Show(); - maLbType->Hide(); + mxFtCondition->set_label(aCondText); + mxFtCondition->show(); + mxLbType->hide(); mbActive = false; - SetHeight(); } //condition namespace { -void FillStyleListBox( const ScDocument* pDoc, ListBox& rLbStyle ) +void FillStyleListBox( const ScDocument* pDoc, weld::ComboBox& rLbStyle ) { - rLbStyle.SetSeparatorPos(0); std::set<OUString> aStyleNames; SfxStyleSheetIterator aStyleIter( pDoc->GetStyleSheetPool(), SfxStyleFamily::Para ); for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() ) @@ -153,7 +105,7 @@ void FillStyleListBox( const ScDocument* pDoc, ListBox& rLbStyle ) } for(const auto& rStyleName : aStyleNames) { - rLbStyle.InsertEntry( rStyleName ); + rLbStyle.append_text(rStyleName); } } @@ -186,21 +138,22 @@ const ScConditionMode ScConditionFrmtEntry::mpEntryToCond[ScConditionFrmtEntry:: ScConditionMode::NotContainsText }; -ScConditionFrmtEntry::ScConditionFrmtEntry(vcl::Window* pParent, ScDocument* pDoc, ScCondFormatDlg* pDialogParent, +ScConditionFrmtEntry::ScConditionFrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, ScCondFormatDlg* pDialogParent, const ScAddress& rPos, const ScCondFormatEntry* pFormatEntry) : ScCondFrmtEntry(pParent, pDoc, rPos) + , mxLbCondType(mxBuilder->weld_combo_box("typeis")) + , mxEdVal1(new formula::WeldRefEdit(mxBuilder->weld_entry("val1"))) + , mxEdVal2(new formula::WeldRefEdit(mxBuilder->weld_entry("val2"))) + , mxFtVal(mxBuilder->weld_label("valueft")) + , mxFtStyle(mxBuilder->weld_label("styleft")) + , mxLbStyle(mxBuilder->weld_combo_box("style")) + , mxWdPreviewWin(mxBuilder->weld_widget("previewwin")) + , mxWdPreview(new weld::CustomWeld(*mxBuilder, "preview", maWdPreview)) , mbIsInStyleCreate(false) { - get(maLbCondType, "typeis"); - get(maEdVal1, "val1"); - get(maEdVal2, "val2"); - get(maFtVal, "valueft"); - get(maFtStyle, "styleft"); - get(maLbStyle, "style"); - get(maWdPreview, "preview"); - maWdPreview->set_height_request(maLbStyle->get_preferred_size().Height()); + mxWdPreview->set_size_request(-1, mxLbStyle->get_preferred_size().Height()); - maLbType->SelectEntryPos(1); + mxLbType->set_active(1); Init(pDialogParent); @@ -208,101 +161,86 @@ ScConditionFrmtEntry::ScConditionFrmtEntry(vcl::Window* pParent, ScDocument* pDo if(pFormatEntry) { - maLbStyle->SelectEntry(pFormatEntry->GetStyle()); - StyleSelectHdl(*maLbStyle); + mxLbStyle->set_active_text(pFormatEntry->GetStyle()); + StyleSelectHdl(*mxLbStyle); ScConditionMode eMode = pFormatEntry->GetOperation(); - maLbCondType->SelectEntryPos(ConditionModeToEntryPos(eMode)); + mxLbCondType->set_active(ConditionModeToEntryPos(eMode)); switch(GetNumberEditFields(eMode)) { case 0: - maEdVal1->Hide(); - maEdVal2->Hide(); + mxEdVal1->GetWidget()->hide(); + mxEdVal2->GetWidget()->hide(); break; case 1: - maEdVal1->Show(); - maEdVal1->SetText(pFormatEntry->GetExpression(maPos, 0)); - maEdVal2->Hide(); - OnEdChanged(*maEdVal1); + mxEdVal1->GetWidget()->show(); + mxEdVal1->SetText(pFormatEntry->GetExpression(maPos, 0)); + mxEdVal2->GetWidget()->hide(); + OnEdChanged(*mxEdVal1); break; case 2: - maEdVal1->Show(); - maEdVal1->SetText(pFormatEntry->GetExpression(maPos, 0)); - OnEdChanged(*maEdVal1); - maEdVal2->Show(); - maEdVal2->SetText(pFormatEntry->GetExpression(maPos, 1)); - OnEdChanged(*maEdVal2); + mxEdVal1->GetWidget()->show(); + mxEdVal1->SetText(pFormatEntry->GetExpression(maPos, 0)); + OnEdChanged(*mxEdVal1); + mxEdVal2->GetWidget()->show(); + mxEdVal2->SetText(pFormatEntry->GetExpression(maPos, 1)); + OnEdChanged(*mxEdVal2); break; } } else { - maLbCondType->SelectEntryPos(0); - maEdVal2->Hide(); - maLbStyle->SelectEntryPos(1); + mxLbCondType->set_active(0); + mxEdVal2->GetWidget()->hide(); + mxLbStyle->set_active(1); } } ScConditionFrmtEntry::~ScConditionFrmtEntry() { - disposeOnce(); -} - -void ScConditionFrmtEntry::dispose() -{ - maLbCondType.clear(); - maEdVal1.clear(); - maEdVal2.clear(); - maFtVal.clear(); - maFtStyle.clear(); - maLbStyle.clear(); - maWdPreview.clear(); - ScCondFrmtEntry::dispose(); } void ScConditionFrmtEntry::Init(ScCondFormatDlg* pDialogParent) { - maEdVal1->SetGetFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeGetFocusHdl ) ); - maEdVal2->SetGetFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeGetFocusHdl ) ); - - maEdVal1->SetForceControlBackground(true); - maEdVal2->SetForceControlBackground(true); + mxEdVal1->SetGetFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeGetFocusHdl ) ); + mxEdVal2->SetGetFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeGetFocusHdl ) ); - maEdVal1->SetModifyHdl( LINK( this, ScConditionFrmtEntry, OnEdChanged ) ); - maEdVal2->SetModifyHdl( LINK( this, ScConditionFrmtEntry, OnEdChanged ) ); + mxEdVal1->SetModifyHdl( LINK( this, ScConditionFrmtEntry, OnEdChanged ) ); + mxEdVal2->SetModifyHdl( LINK( this, ScConditionFrmtEntry, OnEdChanged ) ); - FillStyleListBox( mpDoc, *maLbStyle ); - maLbStyle->SetSelectHdl( LINK( this, ScConditionFrmtEntry, StyleSelectHdl ) ); + FillStyleListBox( mpDoc, *mxLbStyle ); + mxLbStyle->connect_changed( LINK( this, ScConditionFrmtEntry, StyleSelectHdl ) ); - maLbCondType->SetSelectHdl( LINK( this, ScConditionFrmtEntry, ConditionTypeSelectHdl ) ); + mxLbCondType->connect_changed( LINK( this, ScConditionFrmtEntry, ConditionTypeSelectHdl ) ); } ScFormatEntry* ScConditionFrmtEntry::createConditionEntry() const { - ScConditionMode eMode = EntryPosToConditionMode(maLbCondType->GetSelectedEntryPos()); - OUString aExpr1 = maEdVal1->GetText(); + ScConditionMode eMode = EntryPosToConditionMode(mxLbCondType->get_active()); + OUString aExpr1 = mxEdVal1->GetText(); OUString aExpr2; if (GetNumberEditFields(eMode) == 2) { - aExpr2 = maEdVal2->GetText(); + aExpr2 = mxEdVal2->GetText(); if (aExpr2.isEmpty()) { return nullptr; } } - ScFormatEntry* pEntry = new ScCondFormatEntry(eMode, aExpr1, aExpr2, mpDoc, maPos, maLbStyle->GetSelectedEntry()); + ScFormatEntry* pEntry = new ScCondFormatEntry(eMode, aExpr1, aExpr2, mpDoc, maPos, mxLbStyle->get_active_text()); return pEntry; } -IMPL_LINK(ScConditionFrmtEntry, OnEdChanged, Edit&, rEdit, void) +IMPL_LINK(ScConditionFrmtEntry, OnEdChanged, formula::WeldRefEdit&, rRefEdit, void) { - OUString aFormula = rEdit.GetText(); + weld::Entry& rEdit = *rRefEdit.GetWidget(); + OUString aFormula = rEdit.get_text(); if( aFormula.isEmpty() ) { - maFtVal->SetText(ScResId(STR_ENTER_VALUE)); + mxFtVal->set_label(ScResId(STR_ENTER_VALUE)); return; } @@ -312,8 +250,8 @@ IMPL_LINK(ScConditionFrmtEntry, OnEdChanged, Edit&, rEdit, void) // Error, warn the user if( ta->GetCodeError() != FormulaError::NONE || ( ta->GetLen() == 0 ) ) { - rEdit.SetControlBackground(COL_LIGHTRED); - maFtVal->SetText(ScResId(STR_VALID_DEFERROR)); + rEdit.set_message_type(weld::EntryMessageType::Error); + mxFtVal->set_label(ScResId(STR_VALID_DEFERROR)); return; } @@ -325,24 +263,24 @@ IMPL_LINK(ScConditionFrmtEntry, OnEdChanged, Edit&, rEdit, void) ( ( op == ocBad ) && ( t == formula::svString ) ) ) { - rEdit.SetControlBackground(COL_YELLOW); - maFtVal->SetText(ScResId(STR_UNQUOTED_STRING)); + rEdit.set_message_type(weld::EntryMessageType::Warning); + mxFtVal->set_label(ScResId(STR_UNQUOTED_STRING)); return; } - rEdit.SetControlBackground(GetSettings().GetStyleSettings().GetWindowColor()); - maFtVal->SetText(""); + rEdit.set_message_type(weld::EntryMessageType::Normal); + mxFtVal->set_label(""); } void ScConditionFrmtEntry::Select() { - maFtVal->Show(); + mxFtVal->show(); ScCondFrmtEntry::Select(); } void ScConditionFrmtEntry::Deselect() { - maFtVal->Hide(); + mxFtVal->hide(); ScCondFrmtEntry::Deselect(); } @@ -404,7 +342,7 @@ sal_Int32 ScConditionFrmtEntry::GetNumberEditFields( ScConditionMode eMode ) OUString ScConditionFrmtEntry::GetExpressionString() { - return ScCondFormatHelper::GetExpression(CONDITION, maLbCondType->GetSelectedEntryPos(), maEdVal1->GetText(), maEdVal2->GetText()); + return ScCondFormatHelper::GetExpression(CONDITION, mxLbCondType->get_active(), mxEdVal1->GetText(), mxEdVal2->GetText()); } ScFormatEntry* ScConditionFrmtEntry::GetEntry() const @@ -414,48 +352,46 @@ ScFormatEntry* ScConditionFrmtEntry::GetEntry() const void ScConditionFrmtEntry::SetActive() { - ScConditionMode eMode = EntryPosToConditionMode(maLbCondType->GetSelectedEntryPos()); - maLbCondType->Show(); + ScConditionMode eMode = EntryPosToConditionMode(mxLbCondType->get_active()); + mxLbCondType->show(); switch(GetNumberEditFields(eMode)) { case 1: - maEdVal1->Show(); + mxEdVal1->GetWidget()->show(); break; case 2: - maEdVal1->Show(); - maEdVal2->Show(); + mxEdVal1->GetWidget()->show(); + mxEdVal2->GetWidget()->show(); break; } - maFtStyle->Show(); - maLbStyle->Show(); - maWdPreview->Show(); + mxFtStyle->show(); + mxLbStyle->show(); + mxWdPreviewWin->show(); Select(); } void ScConditionFrmtEntry::SetInactive() { - maLbCondType->Hide(); - maEdVal1->Hide(); - maEdVal2->Hide(); - maFtStyle->Hide(); - maLbStyle->Hide(); - maWdPreview->Hide(); + mxLbCondType->hide(); + mxEdVal1->GetWidget()->hide(); + mxEdVal2->GetWidget()->hide(); + mxFtStyle->hide(); + mxLbStyle->hide(); + mxWdPreviewWin->hide(); Deselect(); } namespace { -void UpdateStyleList(ListBox& rLbStyle, const ScDocument* pDoc) +void UpdateStyleList(weld::ComboBox& rLbStyle, const ScDocument* pDoc) { - OUString aSelectedStyle = rLbStyle.GetSelectedEntry(); - for(sal_Int32 i = rLbStyle.GetEntryCount(); i > 1; --i) - { - rLbStyle.RemoveEntry(i - 1); - } + OUString aSelectedStyle = rLbStyle.get_active_text(); + for (sal_Int32 i = rLbStyle.get_count(); i > 1; --i) + rLbStyle.remove(i - 1); FillStyleListBox(pDoc, rLbStyle); - rLbStyle.SelectEntry(aSelectedStyle); + rLbStyle.set_active_text(aSelectedStyle); } } @@ -465,19 +401,21 @@ void ScConditionFrmtEntry::Notify(SfxBroadcaster&, const SfxHint& rHint) if(rHint.GetId() == SfxHintId::StyleSheetModified) { if(!mbIsInStyleCreate) - UpdateStyleList(*maLbStyle, mpDoc); + UpdateStyleList(*mxLbStyle, mpDoc); } } namespace { -void StyleSelect( ListBox& rLbStyle, const ScDocument* pDoc, SvxFontPrevWindow& rWdPreview ) +void StyleSelect(weld::Window* pDialogParent, weld::ComboBox& rLbStyle, const ScDocument* pDoc, FontPrevWindow& rWdPreview) { - if(rLbStyle.GetSelectedEntryPos() == 0) + if (rLbStyle.get_active() == 0) { // call new style dialog SfxUInt16Item aFamilyItem( SID_STYLE_FAMILY, sal_uInt16(SfxStyleFamily::Para) ); SfxStringItem aRefItem( SID_STYLE_REFERENCE, ScResId(STR_STYLENAME_STANDARD) ); + css::uno::Any aAny(pDialogParent->GetXWindow()); + SfxUnoAnyItem aDialogParent( SID_DIALOG_PARENT, aAny ); // unlock the dispatcher so SID_STYLE_NEW can be executed // (SetDispatcherLock would affect all Calc documents) @@ -491,7 +429,7 @@ void StyleSelect( ListBox& rLbStyle, const ScDocument* pDoc, SvxFontPrevWindow& // The return value (SfxUInt16Item) is ignored, look for new styles instead. pDisp->ExecuteList(SID_STYLE_NEW, SfxCallMode::SYNCHRON | SfxCallMode::RECORD, - { &aFamilyItem, &aRefItem }); + { &aFamilyItem, &aRefItem }, { &aDialogParent }); if (bLocked) pDisp->Lock(true); @@ -502,21 +440,21 @@ void StyleSelect( ListBox& rLbStyle, const ScDocument* pDoc, SvxFontPrevWindow& for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle && !bFound; pStyle = aStyleIter.Next() ) { const OUString& aName = pStyle->GetName(); - if ( rLbStyle.GetEntryPos(aName) == LISTBOX_ENTRY_NOTFOUND ) // all lists contain the same entries + if (rLbStyle.find_text(aName) == -1) // all lists contain the same entries { - for( sal_Int32 i = 1, n = rLbStyle.GetEntryCount(); i <= n && !bFound; ++i) + for( sal_Int32 i = 1, n = rLbStyle.get_count(); i <= n && !bFound; ++i) { - OUString aStyleName = ScGlobal::pCharClass->uppercase(rLbStyle.GetEntry(i)); + OUString aStyleName = ScGlobal::pCharClass->uppercase(rLbStyle.get_text(i)); if( i == n ) { - rLbStyle.InsertEntry(aName); - rLbStyle.SelectEntry(aName); + rLbStyle.append_text(aName); + rLbStyle.set_active_text(aName); bFound = true; } else if( aStyleName > ScGlobal::pCharClass->uppercase(aName) ) { - rLbStyle.InsertEntry(aName, i); - rLbStyle.SelectEntry(aName); + rLbStyle.insert_text(i, aName); + rLbStyle.set_active_text(aName); bFound = true; } } @@ -524,86 +462,77 @@ void StyleSelect( ListBox& rLbStyle, const ScDocument* pDoc, SvxFontPrevWindow& } } - OUString aStyleName = rLbStyle.GetSelectedEntry(); + OUString aStyleName = rLbStyle.get_active_text(); SfxStyleSheetBase* pStyleSheet = pDoc->GetStyleSheetPool()->Find( aStyleName, SfxStyleFamily::Para ); if(pStyleSheet) { const SfxItemSet& rSet = pStyleSheet->GetItemSet(); - rWdPreview.Init( rSet ); + rWdPreview.SetFromItemSet(rSet, false); } } } -IMPL_LINK_NOARG(ScConditionFrmtEntry, StyleSelectHdl, ListBox&, void) +IMPL_LINK_NOARG(ScConditionFrmtEntry, StyleSelectHdl, weld::ComboBox&, void) { mbIsInStyleCreate = true; - StyleSelect( *maLbStyle, mpDoc, *maWdPreview ); + StyleSelect(mpParent->GetFrameWeld(), *mxLbStyle, mpDoc, maWdPreview); mbIsInStyleCreate = false; } // formula -ScFormulaFrmtEntry::ScFormulaFrmtEntry( vcl::Window* pParent, ScDocument* pDoc, ScCondFormatDlg* pDialogParent, const ScAddress& rPos, const ScCondFormatEntry* pFormat ) +ScFormulaFrmtEntry::ScFormulaFrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, ScCondFormatDlg* pDialogParent, const ScAddress& rPos, const ScCondFormatEntry* pFormat) : ScCondFrmtEntry(pParent, pDoc, rPos) + , mxFtStyle(mxBuilder->weld_label("styleft")) + , mxLbStyle(mxBuilder->weld_combo_box("style")) + , mxWdPreviewWin(mxBuilder->weld_widget("previewwin")) + , mxWdPreview(new weld::CustomWeld(*mxBuilder, "preview", maWdPreview)) + , mxEdFormula(new formula::WeldRefEdit(mxBuilder->weld_entry("formula"))) { - get(maFtStyle, "styleft"); - get(maLbStyle, "style"); - get(maWdPreview, "preview"); - maWdPreview->set_height_request(maLbStyle->get_preferred_size().Height()); - get(maEdFormula, "formula"); + mxWdPreview->set_size_request(-1, mxLbStyle->get_preferred_size().Height()); Init(pDialogParent); - maLbType->SelectEntryPos(2); + mxLbType->set_active(2); if(pFormat) { - maEdFormula->SetText(pFormat->GetExpression(rPos, 0, 0, pDoc->GetGrammar())); - maLbStyle->SelectEntry(pFormat->GetStyle()); + mxEdFormula->SetText(pFormat->GetExpression(rPos, 0, 0, pDoc->GetGrammar())); + mxLbStyle->set_active_text(pFormat->GetStyle()); } else { - maLbStyle->SelectEntryPos(1); + mxLbStyle->set_active(1); } - StyleSelectHdl(*maLbStyle); + StyleSelectHdl(*mxLbStyle); } ScFormulaFrmtEntry::~ScFormulaFrmtEntry() { - disposeOnce(); -} - -void ScFormulaFrmtEntry::dispose() -{ - maFtStyle.clear(); - maLbStyle.clear(); - maWdPreview.clear(); - maEdFormula.clear(); - ScCondFrmtEntry::dispose(); } void ScFormulaFrmtEntry::Init(ScCondFormatDlg* pDialogParent) { - maEdFormula->SetGetFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeGetFocusHdl ) ); + mxEdFormula->SetGetFocusHdl( LINK( pDialogParent, ScCondFormatDlg, RangeGetFocusHdl ) ); - FillStyleListBox( mpDoc, *maLbStyle ); - maLbStyle->SetSelectHdl( LINK( this, ScFormulaFrmtEntry, StyleSelectHdl ) ); + FillStyleListBox( mpDoc, *mxLbStyle ); + mxLbStyle->connect_changed( LINK( this, ScFormulaFrmtEntry, StyleSelectHdl ) ); } -IMPL_LINK_NOARG(ScFormulaFrmtEntry, StyleSelectHdl, ListBox&, void) +IMPL_LINK_NOARG(ScFormulaFrmtEntry, StyleSelectHdl, weld::ComboBox&, void) { - StyleSelect( *maLbStyle, mpDoc, *maWdPreview ); + StyleSelect(mpParent->GetFrameWeld(), *mxLbStyle, mpDoc, maWdPreview); } ScFormatEntry* ScFormulaFrmtEntry::createFormulaEntry() const { - OUString aFormula = maEdFormula->GetText(); + OUString aFormula = mxEdFormula->GetText(); if(aFormula.isEmpty()) return nullptr; - ScFormatEntry* pEntry = new ScCondFormatEntry(ScConditionMode::Direct, aFormula, OUString(), mpDoc, maPos, maLbStyle->GetSelectedEntry()); + ScFormatEntry* pEntry = new ScCondFormatEntry(ScConditionMode::Direct, aFormula, OUString(), mpDoc, maPos, mxLbStyle->get_active_text()); return pEntry; } @@ -614,25 +543,25 @@ ScFormatEntry* ScFormulaFrmtEntry::GetEntry() const OUString ScFormulaFrmtEntry::GetExpressionString() { - return ScCondFormatHelper::GetExpression(FORMULA, 0, maEdFormula->GetText()); + return ScCondFormatHelper::GetExpression(FORMULA, 0, mxEdFormula->GetText()); } void ScFormulaFrmtEntry::SetActive() { - maWdPreview->Show(); - maFtStyle->Show(); - maLbStyle->Show(); - maEdFormula->Show(); + mxWdPreviewWin->show(); + mxFtStyle->show(); + mxLbStyle->show(); + mxEdFormula->GetWidget()->show(); Select(); } void ScFormulaFrmtEntry::SetInactive() { - maWdPreview->Hide(); - maFtStyle->Hide(); - maLbStyle->Hide(); - maEdFormula->Hide(); + mxWdPreviewWin->hide(); + mxFtStyle->hide(); + mxLbStyle->hide(); + mxEdFormula->GetWidget()->hide(); Deselect(); } @@ -677,45 +606,37 @@ ScColorScaleEntryType getTypeForId(const OUString& sId) // Item ids are imported from .ui into OUString* and are referenced by entry data. // See commit 83cefb5ceb4428d61a5b9fae80d1e673131e9bfe -ScColorScaleEntryType getSelectedType(const ListBox& rListBox) +ScColorScaleEntryType getSelectedType(const weld::ComboBox& rListBox) { - const OUString* sId = static_cast<OUString*>(rListBox.GetSelectedEntryData()); - assert(sId - && "The color scale type entries must have item ids in " - "sc/uiconfig/scalc/ui/conditionalentry.ui"); - return getTypeForId(*sId); + return getTypeForId(rListBox.get_active_id()); } -sal_Int32 getEntryPos(const ListBox& rListBox, ScColorScaleEntryType eType) +sal_Int32 getEntryPos(const weld::ComboBox& rListBox, ScColorScaleEntryType eType) { - const sal_Int32 nSize = rListBox.GetEntryCount(); + const sal_Int32 nSize = rListBox.get_count(); for (sal_Int32 i = 0; i < nSize; ++i) { - const OUString* sId = static_cast<OUString*>(rListBox.GetEntryData(i)); - assert(sId - && "The color scale type entries must have item ids in " - "sc/uiconfig/scalc/ui/conditionalentry.ui"); - if (getTypeForId(*sId) == eType) + if (getTypeForId(rListBox.get_id(i)) == eType) return i; } return -1; } -void selectType(ListBox& rListBox, ScColorScaleEntryType eType) +void selectType(weld::ComboBox& rListBox, ScColorScaleEntryType eType) { const sal_Int32 nPos = getEntryPos(rListBox, eType); if (nPos >= 0) - rListBox.SelectEntryPos(nPos); + rListBox.set_active(nPos); } -void removeType(ListBox& rListBox, ScColorScaleEntryType eType) +void removeType(weld::ComboBox& rListBox, ScColorScaleEntryType eType) { const sal_Int32 nPos = getEntryPos(rListBox, eType); if (nPos >= 0) - rListBox.RemoveEntry(nPos); + rListBox.remove(nPos); } -void SetColorScaleEntryTypes( const ScColorScaleEntry& rEntry, ListBox& rLbType, Edit& rEdit, SvxColorListBox& rLbCol, const ScDocument* pDoc ) +void SetColorScaleEntryTypes( const ScColorScaleEntry& rEntry, weld::ComboBox& rLbType, weld::Entry& rEdit, ColorListBox& rLbCol, const ScDocument* pDoc ) { // entry Automatic is not available for color scales assert(rEntry.GetType() > COLORSCALE_AUTO); @@ -730,11 +651,11 @@ void SetColorScaleEntryTypes( const ScColorScaleEntry& rEntry, ListBox& rLbType, case COLORSCALE_PERCENT: { double nVal = rEntry.GetValue(); - rEdit.SetText(convertNumberToString(nVal, pDoc)); + rEdit.set_text(convertNumberToString(nVal, pDoc)); } break; case COLORSCALE_FORMULA: - rEdit.SetText(rEntry.GetFormula(formula::FormulaGrammar::GRAM_DEFAULT)); + rEdit.set_text(rEntry.GetFormula(formula::FormulaGrammar::GRAM_DEFAULT)); break; case COLORSCALE_AUTO: abort(); @@ -743,7 +664,7 @@ void SetColorScaleEntryTypes( const ScColorScaleEntry& rEntry, ListBox& rLbType, rLbCol.SelectEntry(rEntry.GetColor()); } -void SetColorScaleEntry(ScColorScaleEntry* pEntry, const ListBox& rType, const Edit& rValue, +void SetColorScaleEntry(ScColorScaleEntry* pEntry, const weld::ComboBox& rType, const weld::Entry& rValue, ScDocument* pDoc, const ScAddress& rPos) { ScColorScaleEntryType eType = getSelectedType(rType); @@ -762,19 +683,19 @@ void SetColorScaleEntry(ScColorScaleEntry* pEntry, const ListBox& rType, const E sal_uInt32 nIndex = 0; double nVal = 0; SvNumberFormatter* pNumberFormatter = pDoc->GetFormatTable(); - (void)pNumberFormatter->IsNumberFormat(rValue.GetText(), nIndex, nVal); + (void)pNumberFormatter->IsNumberFormat(rValue.get_text(), nIndex, nVal); pEntry->SetValue(nVal); } break; case COLORSCALE_FORMULA: - pEntry->SetFormula(rValue.GetText(), pDoc, rPos); + pEntry->SetFormula(rValue.get_text(), pDoc, rPos); break; default: break; } } -ScColorScaleEntry* createColorScaleEntry( const ListBox& rType, const SvxColorListBox& rColor, const Edit& rValue, ScDocument* pDoc, const ScAddress& rPos ) +ScColorScaleEntry* createColorScaleEntry( const weld::ComboBox& rType, const ColorListBox& rColor, const weld::Entry& rValue, ScDocument* pDoc, const ScAddress& rPos ) { ScColorScaleEntry* pEntry = new ScColorScaleEntry(); @@ -786,83 +707,67 @@ ScColorScaleEntry* createColorScaleEntry( const ListBox& rType, const SvxColorLi } -ScColorScale2FrmtEntry::ScColorScale2FrmtEntry( vcl::Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat ) +ScColorScale2FrmtEntry::ScColorScale2FrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat) : ScCondFrmtEntry(pParent, pDoc, rPos) -{ - get(maLbColorFormat, "colorformat"); - get(maLbEntryTypeMin, "colscalemin"); - get(maLbEntryTypeMax, "colscalemax"); - get(maEdMin, "edcolscalemin"); - get(maEdMax, "edcolscalemax"); - get(maLbColMin, "lbcolmin"); - get(maLbColMax, "lbcolmax"); - get(maFtMin, "Label_minimum"); - get(maFtMax, "Label_maximum"); - - maFtMin->Show(); - maFtMax->Show(); + , mxLbColorFormat(mxBuilder->weld_combo_box("colorformat")) + , mxLbEntryTypeMin(mxBuilder->weld_combo_box("colscalemin")) + , mxLbEntryTypeMax(mxBuilder->weld_combo_box("colscalemax")) + , mxEdMin(mxBuilder->weld_entry("edcolscalemin")) + , mxEdMax(mxBuilder->weld_entry("edcolscalemax")) + , mxLbColMin(new ColorListBox(mxBuilder->weld_menu_button("lbcolmin"), pParent->GetFrameWeld())) + , mxLbColMax(new ColorListBox(mxBuilder->weld_menu_button("lbcolmax"), pParent->GetFrameWeld())) + , mxFtMin(mxBuilder->weld_label("Label_minimum")) + , mxFtMax(mxBuilder->weld_label("Label_maximum")) +{ + mxFtMin->show(); + mxFtMax->show(); // remove the automatic entry from color scales - removeType(*maLbEntryTypeMin, COLORSCALE_AUTO); - removeType(*maLbEntryTypeMax, COLORSCALE_AUTO); + removeType(*mxLbEntryTypeMin, COLORSCALE_AUTO); + removeType(*mxLbEntryTypeMax, COLORSCALE_AUTO); // "min" selector doesn't need "max" entry, and vice versa - removeType(*maLbEntryTypeMin, COLORSCALE_MAX); - removeType(*maLbEntryTypeMax, COLORSCALE_MIN); + removeType(*mxLbEntryTypeMin, COLORSCALE_MAX); + removeType(*mxLbEntryTypeMax, COLORSCALE_MIN); - maLbType->SelectEntryPos(0); - maLbColorFormat->SelectEntryPos(0); + mxLbType->set_active(0); + mxLbColorFormat->set_active(0); Init(); if(pFormat) { ScColorScaleEntries::const_iterator itr = pFormat->begin(); - SetColorScaleEntryTypes(*itr[0], *maLbEntryTypeMin, *maEdMin, *maLbColMin, pDoc); + SetColorScaleEntryTypes(*itr[0], *mxLbEntryTypeMin, *mxEdMin, *mxLbColMin, pDoc); ++itr; - SetColorScaleEntryTypes(*itr[0], *maLbEntryTypeMax, *maEdMax, *maLbColMax, pDoc); + SetColorScaleEntryTypes(*itr[0], *mxLbEntryTypeMax, *mxEdMax, *mxLbColMax, pDoc); } else { - selectType(*maLbEntryTypeMin, COLORSCALE_MIN); - selectType(*maLbEntryTypeMax, COLORSCALE_MAX); + selectType(*mxLbEntryTypeMin, COLORSCALE_MIN); + selectType(*mxLbEntryTypeMax, COLORSCALE_MAX); } - maLbColorFormat->SetSelectHdl( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) ); + mxLbColorFormat->connect_changed( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) ); - EntryTypeHdl(*maLbEntryTypeMin); - EntryTypeHdl(*maLbEntryTypeMax); + EntryTypeHdl(*mxLbEntryTypeMin); + EntryTypeHdl(*mxLbEntryTypeMax); } ScColorScale2FrmtEntry::~ScColorScale2FrmtEntry() { - disposeOnce(); -} - -void ScColorScale2FrmtEntry::dispose() -{ - maLbColorFormat.clear(); - maLbEntryTypeMin.clear(); - maLbEntryTypeMax.clear(); - maEdMin.clear(); - maEdMax.clear(); - maLbColMin.clear(); - maLbColMax.clear(); - maFtMin.clear(); - maFtMax.clear(); - ScCondFrmtEntry::dispose(); } void ScColorScale2FrmtEntry::Init() { - maLbEntryTypeMin->SetSelectHdl( LINK( this, ScColorScale2FrmtEntry, EntryTypeHdl ) ); - maLbEntryTypeMax->SetSelectHdl( LINK( this, ScColorScale2FrmtEntry, EntryTypeHdl ) ); - maLbColMin->SelectEntry(Color(0xFFF685)); // Light Yellow 2 - maLbColMax->SelectEntry(Color(0x65C295)); // Light Green 2 + mxLbEntryTypeMin->connect_changed( LINK( this, ScColorScale2FrmtEntry, EntryTypeHdl ) ); + mxLbEntryTypeMax->connect_changed( LINK( this, ScColorScale2FrmtEntry, EntryTypeHdl ) ); + mxLbColMin->SelectEntry(Color(0xFFF685)); // Light Yellow 2 + mxLbColMax->SelectEntry(Color(0x65C295)); // Light Green 2 } ScFormatEntry* ScColorScale2FrmtEntry::createColorscaleEntry() const { ScColorScaleFormat* pColorScale = new ScColorScaleFormat(mpDoc); - pColorScale->AddEntry(createColorScaleEntry(*maLbEntryTypeMin, *maLbColMin, *maEdMin, mpDoc, maPos)); - pColorScale->AddEntry(createColorScaleEntry(*maLbEntryTypeMax, *maLbColMax, *maEdMax, mpDoc, maPos)); + pColorScale->AddEntry(createColorScaleEntry(*mxLbEntryTypeMin, *mxLbColMin, *mxEdMin, mpDoc, maPos)); + pColorScale->AddEntry(createColorScaleEntry(*mxLbEntryTypeMax, *mxLbColMax, *mxEdMax, mpDoc, maPos)); return pColorScale; } @@ -878,43 +783,43 @@ ScFormatEntry* ScColorScale2FrmtEntry::GetEntry() const void ScColorScale2FrmtEntry::SetActive() { - maLbColorFormat->Show(); + mxLbColorFormat->show(); - maLbEntryTypeMin->Show(); - maLbEntryTypeMax->Show(); + mxLbEntryTypeMin->show(); + mxLbEntryTypeMax->show(); - maEdMin->Show(); - maEdMax->Show(); + mxEdMin->show(); + mxEdMax->show(); - maLbColMin->Show(); - maLbColMax->Show(); + mxLbColMin->show(); + mxLbColMax->show(); Select(); } void ScColorScale2FrmtEntry::SetInactive() { - maLbColorFormat->Hide(); + mxLbColorFormat->hide(); - maLbEntryTypeMin->Hide(); - maLbEntryTypeMax->Hide(); + mxLbEntryTypeMin->hide(); + mxLbEntryTypeMax->hide(); - maEdMin->Hide(); - maEdMax->Hide(); + mxEdMin->hide(); + mxEdMax->hide(); - maLbColMin->Hide(); - maLbColMax->Hide(); + mxLbColMin->hide(); + mxLbColMax->hide(); Deselect(); } -IMPL_LINK( ScColorScale2FrmtEntry, EntryTypeHdl, ListBox&, rBox, void ) +IMPL_LINK( ScColorScale2FrmtEntry, EntryTypeHdl, weld::ComboBox&, rBox, void ) { - Edit* pEd = nullptr; - if (&rBox == maLbEntryTypeMin.get()) - pEd = maEdMin; - else if (&rBox == maLbEntryTypeMax.get()) - pEd = maEdMax.get(); + weld::Entry* pEd = nullptr; + if (&rBox == mxLbEntryTypeMin.get()) + pEd = mxEdMin.get(); + else if (&rBox == mxLbEntryTypeMax.get()) + pEd = mxEdMax.get(); if (!pEd) return; @@ -926,105 +831,86 @@ IMPL_LINK( ScColorScale2FrmtEntry, EntryTypeHdl, ListBox&, rBox, void ) } if (bEnableEdit) - pEd->Enable(); + pEd->set_sensitive(true); else - pEd->Disable(); + pEd->set_sensitive(false); } -ScColorScale3FrmtEntry::ScColorScale3FrmtEntry( vcl::Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat ) +ScColorScale3FrmtEntry::ScColorScale3FrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat) : ScCondFrmtEntry(pParent, pDoc, rPos) -{ - get(maLbColorFormat, "colorformat"); - get(maLbEntryTypeMin, "colscalemin"); - get(maLbEntryTypeMiddle, "colscalemiddle"); - get(maLbEntryTypeMax, "colscalemax"); - get(maEdMin, "edcolscalemin"); - get(maEdMiddle, "edcolscalemiddle"); - get(maEdMax, "edcolscalemax"); - get(maLbColMin, "lbcolmin"); - get(maLbColMiddle, "lbcolmiddle"); - get(maLbColMax, "lbcolmax"); - get(maFtMin, "Label_minimum"); - get(maFtMax, "Label_maximum"); - - maFtMin->Show(); - maFtMax->Show(); + , mxLbColorFormat(mxBuilder->weld_combo_box("colorformat")) + , mxLbEntryTypeMin(mxBuilder->weld_combo_box("colscalemin")) + , mxLbEntryTypeMiddle(mxBuilder->weld_combo_box("colscalemiddle")) + , mxLbEntryTypeMax(mxBuilder->weld_combo_box("colscalemax")) + , mxEdMin(mxBuilder->weld_entry("edcolscalemin")) + , mxEdMiddle(mxBuilder->weld_entry("edcolscalemiddle")) + , mxEdMax(mxBuilder->weld_entry("edcolscalemax")) + , mxLbColMin(new ColorListBox(mxBuilder->weld_menu_button("lbcolmin"), pParent->GetFrameWeld())) + , mxLbColMiddle(new ColorListBox(mxBuilder->weld_menu_button("lbcolmiddle"), pParent->GetFrameWeld())) + , mxLbColMax(new ColorListBox(mxBuilder->weld_menu_button("lbcolmax"), pParent->GetFrameWeld())) + , mxFtMin(mxBuilder->weld_label("Label_minimum")) + , mxFtMax(mxBuilder->weld_label("Label_maximum")) +{ + mxFtMin->show(); + mxFtMax->show(); // remove the automatic entry from color scales - removeType(*maLbEntryTypeMin, COLORSCALE_AUTO); - removeType(*maLbEntryTypeMiddle, COLORSCALE_AUTO); - removeType(*maLbEntryTypeMax, COLORSCALE_AUTO); + removeType(*mxLbEntryTypeMin, COLORSCALE_AUTO); + removeType(*mxLbEntryTypeMiddle, COLORSCALE_AUTO); + removeType(*mxLbEntryTypeMax, COLORSCALE_AUTO); // "min" selector doesn't need "max" entry, and vice versa - removeType(*maLbEntryTypeMin, COLORSCALE_MAX); - removeType(*maLbEntryTypeMax, COLORSCALE_MIN); - maLbColorFormat->SelectEntryPos(1); + removeType(*mxLbEntryTypeMin, COLORSCALE_MAX); + removeType(*mxLbEntryTypeMax, COLORSCALE_MIN); + mxLbColorFormat->set_active(1); Init(); - maLbType->SelectEntryPos(0); + mxLbType->set_active(0); if(pFormat) { ScColorScaleEntries::const_iterator itr = pFormat->begin(); - SetColorScaleEntryTypes(*itr[0], *maLbEntryTypeMin, *maEdMin, *maLbColMin, pDoc); + SetColorScaleEntryTypes(*itr[0], *mxLbEntryTypeMin, *mxEdMin, *mxLbColMin, pDoc); assert(pFormat->size() == 3); ++itr; - SetColorScaleEntryTypes(*itr[0], *maLbEntryTypeMiddle, *maEdMiddle, *maLbColMiddle, pDoc); + SetColorScaleEntryTypes(*itr[0], *mxLbEntryTypeMiddle, *mxEdMiddle, *mxLbColMiddle, pDoc); ++itr; - SetColorScaleEntryTypes(*itr[0], *maLbEntryTypeMax, *maEdMax, *maLbColMax, pDoc); + SetColorScaleEntryTypes(*itr[0], *mxLbEntryTypeMax, *mxEdMax, *mxLbColMax, pDoc); } else { - maLbColorFormat->SelectEntryPos(1); - selectType(*maLbEntryTypeMin, COLORSCALE_MIN); - selectType(*maLbEntryTypeMiddle, COLORSCALE_PERCENTILE); - selectType(*maLbEntryTypeMax, COLORSCALE_MAX); - maEdMiddle->SetText(OUString::number(50)); + mxLbColorFormat->set_active(1); + selectType(*mxLbEntryTypeMin, COLORSCALE_MIN); + selectType(*mxLbEntryTypeMiddle, COLORSCALE_PERCENTILE); + selectType(*mxLbEntryTypeMax, COLORSCALE_MAX); + mxEdMiddle->set_text(OUString::number(50)); } - maLbColorFormat->SetSelectHdl( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) ); - EntryTypeHdl(*maLbEntryTypeMin); - EntryTypeHdl(*maLbEntryTypeMiddle); - EntryTypeHdl(*maLbEntryTypeMax); + mxLbColorFormat->connect_changed( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) ); + EntryTypeHdl(*mxLbEntryTypeMin); + EntryTypeHdl(*mxLbEntryTypeMiddle); + EntryTypeHdl(*mxLbEntryTypeMax); } ScColorScale3FrmtEntry::~ScColorScale3FrmtEntry() { - disposeOnce(); -} - -void ScColorScale3FrmtEntry::dispose() -{ - maLbColorFormat.clear(); - maLbEntryTypeMin.clear(); - maLbEntryTypeMiddle.clear(); - maLbEntryTypeMax.clear(); - maEdMin.clear(); - maEdMiddle.clear(); - maEdMax.clear(); - maLbColMin.clear(); - maLbColMiddle.clear(); - maLbColMax.clear(); - maFtMin.clear(); - maFtMax.clear(); - ScCondFrmtEntry::dispose(); } void ScColorScale3FrmtEntry::Init() { - maLbEntryTypeMin->SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) ); - maLbEntryTypeMax->SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) ); - maLbEntryTypeMiddle->SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) ); - maLbColMin->SelectEntry(COL_LIGHTRED); - maLbColMiddle->SelectEntry(COL_YELLOW); - maLbColMax->SelectEntry(Color(0x00CC00)); + mxLbEntryTypeMin->connect_changed( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) ); + mxLbEntryTypeMax->connect_changed( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) ); + mxLbEntryTypeMiddle->connect_changed( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) ); + mxLbColMin->SelectEntry(COL_LIGHTRED); + mxLbColMiddle->SelectEntry(COL_YELLOW); + mxLbColMax->SelectEntry(Color(0x00CC00)); } ScFormatEntry* ScColorScale3FrmtEntry::createColorscaleEntry() const { ScColorScaleFormat* pColorScale = new ScColorScaleFormat(mpDoc); - pColorScale->AddEntry(createColorScaleEntry(*maLbEntryTypeMin, *maLbColMin, *maEdMin, mpDoc, maPos)); - if(maLbColorFormat->GetSelectedEntryPos() == 1) - pColorScale->AddEntry(createColorScaleEntry(*maLbEntryTypeMiddle, *maLbColMiddle, *maEdMiddle, mpDoc, maPos)); - pColorScale->AddEntry(createColorScaleEntry(*maLbEntryTypeMax, *maLbColMax, *maEdMax, mpDoc, maPos)); + pColorScale->AddEntry(createColorScaleEntry(*mxLbEntryTypeMin, *mxLbColMin, *mxEdMin, mpDoc, maPos)); + if (mxLbColorFormat->get_active() == 1) + pColorScale->AddEntry(createColorScaleEntry(*mxLbEntryTypeMiddle, *mxLbColMiddle, *mxEdMiddle, mpDoc, maPos)); + pColorScale->AddEntry(createColorScaleEntry(*mxLbEntryTypeMax, *mxLbColMax, *mxEdMax, mpDoc, maPos)); return pColorScale; } @@ -1040,50 +926,50 @@ ScFormatEntry* ScColorScale3FrmtEntry::GetEntry() const void ScColorScale3FrmtEntry::SetActive() { - maLbColorFormat->Show(); - maLbEntryTypeMin->Show(); - maLbEntryTypeMiddle->Show(); - maLbEntryTypeMax->Show(); + mxLbColorFormat->show(); + mxLbEntryTypeMin->show(); + mxLbEntryTypeMiddle->show(); + mxLbEntryTypeMax->show(); - maEdMin->Show(); - maEdMiddle->Show(); - maEdMax->Show(); + mxEdMin->show(); + mxEdMiddle->show(); + mxEdMax->show(); - maLbColMin->Show(); - maLbColMiddle->Show(); - maLbColMax->Show(); + mxLbColMin->show(); + mxLbColMiddle->show(); + mxLbColMax->show(); Select(); } void ScColorScale3FrmtEntry::SetInactive() { - maLbColorFormat->Hide(); + mxLbColorFormat->hide(); - maLbEntryTypeMin->Hide(); - maLbEntryTypeMiddle->Hide(); - maLbEntryTypeMax->Hide(); + mxLbEntryTypeMin->hide(); + mxLbEntryTypeMiddle->hide(); + mxLbEntryTypeMax->hide(); - maEdMin->Hide(); - maEdMiddle->Hide(); - maEdMax->Hide(); + mxEdMin->hide(); + mxEdMiddle->hide(); + mxEdMax->hide(); - maLbColMin->Hide(); - maLbColMiddle->Hide(); - maLbColMax->Hide(); + mxLbColMin->hide(); + mxLbColMiddle->hide(); + mxLbColMax->hide(); Deselect(); } -IMPL_LINK( ScColorScale3FrmtEntry, EntryTypeHdl, ListBox&, rBox, void ) +IMPL_LINK( ScColorScale3FrmtEntry, EntryTypeHdl, weld::ComboBox&, rBox, void ) { - Edit* pEd = nullptr; - if(&rBox == maLbEntryTypeMin.get()) - pEd = maEdMin.get(); - else if(&rBox == maLbEntryTypeMiddle.get()) - pEd = maEdMiddle.get(); - else if(&rBox == maLbEntryTypeMax.get()) - pEd = maEdMax.get(); + weld::Entry* pEd = nullptr; + if(&rBox == mxLbEntryTypeMin.get()) + pEd = mxEdMin.get(); + else if(&rBox == mxLbEntryTypeMiddle.get()) + pEd = mxEdMiddle.get(); + else if(&rBox == mxLbEntryTypeMax.get()) + pEd = mxEdMax.get(); if (!pEd) return; @@ -1095,31 +981,31 @@ IMPL_LINK( ScColorScale3FrmtEntry, EntryTypeHdl, ListBox&, rBox, void ) } if(bEnableEdit) - pEd->Enable(); + pEd->set_sensitive(true); else - pEd->Disable(); + pEd->set_sensitive(false); } -IMPL_LINK_NOARG( ScConditionFrmtEntry, ConditionTypeSelectHdl, ListBox&, void ) +IMPL_LINK_NOARG(ScConditionFrmtEntry, ConditionTypeSelectHdl, weld::ComboBox&, void) { - sal_Int32 nSelectPos = maLbCondType->GetSelectedEntryPos(); + sal_Int32 nSelectPos = mxLbCondType->get_active(); ScConditionMode eMode = EntryPosToConditionMode(nSelectPos); switch(GetNumberEditFields(eMode)) { case 0: - maEdVal1->Hide(); - maEdVal2->Hide(); - maFtVal->Hide(); + mxEdVal1->GetWidget()->hide(); + mxEdVal2->GetWidget()->hide(); + mxFtVal->hide(); break; case 1: - maEdVal1->Show(); - maEdVal2->Hide(); - maFtVal->Show(); + mxEdVal1->GetWidget()->show(); + mxEdVal2->GetWidget()->hide(); + mxFtVal->show(); break; case 2: - maEdVal1->Show(); - maEdVal2->Show(); - maFtVal->Show(); + mxEdVal1->GetWidget()->show(); + mxEdVal2->GetWidget()->show(); + mxFtVal->show(); break; } } @@ -1128,7 +1014,7 @@ IMPL_LINK_NOARG( ScConditionFrmtEntry, ConditionTypeSelectHdl, ListBox&, void ) namespace { -void SetDataBarEntryTypes( const ScColorScaleEntry& rEntry, ListBox& rLbType, Edit& rEdit, const ScDocument* pDoc ) +void SetDataBarEntryTypes( const ScColorScaleEntry& rEntry, weld::ComboBox& rLbType, weld::Entry& rEdit, const ScDocument* pDoc ) { selectType(rLbType, rEntry.GetType()); switch(rEntry.GetType()) @@ -1145,72 +1031,57 @@ void SetDataBarEntryTypes( const ScColorScaleEntry& rEntry, ListBox& rLbType, Ed SvNumberFormatter* pNumberFormatter = pDoc->GetFormatTable(); OUString aText; pNumberFormatter->GetInputLineString(nVal, 0, aText); - rEdit.SetText(aText); + rEdit.set_text(aText); } break; case COLORSCALE_FORMULA: - rEdit.SetText(rEntry.GetFormula(formula::FormulaGrammar::GRAM_DEFAULT)); + rEdit.set_text(rEntry.GetFormula(formula::FormulaGrammar::GRAM_DEFAULT)); break; } } } -ScDataBarFrmtEntry::ScDataBarFrmtEntry( vcl::Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScDataBarFormat* pFormat ) +ScDataBarFrmtEntry::ScDataBarFrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScDataBarFormat* pFormat) : ScCondFrmtEntry(pParent, pDoc, rPos) + , mxLbColorFormat(mxBuilder->weld_combo_box("colorformat")) + , mxLbDataBarMinType(mxBuilder->weld_combo_box("colscalemin")) + , mxLbDataBarMaxType(mxBuilder->weld_combo_box("colscalemax")) + , mxEdDataBarMin(mxBuilder->weld_entry("edcolscalemin")) + , mxEdDataBarMax(mxBuilder->weld_entry("edcolscalemax")) + , mxBtOptions(mxBuilder->weld_button("options")) + , mxFtMin(mxBuilder->weld_label("Label_minimum")) + , mxFtMax(mxBuilder->weld_label("Label_maximum")) { - get(maLbColorFormat, "colorformat"); - get(maLbDataBarMinType, "colscalemin"); - get(maLbDataBarMaxType, "colscalemax"); - get(maEdDataBarMin, "edcolscalemin"); - get(maEdDataBarMax, "edcolscalemax"); - get(maBtOptions, "options"); - get(maFtMin, "Label_minimum"); - get(maFtMax, "Label_maximum"); - // "min" selector doesn't need "max" entry, and vice versa - removeType(*maLbDataBarMinType, COLORSCALE_MAX); - removeType(*maLbDataBarMaxType, COLORSCALE_MIN); + removeType(*mxLbDataBarMinType, COLORSCALE_MAX); + removeType(*mxLbDataBarMaxType, COLORSCALE_MIN); - maFtMin->Show(); - maFtMax->Show(); + mxFtMin->show(); + mxFtMax->show(); - maLbColorFormat->SelectEntryPos(2); - maLbType->SelectEntryPos(0); + mxLbColorFormat->set_active(2); + mxLbType->set_active(0); if(pFormat) { mpDataBarData.reset(new ScDataBarFormatData(*pFormat->GetDataBarData())); - SetDataBarEntryTypes(*mpDataBarData->mpLowerLimit, *maLbDataBarMinType, *maEdDataBarMin, pDoc); - SetDataBarEntryTypes(*mpDataBarData->mpUpperLimit, *maLbDataBarMaxType, *maEdDataBarMax, pDoc); - DataBarTypeSelectHdl(*maLbDataBarMinType); + SetDataBarEntryTypes(*mpDataBarData->mpLowerLimit, *mxLbDataBarMinType, *mxEdDataBarMin, pDoc); + SetDataBarEntryTypes(*mpDataBarData->mpUpperLimit, *mxLbDataBarMaxType, *mxEdDataBarMax, pDoc); + DataBarTypeSelectHdl(*mxLbDataBarMinType); } else { - selectType(*maLbDataBarMinType, COLORSCALE_AUTO); - selectType(*maLbDataBarMaxType, COLORSCALE_AUTO); - DataBarTypeSelectHdl(*maLbDataBarMinType); + selectType(*mxLbDataBarMinType, COLORSCALE_AUTO); + selectType(*mxLbDataBarMaxType, COLORSCALE_AUTO); + DataBarTypeSelectHdl(*mxLbDataBarMinType); } Init(); - maLbColorFormat->SetSelectHdl( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) ); + mxLbColorFormat->connect_changed( LINK( pParent, ScCondFormatList, ColFormatTypeHdl ) ); } ScDataBarFrmtEntry::~ScDataBarFrmtEntry() { - disposeOnce(); -} - -void ScDataBarFrmtEntry::dispose() -{ - maLbColorFormat.clear(); - maLbDataBarMinType.clear(); - maLbDataBarMaxType.clear(); - maEdDataBarMin.clear(); - maEdDataBarMax.clear(); - maBtOptions.clear(); - maFtMin.clear(); - maFtMax.clear(); - ScCondFrmtEntry::dispose(); } ScFormatEntry* ScDataBarFrmtEntry::GetEntry() const @@ -1220,10 +1091,10 @@ ScFormatEntry* ScDataBarFrmtEntry::GetEntry() const void ScDataBarFrmtEntry::Init() { - maLbDataBarMinType->SetSelectHdl( LINK( this, ScDataBarFrmtEntry, DataBarTypeSelectHdl ) ); - maLbDataBarMaxType->SetSelectHdl( LINK( this, ScDataBarFrmtEntry, DataBarTypeSelectHdl ) ); + mxLbDataBarMinType->connect_changed( LINK( this, ScDataBarFrmtEntry, DataBarTypeSelectHdl ) ); + mxLbDataBarMaxType->connect_changed( LINK( this, ScDataBarFrmtEntry, DataBarTypeSelectHdl ) ); - maBtOptions->SetClickHdl( LINK( this, ScDataBarFrmtEntry, OptionBtnHdl ) ); + mxBtOptions->connect_clicked( LINK( this, ScDataBarFrmtEntry, OptionBtnHdl ) ); if(!mpDataBarData) { @@ -1238,10 +1109,10 @@ void ScDataBarFrmtEntry::Init() ScFormatEntry* ScDataBarFrmtEntry::createDatabarEntry() const { - SetColorScaleEntry(mpDataBarData->mpLowerLimit.get(), *maLbDataBarMinType, - *maEdDataBarMin, mpDoc, maPos); - SetColorScaleEntry(mpDataBarData->mpUpperLimit.get(), *maLbDataBarMaxType, - *maEdDataBarMax, mpDoc, maPos); + SetColorScaleEntry(mpDataBarData->mpLowerLimit.get(), *mxLbDataBarMinType, + *mxEdDataBarMin, mpDoc, maPos); + SetColorScaleEntry(mpDataBarData->mpUpperLimit.get(), *mxLbDataBarMaxType, + *mxEdDataBarMax, mpDoc, maPos); ScDataBarFormat* pDataBar = new ScDataBarFormat(mpDoc); pDataBar->SetDataBarData(new ScDataBarFormatData(*mpDataBarData)); return pDataBar; @@ -1254,68 +1125,69 @@ OUString ScDataBarFrmtEntry::GetExpressionString() void ScDataBarFrmtEntry::SetActive() { - maLbColorFormat->Show(); + mxLbColorFormat->show(); - maLbDataBarMinType->Show(); - maLbDataBarMaxType->Show(); - maEdDataBarMin->Show(); - maEdDataBarMax->Show(); - maBtOptions->Show(); + mxLbDataBarMinType->show(); + mxLbDataBarMaxType->show(); + mxEdDataBarMin->show(); + mxEdDataBarMax->show(); + mxBtOptions->show(); Select(); } void ScDataBarFrmtEntry::SetInactive() { - maLbColorFormat->Hide(); + mxLbColorFormat->hide(); - maLbDataBarMinType->Hide(); - maLbDataBarMaxType->Hide(); - maEdDataBarMin->Hide(); - maEdDataBarMax->Hide(); - maBtOptions->Hide(); + mxLbDataBarMinType->hide(); + mxLbDataBarMaxType->hide(); + mxEdDataBarMin->hide(); + mxEdDataBarMax->hide(); + mxBtOptions->hide(); Deselect(); } -IMPL_LINK_NOARG( ScDataBarFrmtEntry, DataBarTypeSelectHdl, ListBox&, void ) +IMPL_LINK_NOARG( ScDataBarFrmtEntry, DataBarTypeSelectHdl, weld::ComboBox&, void ) { - if (getSelectedType(*maLbDataBarMinType) <= COLORSCALE_MAX) - maEdDataBarMin->Disable(); + if (getSelectedType(*mxLbDataBarMinType) <= COLORSCALE_MAX) + mxEdDataBarMin->set_sensitive(false); else - maEdDataBarMin->Enable(); + mxEdDataBarMin->set_sensitive(true); - if (getSelectedType(*maLbDataBarMaxType) <= COLORSCALE_MAX) - maEdDataBarMax->Disable(); + if (getSelectedType(*mxLbDataBarMaxType) <= COLORSCALE_MAX) + mxEdDataBarMax->set_sensitive(false); else - maEdDataBarMax->Enable(); + mxEdDataBarMax->set_sensitive(true); } -IMPL_LINK_NOARG( ScDataBarFrmtEntry, OptionBtnHdl, Button*, void ) +IMPL_LINK_NOARG( ScDataBarFrmtEntry, OptionBtnHdl, weld::Button&, void ) { - SetColorScaleEntry(mpDataBarData->mpLowerLimit.get(), *maLbDataBarMinType, - *maEdDataBarMin, mpDoc, maPos); - SetColorScaleEntry(mpDataBarData->mpUpperLimit.get(), *maLbDataBarMaxType, - *maEdDataBarMax, mpDoc, maPos); - ScDataBarSettingsDlg aDlg(GetFrameWeld(), *mpDataBarData, mpDoc, maPos); + SetColorScaleEntry(mpDataBarData->mpLowerLimit.get(), *mxLbDataBarMinType, + *mxEdDataBarMin, mpDoc, maPos); + SetColorScaleEntry(mpDataBarData->mpUpperLimit.get(), *mxLbDataBarMaxType, + *mxEdDataBarMax, mpDoc, maPos); + ScDataBarSettingsDlg aDlg(mpParent->GetFrameWeld(), *mpDataBarData, mpDoc, maPos); if (aDlg.run() == RET_OK) { mpDataBarData.reset(aDlg.GetData()); - SetDataBarEntryTypes(*mpDataBarData->mpLowerLimit, *maLbDataBarMinType, *maEdDataBarMin, mpDoc); - SetDataBarEntryTypes(*mpDataBarData->mpUpperLimit, *maLbDataBarMaxType, *maEdDataBarMax, mpDoc); - DataBarTypeSelectHdl(*maLbDataBarMinType); + SetDataBarEntryTypes(*mpDataBarData->mpLowerLimit, *mxLbDataBarMinType, *mxEdDataBarMin, mpDoc); + SetDataBarEntryTypes(*mpDataBarData->mpUpperLimit, *mxLbDataBarMaxType, *mxEdDataBarMax, mpDoc); + DataBarTypeSelectHdl(*mxLbDataBarMinType); } } -ScDateFrmtEntry::ScDateFrmtEntry(vcl::Window* pParent, ScDocument* pDoc, const ScCondDateFormatEntry* pFormat) +ScDateFrmtEntry::ScDateFrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, const ScCondDateFormatEntry* pFormat) : ScCondFrmtEntry(pParent, pDoc, ScAddress()) + , mxLbDateEntry(mxBuilder->weld_combo_box("datetype")) + , mxFtStyle(mxBuilder->weld_label("styleft")) + , mxLbStyle(mxBuilder->weld_combo_box("style")) + , mxWdPreviewWin(mxBuilder->weld_widget("previewwin")) + , mxWdPreview(new weld::CustomWeld(*mxBuilder, "preview", maWdPreview)) , mbIsInStyleCreate(false) { - get(maLbDateEntry, "datetype"); - get(maFtStyle, "styleft"); - get(maLbStyle, "style"); - get(maWdPreview, "preview"); - maWdPreview->set_height_request(maLbStyle->get_preferred_size().Height()); + mxWdPreview->set_size_request(mxLbStyle->get_preferred_size().Height(), -1); Init(); @@ -1324,54 +1196,44 @@ ScDateFrmtEntry::ScDateFrmtEntry(vcl::Window* pParent, ScDocument* pDoc, const S if(pFormat) { sal_Int32 nPos = static_cast<sal_Int32>(pFormat->GetDateType()); - maLbDateEntry->SelectEntryPos(nPos); + mxLbDateEntry->set_active(nPos); - maLbStyle->SelectEntry(pFormat->GetStyleName()); + mxLbStyle->set_active_text(pFormat->GetStyleName()); } - StyleSelectHdl(*maLbStyle); + StyleSelectHdl(*mxLbStyle); } ScDateFrmtEntry::~ScDateFrmtEntry() { - disposeOnce(); -} - -void ScDateFrmtEntry::dispose() -{ - maLbDateEntry.clear(); - maFtStyle.clear(); - maLbStyle.clear(); - maWdPreview.clear(); - ScCondFrmtEntry::dispose(); } void ScDateFrmtEntry::Init() { - maLbDateEntry->SelectEntryPos(0); - maLbType->SelectEntryPos(3); + mxLbDateEntry->set_active(0); + mxLbType->set_active(3); - FillStyleListBox( mpDoc, *maLbStyle ); - maLbStyle->SetSelectHdl( LINK( this, ScDateFrmtEntry, StyleSelectHdl ) ); - maLbStyle->SelectEntryPos(1); + FillStyleListBox( mpDoc, *mxLbStyle ); + mxLbStyle->connect_changed( LINK( this, ScDateFrmtEntry, StyleSelectHdl ) ); + mxLbStyle->set_active(1); } void ScDateFrmtEntry::SetActive() { - maLbDateEntry->Show(); - maFtStyle->Show(); - maWdPreview->Show(); - maLbStyle->Show(); + mxLbDateEntry->show(); + mxFtStyle->show(); + mxWdPreviewWin->show(); + mxLbStyle->show(); Select(); } void ScDateFrmtEntry::SetInactive() { - maLbDateEntry->Hide(); - maFtStyle->Hide(); - maWdPreview->Hide(); - maLbStyle->Hide(); + mxLbDateEntry->hide(); + mxFtStyle->hide(); + mxWdPreviewWin->hide(); + mxLbStyle->hide(); Deselect(); } @@ -1381,16 +1243,16 @@ void ScDateFrmtEntry::Notify( SfxBroadcaster&, const SfxHint& rHint ) if(rHint.GetId() == SfxHintId::StyleSheetModified) { if(!mbIsInStyleCreate) - UpdateStyleList(*maLbStyle, mpDoc); + UpdateStyleList(*mxLbStyle, mpDoc); } } ScFormatEntry* ScDateFrmtEntry::GetEntry() const { ScCondDateFormatEntry* pNewEntry = new ScCondDateFormatEntry(mpDoc); - condformat::ScCondFormatDateType eType = static_cast<condformat::ScCondFormatDateType>(maLbDateEntry->GetSelectedEntryPos()); + condformat::ScCondFormatDateType eType = static_cast<condformat::ScCondFormatDateType>(mxLbDateEntry->get_active()); pNewEntry->SetDateType(eType); - pNewEntry->SetStyleName(maLbStyle->GetSelectedEntry()); + pNewEntry->SetStyleName(mxLbStyle->get_active_text()); return pNewEntry; } @@ -1399,65 +1261,68 @@ OUString ScDateFrmtEntry::GetExpressionString() return ScCondFormatHelper::GetExpression(DATE, 0); } -IMPL_LINK_NOARG( ScDateFrmtEntry, StyleSelectHdl, ListBox&, void ) +IMPL_LINK_NOARG( ScDateFrmtEntry, StyleSelectHdl, weld::ComboBox&, void ) { mbIsInStyleCreate = true; - StyleSelect( *maLbStyle, mpDoc, *maWdPreview ); + StyleSelect(mpParent->GetFrameWeld(), *mxLbStyle, mpDoc, maWdPreview); mbIsInStyleCreate = false; } -class ScIconSetFrmtDataEntry : public VclContainer - , public VclBuilderContainer +class ScIconSetFrmtDataEntry { +protected: + std::unique_ptr<weld::Builder> mxBuilder; private: - VclPtr<VclGrid> maGrid; - VclPtr<FixedImage> maImgIcon; - VclPtr<FixedText> maFtEntry; - VclPtr<Edit> maEdEntry; - VclPtr<ListBox> maLbEntryType; + std::unique_ptr<weld::Container> mxGrid; + std::unique_ptr<weld::Image> mxImgIcon; + std::unique_ptr<weld::Label> mxFtEntry; + std::unique_ptr<weld::Entry> mxEdEntry; + std::unique_ptr<weld::ComboBox> mxLbEntryType; public: - ScIconSetFrmtDataEntry( vcl::Window* pParent, ScIconSetType eType, ScDocument* pDoc, - sal_Int32 i, const ScColorScaleEntry* pEntry = nullptr ); - virtual ~ScIconSetFrmtDataEntry() override; - virtual Size calculateRequisition() const override; - virtual void setAllocation(const Size &rAllocation) override; - virtual void dispose() override; + ScIconSetFrmtDataEntry(weld::Container* pParent, ScIconSetType eType, ScDocument* pDoc, + sal_Int32 i, const ScColorScaleEntry* pEntry = nullptr); + void Show() { mxGrid->show(); } + void Hide() { mxGrid->hide(); } + void set_grid_top_attach(int nTop) + { + mxGrid->set_grid_left_attach(0); + mxGrid->set_grid_top_attach(nTop); + } ScColorScaleEntry* CreateEntry(ScDocument* pDoc, const ScAddress& rPos) const; void SetFirstEntry(); }; -ScIconSetFrmtDataEntry::ScIconSetFrmtDataEntry(vcl::Window* pParent, ScIconSetType eType, ScDocument* pDoc, sal_Int32 i, const ScColorScaleEntry* pEntry) - : VclContainer(pParent) +ScIconSetFrmtDataEntry::ScIconSetFrmtDataEntry(weld::Container* pParent, ScIconSetType eType, ScDocument* pDoc, sal_Int32 i, const ScColorScaleEntry* pEntry) + : mxBuilder(Application::CreateBuilder(pParent, "modules/scalc/ui/conditionaliconset.ui")) + , mxGrid(mxBuilder->weld_container("ConditionalIconSet")) + , mxImgIcon(mxBuilder->weld_image("icon")) + , mxFtEntry(mxBuilder->weld_label("label")) + , mxEdEntry(mxBuilder->weld_entry("entry")) + , mxLbEntryType(mxBuilder->weld_combo_box("listbox")) { - m_pUIBuilder.reset(new VclBuilder(this, getUIRootDir(), "modules/scalc/ui/conditionaliconset.ui")); - get(maGrid, "ConditionalIconSet"); - get(maImgIcon, "icon"); - get(maFtEntry, "label"); - get(maEdEntry, "entry"); - get(maLbEntryType, "listbox"); - maImgIcon->SetImage(Image(ScIconSetFormat::getBitmap(pDoc->GetIconSetBitmapMap(), eType, i))); + mxImgIcon->set_from_icon_name(ScIconSetFormat::getIconName(eType, i)); if(pEntry) { switch(pEntry->GetType()) { case COLORSCALE_VALUE: - maLbEntryType->SelectEntryPos(0); - maEdEntry->SetText(convertNumberToString(pEntry->GetValue(), pDoc)); + mxLbEntryType->set_active(0); + mxEdEntry->set_text(convertNumberToString(pEntry->GetValue(), pDoc)); break; case COLORSCALE_PERCENTILE: - maLbEntryType->SelectEntryPos(2); - maEdEntry->SetText(convertNumberToString(pEntry->GetValue(), pDoc)); + mxLbEntryType->set_active(2); + mxEdEntry->set_text(convertNumberToString(pEntry->GetValue(), pDoc)); break; case COLORSCALE_PERCENT: - maLbEntryType->SelectEntryPos(1); - maEdEntry->SetText(convertNumberToString(pEntry->GetValue(), pDoc)); + mxLbEntryType->set_active(1); + mxEdEntry->set_text(convertNumberToString(pEntry->GetValue(), pDoc)); break; case COLORSCALE_FORMULA: - maLbEntryType->SelectEntryPos(3); - maEdEntry->SetText(pEntry->GetFormula(formula::FormulaGrammar::GRAM_DEFAULT)); + mxLbEntryType->set_active(3); + mxEdEntry->set_text(pEntry->GetFormula(formula::FormulaGrammar::GRAM_DEFAULT)); break; default: assert(false); ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits