weld chart CreationWizard
Change-Id: I7ee88c1e1b0eca5c2510a4bbba8b60c0d8a4e3e8
Reviewed-on: https://gerrit.libreoffice.org/77954
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/chart2/source/controller/dialogs/dlg_CreationWizard.cxx b/chart2/source/controller/dialogs/dlg_CreationWizard.cxx
index db54937..58a7449 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 9234a58..ceca927 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 856420b..4bd8264 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 452b4f0..e1ce453 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 26698ce..5386ae1 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 39bc4eb..e0f0338 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 6bf8f28..d630fc59 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 0f05f62..8562d63 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 a54adb5..230cac8 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 2684913d3..9a74a3d 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 b301b82..5749070 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 ff79be0..eacb9eb 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 e878a7d..78ec885 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 16969b4..171c58b 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 8361a23..e372cbe 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 df0632a..de70169 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 d4b6882..61deac2 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 3184aae..638fc9a 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 e0f3ad3..547bac4 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 2d29a71..66f098e 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 8a1a92a..8f291ce 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
similarity index 72%
rename from dbaccess/uiconfig/ui/databasewizard.ui
rename to vcl/uiconfig/ui/wizard.ui
index 5f07332..e1f68da 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 45f6ae5..4045e1c 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;