diff options
23 files changed, 112 insertions, 140 deletions
diff --git a/chart2/source/controller/dialogs/dlg_CreationWizard.cxx b/chart2/source/controller/dialogs/dlg_CreationWizard.cxx index db54937be38c..58a744980556 100644 --- a/chart2/source/controller/dialogs/dlg_CreationWizard.cxx +++ b/chart2/source/controller/dialogs/dlg_CreationWizard.cxx @@ -22,6 +22,7 @@ #include <strings.hrc> #include <helpids.h> #include <ChartModel.hxx> +#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp> #include "tp_ChartType.hxx" #include "tp_RangeChooser.hxx" @@ -30,9 +31,6 @@ #include "ChartTypeTemplateProvider.hxx" #include "DialogModel.hxx" -#define CHART_WIZARD_PAGEWIDTH 250 -#define CHART_WIZARD_PAGEHEIGHT 170 - using namespace css; namespace chart @@ -45,14 +43,14 @@ namespace chart #define STATE_OBJECTS 3 #define STATE_LAST STATE_OBJECTS -CreationWizard::CreationWizard(vcl::Window* pParent, const uno::Reference<frame::XModel>& xChartModel, +CreationWizard::CreationWizard(weld::Window* pParent, const uno::Reference<frame::XModel>& xChartModel, const uno::Reference<uno::XComponentContext>& xContext) - : vcl::RoadmapWizard(pParent) - , m_xChartModel(xChartModel,uno::UNO_QUERY) - , m_xComponentContext(xContext) - , m_pTemplateProvider(nullptr) - , m_aTimerTriggeredControllerLock(xChartModel) - , m_bCanTravel(true) + : vcl::RoadmapWizardMachine(pParent) + , m_xChartModel(xChartModel,uno::UNO_QUERY) + , m_xComponentContext(xContext) + , m_pTemplateProvider(nullptr) + , m_aTimerTriggeredControllerLock(xChartModel) + , m_bCanTravel(true) { m_pDialogModel.reset(new DialogModel(m_xChartModel, m_xComponentContext)); defaultButton(WizardButtonFlags::FINISH); @@ -69,12 +67,6 @@ CreationWizard::CreationWizard(vcl::Window* pParent, const uno::Reference<frame: declarePath(PATH_FULL, aPath); SetRoadmapHelpId(HID_SCH_WIZARD_ROADMAP); - SetRoadmapInteractive(true); - - Size aAdditionalRoadmapSize(LogicToPixel(Size(85, 0), MapMode(MapUnit::MapAppFont))); - Size aSize(LogicToPixel(Size(CHART_WIZARD_PAGEWIDTH, CHART_WIZARD_PAGEHEIGHT), MapMode(MapUnit::MapAppFont))); - aSize.AdjustWidth(aAdditionalRoadmapSize.Width() ); - SetSizePixel(aSize); if (!m_pDialogModel->getModel().isDataFromSpreadsheet()) { @@ -84,6 +76,16 @@ CreationWizard::CreationWizard(vcl::Window* pParent, const uno::Reference<frame: // Call ActivatePage, to create and activate the first page ActivatePage(); + + m_xAssistant->set_current_page(0); +} + +short CreationWizard::run() +{ + int nRet = vcl::RoadmapWizardMachine::run(); + if (nRet == static_cast<int>(WizardButtonFlags::FINISH)) + return ui::dialogs::ExecutableDialogResults::OK; + return ui::dialogs::ExecutableDialogResults::CANCEL; } CreationWizard::~CreationWizard() = default; @@ -91,12 +93,18 @@ CreationWizard::~CreationWizard() = default; VclPtr<TabPage> CreationWizard::createPage(WizardState nState) { VclPtr<vcl::OWizardPage> pRet; + + OString sIdent(OString::number(nState)); + weld::Container* pPageContainer = m_xAssistant->append_page(sIdent); + // TODO eventually pass DialogController as distinct argument instead of bundling into TabPageParent + TabPageParent aParent(pPageContainer, this); + switch( nState ) { case STATE_CHARTTYPE: { m_aTimerTriggeredControllerLock.startTimer(); - VclPtrInstance<ChartTypeTabPage> pChartTypeTabPage(this,m_xChartModel); + VclPtrInstance<ChartTypeTabPage> pChartTypeTabPage(aParent, m_xChartModel); pRet = pChartTypeTabPage; m_pTemplateProvider = pChartTypeTabPage; if (m_pDialogModel) @@ -106,18 +114,18 @@ VclPtr<TabPage> CreationWizard::createPage(WizardState nState) case STATE_SIMPLE_RANGE: { m_aTimerTriggeredControllerLock.startTimer(); - pRet = VclPtr<RangeChooserTabPage>::Create(this, *m_pDialogModel, m_pTemplateProvider, this); + pRet = VclPtr<RangeChooserTabPage>::Create(aParent, *m_pDialogModel, m_pTemplateProvider, this); } break; case STATE_DATA_SERIES: { m_aTimerTriggeredControllerLock.startTimer(); - pRet = VclPtr<DataSourceTabPage>::Create(this, *m_pDialogModel, m_pTemplateProvider, this); + pRet = VclPtr<DataSourceTabPage>::Create(aParent, *m_pDialogModel, m_pTemplateProvider, this); } break; case STATE_OBJECTS: { - pRet = VclPtr<TitlesAndObjectsTabPage>::Create(this,m_xChartModel, m_xComponentContext); + pRet = VclPtr<TitlesAndObjectsTabPage>::Create(aParent, m_xChartModel, m_xComponentContext); m_aTimerTriggeredControllerLock.startTimer(); } break; @@ -147,13 +155,14 @@ vcl::WizardTypes::WizardState CreationWizard::determineNextState( WizardState nC ++nNextState; return (nNextState==STATE_LAST+1) ? WZS_INVALID_STATE : nNextState; } + void CreationWizard::enterState(WizardState nState) { m_aTimerTriggeredControllerLock.startTimer(); enableButtons( WizardButtonFlags::PREVIOUS, nState > STATE_FIRST ); enableButtons( WizardButtonFlags::NEXT, nState < STATE_LAST ); if( isStateEnabled( nState )) - vcl::RoadmapWizard::enterState(nState); + vcl::RoadmapWizardMachine::enterState(nState); } void CreationWizard::setInvalidPage( TabPage * /* pTabPage */ ) diff --git a/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx b/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx index 9234a58bca78..ceca92791678 100644 --- a/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx +++ b/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx @@ -28,27 +28,29 @@ #include <com/sun/star/awt/Size.hpp> #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp> #include <tools/diagnose_ex.h> namespace chart { using namespace ::com::sun::star; -CreationWizardUnoDlg::CreationWizardUnoDlg( const uno::Reference< uno::XComponentContext >& xContext ) - : OComponentHelper( m_aMutex ) - , m_xCC( xContext ) - , m_pDialog( nullptr ) - , m_bUnlockControllersOnExecute(false) +CreationWizardUnoDlg::CreationWizardUnoDlg(const uno::Reference<uno::XComponentContext>& xContext) + : OComponentHelper(m_aMutex) + , m_xCC(xContext) + , m_bUnlockControllersOnExecute(false) { uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create(m_xCC); uno::Reference< frame::XTerminateListener > xListener( this ); xDesktop->addTerminateListener( xListener ); } + CreationWizardUnoDlg::~CreationWizardUnoDlg() { SolarMutexGuard aSolarGuard; - m_pDialog.disposeAndClear(); + m_xDialog.reset(); } + // lang::XServiceInfo OUString SAL_CALL CreationWizardUnoDlg::getImplementationName() { @@ -150,9 +152,8 @@ void SAL_CALL CreationWizardUnoDlg::setTitle( const OUString& /*rTitle*/ ) void CreationWizardUnoDlg::createDialogOnDemand() { SolarMutexGuard aSolarGuard; - if( !m_pDialog ) + if (!m_xDialog) { - vcl::Window* pParent = nullptr; if( !m_xParentWindow.is() && m_xChartModel.is() ) { uno::Reference< frame::XController > xController( @@ -165,38 +166,26 @@ void CreationWizardUnoDlg::createDialogOnDemand() m_xParentWindow = xFrame->getContainerWindow(); } } - if( m_xParentWindow.is() ) - { - VCLXWindow* pImplementation = comphelper::getUnoTunnelImplementation<VCLXWindow>(m_xParentWindow); - if (pImplementation) - pParent = pImplementation->GetWindow().get(); - } uno::Reference< XComponent > xComp( this ); if( m_xChartModel.is() ) { - m_pDialog = VclPtr<CreationWizard>::Create( pParent, m_xChartModel, m_xCC ); - m_pDialog->AddEventListener( LINK( this, CreationWizardUnoDlg, DialogEventHdl ) ); + m_xDialog = std::make_unique<CreationWizard>(Application::GetFrameWeld(m_xParentWindow), m_xChartModel, m_xCC); } } } -IMPL_LINK( CreationWizardUnoDlg, DialogEventHdl, VclWindowEvent&, rEvent, void ) -{ - if(rEvent.GetId() == VclEventId::ObjectDying) - m_pDialog = nullptr;//avoid duplicate destruction of m_pDialog -} sal_Int16 SAL_CALL CreationWizardUnoDlg::execute( ) { - sal_Int16 nRet = RET_CANCEL; + sal_Int16 nRet = ui::dialogs::ExecutableDialogResults::CANCEL; { SolarMutexGuard aSolarGuard; createDialogOnDemand(); - if( !m_pDialog ) + if (!m_xDialog) return nRet; TimerTriggeredControllerLock aTimerTriggeredControllerLock( m_xChartModel ); if( m_bUnlockControllersOnExecute && m_xChartModel.is() ) m_xChartModel->unlockControllers(); - nRet = m_pDialog->Execute(); + nRet = m_xDialog->run(); } return nRet; } @@ -228,7 +217,7 @@ void SAL_CALL CreationWizardUnoDlg::disposing() m_xParentWindow.clear(); SolarMutexGuard aSolarGuard; - m_pDialog.disposeAndClear(); + m_xDialog.reset(); try { @@ -249,27 +238,15 @@ uno::Reference< beans::XPropertySetInfo > SAL_CALL CreationWizardUnoDlg::getProp return nullptr; } -void SAL_CALL CreationWizardUnoDlg::setPropertyValue( const OUString& rPropertyName - , const uno::Any& rValue ) +void SAL_CALL CreationWizardUnoDlg::setPropertyValue(const OUString& rPropertyName, + const uno::Any& rValue) { if( rPropertyName == "Position" ) { - awt::Point aPos; - if( ! (rValue >>= aPos) ) - throw lang::IllegalArgumentException( "Property 'Position' requires value of type awt::Point", nullptr, 0 ); - - //set left upper outer corner relative to screen - //pixels, screen position SolarMutexGuard aSolarGuard; createDialogOnDemand(); - if( m_pDialog ) - { - m_pDialog->SetPosPixel( Point(0,0) ); - tools::Rectangle aRect( m_pDialog->GetWindowExtentsRelative( nullptr ) ); - Point aNewOuterPos( aPos.X - aRect.Left(), aPos.Y - aRect.Top() ); - m_pDialog->SetPosPixel( aNewOuterPos ); - } + //read only property, do nothing else } else if( rPropertyName == "Size") { @@ -293,10 +270,10 @@ uno::Any SAL_CALL CreationWizardUnoDlg::getPropertyValue( const OUString& rPrope //pixels, screen position SolarMutexGuard aSolarGuard; createDialogOnDemand(); - if( m_pDialog ) + if (m_xDialog) { - tools::Rectangle aRect( m_pDialog->GetWindowExtentsRelative( nullptr ) ); - awt::Point aPoint(aRect.Left(),aRect.Top()); + Point aPos(m_xDialog->getDialog()->get_position()); + awt::Point aPoint(aPos.X(), aPos.Y()); aRet <<= aPoint; } } @@ -306,10 +283,10 @@ uno::Any SAL_CALL CreationWizardUnoDlg::getPropertyValue( const OUString& rPrope //pixels, screen position SolarMutexGuard aSolarGuard; createDialogOnDemand(); - if( m_pDialog ) + if (m_xDialog) { - tools::Rectangle aRect( m_pDialog->GetWindowExtentsRelative( nullptr ) ); - awt::Size aSize(aRect.GetWidth(),aRect.GetHeight()); + Size aRect(m_xDialog->getDialog()->get_size()); + awt::Size aSize(aRect.Width(), aRect.Height()); aRet <<= aSize; } } diff --git a/chart2/source/controller/dialogs/dlg_DataSource.cxx b/chart2/source/controller/dialogs/dlg_DataSource.cxx index 856420bcc245..4bd826466bff 100644 --- a/chart2/source/controller/dialogs/dlg_DataSource.cxx +++ b/chart2/source/controller/dialogs/dlg_DataSource.cxx @@ -92,10 +92,10 @@ DataSourceDialog::DataSourceDialog(weld::Window * pParent, { TabPageParent aRangeParent(m_xTabControl->get_page("range"), this); m_pRangeChooserTabPage = VclPtr<RangeChooserTabPage>::Create(aRangeParent, *(m_apDialogModel.get()), - m_apDocTemplateProvider.get(), nullptr, true /* bHideDescription */ ); + m_apDocTemplateProvider.get(), true /* bHideDescription */ ); TabPageParent aSeriesParent(m_xTabControl->get_page("series"), this); m_pDataSourceTabPage = VclPtr<DataSourceTabPage>::Create(aSeriesParent, *(m_apDialogModel.get()), - m_apDocTemplateProvider.get(), nullptr, true /* bHideDescription */ ); + m_apDocTemplateProvider.get(), true /* bHideDescription */ ); m_xTabControl->connect_enter_page(LINK(this, DataSourceDialog, ActivatePageHdl)); m_xTabControl->connect_leave_page(LINK(this, DataSourceDialog, DeactivatePageHdl)); ActivatePageHdl(m_xTabControl->get_current_page_ident()); diff --git a/chart2/source/controller/dialogs/tp_DataSource.cxx b/chart2/source/controller/dialogs/tp_DataSource.cxx index 452b4f0b3603..e1ce453af530 100644 --- a/chart2/source/controller/dialogs/tp_DataSource.cxx +++ b/chart2/source/controller/dialogs/tp_DataSource.cxx @@ -110,15 +110,6 @@ OUString lcl_GetSequenceNameForLabel(const ::chart::SeriesEntry* pEntry) return aResult; } -void lcl_enableRangeChoosing( bool bEnable, Dialog * pDialog ) -{ - if( pDialog ) - { - pDialog->SetModalInputMode( !bEnable ); - pDialog->Show( !bEnable ); - } -} - void lcl_enableRangeChoosing(bool bEnable, weld::DialogController* pDialog) { if (!pDialog) @@ -169,17 +160,14 @@ namespace chart DataSourceTabPage::DataSourceTabPage(TabPageParent pParent, DialogModel & rDialogModel, ChartTypeTemplateProvider* pTemplateProvider, - Dialog * pParentDialog, bool bHideDescription /* = false */) : ::vcl::OWizardPage(pParent, "modules/schart/ui/tp_DataSource.ui", "tp_DataSource") , m_pTemplateProvider(pTemplateProvider) , m_rDialogModel(rDialogModel) , m_pCurrentRangeChoosingField( nullptr ) , m_bIsDirty( false ) - , m_pParentDialog( pParentDialog ) , m_pParentController(pParent.pController) - , m_pTabPageNotifiable(pParentDialog ? dynamic_cast<TabPageNotifiable*>(pParentDialog) - : dynamic_cast<TabPageNotifiable*>(m_pParentController)) + , m_pTabPageNotifiable(dynamic_cast<TabPageNotifiable*>(m_pParentController)) , m_xFT_CAPTION(m_xBuilder->weld_label("FT_CAPTION_FOR_WIZARD")) , m_xFT_SERIES(m_xBuilder->weld_label("FT_SERIES")) , m_xLB_SERIES(m_xBuilder->weld_tree_view("LB_SERIES")) @@ -247,13 +235,6 @@ void DataSourceTabPage::InsertRoleLBEntry(const OUString& rRole, const OUString& DataSourceTabPage::~DataSourceTabPage() { - disposeOnce(); -} - -void DataSourceTabPage::dispose() -{ - m_pParentDialog.clear(); - ::vcl::OWizardPage::dispose(); } void DataSourceTabPage::ActivatePage() @@ -548,7 +529,6 @@ IMPL_LINK_NOARG(DataSourceTabPage, MainRangeButtonClickedHdl, weld::Button&, voi m_xLB_SERIES->get_text(nEntry)); } - lcl_enableRangeChoosing( true, m_pParentDialog ); lcl_enableRangeChoosing( true, m_pParentController ); m_rDialogModel.getRangeSelectionHelper()->chooseRange( aSelectedRolesRange, aUIStr, *this ); } @@ -565,7 +545,6 @@ IMPL_LINK_NOARG(DataSourceTabPage, CategoriesRangeButtonClickedHdl, weld::Button return; OUString aStr(SchResId(m_xFT_CATEGORIES->get_visible() ? STR_DATA_SELECT_RANGE_FOR_CATEGORIES : STR_DATA_SELECT_RANGE_FOR_DATALABELS)); - lcl_enableRangeChoosing(true, m_pParentDialog); lcl_enableRangeChoosing(true, m_pParentController); m_rDialogModel.getRangeSelectionHelper()->chooseRange( m_rDialogModel.getCategoriesRange(), aStr, *this ); @@ -746,7 +725,6 @@ void DataSourceTabPage::listeningFinished( m_pCurrentRangeChoosingField = nullptr; updateControlState(); - lcl_enableRangeChoosing(false, m_pParentDialog); lcl_enableRangeChoosing(false, m_pParentController); } diff --git a/chart2/source/controller/dialogs/tp_DataSource.hxx b/chart2/source/controller/dialogs/tp_DataSource.hxx index 26698ce91821..5386ae1b4fba 100644 --- a/chart2/source/controller/dialogs/tp_DataSource.hxx +++ b/chart2/source/controller/dialogs/tp_DataSource.hxx @@ -54,7 +54,6 @@ public: explicit DataSourceTabPage(TabPageParent pParent, DialogModel & rDialogModel, ChartTypeTemplateProvider* pTemplateProvider, - Dialog * pParentDialog, bool bHideDescription = false); virtual ~DataSourceTabPage() override; @@ -64,7 +63,6 @@ public: private: // OWizardPage - virtual void dispose() override; virtual bool commitPage( ::vcl::WizardTypes::CommitPageReason eReason ) override; //TabPage @@ -123,7 +121,6 @@ private: weld::Entry* m_pCurrentRangeChoosingField; bool m_bIsDirty; - VclPtr<Dialog> m_pParentDialog; weld::DialogController* m_pParentController; TabPageNotifiable * m_pTabPageNotifiable; diff --git a/chart2/source/controller/dialogs/tp_RangeChooser.cxx b/chart2/source/controller/dialogs/tp_RangeChooser.cxx index 39bc4ebe4f78..e0f03383492b 100644 --- a/chart2/source/controller/dialogs/tp_RangeChooser.cxx +++ b/chart2/source/controller/dialogs/tp_RangeChooser.cxx @@ -40,15 +40,6 @@ namespace } } - void lcl_enableRangeChoosing(bool bEnable, Dialog * pDialog) - { - if( pDialog ) - { - pDialog->SetModalInputMode( !bEnable ); - pDialog->Show(!bEnable); - } - } - void lcl_enableRangeChoosing(bool bEnable, weld::DialogController* pDialog) { if (!pDialog) @@ -69,17 +60,15 @@ using ::com::sun::star::uno::Sequence; RangeChooserTabPage::RangeChooserTabPage(TabPageParent pParent, DialogModel & rDialogModel, ChartTypeTemplateProvider* pTemplateProvider, - Dialog* pParentDialog, bool bHideDescription /* = false */) + bool bHideDescription /* = false */) : OWizardPage(pParent, "modules/schart/ui/tp_RangeChooser.ui", "tp_RangeChooser") , m_nChangingControlCalls(0) , m_bIsDirty(false) , m_aLastValidRangeString() , m_pTemplateProvider(pTemplateProvider) , m_rDialogModel( rDialogModel ) - , m_pParentDialog(pParentDialog) , m_pParentController(pParent.pController) - , m_pTabPageNotifiable(pParentDialog ? dynamic_cast<TabPageNotifiable*>(pParentDialog) - : dynamic_cast<TabPageNotifiable*>(m_pParentController)) + , m_pTabPageNotifiable(dynamic_cast<TabPageNotifiable*>(m_pParentController)) , m_xFT_Caption(m_xBuilder->weld_label("FT_CAPTION_FOR_WIZARD")) , m_xFT_Range(m_xBuilder->weld_label("FT_RANGE")) , m_xED_Range(m_xBuilder->weld_entry("ED_RANGE")) @@ -135,13 +124,6 @@ RangeChooserTabPage::RangeChooserTabPage(TabPageParent pParent, DialogModel & rD RangeChooserTabPage::~RangeChooserTabPage() { - disposeOnce(); -} - -void RangeChooserTabPage::dispose() -{ - m_pParentDialog.clear(); - OWizardPage::dispose(); } void RangeChooserTabPage::ActivatePage() @@ -358,7 +340,6 @@ IMPL_LINK_NOARG(RangeChooserTabPage, ChooseRangeHdl, weld::Button&, void) OUString aRange = m_xED_Range->get_text(); OUString aTitle = m_xFTTitle->get_label(); - lcl_enableRangeChoosing( true, m_pParentDialog ); lcl_enableRangeChoosing( true, m_pParentController ); m_rDialogModel.getRangeSelectionHelper()->chooseRange( aRange, aTitle, *this ); } @@ -385,7 +366,6 @@ void RangeChooserTabPage::listeningFinished( const OUString & rNewRange ) if( isValid()) changeDialogModelAccordingToControls(); - lcl_enableRangeChoosing( false, m_pParentDialog ); lcl_enableRangeChoosing( false, m_pParentController ); } void RangeChooserTabPage::disposingRangeSelection() diff --git a/chart2/source/controller/dialogs/tp_RangeChooser.hxx b/chart2/source/controller/dialogs/tp_RangeChooser.hxx index 6bf8f28156e8..d630fc59f109 100644 --- a/chart2/source/controller/dialogs/tp_RangeChooser.hxx +++ b/chart2/source/controller/dialogs/tp_RangeChooser.hxx @@ -39,9 +39,8 @@ public: RangeChooserTabPage(TabPageParent pParent, DialogModel & rDialogModel, ChartTypeTemplateProvider* pTemplateProvider, - Dialog * pParentDialog, bool bHideDescription = false); + bool bHideDescription = false); virtual ~RangeChooserTabPage() override; - virtual void dispose() override; //RangeSelectionListenerParent virtual void listeningFinished( const OUString & rNewRange ) override; @@ -78,7 +77,6 @@ private: ChartTypeTemplateProvider* m_pTemplateProvider; DialogModel & m_rDialogModel; - VclPtr<Dialog> m_pParentDialog; weld::DialogController* m_pParentController; TabPageNotifiable * m_pTabPageNotifiable; diff --git a/chart2/source/controller/inc/dlg_CreationWizard.hxx b/chart2/source/controller/inc/dlg_CreationWizard.hxx index 0f05f6243f14..8562d6365020 100644 --- a/chart2/source/controller/inc/dlg_CreationWizard.hxx +++ b/chart2/source/controller/inc/dlg_CreationWizard.hxx @@ -36,10 +36,10 @@ namespace chart class DialogModel; class ChartTypeTemplateProvider; -class CreationWizard : public vcl::RoadmapWizard, public TabPageNotifiable +class CreationWizard : public vcl::RoadmapWizardMachine, public TabPageNotifiable { public: - CreationWizard(vcl::Window* pParent, + CreationWizard(weld::Window* pParent, const css::uno::Reference<css::frame::XModel>& xChartModel, const css::uno::Reference<css::uno::XComponentContext>& xContext); @@ -50,6 +50,8 @@ public: virtual void setInvalidPage(TabPage * pTabPage) override; virtual void setValidPage(TabPage * pTabPage) override; + virtual short run() override; + protected: virtual bool leaveState( WizardState _nState ) override; virtual WizardState determineNextState(WizardState nCurrentState) const override; diff --git a/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx b/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx index a54adb5c6a5e..230cac85816d 100644 --- a/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx +++ b/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx @@ -92,8 +92,6 @@ public: virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; - DECL_LINK( DialogEventHdl, VclWindowEvent&, void ); - protected: // ____ OComponentHelper ____ /// Called in dispose method after the listeners were notified. @@ -107,7 +105,7 @@ private: css::uno::Reference< css::uno::XComponentContext> m_xCC; css::uno::Reference< css::awt::XWindow > m_xParentWindow; - VclPtr<CreationWizard> m_pDialog; + std::unique_ptr<CreationWizard> m_xDialog; bool m_bUnlockControllersOnExecute; }; diff --git a/chart2/uiconfig/ui/tp_RangeChooser.ui b/chart2/uiconfig/ui/tp_RangeChooser.ui index 2684913d3595..9a74a3d171b4 100644 --- a/chart2/uiconfig/ui/tp_RangeChooser.ui +++ b/chart2/uiconfig/ui/tp_RangeChooser.ui @@ -11,6 +11,7 @@ <object class="GtkGrid" id="tp_RangeChooser"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="hexpand">True</property> <property name="border_width">6</property> <child> <object class="GtkGrid" id="box1"> diff --git a/chart2/uiconfig/ui/wizelementspage.ui b/chart2/uiconfig/ui/wizelementspage.ui index b301b8258f1e..574907036d71 100644 --- a/chart2/uiconfig/ui/wizelementspage.ui +++ b/chart2/uiconfig/ui/wizelementspage.ui @@ -5,6 +5,7 @@ <object class="GtkBox" id="WizElementsPage"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="hexpand">True</property> <property name="border_width">6</property> <property name="orientation">vertical</property> <property name="spacing">12</property> @@ -12,18 +13,21 @@ <object class="GtkFrame" id="frameAxes"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="hexpand">True</property> <property name="label_xalign">0</property> <property name="shadow_type">none</property> <child> <object class="GtkAlignment" id="alignment1"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="hexpand">True</property> <property name="top_padding">6</property> <property name="left_padding">12</property> <child> <object class="GtkGrid" id="grid2"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="hexpand">True</property> <property name="column_spacing">18</property> <child> <object class="GtkGrid" id="grid4"> diff --git a/dbaccess/UIConfig_dbaccess.mk b/dbaccess/UIConfig_dbaccess.mk index ff79be062c22..eacb9eb112c2 100644 --- a/dbaccess/UIConfig_dbaccess.mk +++ b/dbaccess/UIConfig_dbaccess.mk @@ -21,7 +21,6 @@ $(eval $(call gb_UIConfig_add_uifiles,dbaccess, \ dbaccess/uiconfig/ui/colwidthdialog \ dbaccess/uiconfig/ui/connectionpage \ dbaccess/uiconfig/ui/copytablepage \ - dbaccess/uiconfig/ui/databasewizard \ dbaccess/uiconfig/ui/dbaseindexdialog \ dbaccess/uiconfig/ui/dbasepage \ dbaccess/uiconfig/ui/dbwizconnectionpage \ diff --git a/dbaccess/source/ui/dlg/dbwizsetup.cxx b/dbaccess/source/ui/dlg/dbwizsetup.cxx index e878a7d611eb..78ec885efa14 100644 --- a/dbaccess/source/ui/dlg/dbwizsetup.cxx +++ b/dbaccess/source/ui/dlg/dbwizsetup.cxx @@ -68,6 +68,7 @@ #include <com/sun/star/ucb/IOErrorCode.hpp> #include <com/sun/star/task/InteractionHandler.hpp> #include <com/sun/star/task/XInteractionHandler2.hpp> +#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp> #include <com/sun/star/ui/dialogs/TemplateDescription.hpp> #include <svl/filenotation.hxx> @@ -173,6 +174,14 @@ ODbTypeWizDialogSetup::ODbTypeWizDialogSetup(weld::Window* _pParent m_xAssistant->set_current_page(0); } +short ODbTypeWizDialogSetup::run() +{ + int nRet = vcl::RoadmapWizardMachine::run(); + if (nRet == static_cast<int>(WizardButtonFlags::FINISH)) + return ui::dialogs::ExecutableDialogResults::OK; + return ui::dialogs::ExecutableDialogResults::CANCEL; +} + void ODbTypeWizDialogSetup::declareAuthDepPath( const OUString& _sURL, PathId _nPathId, const vcl::RoadmapWizardTypes::WizardPath& _rPaths) { bool bHasAuthentication = DataSourceMetaData::getAuthentication( _sURL ) != AuthNone; diff --git a/dbaccess/source/ui/inc/dbwizsetup.hxx b/dbaccess/source/ui/inc/dbwizsetup.hxx index 16969b467ee3..171c58bfbba1 100644 --- a/dbaccess/source/ui/inc/dbwizsetup.hxx +++ b/dbaccess/source/ui/inc/dbwizsetup.hxx @@ -118,6 +118,7 @@ public: */ bool IsTableWizardToBeStarted() const; + virtual short run() override; private: /// to override to create new pages virtual VclPtr<TabPage> createPage(WizardState _nState) override; diff --git a/dbaccess/source/ui/uno/DBTypeWizDlgSetup.cxx b/dbaccess/source/ui/uno/DBTypeWizDlgSetup.cxx index 8361a2325cea..e372cbec082b 100644 --- a/dbaccess/source/ui/uno/DBTypeWizDlgSetup.cxx +++ b/dbaccess/source/ui/uno/DBTypeWizDlgSetup.cxx @@ -26,6 +26,7 @@ #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp> #include <com/sun/star/sdbc/XDataSource.hpp> +#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp> #include <comphelper/processfactory.hxx> #include <vcl/svapp.hxx> @@ -111,9 +112,9 @@ svt::OGenericUnoDialog::Dialog ODBTypeWizDialogSetup::createDialog(const css::un return svt::OGenericUnoDialog::Dialog(std::make_unique<ODbTypeWizDialogSetup>(Application::GetFrameWeld(rParent), m_pDatasourceItems.get(), m_aContext, m_aInitialSelection)); } -void ODBTypeWizDialogSetup::executedDialog(sal_Int16 _nExecutionResult) +void ODBTypeWizDialogSetup::executedDialog(sal_Int16 nExecutionResult) { - if ( _nExecutionResult == RET_OK ) + if (nExecutionResult == css::ui::dialogs::ExecutableDialogResults::OK) { const ODbTypeWizDialogSetup* pDialog = static_cast<ODbTypeWizDialogSetup*>(m_aDialog.m_xWeldDialog.get()); m_bOpenDatabase = pDialog->IsDatabaseDocumentToBeOpened(); diff --git a/include/vcl/roadmapwizard.hxx b/include/vcl/roadmapwizard.hxx index df0632af5085..de70169fdbcc 100644 --- a/include/vcl/roadmapwizard.hxx +++ b/include/vcl/roadmapwizard.hxx @@ -230,8 +230,6 @@ namespace vcl void SetRoadmapHelpId( const OString& _rId ); - void SetRoadmapInteractive( bool _bInteractive ); - // returns whether a given state is enabled bool isStateEnabled( WizardState _nState ) const; diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index d4b688243c68..61deac2be88a 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -480,6 +480,8 @@ public: virtual void set_page_sensitive(const OString& rIdent, bool bSensitive) = 0; virtual weld::Container* append_page(const OString& rIdent) = 0; + virtual void set_page_side_help_id(const OString& rHelpId) = 0; + void connect_jump_page(const Link<const OString&, bool>& rLink) { m_aJumpPageHdl = rLink; } }; diff --git a/vcl/UIConfig_vcl.mk b/vcl/UIConfig_vcl.mk index 3184aaee5293..638fc9a537ae 100644 --- a/vcl/UIConfig_vcl.mk +++ b/vcl/UIConfig_vcl.mk @@ -11,6 +11,7 @@ $(eval $(call gb_UIConfig_UIConfig,vcl)) $(eval $(call gb_UIConfig_add_uifiles,vcl,\ vcl/uiconfig/ui/aboutbox \ + vcl/uiconfig/ui/wizard \ vcl/uiconfig/ui/cupspassworddialog \ vcl/uiconfig/ui/editmenu \ vcl/uiconfig/ui/errornocontentdialog \ diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index e0f3ad3f35c3..547bac4170c1 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -1653,6 +1653,11 @@ public: } } + virtual void set_page_side_help_id(const OString& rHelpId) override + { + m_xWizard->SetRoadmapHelpId(rHelpId); + } + weld::Button* weld_widget_for_response(int nResponse) override; virtual ~SalInstanceAssistant() override diff --git a/vcl/source/control/roadmapwizard.cxx b/vcl/source/control/roadmapwizard.cxx index 2d29a71aa47a..66f098e31cb9 100644 --- a/vcl/source/control/roadmapwizard.cxx +++ b/vcl/source/control/roadmapwizard.cxx @@ -170,12 +170,12 @@ namespace vcl m_pImpl->pRoadmap->SetHelpId( _rId ); } - void RoadmapWizard::SetRoadmapInteractive( bool _bInteractive ) + void RoadmapWizardMachine::SetRoadmapHelpId(const OString& rId) { - m_pImpl->pRoadmap->SetRoadmapInteractive( _bInteractive ); + m_xAssistant->set_page_side_help_id(rId); } - void RoadmapWizardMachine::SetRoadmapInteractive( bool _bInteractive ) + void RoadmapWizard::SetRoadmapInteractive( bool _bInteractive ) { m_pImpl->pRoadmap->SetRoadmapInteractive( _bInteractive ); } diff --git a/vcl/source/control/wizardmachine.cxx b/vcl/source/control/wizardmachine.cxx index 8a1a92a707f2..8f291ce40c38 100644 --- a/vcl/source/control/wizardmachine.cxx +++ b/vcl/source/control/wizardmachine.cxx @@ -685,7 +685,7 @@ namespace vcl } WizardMachine::WizardMachine(weld::Window* pParent, WizardButtonFlags nButtonFlags) - : AssistantController(pParent, "dbaccess/ui/databasewizard.ui", "DatabaseWizard") + : AssistantController(pParent, "vcl/ui/wizard.ui", "Wizard") , m_nCurState(0) , m_pFirstPage(nullptr) , m_xFinish(m_xAssistant->weld_widget_for_response(static_cast<int>(WizardButtonFlags::FINISH))) @@ -892,7 +892,7 @@ namespace vcl bool WizardMachine::onFinish() { - return Finish( RET_OK ); + return Finish(static_cast<int>(WizardButtonFlags::FINISH)); } IMPL_LINK_NOARG(WizardMachine, OnFinish, weld::Button&, void) diff --git a/dbaccess/uiconfig/ui/databasewizard.ui b/vcl/uiconfig/ui/wizard.ui index 5f07332a825e..e1f68da9e66a 100644 --- a/dbaccess/uiconfig/ui/databasewizard.ui +++ b/vcl/uiconfig/ui/wizard.ui @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- Generated with glade 3.22.1 --> -<interface domain="dba"> +<interface domain="vcl"> <requires lib="gtk+" version="3.20"/> - <object class="GtkAssistant" id="DatabaseWizard"> + <object class="GtkAssistant" id="Wizard"> <property name="can_focus">True</property> <property name="border_width">6</property> - <property name="title" translatable="yes" context="databasewizard|DatabaseWizard">Database Wizard</property> <property name="modal">True</property> <property name="default_width">0</property> <property name="default_height">0</property> diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 45f6ae5a9813..4045e1c3c91c 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -3012,10 +3012,16 @@ struct DialogRunner static void signal_response(GtkDialog*, gint nResponseId, gpointer data); static void signal_cancel(GtkDialog*, gpointer data); - static gboolean signal_delete(GtkDialog*, GdkEventAny*, gpointer data) + static gboolean signal_delete(GtkDialog* pDialog, GdkEventAny*, gpointer data) { DialogRunner* pThis = static_cast<DialogRunner*>(data); - pThis->loop_quit(); + if (GTK_IS_ASSISTANT(pThis->m_pDialog)) + { + // An assistant isn't a dialog, but we want to treat it like one + signal_response(pDialog, GTK_RESPONSE_DELETE_EVENT, data); + } + else + pThis->loop_quit(); return true; /* Do not destroy */ } @@ -3835,6 +3841,13 @@ public: return m_aPages.back().get(); } + virtual void set_page_side_help_id(const OString& rHelpId) override + { + if (!m_pSidebar) + return; + ::set_help_id(m_pSidebar, rHelpId); + } + virtual GtkButton* get_widget_for_response(int nGtkResponse) override { GtkButton* pButton = nullptr; |