diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-04-20 13:05:24 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-04-23 12:33:44 +0200 |
commit | c0af8057188c0e95831f9e6d1ef96a424da6f9b2 (patch) | |
tree | 6509c67d0cfcc42e3b107004167f2efcccda43cd | |
parent | 27e26fc4286f66ab1bf4c807d86b8f3254c5c68b (diff) |
weld SfxPrintOptionsDialog
and SwMMResultPrintDialog
Change-Id: Icded6a26a3a151293bea0c9173334cf634283e89
Reviewed-on: https://gerrit.libreoffice.org/53299
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
47 files changed, 388 insertions, 405 deletions
diff --git a/include/sfx2/prnmon.hxx b/include/sfx2/prnmon.hxx index 4f1bacd93e80..66dec0442723 100644 --- a/include/sfx2/prnmon.hxx +++ b/include/sfx2/prnmon.hxx @@ -22,33 +22,32 @@ #include <memory> #include <sal/config.h> #include <sfx2/dllapi.h> - -#include <vcl/button.hxx> -#include <vcl/dialog.hxx> #include <sfx2/printer.hxx> +#include <vcl/weld.hxx> class SfxViewShell; struct SfxPrintOptDlg_Impl; -class SfxPrintOptionsDialog : public ModalDialog +class SfxPrintOptionsDialog : public weld::GenericDialogController { private: std::unique_ptr<SfxPrintOptDlg_Impl> pDlgImpl; SfxViewShell* pViewSh; std::unique_ptr<SfxItemSet> pOptions; VclPtr<SfxTabPage> pPage; + std::unique_ptr<weld::Widget> m_xHelpBtn; + std::unique_ptr<weld::Container> m_xContainer; + DECL_LINK(HelpRequestHdl, weld::Widget&, bool); public: - SfxPrintOptionsDialog( vcl::Window *pParent, - SfxViewShell *pViewShell, - const SfxItemSet *rOptions ); + SfxPrintOptionsDialog(weld::Window *pParent, + SfxViewShell *pViewShell, + const SfxItemSet *rOptions); virtual ~SfxPrintOptionsDialog() override; - virtual void dispose() override; - virtual short Execute() override; - virtual bool EventNotify( NotifyEvent& rNEvt ) override; + short execute(); const SfxItemSet& GetOptions() const { return *pOptions; } void DisableHelp(); diff --git a/include/sfx2/tabdlg.hxx b/include/sfx2/tabdlg.hxx index 72ba2378fcfe..f171de346dce 100644 --- a/include/sfx2/tabdlg.hxx +++ b/include/sfx2/tabdlg.hxx @@ -47,13 +47,13 @@ struct TabPageParent , pPage(nullptr) { } - TabPageParent(weld::Window* _pPage) + TabPageParent(weld::Container* _pPage) : pParent(nullptr) , pPage(_pPage) { } VclPtr<vcl::Window> pParent; - weld::Widget* pPage; + weld::Container* pPage; }; typedef VclPtr<SfxTabPage> (*CreateTabPage)(TabPageParent pParent, const SfxItemSet *rAttrSet); diff --git a/include/sfx2/viewsh.hxx b/include/sfx2/viewsh.hxx index f29f94c87591..8f72837bbdaa 100644 --- a/include/sfx2/viewsh.hxx +++ b/include/sfx2/viewsh.hxx @@ -244,7 +244,7 @@ public: virtual SfxPrinter* GetPrinter( bool bCreate = false ); virtual sal_uInt16 SetPrinter( SfxPrinter *pNewPrinter, SfxPrinterChangeFlags nDiffFlags = SFX_PRINTER_ALL ); virtual bool HasPrintOptionsPage() const; - virtual VclPtr<SfxTabPage> CreatePrintOptionsPage( TabPageParent pParent, const SfxItemSet &rOptions ); + virtual VclPtr<SfxTabPage> CreatePrintOptionsPage(weld::Container* pPage, const SfxItemSet &rOptions); Printer* GetActivePrinter() const; // Working set diff --git a/include/svtools/prnsetup.hxx b/include/svtools/prnsetup.hxx index 64c2ed5d4d7e..f1f5b6c73832 100644 --- a/include/svtools/prnsetup.hxx +++ b/include/svtools/prnsetup.hxx @@ -21,64 +21,58 @@ #define INCLUDED_SVTOOLS_PRNSETUP_HXX #include <svtools/svtdllapi.h> - -#include <vcl/dialog.hxx> -#include <vcl/fixed.hxx> -#include <vcl/button.hxx> -#include <vcl/group.hxx> -#include <vcl/lstbox.hxx> +#include <vcl/weld.hxx> #include <vcl/timer.hxx> class Printer; class QueueInfo; - -class SVT_DLLPUBLIC PrinterSetupDialog : public ModalDialog +class SVT_DLLPUBLIC PrinterSetupDialog : public weld::GenericDialogController { private: - VclPtr<ListBox> m_pLbName; - VclPtr<PushButton> m_pBtnProperties; - VclPtr<PushButton> m_pBtnOptions; - VclPtr<FixedText> m_pFiStatus; - VclPtr<FixedText> m_pFiType; - VclPtr<FixedText> m_pFiLocation; - VclPtr<FixedText> m_pFiComment; + std::unique_ptr<weld::ComboBoxText> m_xLbName; + std::unique_ptr<weld::Button> m_xBtnProperties; + std::unique_ptr<weld::Button> m_xBtnOptions; + std::unique_ptr<weld::Label> m_xFiStatus; + std::unique_ptr<weld::Label> m_xFiType; + std::unique_ptr<weld::Label> m_xFiLocation; + std::unique_ptr<weld::Label> m_xFiComment; AutoTimer maStatusTimer; VclPtr<Printer> mpPrinter; VclPtr<Printer> mpTempPrinter; SVT_DLLPRIVATE void ImplSetInfo(); - DECL_DLLPRIVATE_LINK( ImplPropertiesHdl, Button*, void ); - DECL_DLLPRIVATE_LINK( ImplChangePrinterHdl, ListBox&, void ); - DECL_DLLPRIVATE_LINK( ImplStatusHdl, Timer*, void ); + DECL_DLLPRIVATE_LINK( ImplPropertiesHdl, weld::Button&, void ); + DECL_DLLPRIVATE_LINK( ImplChangePrinterHdl, weld::ComboBoxText&, void ); + DECL_DLLPRIVATE_LINK( ImplGetFocusHdl, weld::Widget&, void ); + DECL_DLLPRIVATE_LINK( ImplStatusHdl, Timer*, void ); + DECL_DLLPRIVATE_LINK( ImplDataChangedHdl, VclSimpleEvent&, void); public: - PrinterSetupDialog( vcl::Window* pWindow ); + PrinterSetupDialog(weld::Window* pWindow); virtual ~PrinterSetupDialog() override; - virtual void dispose() override; void SetPrinter( Printer* pNewPrinter ) { mpPrinter = pNewPrinter; } Printer* GetPrinter() const { return mpPrinter; } - virtual void DataChanged( const DataChangedEvent& rDCEvt ) override; - virtual bool EventNotify( NotifyEvent& rNEvt ) override; + short execute(); - virtual short Execute() override; + weld::Window* GetFrameWeld() const { return m_xDialog.get(); } - void SetOptionsHdl( const Link<Button*,void>& rLink ); + void SetOptionsHdl( const Link<weld::Button&,void>& rLink ); }; #define IMPL_PRINTDLG_STATUS_UPDATE 15000 void ImplFillPrnDlgListBox( const Printer* pPrinter, - ListBox* pBox, PushButton* pPropBtn ); -void ImplFreePrnDlgListBox( ListBox* pBox, bool bClear = true ); -Printer* ImplPrnDlgListBoxSelect( ListBox const * pBox, PushButton* pPropBtn, + weld::ComboBoxText* pBox, weld::Button* pPropBtn ); +void ImplFreePrnDlgListBox( weld::ComboBoxText* pBox, bool bClear = true ); +Printer* ImplPrnDlgListBoxSelect( weld::ComboBoxText const * pBox, weld::Button* pPropBtn, Printer const * pPrinter, Printer* pTempPrinter ); Printer* ImplPrnDlgUpdatePrinter( Printer const * pPrinter, Printer* pTempPrinter ); -void ImplPrnDlgUpdateQueueInfo( ListBox const * pBox, QueueInfo& rInfo ); +void ImplPrnDlgUpdateQueueInfo( weld::ComboBoxText const * pBox, QueueInfo& rInfo ); OUString ImplPrnDlgGetStatusText( const QueueInfo& rInfo ); #endif // INCLUDED_SVTOOLS_PRNSETUP_HXX diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx index ae40d76ce96f..0c14fb3f2955 100644 --- a/include/vcl/print.hxx +++ b/include/vcl/print.hxx @@ -51,6 +51,7 @@ namespace vcl { class PrintDialog; } +namespace weld { class Window; } enum class PrinterSupport { @@ -291,8 +292,8 @@ public: bool SetJobSetup( const JobSetup& rSetup ); const JobSetup& GetJobSetup() const { return maJobSetup; } - bool Setup( vcl::Window* pWindow, - PrinterSetupMode eMode = PrinterSetupMode::DocumentGlobal ); + bool Setup(weld::Window* pWindow, + PrinterSetupMode eMode = PrinterSetupMode::DocumentGlobal); bool SetPrinterProps( const Printer* pPrinter ); /** SetPrinterOptions is used internally only now @@ -559,7 +560,7 @@ public: SAL_DLLPRIVATE void pushPropertiesToPrinter(); SAL_DLLPRIVATE void resetPaperToLastConfigured(); VCL_PLUGIN_PUBLIC void setJobState( css::view::PrintableState ); - SAL_DLLPRIVATE void setupPrinter( vcl::Window* i_pDlgParent ); + SAL_DLLPRIVATE void setupPrinter( weld::Window* i_pDlgParent ); SAL_DLLPRIVATE int getPageCountProtected() const; SAL_DLLPRIVATE css::uno::Sequence< css::beans::PropertyValue > diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index ae9931eb2b0c..93c5b55ed644 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -37,7 +37,8 @@ public: virtual void set_sensitive(bool sensitive) = 0; virtual bool get_sensitive() const = 0; virtual void set_visible(bool visible) = 0; - virtual bool get_visible() const = 0; + virtual bool get_visible() const = 0; //if this widget visibility is true + virtual bool is_visible() const = 0; //if this widget visibility and all parents is true virtual void grab_focus() = 0; virtual bool has_focus() const = 0; virtual void show() = 0; @@ -155,6 +156,8 @@ public: void connect_help(const Link<Widget&, bool>& rLink) { m_aHelpRequestHdl = rLink; } + virtual SystemEnvData get_system_data() const = 0; + virtual void resize_to_request() = 0; }; @@ -189,6 +192,7 @@ public: = 0; virtual void set_default_response(int response) = 0; virtual Button* get_widget_for_response(int response) = 0; + virtual Container* weld_content_area() = 0; }; class VCL_DLLPUBLIC MessageDialog : virtual public Dialog diff --git a/sc/source/ui/inc/prevwsh.hxx b/sc/source/ui/inc/prevwsh.hxx index 179e6b1de882..bfeb685faa99 100644 --- a/sc/source/ui/inc/prevwsh.hxx +++ b/sc/source/ui/inc/prevwsh.hxx @@ -105,7 +105,7 @@ public: virtual SfxPrinter* GetPrinter( bool bCreate = false ) override; virtual sal_uInt16 SetPrinter( SfxPrinter* pNewPrinter, SfxPrinterChangeFlags nDiffFlags = SFX_PRINTER_ALL ) override; virtual bool HasPrintOptionsPage() const override; - virtual VclPtr<SfxTabPage> CreatePrintOptionsPage( TabPageParent pParent, const SfxItemSet &rOptions ) override; + virtual VclPtr<SfxTabPage> CreatePrintOptionsPage(weld::Container* pPage, const SfxItemSet &rOptions) override; void AddAccessibilityObject( SfxListener& rObject ); void RemoveAccessibilityObject( SfxListener& rObject ); diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx index 17bc4ecf1b76..126811185faf 100644 --- a/sc/source/ui/inc/tabvwsh.hxx +++ b/sc/source/ui/inc/tabvwsh.hxx @@ -318,7 +318,7 @@ public: SfxPrinterChangeFlags nDiffFlags = SFX_PRINTER_ALL ) override; virtual bool HasPrintOptionsPage() const override; - virtual VclPtr<SfxTabPage> CreatePrintOptionsPage( TabPageParent pParent, const SfxItemSet &rOptions ) override; + virtual VclPtr<SfxTabPage> CreatePrintOptionsPage(weld::Container* pPage, const SfxItemSet &rOptions) override; void ConnectObject( const SdrOle2Obj* pObj ); void ActivateObject( SdrOle2Obj* pObj, long nVerb ); diff --git a/sc/source/ui/inc/tpprint.hxx b/sc/source/ui/inc/tpprint.hxx index fb201a5b852c..9ddae6ec4dae 100644 --- a/sc/source/ui/inc/tpprint.hxx +++ b/sc/source/ui/inc/tpprint.hxx @@ -21,19 +21,17 @@ #define INCLUDED_SC_SOURCE_UI_INC_TPPRINT_HXX #include <sfx2/tabdlg.hxx> -#include <vcl/fixed.hxx> class ScTpPrintOptions : public SfxTabPage { friend class VclPtr<ScTpPrintOptions>; - VclPtr<CheckBox> m_pSkipEmptyPagesCB; - VclPtr<CheckBox> m_pSelectedSheetsCB; - VclPtr<CheckBox> m_pForceBreaksCB; + std::unique_ptr<weld::CheckButton> m_xSkipEmptyPagesCB; + std::unique_ptr<weld::CheckButton> m_xSelectedSheetsCB; + std::unique_ptr<weld::CheckButton> m_xForceBreaksCB; - ScTpPrintOptions( vcl::Window* pParent, const SfxItemSet& rCoreSet ); + ScTpPrintOptions(TabPageParent pPage, const SfxItemSet& rCoreSet); public: virtual ~ScTpPrintOptions() override; - virtual void dispose() override; static VclPtr<SfxTabPage> Create( TabPageParent pParent, const SfxItemSet* rCoreSet ); virtual bool FillItemSet( SfxItemSet* rCoreSet ) override; virtual void Reset( const SfxItemSet* rCoreSet ) override; diff --git a/sc/source/ui/optdlg/tpprint.cxx b/sc/source/ui/optdlg/tpprint.cxx index 9c8dcbc77300..f38a2f5cc7b7 100644 --- a/sc/source/ui/optdlg/tpprint.cxx +++ b/sc/source/ui/optdlg/tpprint.cxx @@ -26,34 +26,22 @@ #include <scmod.hxx> #include <sc.hrc> -ScTpPrintOptions::ScTpPrintOptions( vcl::Window* pParent, +ScTpPrintOptions::ScTpPrintOptions( TabPageParent pPage, const SfxItemSet& rCoreAttrs ) - : SfxTabPage ( pParent, - "optCalcPrintPage", - "modules/scalc/ui/optdlg.ui", - &rCoreAttrs ) + : SfxTabPage(pPage, "modules/scalc/ui/optdlg.ui", "optCalcPrintPage", &rCoreAttrs ) + , m_xSkipEmptyPagesCB(m_xBuilder->weld_check_button("suppressCB")) + , m_xSelectedSheetsCB(m_xBuilder->weld_check_button("printCB")) + , m_xForceBreaksCB(m_xBuilder->weld_check_button("forceBreaksCB")) { - get( m_pSkipEmptyPagesCB , "suppressCB" ); - get( m_pSelectedSheetsCB , "printCB" ); - get( m_pForceBreaksCB, "forceBreaksCB" ); } ScTpPrintOptions::~ScTpPrintOptions() { - disposeOnce(); } -void ScTpPrintOptions::dispose() +VclPtr<SfxTabPage> ScTpPrintOptions::Create(TabPageParent pParent, const SfxItemSet* rAttrSet) { - m_pSkipEmptyPagesCB.clear(); - m_pSelectedSheetsCB.clear(); - m_pForceBreaksCB.clear(); - SfxTabPage::dispose(); -} - -VclPtr<SfxTabPage> ScTpPrintOptions::Create( TabPageParent pParent, const SfxItemSet* rAttrSet ) -{ - return VclPtr<ScTpPrintOptions>::Create( pParent.pParent, *rAttrSet ); + return VclPtr<ScTpPrintOptions>::Create(pParent, *rAttrSet); } DeactivateRC ScTpPrintOptions::DeactivatePage( SfxItemSet* pSetP ) @@ -80,38 +68,38 @@ void ScTpPrintOptions::Reset( const SfxItemSet* rCoreSet ) if ( SfxItemState::SET == rCoreSet->GetItemState( SID_PRINT_SELECTEDSHEET, false , &pItem ) ) { bool bChecked = static_cast<const SfxBoolItem*>(pItem)->GetValue(); - m_pSelectedSheetsCB->Check( bChecked ); + m_xSelectedSheetsCB->set_active( bChecked ); } else { - m_pSelectedSheetsCB->Check( !aOptions.GetAllSheets() ); + m_xSelectedSheetsCB->set_active( !aOptions.GetAllSheets() ); } - m_pSkipEmptyPagesCB->Check( aOptions.GetSkipEmpty() ); - m_pSkipEmptyPagesCB->SaveValue(); - m_pSelectedSheetsCB->SaveValue(); - m_pForceBreaksCB->Check( aOptions.GetForceBreaks() ); - m_pForceBreaksCB->SaveValue(); + m_xSkipEmptyPagesCB->set_active( aOptions.GetSkipEmpty() ); + m_xSkipEmptyPagesCB->save_state(); + m_xSelectedSheetsCB->save_state(); + m_xForceBreaksCB->set_active( aOptions.GetForceBreaks() ); + m_xForceBreaksCB->save_state(); } bool ScTpPrintOptions::FillItemSet( SfxItemSet* rCoreAttrs ) { rCoreAttrs->ClearItem( SID_PRINT_SELECTEDSHEET ); - bool bSkipEmptyChanged = m_pSkipEmptyPagesCB->IsValueChangedFromSaved(); - bool bSelectedSheetsChanged = m_pSelectedSheetsCB->IsValueChangedFromSaved(); - bool bForceBreaksChanged = m_pForceBreaksCB->IsValueChangedFromSaved(); + bool bSkipEmptyChanged = m_xSkipEmptyPagesCB->get_state_changed_from_saved(); + bool bSelectedSheetsChanged = m_xSelectedSheetsCB->get_state_changed_from_saved(); + bool bForceBreaksChanged = m_xForceBreaksCB->get_state_changed_from_saved(); if ( bSkipEmptyChanged || bSelectedSheetsChanged || bForceBreaksChanged ) { ScPrintOptions aOpt; - aOpt.SetSkipEmpty( m_pSkipEmptyPagesCB->IsChecked() ); - aOpt.SetAllSheets( !m_pSelectedSheetsCB->IsChecked() ); - aOpt.SetForceBreaks( m_pForceBreaksCB->IsChecked() ); + aOpt.SetSkipEmpty( m_xSkipEmptyPagesCB->get_active() ); + aOpt.SetAllSheets( !m_xSelectedSheetsCB->get_active() ); + aOpt.SetForceBreaks( m_xForceBreaksCB->get_active() ); rCoreAttrs->Put( ScTpPrintItem( aOpt ) ); if ( bSelectedSheetsChanged ) { - rCoreAttrs->Put( SfxBoolItem( SID_PRINT_SELECTEDSHEET, m_pSelectedSheetsCB->IsChecked() ) ); + rCoreAttrs->Put( SfxBoolItem( SID_PRINT_SELECTEDSHEET, m_xSelectedSheetsCB->get_active() ) ); } return true; } diff --git a/sc/source/ui/view/prevwsh.cxx b/sc/source/ui/view/prevwsh.cxx index ac3f87758d0a..3d8360d52747 100644 --- a/sc/source/ui/view/prevwsh.cxx +++ b/sc/source/ui/view/prevwsh.cxx @@ -516,13 +516,13 @@ bool ScPreviewShell::HasPrintOptionsPage() const return true; } -VclPtr<SfxTabPage> ScPreviewShell::CreatePrintOptionsPage( TabPageParent pParent, const SfxItemSet &rOptions ) +VclPtr<SfxTabPage> ScPreviewShell::CreatePrintOptionsPage(weld::Container* pPage, const SfxItemSet &rOptions) { ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "ScAbstractFactory create fail!"); ::CreateTabPage ScTpPrintOptionsCreate = pFact->GetTabPageCreatorFunc(RID_SC_TP_PRINT); if ( ScTpPrintOptionsCreate ) - return ScTpPrintOptionsCreate( pParent, &rOptions ); + return ScTpPrintOptionsCreate(pPage, &rOptions); return VclPtr<SfxTabPage>(); } diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx index f5d0815f1570..401cca9ebd95 100644 --- a/sc/source/ui/view/tabvwsh4.cxx +++ b/sc/source/ui/view/tabvwsh4.cxx @@ -1049,13 +1049,13 @@ bool ScTabViewShell::HasPrintOptionsPage() const return true; } -VclPtr<SfxTabPage> ScTabViewShell::CreatePrintOptionsPage( TabPageParent pParent, const SfxItemSet &rOptions ) +VclPtr<SfxTabPage> ScTabViewShell::CreatePrintOptionsPage(weld::Container* pPage, const SfxItemSet &rOptions ) { ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "ScAbstractFactory create fail!"); ::CreateTabPage ScTpPrintOptionsCreate = pFact->GetTabPageCreatorFunc(RID_SC_TP_PRINT); if ( ScTpPrintOptionsCreate ) - return ScTpPrintOptionsCreate( pParent, &rOptions ); + return ScTpPrintOptionsCreate(pPage, &rOptions); return VclPtr<SfxTabPage>(); } diff --git a/sfx2/source/view/printer.cxx b/sfx2/source/view/printer.cxx index ee1b6e7f7edd..4b8ef5bd1cc9 100644 --- a/sfx2/source/view/printer.cxx +++ b/sfx2/source/view/printer.cxx @@ -190,50 +190,38 @@ void SfxPrinter::SetOptions( const SfxItemSet &rNewOptions ) } -SfxPrintOptionsDialog::SfxPrintOptionsDialog(vcl::Window *pParent, - SfxViewShell *pViewShell, - const SfxItemSet *pSet) - - : ModalDialog(pParent, "PrinterOptionsDialog", - "sfx/ui/printeroptionsdialog.ui") +SfxPrintOptionsDialog::SfxPrintOptionsDialog(weld::Window *pParent, + SfxViewShell *pViewShell, + const SfxItemSet *pSet) + : GenericDialogController(pParent, "sfx/ui/printeroptionsdialog.ui", "PrinterOptionsDialog") , pDlgImpl(new SfxPrintOptDlg_Impl) , pViewSh(pViewShell) , pOptions(pSet->Clone()) + , m_xHelpBtn(m_xBuilder->weld_widget("help")) + , m_xContainer(m_xDialog->weld_content_area()) { - VclContainer *pVBox = get_content_area(); - // Insert TabPage - pPage.reset(pViewSh->CreatePrintOptionsPage(pVBox, *pOptions)); + pPage.reset(pViewSh->CreatePrintOptionsPage(m_xContainer.get(), *pOptions)); DBG_ASSERT( pPage, "CreatePrintOptions != SFX_VIEW_HAS_PRINTOPTIONS" ); if( pPage ) { pPage->Reset( pOptions.get() ); - SetHelpId( pPage->GetHelpId() ); - pPage->Show(); + m_xDialog->set_help_id(pPage->GetHelpId()); } } SfxPrintOptionsDialog::~SfxPrintOptionsDialog() { - disposeOnce(); -} - -void SfxPrintOptionsDialog::dispose() -{ - pDlgImpl.reset(); pPage.disposeAndClear(); - pOptions.reset(); - ModalDialog::dispose(); } - -short SfxPrintOptionsDialog::Execute() +short SfxPrintOptionsDialog::execute() { if( ! pPage ) return RET_CANCEL; - short nRet = ModalDialog::Execute(); + short nRet = m_xDialog->run(); if ( nRet == RET_OK ) pPage->FillItemSet( pOptions.get() ); else @@ -241,24 +229,15 @@ short SfxPrintOptionsDialog::Execute() return nRet; } - -bool SfxPrintOptionsDialog::EventNotify( NotifyEvent& rNEvt ) +IMPL_LINK_NOARG(SfxPrintOptionsDialog, HelpRequestHdl, weld::Widget&, bool) { - if ( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT ) - { - if ( rNEvt.GetKeyEvent()->GetKeyCode().GetCode() == KEY_F1 && pDlgImpl->mbHelpDisabled ) - return true; // help disabled -> <F1> does nothing - } - - return ModalDialog::EventNotify( rNEvt ); + return !pDlgImpl->mbHelpDisabled; } - void SfxPrintOptionsDialog::DisableHelp() { pDlgImpl->mbHelpDisabled = true; - - get<HelpButton>("help")->Disable(); + m_xHelpBtn->set_sensitive(false); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/source/view/viewprn.cxx b/sfx2/source/view/viewprn.cxx index 44cc9d509045..19534cb129e1 100644 --- a/sfx2/source/view/viewprn.cxx +++ b/sfx2/source/view/viewprn.cxx @@ -407,38 +407,36 @@ class SfxDialogExecutor_Impl { private: SfxViewShell* _pViewSh; - VclPtr<PrinterSetupDialog> _pSetupParent; + PrinterSetupDialog& _rSetupParent; std::unique_ptr<SfxItemSet> _pOptions; bool _bHelpDisabled; - DECL_LINK( Execute, Button*, void ); + DECL_LINK( Execute, weld::Button&, void ); public: - SfxDialogExecutor_Impl( SfxViewShell* pViewSh, PrinterSetupDialog* pParent ); + SfxDialogExecutor_Impl( SfxViewShell* pViewSh, PrinterSetupDialog& rParent ); - Link<Button*, void> GetLink() const { return LINK(const_cast<SfxDialogExecutor_Impl*>(this), SfxDialogExecutor_Impl, Execute); } + Link<weld::Button&, void> GetLink() const { return LINK(const_cast<SfxDialogExecutor_Impl*>(this), SfxDialogExecutor_Impl, Execute); } const SfxItemSet* GetOptions() const { return _pOptions.get(); } void DisableHelp() { _bHelpDisabled = true; } }; -SfxDialogExecutor_Impl::SfxDialogExecutor_Impl( SfxViewShell* pViewSh, PrinterSetupDialog* pParent ) : +SfxDialogExecutor_Impl::SfxDialogExecutor_Impl( SfxViewShell* pViewSh, PrinterSetupDialog& rParent ) : _pViewSh ( pViewSh ), - _pSetupParent ( pParent ), + _rSetupParent ( rParent ), _pOptions ( nullptr ), _bHelpDisabled ( false ) { } -IMPL_LINK_NOARG(SfxDialogExecutor_Impl, Execute, Button*, void) +IMPL_LINK_NOARG(SfxDialogExecutor_Impl, Execute, weld::Button&, void) { // Options noted locally if ( !_pOptions ) { - DBG_ASSERT( _pSetupParent, "no dialog parent" ); - if( _pSetupParent ) - _pOptions = static_cast<SfxPrinter*>( _pSetupParent->GetPrinter() )->GetOptions().Clone(); + _pOptions = static_cast<SfxPrinter*>( _rSetupParent.GetPrinter() )->GetOptions().Clone(); } assert(_pOptions); @@ -446,13 +444,12 @@ IMPL_LINK_NOARG(SfxDialogExecutor_Impl, Execute, Button*, void) return; // Create Dialog - VclPtrInstance<SfxPrintOptionsDialog> pDlg( static_cast<vcl::Window*>(_pSetupParent), - _pViewSh, _pOptions.get() ); - if ( _bHelpDisabled ) - pDlg->DisableHelp(); - if ( pDlg->Execute() == RET_OK ) + SfxPrintOptionsDialog aDlg(_rSetupParent.GetFrameWeld(), _pViewSh, _pOptions.get() ); + if (_bHelpDisabled) + aDlg.DisableHelp(); + if (aDlg.execute() == RET_OK) { - _pOptions = pDlg->GetOptions().Clone(); + _pOptions = aDlg.GetOptions().Clone(); } } @@ -824,20 +821,20 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq ) VclPtr<SfxPrinter> pDlgPrinter = pPrinter->Clone(); // execute PrinterSetupDialog - VclPtrInstance<PrinterSetupDialog> pPrintSetupDlg( GetWindow() ); + PrinterSetupDialog aPrintSetupDlg(GetFrameWeld()); std::unique_ptr<SfxDialogExecutor_Impl> pExecutor; if (pImpl->m_bHasPrintOptions && HasPrintOptionsPage()) { // additional controls for dialog - pExecutor.reset( new SfxDialogExecutor_Impl( this, pPrintSetupDlg ) ); + pExecutor.reset( new SfxDialogExecutor_Impl( this, aPrintSetupDlg ) ); if ( bPrintOnHelp ) pExecutor->DisableHelp(); - pPrintSetupDlg->SetOptionsHdl( pExecutor->GetLink() ); + aPrintSetupDlg.SetOptionsHdl( pExecutor->GetLink() ); } - pPrintSetupDlg->SetPrinter( pDlgPrinter ); - nDialogRet = pPrintSetupDlg->Execute(); + aPrintSetupDlg.SetPrinter( pDlgPrinter ); + nDialogRet = aPrintSetupDlg.execute(); if ( pExecutor && pExecutor->GetOptions() ) { @@ -851,8 +848,6 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq ) } } - pPrintSetupDlg.disposeAndClear(); - // no recording of PrinterSetup except printer name (is printer dependent) rReq.Ignore(); @@ -897,7 +892,7 @@ sal_uInt16 SfxViewShell::SetPrinter( SfxPrinter* /*pNewPrinter*/, SfxPrinterChan VclPtr<SfxTabPage> SfxViewShell::CreatePrintOptionsPage ( - TabPageParent /*pParent*/, + weld::Container* /*pPage*/, const SfxItemSet& /*rOptions*/ ) { diff --git a/sfx2/uiconfig/ui/printeroptionsdialog.ui b/sfx2/uiconfig/ui/printeroptionsdialog.ui index b041fffe0efc..f502002486f2 100644 --- a/sfx2/uiconfig/ui/printeroptionsdialog.ui +++ b/sfx2/uiconfig/ui/printeroptionsdialog.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.18.3 --> +<!-- Generated with glade 3.20.4 --> <interface domain="sfx"> <requires lib="gtk+" version="3.18"/> <object class="GtkDialog" id="PrinterOptionsDialog"> @@ -7,6 +7,9 @@ <property name="border_width">6</property> <property name="title" translatable="yes" context="printeroptionsdialog|PrinterOptionsDialog">Printer Options</property> <property name="resizable">False</property> + <property name="modal">True</property> + <property name="default_width">0</property> + <property name="default_height">0</property> <property name="type_hint">dialog</property> <child internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> @@ -22,6 +25,8 @@ <property name="label">gtk-ok</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> <property name="receives_default">True</property> <property name="use_stock">True</property> </object> @@ -36,6 +41,7 @@ <property name="label">gtk-cancel</property> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="can_default">True</property> <property name="receives_default">True</property> <property name="use_stock">True</property> </object> @@ -78,5 +84,8 @@ <action-widget response="-6">cancel</action-widget> <action-widget response="-11">help</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> </interface> diff --git a/starmath/inc/view.hxx b/starmath/inc/view.hxx index 7b6e741895bb..f0d8af2424f5 100644 --- a/starmath/inc/view.hxx +++ b/starmath/inc/view.hxx @@ -251,7 +251,7 @@ protected: void InsertFrom(SfxMedium &rMedium); virtual bool HasPrintOptionsPage() const override; - virtual VclPtr<SfxTabPage> CreatePrintOptionsPage(TabPageParent pParent, + virtual VclPtr<SfxTabPage> CreatePrintOptionsPage(weld::Container* pPage, const SfxItemSet &rOptions) override; virtual void Deactivate(bool IsMDIActivate) override; virtual void Activate(bool IsMDIActivate) override; diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx index 819aaec2da13..5850194c3468 100644 --- a/starmath/source/view.cxx +++ b/starmath/source/view.cxx @@ -1260,10 +1260,10 @@ bool SmViewShell::HasPrintOptionsPage() const return true; } -VclPtr<SfxTabPage> SmViewShell::CreatePrintOptionsPage(TabPageParent pParent, +VclPtr<SfxTabPage> SmViewShell::CreatePrintOptionsPage(weld::Container* pPage, const SfxItemSet &rOptions) { - return SmPrintOptionsTabPage::Create(pParent, rOptions); + return SmPrintOptionsTabPage::Create(pPage, rOptions); } SmEditWindow *SmViewShell::GetEditWindow() diff --git a/svtools/source/dialogs/prnsetup.cxx b/svtools/source/dialogs/prnsetup.cxx index d7a8b06a7900..3d97febb7d30 100644 --- a/svtools/source/dialogs/prnsetup.cxx +++ b/svtools/source/dialogs/prnsetup.cxx @@ -20,11 +20,11 @@ #include <svtools/prnsetup.hxx> #include <svtools/strings.hrc> #include <svtools/svtresid.hxx> +#include <vcl/svapp.hxx> #include <vcl/print.hxx> - void ImplFillPrnDlgListBox( const Printer* pPrinter, - ListBox* pBox, PushButton* pPropBtn ) + weld::ComboBoxText* pBox, weld::Button* pPropBtn ) { ImplFreePrnDlgListBox( pBox ); @@ -33,29 +33,29 @@ void ImplFillPrnDlgListBox( const Printer* pPrinter, if ( nCount ) { for( unsigned int i = 0; i < nCount; i++ ) - pBox->InsertEntry( rPrinters[i] ); - pBox->SelectEntry( pPrinter->GetName() ); + pBox->append_text( rPrinters[i] ); + pBox->set_active( pPrinter->GetName() ); } - pBox->Enable( nCount != 0 ); - pPropBtn->Show( pPrinter->HasSupport( PrinterSupport::SetupDialog ) ); + pBox->set_sensitive(nCount != 0); + pPropBtn->show( pPrinter->HasSupport( PrinterSupport::SetupDialog ) ); } -void ImplFreePrnDlgListBox( ListBox* pBox, bool bClear ) +void ImplFreePrnDlgListBox( weld::ComboBoxText* pBox, bool bClear ) { if ( bClear ) - pBox->Clear(); + pBox->clear(); } -Printer* ImplPrnDlgListBoxSelect( ListBox const * pBox, PushButton* pPropBtn, +Printer* ImplPrnDlgListBoxSelect( const weld::ComboBoxText* pBox, weld::Button* pPropBtn, Printer const * pPrinter, Printer* pTempPrinterIn ) { VclPtr<Printer> pTempPrinter( pTempPrinterIn ); - if ( pBox->GetSelectedEntryPos() != LISTBOX_ENTRY_NOTFOUND ) + if ( pBox->get_active() != -1 ) { - const QueueInfo* pInfo = Printer::GetQueueInfo( pBox->GetSelectedEntry(), true ); + const QueueInfo* pInfo = Printer::GetQueueInfo( pBox->get_active_text(), true ); if( pInfo) { if ( !pTempPrinter ) @@ -76,13 +76,13 @@ Printer* ImplPrnDlgListBoxSelect( ListBox const * pBox, PushButton* pPropBtn, } } - pPropBtn->Enable( pTempPrinter->HasSupport( PrinterSupport::SetupDialog ) ); + pPropBtn->set_sensitive(pTempPrinter->HasSupport(PrinterSupport::SetupDialog)); } else - pPropBtn->Disable(); + pPropBtn->set_sensitive(false); } else - pPropBtn->Disable(); + pPropBtn->set_sensitive(false); return pTempPrinter; } @@ -107,11 +107,11 @@ Printer* ImplPrnDlgUpdatePrinter( Printer const * pPrinter, Printer* pTempPrinte } -void ImplPrnDlgUpdateQueueInfo( ListBox const * pBox, QueueInfo& rInfo ) +void ImplPrnDlgUpdateQueueInfo( const weld::ComboBoxText* pBox, QueueInfo& rInfo ) { - if ( pBox->GetSelectedEntryPos() != LISTBOX_ENTRY_NOTFOUND ) + if ( pBox->get_active() != -1 ) { - const QueueInfo* pInfo = Printer::GetQueueInfo( pBox->GetSelectedEntry(), true ); + const QueueInfo* pInfo = Printer::GetQueueInfo( pBox->get_active_text(), true ); if( pInfo ) rInfo = *pInfo; } @@ -207,147 +207,128 @@ OUString ImplPrnDlgGetStatusText( const QueueInfo& rInfo ) return aStr; } - -PrinterSetupDialog::PrinterSetupDialog(vcl::Window* pParent) - : ModalDialog(pParent, "PrinterSetupDialog", - "svt/ui/printersetupdialog.ui") +PrinterSetupDialog::PrinterSetupDialog(weld::Window* pParent) + : GenericDialogController(pParent, "svt/ui/printersetupdialog.ui", "PrinterSetupDialog") + , m_xLbName(m_xBuilder->weld_combo_box_text("name")) + , m_xBtnProperties(m_xBuilder->weld_button("properties")) + , m_xBtnOptions(m_xBuilder->weld_button("options")) + , m_xFiStatus(m_xBuilder->weld_label("status")) + , m_xFiType(m_xBuilder->weld_label("type")) + , m_xFiLocation(m_xBuilder->weld_label("location")) + , m_xFiComment(m_xBuilder->weld_label("comment")) { - get(m_pLbName, "name"); - m_pLbName->SetStyle(m_pLbName->GetStyle() | WB_SORT); - get(m_pBtnProperties, "properties"); - get(m_pBtnOptions, "options"); - get(m_pFiStatus, "status"); - get(m_pFiType, "type"); - get(m_pFiLocation, "location"); - get(m_pFiComment, "comment"); + m_xLbName->make_sorted(); // show options button only if link is set - m_pBtnOptions->Hide(); + m_xBtnOptions->hide(); mpPrinter = nullptr; mpTempPrinter = nullptr; maStatusTimer.SetTimeout( IMPL_PRINTDLG_STATUS_UPDATE ); maStatusTimer.SetInvokeHandler( LINK( this, PrinterSetupDialog, ImplStatusHdl ) ); - m_pBtnProperties->SetClickHdl( LINK( this, PrinterSetupDialog, ImplPropertiesHdl ) ); - m_pLbName->SetSelectHdl( LINK( this, PrinterSetupDialog, ImplChangePrinterHdl ) ); + m_xBtnProperties->connect_clicked( LINK( this, PrinterSetupDialog, ImplPropertiesHdl ) ); + m_xLbName->connect_changed( LINK( this, PrinterSetupDialog, ImplChangePrinterHdl ) ); + m_xDialog->connect_focus_in( LINK( this, PrinterSetupDialog, ImplGetFocusHdl ) ); + Application::AddEventListener(LINK( this, PrinterSetupDialog, ImplDataChangedHdl ) ); } - PrinterSetupDialog::~PrinterSetupDialog() { - disposeOnce(); -} - -void PrinterSetupDialog::dispose() -{ - ImplFreePrnDlgListBox(m_pLbName, false); - m_pLbName.clear(); - m_pBtnProperties.clear(); - m_pBtnOptions.clear(); - m_pFiStatus.clear(); - m_pFiType.clear(); - m_pFiLocation.clear(); - m_pFiComment.clear(); - mpTempPrinter.disposeAndClear(); - mpPrinter.clear(); - ModalDialog::dispose(); + Application::RemoveEventListener(LINK( this, PrinterSetupDialog, ImplDataChangedHdl ) ); + ImplFreePrnDlgListBox(m_xLbName.get(), false); } -void PrinterSetupDialog::SetOptionsHdl( const Link<Button*,void>& rLink ) +void PrinterSetupDialog::SetOptionsHdl(const Link<weld::Button&, void>& rLink) { - m_pBtnOptions->SetClickHdl( rLink ); - m_pBtnOptions->Show( rLink.IsSet() ); + m_xBtnOptions->connect_clicked(rLink); + m_xBtnOptions->show(rLink.IsSet()); } void PrinterSetupDialog::ImplSetInfo() { - const QueueInfo* pInfo = Printer::GetQueueInfo(m_pLbName->GetSelectedEntry(), true); + const QueueInfo* pInfo = Printer::GetQueueInfo(m_xLbName->get_active_text(), true); if ( pInfo ) { - m_pFiType->SetText( pInfo->GetDriver() ); - m_pFiLocation->SetText( pInfo->GetLocation() ); - m_pFiComment->SetText( pInfo->GetComment() ); - m_pFiStatus->SetText( ImplPrnDlgGetStatusText( *pInfo ) ); + m_xFiType->set_label( pInfo->GetDriver() ); + m_xFiLocation->set_label( pInfo->GetLocation() ); + m_xFiComment->set_label( pInfo->GetComment() ); + m_xFiStatus->set_label( ImplPrnDlgGetStatusText( *pInfo ) ); } else { OUString aTempStr; - m_pFiType->SetText( aTempStr ); - m_pFiLocation->SetText( aTempStr ); - m_pFiComment->SetText( aTempStr ); - m_pFiStatus->SetText( aTempStr ); + m_xFiType->set_label( aTempStr ); + m_xFiLocation->set_label( aTempStr ); + m_xFiComment->set_label( aTempStr ); + m_xFiStatus->set_label( aTempStr ); } } - IMPL_LINK_NOARG(PrinterSetupDialog, ImplStatusHdl, Timer *, void) { QueueInfo aInfo; - ImplPrnDlgUpdateQueueInfo(m_pLbName, aInfo); - m_pFiStatus->SetText( ImplPrnDlgGetStatusText( aInfo ) ); + ImplPrnDlgUpdateQueueInfo(m_xLbName.get(), aInfo); + m_xFiStatus->set_label( ImplPrnDlgGetStatusText( aInfo ) ); } -IMPL_LINK_NOARG(PrinterSetupDialog, ImplPropertiesHdl, Button*, void) +IMPL_LINK_NOARG(PrinterSetupDialog, ImplPropertiesHdl, weld::Button&, void) { if ( !mpTempPrinter ) mpTempPrinter = VclPtr<Printer>::Create( mpPrinter->GetJobSetup() ); - mpTempPrinter->Setup( this ); + mpTempPrinter->Setup(m_xDialog.get()); } - -IMPL_LINK_NOARG(PrinterSetupDialog, ImplChangePrinterHdl, ListBox&, void) +IMPL_LINK_NOARG(PrinterSetupDialog, ImplChangePrinterHdl, weld::ComboBoxText&, void) { - mpTempPrinter = ImplPrnDlgListBoxSelect(m_pLbName, m_pBtnProperties, - mpPrinter, mpTempPrinter ); + mpTempPrinter = ImplPrnDlgListBoxSelect(m_xLbName.get(), m_xBtnProperties.get(), + mpPrinter, mpTempPrinter); ImplSetInfo(); } - -bool PrinterSetupDialog::EventNotify( NotifyEvent& rNEvt ) +IMPL_LINK(PrinterSetupDialog, ImplGetFocusHdl, weld::Widget&, rWidget, void) { - if ( (rNEvt.GetType() == MouseNotifyEvent::GETFOCUS) && IsReallyVisible() ) - ImplStatusHdl( &maStatusTimer ); - - return ModalDialog::EventNotify( rNEvt ); + if (rWidget.is_visible()) + ImplStatusHdl(&maStatusTimer); } - -void PrinterSetupDialog::DataChanged( const DataChangedEvent& rDCEvt ) +IMPL_LINK(PrinterSetupDialog, ImplDataChangedHdl, VclSimpleEvent&, rEvt, void) { - if ( rDCEvt.GetType() == DataChangedEventType::PRINTER ) - { - mpTempPrinter = ImplPrnDlgUpdatePrinter( mpPrinter, mpTempPrinter ); - Printer* pPrn; - if ( mpTempPrinter ) - pPrn = mpTempPrinter; - else - pPrn = mpPrinter; - ImplFillPrnDlgListBox(pPrn, m_pLbName, m_pBtnProperties); - ImplSetInfo(); - } - - ModalDialog::DataChanged( rDCEvt ); + VclEventId nEvent = rEvt.GetId(); + if (nEvent != VclEventId::ApplicationDataChanged) + return; + + DataChangedEvent* pData = static_cast<DataChangedEvent*>(static_cast<VclWindowEvent&>(rEvt).GetData()); + if (!pData || pData->GetType() != DataChangedEventType::PRINTER) + return; + + mpTempPrinter = ImplPrnDlgUpdatePrinter(mpPrinter, mpTempPrinter); + Printer* pPrn; + if (mpTempPrinter) + pPrn = mpTempPrinter; + else + pPrn = mpPrinter; + ImplFillPrnDlgListBox(pPrn, m_xLbName.get(), m_xBtnProperties.get()); + ImplSetInfo(); } - -short PrinterSetupDialog::Execute() +short PrinterSetupDialog::execute() { if ( !mpPrinter || mpPrinter->IsPrinting() || mpPrinter->IsJobActive() ) { - SAL_WARN( "svtools.dialogs", "PrinterSetupDialog::Execute() - No Printer or printer is printing" ); + SAL_WARN( "svtools.dialogs", "PrinterSetupDialog::execute() - No Printer or printer is printing" ); return RET_CANCEL; } Printer::updatePrinters(); - ImplFillPrnDlgListBox(mpPrinter, m_pLbName, m_pBtnProperties); + ImplFillPrnDlgListBox(mpPrinter, m_xLbName.get(), m_xBtnProperties.get()); ImplSetInfo(); maStatusTimer.Start(); // start dialog - short nRet = ModalDialog::Execute(); + short nRet = m_xDialog->run(); // update data if the dialog was terminated with OK if ( nRet == RET_OK ) diff --git a/svtools/uiconfig/ui/printersetupdialog.ui b/svtools/uiconfig/ui/printersetupdialog.ui index 0ccfccdbfc02..354d7a7e441d 100644 --- a/svtools/uiconfig/ui/printersetupdialog.ui +++ b/svtools/uiconfig/ui/printersetupdialog.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.18.3 --> +<!-- Generated with glade 3.20.4 --> <interface domain="svt"> <requires lib="gtk+" version="3.18"/> <object class="GtkDialog" id="PrinterSetupDialog"> @@ -7,6 +7,9 @@ <property name="border_width">6</property> <property name="title" translatable="yes" context="printersetupdialog|PrinterSetupDialog">Printer Setup</property> <property name="resizable">False</property> + <property name="modal">True</property> + <property name="default_width">0</property> + <property name="default_height">0</property> <property name="type_hint">dialog</property> <child internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> @@ -43,7 +46,6 @@ <property name="expand">False</property> <property name="fill">True</property> <property name="position">1</property> - <property name="secondary">True</property> </packing> </child> <child> @@ -107,10 +109,10 @@ <object class="GtkLabel" id="label2"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">1</property> <property name="label" translatable="yes" context="printersetupdialog|label2">Name:</property> <property name="use_underline">True</property> <property name="mnemonic_widget">name</property> + <property name="xalign">1</property> </object> <packing> <property name="left_attach">0</property> @@ -121,8 +123,8 @@ <object class="GtkLabel" id="label3"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">1</property> <property name="label" translatable="yes" context="printersetupdialog|label3">Status:</property> + <property name="xalign">1</property> </object> <packing> <property name="left_attach">0</property> @@ -133,8 +135,8 @@ <object class="GtkLabel" id="label4"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">1</property> <property name="label" translatable="yes" context="printersetupdialog|label4">Type:</property> + <property name="xalign">1</property> </object> <packing> <property name="left_attach">0</property> @@ -145,8 +147,8 @@ <object class="GtkLabel" id="label5"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">1</property> <property name="label" translatable="yes" context="printersetupdialog|label5">Location:</property> + <property name="xalign">1</property> </object> <packing> <property name="left_attach">0</property> @@ -157,8 +159,8 @@ <object class="GtkLabel" id="label6"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">1</property> <property name="label" translatable="yes" context="printersetupdialog|label6">Comment:</property> + <property name="xalign">1</property> </object> <packing> <property name="left_attach">0</property> @@ -226,7 +228,7 @@ </packing> </child> <child> - <object class="GtkComboBox" id="name"> + <object class="GtkComboBoxText" id="name"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> @@ -261,9 +263,11 @@ </child> <action-widgets> <action-widget response="-11">help</action-widget> - <action-widget response="0">options</action-widget> <action-widget response="-5">ok</action-widget> <action-widget response="-6">cancel</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> </interface> diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx index 14d352f4e481..63411ef6b03c 100644 --- a/sw/inc/swabstdlg.hxx +++ b/sw/inc/swabstdlg.hxx @@ -499,7 +499,7 @@ public: virtual CreateTabPage GetTabPageCreatorFunc( sal_uInt16 nId ) = 0; virtual void ExecuteMMResultSaveDialog() = 0; - virtual void ExecuteMMResultPrintDialog() = 0; + virtual void ExecuteMMResultPrintDialog(weld::Window* pParent) = 0; virtual void ExecuteMMResultEmailDialog() = 0; protected: diff --git a/sw/inc/view.hxx b/sw/inc/view.hxx index 73a9138455b0..2dedb5ff5f99 100644 --- a/sw/inc/view.hxx +++ b/sw/inc/view.hxx @@ -618,7 +618,7 @@ public: // methods for printing SAL_DLLPRIVATE virtual SfxPrinter* GetPrinter( bool bCreate = false ) override; SAL_DLLPRIVATE virtual bool HasPrintOptionsPage() const override; - SAL_DLLPRIVATE virtual VclPtr<SfxTabPage> CreatePrintOptionsPage( TabPageParent pParent, + SAL_DLLPRIVATE virtual VclPtr<SfxTabPage> CreatePrintOptionsPage(weld::Container* pParent, const SfxItemSet& rSet) override; static SvxSearchItem* GetSearchItem() { return m_pSrchItem; } /// See SfxViewShell::getPart(). @@ -646,7 +646,7 @@ inline const SwDocShell *SwView::GetDocShell() const return const_cast<SwView*>(this)->GetDocShell(); } -VclPtr<SfxTabPage> CreatePrintOptionsPage( TabPageParent pParent, +VclPtr<SfxTabPage> CreatePrintOptionsPage( weld::Container* pPage, const SfxItemSet &rOptions, bool bPreview); diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx index 03006daf0728..133b423ae433 100644 --- a/sw/source/ui/config/optpage.cxx +++ b/sw/source/ui/config/optpage.cxx @@ -451,7 +451,11 @@ void SwAddPrinterTabPage::Reset( const SfxItemSet* ) m_xEndRB->set_active(pAddPrinterAttr->m_nPrintPostIts== SwPostItMode::EndDoc ) ; m_xEndPageRB->set_active(pAddPrinterAttr->m_nPrintPostIts== SwPostItMode::EndPage ) ; m_xInMarginsRB->set_active(pAddPrinterAttr->m_nPrintPostIts== SwPostItMode::InMargins ) ; - m_xFaxLB->set_active( pAddPrinterAttr->m_sFaxName ); + auto nFound = m_xFaxLB->find_text(pAddPrinterAttr->m_sFaxName); + if (nFound != -1) + m_xFaxLB->set_active(nFound); + else + m_xFaxLB->set_active(0); } if (m_xProspectCB->get_active()) { diff --git a/sw/source/ui/dbui/mmresultdialogs.cxx b/sw/source/ui/dbui/mmresultdialogs.cxx index e19dee61342f..6fcd3740d58f 100644 --- a/sw/source/ui/dbui/mmresultdialogs.cxx +++ b/sw/source/ui/dbui/mmresultdialogs.cxx @@ -254,54 +254,36 @@ void SwMMResultSaveDialog::dispose() SfxModalDialog::dispose(); } -SwMMResultPrintDialog::SwMMResultPrintDialog() - : SfxModalDialog(nullptr, "MMResultPrintDialog", "modules/swriter/ui/mmresultprintdialog.ui") - , m_pTempPrinter(nullptr) +SwMMResultPrintDialog::SwMMResultPrintDialog(weld::Window* pParent) + : GenericDialogController(pParent, "modules/swriter/ui/mmresultprintdialog.ui", "MMResultPrintDialog") + , m_xPrinterFT(m_xBuilder->weld_label("printerft")) + , m_xPrinterLB(m_xBuilder->weld_combo_box_text("printers")) + , m_xPrinterSettingsPB(m_xBuilder->weld_button("printersettings")) + , m_xPrintAllRB(m_xBuilder->weld_radio_button("printallrb")) + , m_xFromRB(m_xBuilder->weld_radio_button("fromrb")) + , m_xFromNF(m_xBuilder->weld_spin_button("from")) + , m_xToFT(m_xBuilder->weld_label("toft")) + , m_xToNF(m_xBuilder->weld_spin_button("to")) + , m_xOKButton(m_xBuilder->weld_button("ok")) { - get(m_pPrinterFT, "printerft"); - get(m_pPrinterLB, "printers"); - m_pPrinterLB->SetStyle(m_pPrinterLB->GetStyle() | WB_SORT); - get(m_pPrinterSettingsPB, "printersettings"); - get(m_pPrintAllRB, "printallrb"); - get(m_pFromRB, "fromrb"); - get(m_pFromNF, "from-nospin"); - get(m_pToFT, "toft"); - get(m_pToNF, "to-nospin"); - get(m_pOKButton, "ok"); + m_xPrinterLB->make_sorted(); - m_pPrinterLB->SetSelectHdl(LINK(this, SwMMResultPrintDialog, PrinterChangeHdl_Impl)); - m_pPrinterSettingsPB->SetClickHdl(LINK(this, SwMMResultPrintDialog, PrinterSetupHdl_Impl)); + m_xPrinterLB->connect_changed(LINK(this, SwMMResultPrintDialog, PrinterChangeHdl_Impl)); + m_xPrinterSettingsPB->connect_clicked(LINK(this, SwMMResultPrintDialog, PrinterSetupHdl_Impl)); - Link<Button*,void> aLink = LINK(this, SwMMResultPrintDialog, DocumentSelectionHdl_Impl); - m_pPrintAllRB->SetClickHdl(aLink); - m_pFromRB->SetClickHdl(aLink); + Link<weld::ToggleButton&,void> aLink = LINK(this, SwMMResultPrintDialog, DocumentSelectionHdl_Impl); + m_xPrintAllRB->connect_toggled(aLink); + m_xFromRB->connect_toggled(aLink); // m_pPrintAllRB is the default, so disable m_pFromNF and m_pToNF initially. - aLink.Call(m_pPrintAllRB); + aLink.Call(*m_xPrintAllRB); - m_pOKButton->SetClickHdl(LINK(this, SwMMResultPrintDialog, PrintHdl_Impl)); + m_xOKButton->connect_clicked(LINK(this, SwMMResultPrintDialog, PrintHdl_Impl)); FillInPrinterSettings(); } SwMMResultPrintDialog::~SwMMResultPrintDialog() { - disposeOnce(); -} - -void SwMMResultPrintDialog::dispose() -{ - m_pPrinterFT.clear(); - m_pPrinterLB.clear(); - m_pPrinterSettingsPB.clear(); - m_pPrintAllRB.clear(); - m_pFromRB.clear(); - m_pFromNF.clear(); - m_pToFT.clear(); - m_pToNF.clear(); - m_pOKButton.clear(); - m_pTempPrinter.clear(); - - SfxModalDialog::dispose(); } SwMMResultEmailDialog::SwMMResultEmailDialog() @@ -375,33 +357,30 @@ void SwMMResultPrintDialog::FillInPrinterSettings() const std::vector<OUString>& rPrinters = Printer::GetPrinterQueues(); unsigned int nCount = rPrinters.size(); bool bMergePrinterExists = false; - if ( nCount ) - { - for( unsigned int i = 0; i < nCount; i++ ) - { - m_pPrinterLB->InsertEntry( rPrinters[i] ); - if( !bMergePrinterExists && rPrinters[i] == xConfigItem->GetSelectedPrinter() ) - bMergePrinterExists = true; - } + for (unsigned int i = 0; i < nCount; ++i) + { + m_xPrinterLB->append_text( rPrinters[i] ); + if( !bMergePrinterExists && rPrinters[i] == xConfigItem->GetSelectedPrinter() ) + bMergePrinterExists = true; } assert(xConfigItem); if(!bMergePrinterExists) { SfxPrinter* pPrinter = pView->GetWrtShell().getIDocumentDeviceAccess().getPrinter( true ); - m_pPrinterLB->SelectEntry(pPrinter->GetName()); + m_xPrinterLB->set_active(pPrinter->GetName()); } else { - m_pPrinterLB->SelectEntry(xConfigItem->GetSelectedPrinter()); + m_xPrinterLB->set_active(xConfigItem->GetSelectedPrinter()); } sal_Int32 count = xConfigItem->GetMergedDocumentCount(); - m_pToNF->SetValue(count); - m_pToNF->SetMax(count); + m_xToNF->set_value(count); + m_xToNF->set_max(count); - m_pPrinterLB->SelectEntry(xConfigItem->GetSelectedPrinter()); + m_xPrinterLB->set_active(xConfigItem->GetSelectedPrinter()); } void SwMMResultEmailDialog::FillInEmailSettings() @@ -469,12 +448,12 @@ IMPL_LINK(SwMMResultSaveDialog, DocumentSelectionHdl_Impl, Button*, pButton, voi m_pToNF->Enable(bEnableFromTo); } -IMPL_LINK(SwMMResultPrintDialog, DocumentSelectionHdl_Impl, Button*, pButton, void) +IMPL_LINK(SwMMResultPrintDialog, DocumentSelectionHdl_Impl, weld::ToggleButton&, rButton, void) { - bool bEnableFromTo = pButton == m_pFromRB; - m_pFromNF->Enable(bEnableFromTo); - m_pToFT->Enable(bEnableFromTo); - m_pToNF->Enable(bEnableFromTo); + bool bEnableFromTo = &rButton == m_xFromRB.get(); + m_xFromNF->set_sensitive(bEnableFromTo); + m_xToFT->set_sensitive(bEnableFromTo); + m_xToNF->set_sensitive(bEnableFromTo); } IMPL_LINK(SwMMResultEmailDialog, DocumentSelectionHdl_Impl, Button*, pButton, void) @@ -748,14 +727,14 @@ IMPL_LINK(SwMMResultSaveDialog, SaveOutputHdl_Impl, Button*, pButton, void) endDialog(pButton); } -IMPL_LINK(SwMMResultPrintDialog, PrinterChangeHdl_Impl, ListBox&, rBox, void) +IMPL_LINK(SwMMResultPrintDialog, PrinterChangeHdl_Impl, weld::ComboBoxText&, rBox, void) { SwView* pView = ::GetActiveView(); std::shared_ptr<SwMailMergeConfigItem> xConfigItem = pView->GetMailMergeConfigItem(); assert(xConfigItem); - if (rBox.GetSelectedEntryPos() != LISTBOX_ENTRY_NOTFOUND) + if (rBox.get_active() != -1) { - const QueueInfo* pInfo = Printer::GetQueueInfo( rBox.GetSelectedEntry(), false ); + const QueueInfo* pInfo = Printer::GetQueueInfo( rBox.get_active_text(), false ); if( pInfo ) { @@ -776,15 +755,15 @@ IMPL_LINK(SwMMResultPrintDialog, PrinterChangeHdl_Impl, ListBox&, rBox, void) else if( ! m_pTempPrinter ) m_pTempPrinter = VclPtr<Printer>::Create(); - m_pPrinterSettingsPB->Enable( m_pTempPrinter->HasSupport( PrinterSupport::SetupDialog ) ); + m_xPrinterSettingsPB->set_sensitive(m_pTempPrinter->HasSupport(PrinterSupport::SetupDialog)); } else - m_pPrinterSettingsPB->Disable(); + m_xPrinterSettingsPB->set_sensitive(false); - xConfigItem->SetSelectedPrinter(rBox.GetSelectedEntry()); + xConfigItem->SetSelectedPrinter(rBox.get_active_text()); } -IMPL_LINK(SwMMResultPrintDialog, PrintHdl_Impl, Button*, pButton, void) +IMPL_LINK_NOARG(SwMMResultPrintDialog, PrintHdl_Impl, weld::Button&, void) { SwView* pView = ::GetActiveView(); std::shared_ptr<SwMailMergeConfigItem> xConfigItem = pView->GetMailMergeConfigItem(); @@ -799,15 +778,15 @@ IMPL_LINK(SwMMResultPrintDialog, PrintHdl_Impl, Button*, pButton, void) sal_uInt32 nEnd = 0; sal_uInt32 documentCount = xConfigItem->GetMergedDocumentCount(); - if(m_pPrintAllRB->IsChecked()) + if (m_xPrintAllRB->get_active()) { nBegin = 0; nEnd = documentCount; } else { - nBegin = static_cast< sal_Int32 >(m_pFromNF->GetValue() - 1); - nEnd = static_cast< sal_Int32 >(m_pToNF->GetValue()); + nBegin = m_xFromNF->get_value() - 1; + nEnd = m_xToNF->get_value(); if(nEnd > documentCount) nEnd = documentCount; } @@ -838,15 +817,15 @@ IMPL_LINK(SwMMResultPrintDialog, PrintHdl_Impl, Button*, pButton, void) pTargetView->ExecPrint( aProps, false, true ); SfxGetpApp()->NotifyEvent(SfxEventHint(SfxEventHintId::SwMailMergeEnd, SwDocShell::GetEventName(STR_SW_EVENT_MAIL_MERGE_END), pObjSh)); - endDialog(pButton); + m_xDialog->response(RET_OK); } -IMPL_LINK(SwMMResultPrintDialog, PrinterSetupHdl_Impl, Button*, pButton, void) +IMPL_LINK_NOARG(SwMMResultPrintDialog, PrinterSetupHdl_Impl, weld::Button&, void) { - if( !m_pTempPrinter ) - PrinterChangeHdl_Impl(*m_pPrinterLB); - if(m_pTempPrinter) - m_pTempPrinter->Setup(pButton); + if (!m_pTempPrinter) + PrinterChangeHdl_Impl(*m_xPrinterLB); + if (m_pTempPrinter) + m_pTempPrinter->Setup(m_xDialog.get()); } IMPL_LINK(SwMMResultEmailDialog, SendTypeHdl_Impl, ListBox&, rBox, void) diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index fd0e2009e953..a5a6ca3ded6c 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -1139,10 +1139,10 @@ void SwAbstractDialogFactory_Impl::ExecuteMMResultSaveDialog() pDialog->Execute(); } -void SwAbstractDialogFactory_Impl::ExecuteMMResultPrintDialog() +void SwAbstractDialogFactory_Impl::ExecuteMMResultPrintDialog(weld::Window* pParent) { - ScopedVclPtrInstance<SwMMResultPrintDialog> pDialog; - pDialog->Execute(); + SwMMResultPrintDialog aDialog(pParent); + aDialog.run(); } void SwAbstractDialogFactory_Impl::ExecuteMMResultEmailDialog() diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx index 48fd7f95c91f..fd13c1d76100 100644 --- a/sw/source/ui/dialog/swdlgfact.hxx +++ b/sw/source/ui/dialog/swdlgfact.hxx @@ -649,7 +649,7 @@ public: virtual CreateTabPage GetTabPageCreatorFunc( sal_uInt16 nId ) override; virtual void ExecuteMMResultSaveDialog() override; - virtual void ExecuteMMResultPrintDialog() override; + virtual void ExecuteMMResultPrintDialog(weld::Window* pParent) override; virtual void ExecuteMMResultEmailDialog() override; }; diff --git a/sw/source/ui/envelp/envprt.cxx b/sw/source/ui/envelp/envprt.cxx index 0e52ab4a7f98..7605bd485354 100644 --- a/sw/source/ui/envelp/envprt.cxx +++ b/sw/source/ui/envelp/envprt.cxx @@ -115,10 +115,9 @@ IMPL_LINK( SwEnvPrtPage, ButtonHdl, Button *, pBtn, void ) // Call printer setup if (pPrt) { - VclPtrInstance< PrinterSetupDialog > pDlg(this); - pDlg->SetPrinter(pPrt); - pDlg->Execute(); - pDlg.reset(); + PrinterSetupDialog aDlg(GetFrameWeld()); + aDlg.SetPrinter(pPrt); + aDlg.execute(); GrabFocus(); m_pPrinterInfo->SetText(pPrt->GetName()); } diff --git a/sw/source/ui/envelp/labprt.cxx b/sw/source/ui/envelp/labprt.cxx index c876f2e2eece..faecd0ee8018 100644 --- a/sw/source/ui/envelp/labprt.cxx +++ b/sw/source/ui/envelp/labprt.cxx @@ -87,10 +87,9 @@ IMPL_LINK( SwLabPrtPage, CountHdl, Button *, pButton, void ) if (!pPrinter) pPrinter = VclPtr<Printer>::Create(); - VclPtrInstance< PrinterSetupDialog > pDlg(this); - pDlg->SetPrinter(pPrinter); - pDlg->Execute(); - pDlg.disposeAndClear(); + PrinterSetupDialog aDlg(GetFrameWeld()); + aDlg.SetPrinter(pPrinter); + aDlg.execute(); GrabFocus(); m_pPrinterInfo->SetText(pPrinter->GetName()); return; diff --git a/sw/source/ui/inc/mmresultdialogs.hxx b/sw/source/ui/inc/mmresultdialogs.hxx index 01e89826372c..a63a6653c418 100644 --- a/sw/source/ui/inc/mmresultdialogs.hxx +++ b/sw/source/ui/inc/mmresultdialogs.hxx @@ -25,6 +25,7 @@ #include <vcl/field.hxx> #include <vcl/lstbox.hxx> #include <vcl/prgsbar.hxx> +#include <vcl/weld.hxx> #include <sfx2/objsh.hxx> #include <sfx2/basedlgs.hxx> #include <svtools/simptabl.hxx> @@ -68,35 +69,30 @@ public: }; /// Dialog implementing the printing of the result document. -class SwMMResultPrintDialog : public SfxModalDialog +class SwMMResultPrintDialog : public weld::GenericDialogController { - VclPtr<FixedText> m_pPrinterFT; - VclPtr<ListBox> m_pPrinterLB; - VclPtr<PushButton> m_pPrinterSettingsPB; - - VclPtr<RadioButton> m_pPrintAllRB; - - VclPtr<RadioButton> m_pFromRB; - VclPtr<NumericField> m_pFromNF; - VclPtr<FixedText> m_pToFT; - VclPtr<NumericField> m_pToNF; - - VclPtr<Button> m_pOKButton; - VclPtr<Printer> m_pTempPrinter; - DECL_LINK(PrinterChangeHdl_Impl, ListBox&,void ); - DECL_LINK(PrintHdl_Impl, Button*, void); - DECL_LINK(PrinterSetupHdl_Impl, Button*, void ); - DECL_LINK(DocumentSelectionHdl_Impl, Button*, void); + std::unique_ptr<weld::Label> m_xPrinterFT; + std::unique_ptr<weld::ComboBoxText> m_xPrinterLB; + std::unique_ptr<weld::Button> m_xPrinterSettingsPB; + std::unique_ptr<weld::RadioButton> m_xPrintAllRB; + std::unique_ptr<weld::RadioButton> m_xFromRB; + std::unique_ptr<weld::SpinButton> m_xFromNF; + std::unique_ptr<weld::Label> m_xToFT; + std::unique_ptr<weld::SpinButton> m_xToNF; + std::unique_ptr<weld::Button> m_xOKButton; + + DECL_LINK(PrinterChangeHdl_Impl, weld::ComboBoxText&, void ); + DECL_LINK(PrintHdl_Impl, weld::Button&, void); + DECL_LINK(PrinterSetupHdl_Impl, weld::Button&, void ); + DECL_LINK(DocumentSelectionHdl_Impl, weld::ToggleButton&, void); void FillInPrinterSettings(); public: - SwMMResultPrintDialog(); + SwMMResultPrintDialog(weld::Window* pParent); virtual ~SwMMResultPrintDialog() override; - - virtual void dispose() override; }; /// Dialog implementing the sending as email of the result document. diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx index 1a74f3f64f11..6be30033a10f 100644 --- a/sw/source/uibase/app/apphdl.cxx +++ b/sw/source/uibase/app/apphdl.cxx @@ -816,7 +816,7 @@ void SwModule::ExecOther(SfxRequest& rReq) switch (nWhich) { case FN_MAILMERGE_SAVE_DOCUMENTS: pFact->ExecuteMMResultSaveDialog(); break; - case FN_MAILMERGE_PRINT_DOCUMENTS: pFact->ExecuteMMResultPrintDialog(); break; + case FN_MAILMERGE_PRINT_DOCUMENTS: pFact->ExecuteMMResultPrintDialog(rReq.GetFrameWeld()); break; case FN_MAILMERGE_EMAIL_DOCUMENTS: pFact->ExecuteMMResultEmailDialog(); break; } } diff --git a/sw/source/uibase/inc/pview.hxx b/sw/source/uibase/inc/pview.hxx index 5d046f60933e..059aecd1c060 100644 --- a/sw/source/uibase/inc/pview.hxx +++ b/sw/source/uibase/inc/pview.hxx @@ -201,7 +201,7 @@ class SW_DLLPUBLIC SwPagePreview: public SfxViewShell SAL_DLLPRIVATE virtual SfxPrinter* GetPrinter( bool bCreate = false ) override; SAL_DLLPRIVATE virtual sal_uInt16 SetPrinter( SfxPrinter *pNewPrinter, SfxPrinterChangeFlags nDiffFlags = SFX_PRINTER_ALL ) override; SAL_DLLPRIVATE virtual bool HasPrintOptionsPage() const override; - SAL_DLLPRIVATE virtual VclPtr<SfxTabPage> CreatePrintOptionsPage(TabPageParent pParent, const SfxItemSet &rOptions) override; + SAL_DLLPRIVATE virtual VclPtr<SfxTabPage> CreatePrintOptionsPage(weld::Container* pParent, const SfxItemSet &rOptions) override; SAL_DLLPRIVATE void CalcAndSetBorderPixel( SvBorder &rToFill ); diff --git a/sw/source/uibase/uiview/pview.cxx b/sw/source/uibase/uiview/pview.cxx index cd2248684316..76f46c2a46dc 100644 --- a/sw/source/uibase/uiview/pview.cxx +++ b/sw/source/uibase/uiview/pview.cxx @@ -1706,10 +1706,10 @@ bool SwPagePreview::HasPrintOptionsPage() const return true; } -VclPtr<SfxTabPage> SwPagePreview::CreatePrintOptionsPage( TabPageParent pParent, +VclPtr<SfxTabPage> SwPagePreview::CreatePrintOptionsPage( weld::Container* pPage, const SfxItemSet &rOptions ) { - return ::CreatePrintOptionsPage( TabPageParent(pParent.pParent), rOptions, !m_bNormalPrint ); + return ::CreatePrintOptionsPage(pPage, rOptions, !m_bNormalPrint); } void SwPagePreviewWin::SetViewShell( SwViewShell* pShell ) diff --git a/sw/source/uibase/uiview/viewprt.cxx b/sw/source/uibase/uiview/viewprt.cxx index f840dc3a4160..d7ac18727985 100644 --- a/sw/source/uibase/uiview/viewprt.cxx +++ b/sw/source/uibase/uiview/viewprt.cxx @@ -170,10 +170,10 @@ namespace // TabPage for application-specific print options -VclPtr<SfxTabPage> SwView::CreatePrintOptionsPage(TabPageParent pParent, +VclPtr<SfxTabPage> SwView::CreatePrintOptionsPage(weld::Container* pPage, const SfxItemSet& rSet) { - return ::CreatePrintOptionsPage( pParent, rSet, false ); + return ::CreatePrintOptionsPage(pPage, rSet, false); } // Print dispatcher @@ -303,7 +303,7 @@ void SwView::NotifyCursor(SfxViewShell* pViewShell) const // Create page printer/additions for SwView and SwPagePreview -VclPtr<SfxTabPage> CreatePrintOptionsPage( TabPageParent pParent, +VclPtr<SfxTabPage> CreatePrintOptionsPage( weld::Container* pPage, const SfxItemSet &rOptions, bool bPreview ) { @@ -317,16 +317,16 @@ VclPtr<SfxTabPage> CreatePrintOptionsPage( TabPageParent pParent, if (!fnCreatePage) return nullptr; - VclPtr<SfxTabPage> pPage = fnCreatePage(pParent, &rOptions); - OSL_ENSURE(pPage, "No page"); - if (!pPage) + VclPtr<SfxTabPage> pSfxPage = fnCreatePage(pPage, &rOptions); + OSL_ENSURE(pSfxPage, "No page"); + if (!pSfxPage) return nullptr; SfxAllItemSet aSet(*(rOptions.GetPool())); aSet.Put(SfxBoolItem(SID_PREVIEWFLAG_TYPE, bPreview)); aSet.Put(SfxBoolItem(SID_FAX_LIST, true)); - pPage->PageCreated(aSet); - return pPage; + pSfxPage->PageCreated(aSet); + return pSfxPage; } void SetAppPrintOptions( SwViewShell* pSh, bool bWeb ) diff --git a/sw/uiconfig/swriter/ui/mmresultprintdialog.ui b/sw/uiconfig/swriter/ui/mmresultprintdialog.ui index e1ef3d8aae08..64096ab8776c 100644 --- a/sw/uiconfig/swriter/ui/mmresultprintdialog.ui +++ b/sw/uiconfig/swriter/ui/mmresultprintdialog.ui @@ -1,11 +1,26 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.18.3 --> +<!-- Generated with glade 3.20.4 --> <interface domain="sw"> <requires lib="gtk+" version="3.18"/> + <object class="GtkAdjustment" id="adjustment1"> + <property name="lower">1</property> + <property name="upper">100000</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> + <object class="GtkAdjustment" id="adjustment2"> + <property name="lower">1</property> + <property name="upper">100000</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> <object class="GtkDialog" id="MMResultPrintDialog"> <property name="can_focus">False</property> <property name="border_width">6</property> <property name="title" translatable="yes" context="mmresultprintdialog|MMResultPrintDialog">Print merged document</property> + <property name="modal">True</property> + <property name="default_width">0</property> + <property name="default_height">0</property> <property name="type_hint">dialog</property> <child internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> @@ -57,6 +72,7 @@ <property name="expand">False</property> <property name="fill">True</property> <property name="position">2</property> + <property name="secondary">True</property> </packing> </child> </object> @@ -93,10 +109,10 @@ <object class="GtkLabel" id="printerft"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes" context="mmresultprintdialog|printerft">_Printer</property> <property name="use_underline">True</property> <property name="mnemonic_widget">printers</property> + <property name="xalign">0</property> </object> <packing> <property name="left_attach">0</property> @@ -205,7 +221,7 @@ <property name="draw_indicator">True</property> <property name="group">printallrb</property> <accessibility> - <relation type="label-for" target="from-nospin"/> + <relation type="label-for" target="from"/> </accessibility> </object> <packing> @@ -219,7 +235,7 @@ <property name="can_focus">False</property> <property name="label" translatable="yes" context="mmresultprintdialog|toft">_To</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">to-nospin</property> + <property name="mnemonic_widget">to</property> </object> <packing> <property name="left_attach">2</property> @@ -227,10 +243,11 @@ </packing> </child> <child> - <object class="GtkSpinButton" id="from-nospin"> + <object class="GtkSpinButton" id="from"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="text" translatable="no">1</property> + <property name="text">1</property> + <property name="adjustment">adjustment1</property> <property name="value">1</property> <accessibility> <relation type="labelled-by" target="fromrb"/> @@ -242,10 +259,11 @@ </packing> </child> <child> - <object class="GtkSpinButton" id="to-nospin"> + <object class="GtkSpinButton" id="to"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="text">1</property> + <property name="adjustment">adjustment2</property> <property name="value">1</property> </object> <packing> @@ -288,5 +306,8 @@ <action-widget response="-6">cancel</action-widget> <action-widget response="-11">help</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> </interface> diff --git a/vcl/headless/svpprn.cxx b/vcl/headless/svpprn.cxx index a0ec78290429..e54c01a4c437 100644 --- a/vcl/headless/svpprn.cxx +++ b/vcl/headless/svpprn.cxx @@ -267,7 +267,7 @@ GenPspGraphics *SvpSalInstance::CreatePrintGraphics() return new GenPspGraphics(); } -bool SvpSalInfoPrinter::Setup( SalFrame*, ImplJobSetup* ) +bool SvpSalInfoPrinter::Setup( weld::Window*, ImplJobSetup* ) { return false; } diff --git a/vcl/inc/headless/svpprn.hxx b/vcl/inc/headless/svpprn.hxx index d38d36d13091..a7572af2f2e3 100644 --- a/vcl/inc/headless/svpprn.hxx +++ b/vcl/inc/headless/svpprn.hxx @@ -30,7 +30,7 @@ class SvpSalInfoPrinter : public PspSalInfoPrinter { public: - virtual bool Setup( SalFrame* pFrame, ImplJobSetup* pSetupData ) override; + virtual bool Setup( weld::Window* pFrame, ImplJobSetup* pSetupData ) override; }; class SvpSalPrinter : public PspSalPrinter diff --git a/vcl/inc/osx/salprn.h b/vcl/inc/osx/salprn.h index 8f9c04017a66..717c8e15e61c 100644 --- a/vcl/inc/osx/salprn.h +++ b/vcl/inc/osx/salprn.h @@ -68,7 +68,7 @@ class AquaSalInfoPrinter : public SalInfoPrinter virtual SalGraphics* AcquireGraphics() override; virtual void ReleaseGraphics( SalGraphics* i_pGraphics ) override; - virtual bool Setup( SalFrame* i_pFrame, ImplJobSetup* i_pSetupData ) override; + virtual bool Setup( weld::Window* i_pFrame, ImplJobSetup* i_pSetupData ) override; virtual bool SetPrinterData( ImplJobSetup* pSetupData ) override; virtual bool SetData( JobSetFlags i_nFlags, ImplJobSetup* i_pSetupData ) override; virtual void GetPageInfo( const ImplJobSetup* i_pSetupData, diff --git a/vcl/inc/salprn.hxx b/vcl/inc/salprn.hxx index d9da1a6d80ed..d2af082164ee 100644 --- a/vcl/inc/salprn.hxx +++ b/vcl/inc/salprn.hxx @@ -60,7 +60,7 @@ public: virtual SalGraphics* AcquireGraphics() = 0; virtual void ReleaseGraphics( SalGraphics* pGraphics ) = 0; - virtual bool Setup( SalFrame* pFrame, ImplJobSetup* pSetupData ) = 0; + virtual bool Setup(weld::Window* pFrame, ImplJobSetup* pSetupData) = 0; // This function set the driver data and // set the new indepen data in pSetupData virtual bool SetPrinterData( ImplJobSetup* pSetupData ) = 0; diff --git a/vcl/inc/unx/genprn.h b/vcl/inc/unx/genprn.h index 9d80de32f99b..a8ad4fb062c1 100644 --- a/vcl/inc/unx/genprn.h +++ b/vcl/inc/unx/genprn.h @@ -40,7 +40,7 @@ public: // override all pure virtual methods virtual SalGraphics* AcquireGraphics() override; virtual void ReleaseGraphics( SalGraphics* pGraphics ) override; - virtual bool Setup( SalFrame* pFrame, ImplJobSetup* pSetupData ) override; + virtual bool Setup( weld::Window* pFrame, ImplJobSetup* pSetupData ) override; virtual bool SetPrinterData( ImplJobSetup* pSetupData ) override; virtual bool SetData( JobSetFlags nFlags, ImplJobSetup* pSetupData ) override; virtual void GetPageInfo( const ImplJobSetup* pSetupData, diff --git a/vcl/inc/win/salprn.h b/vcl/inc/win/salprn.h index f9be4757ad13..c0c6e7fb7932 100644 --- a/vcl/inc/win/salprn.h +++ b/vcl/inc/win/salprn.h @@ -55,7 +55,7 @@ public: virtual SalGraphics* AcquireGraphics() override; virtual void ReleaseGraphics( SalGraphics* pGraphics ) override; - virtual bool Setup( SalFrame* pFrame, ImplJobSetup* pSetupData ) override; + virtual bool Setup( weld::Window* pFrame, ImplJobSetup* pSetupData ) override; virtual bool SetPrinterData( ImplJobSetup* pSetupData ) override; virtual bool SetData( JobSetFlags nFlags, ImplJobSetup* pSetupData ) override; virtual void GetPageInfo( const ImplJobSetup* pSetupData, diff --git a/vcl/osx/salprn.cxx b/vcl/osx/salprn.cxx index b87585de91db..baeb6c6d71d9 100644 --- a/vcl/osx/salprn.cxx +++ b/vcl/osx/salprn.cxx @@ -148,7 +148,7 @@ void AquaSalInfoPrinter::ReleaseGraphics( SalGraphics* ) mbGraphics = false; } -bool AquaSalInfoPrinter::Setup( SalFrame*, ImplJobSetup* ) +bool AquaSalInfoPrinter::Setup( weld::Window*, ImplJobSetup* ) { return false; } diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index ab1d797c8aba..a22721c52276 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -37,6 +37,7 @@ #include <vcl/layout.hxx> #include <vcl/menubtn.hxx> #include <vcl/slider.hxx> +#include <vcl/sysdata.hxx> #include <vcl/tabctrl.hxx> #include <vcl/tabpage.hxx> #include <vcl/unowrap.hxx> @@ -215,6 +216,11 @@ public: return m_xWidget->IsVisible(); } + virtual bool is_visible() const override + { + return m_xWidget->IsReallyVisible(); + } + virtual void grab_focus() override { m_xWidget->GrabFocus(); @@ -562,6 +568,11 @@ public: return true; } + virtual SystemEnvData get_system_data() const override + { + return *m_xWindow->GetSystemData(); + } + virtual ~SalInstanceWindow() override { clear_child_help(m_xWindow); @@ -622,6 +633,11 @@ public: { m_xDialog->set_default_response(nResponse); } + + virtual Container* weld_content_area() override + { + return new SalInstanceContainer(m_xDialog->get_content_area(), false); + } }; class SalInstanceMessageDialog : public SalInstanceDialog, public virtual weld::MessageDialog diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx index 8e068cbde877..b697e9e01557 100644 --- a/vcl/source/gdi/print.cxx +++ b/vcl/source/gdi/print.cxx @@ -1043,7 +1043,7 @@ bool Printer::SetJobSetup( const JobSetup& rSetup ) return false; } -bool Printer::Setup( vcl::Window* pWindow, PrinterSetupMode eMode ) +bool Printer::Setup(weld::Window* pWindow, PrinterSetupMode eMode) { if ( IsDisplayPrinter() ) return false; @@ -1056,18 +1056,19 @@ bool Printer::Setup( vcl::Window* pWindow, PrinterSetupMode eMode ) rData.SetPrinterSetupMode( eMode ); // TODO: orig page size - SalFrame* pFrame; - if ( !pWindow ) - pWindow = ImplGetDefaultWindow(); + if (!pWindow) + { + vcl::Window* pDefWin = ImplGetDefaultWindow(); + pWindow = pDefWin ? pDefWin->GetFrameWeld() : nullptr; + } if( !pWindow ) return false; - pFrame = pWindow->ImplGetFrame(); ReleaseGraphics(); ImplSVData* pSVData = ImplGetSVData(); pSVData->maAppData.mnModalMode++; nImplSysDialog++; - bool bSetup = mpInfoPrinter->Setup( pFrame, &rData ); + bool bSetup = mpInfoPrinter->Setup(pWindow, &rData); pSVData->maAppData.mnModalMode--; nImplSysDialog--; if ( bSetup ) diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx index 48647b8d4921..544e07ce02d4 100644 --- a/vcl/source/gdi/print3.cxx +++ b/vcl/source/gdi/print3.cxx @@ -796,7 +796,7 @@ void PrinterController::resetPrinterOptions( bool i_bFileOutput ) mpImplData->mxPrinter->SetPrinterOptions( aOpt ); } -void PrinterController::setupPrinter( vcl::Window* i_pParent ) +void PrinterController::setupPrinter( weld::Window* i_pParent ) { bool bRet = false; diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx index 6ca8876aea27..a7ef48c01e83 100644 --- a/vcl/source/window/printdlg.cxx +++ b/vcl/source/window/printdlg.cxx @@ -1720,7 +1720,7 @@ IMPL_LINK( PrintDialog, ClickHdl, Button*, pButton, void ) { if( pButton == maJobPage.mpSetupButton ) { - maPController->setupPrinter( this ); + maPController->setupPrinter(GetFrameWeld()); // tdf#63905 don't use cache: page size may change preparePreview(); diff --git a/vcl/unx/generic/print/genprnpsp.cxx b/vcl/unx/generic/print/genprnpsp.cxx index b2d46d91d753..dc1d4ebf54cd 100644 --- a/vcl/unx/generic/print/genprnpsp.cxx +++ b/vcl/unx/generic/print/genprnpsp.cxx @@ -524,7 +524,7 @@ void PspSalInfoPrinter::ReleaseGraphics( SalGraphics* pGraphics ) } } -bool PspSalInfoPrinter::Setup( SalFrame* pFrame, ImplJobSetup* pJobSetup ) +bool PspSalInfoPrinter::Setup( weld::Window* pFrame, ImplJobSetup* pJobSetup ) { if( ! pFrame || ! pJobSetup ) return false; @@ -540,7 +540,7 @@ bool PspSalInfoPrinter::Setup( SalFrame* pFrame, ImplJobSetup* pJobSetup ) aInfo.m_bPapersizeFromSetup = pJobSetup->GetPapersizeFromSetup(); aInfo.meSetupMode = pJobSetup->GetPrinterSetupMode(); - if (SetupPrinterDriver(pFrame->GetFrameWeld(), aInfo)) + if (SetupPrinterDriver(pFrame, aInfo)) { aInfo.resolveDefaultBackend(); rtl_freeMemory( const_cast<sal_uInt8*>(pJobSetup->GetDriverData()) ); diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 20f94158612e..74a4c3473011 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -1226,6 +1226,11 @@ public: return gtk_widget_get_visible(m_pWidget); } + virtual bool is_visible() const override + { + return gtk_widget_is_visible(m_pWidget); + } + virtual void grab_focus() override { gtk_widget_grab_focus(m_pWidget); @@ -1805,6 +1810,12 @@ public: return ret; } + virtual SystemEnvData get_system_data() const override + { + assert(false && "nothing should call this impl, yet anyway, if ever"); + return SystemEnvData(); + } + virtual ~GtkInstanceWindow() override { if (m_xWindow.is()) @@ -2025,6 +2036,11 @@ public: virtual weld::Button* get_widget_for_response(int nResponse) override; + virtual Container* weld_content_area() override + { + return new GtkInstanceContainer(GTK_CONTAINER(gtk_dialog_get_content_area(m_pDialog)), false); + } + virtual ~GtkInstanceDialog() override { g_signal_handler_disconnect(m_pDialog, m_nCloseSignalId); diff --git a/vcl/win/gdi/salprn.cxx b/vcl/win/gdi/salprn.cxx index 37b72ebfadcd..a682f9d33f0a 100644 --- a/vcl/win/gdi/salprn.cxx +++ b/vcl/win/gdi/salprn.cxx @@ -348,7 +348,7 @@ static bool ImplTestSalJobSetup( WinSalInfoPrinter const * pPrinter, } static bool ImplUpdateSalJobSetup( WinSalInfoPrinter const * pPrinter, ImplJobSetup* pSetupData, - bool bIn, WinSalFrame* pVisibleDlgParent ) + bool bIn, weld::Window* pVisibleDlgParent ) { HANDLE hPrn; LPWSTR pPrinterNameW = const_cast<LPWSTR>(o3tl::toW(pPrinter->maDeviceName.getStr())); @@ -392,7 +392,7 @@ static bool ImplUpdateSalJobSetup( WinSalInfoPrinter const * pPrinter, ImplJobSe // check if the dialog should be shown if ( pVisibleDlgParent ) { - hWnd = pVisibleDlgParent->mhWnd; + hWnd = pVisibleDlgParent->get_system_data().hWnd; nMode |= DM_IN_PROMPT; } @@ -1164,9 +1164,9 @@ void WinSalInfoPrinter::ReleaseGraphics( SalGraphics* ) mbGraphics = FALSE; } -bool WinSalInfoPrinter::Setup( SalFrame* pFrame, ImplJobSetup* pSetupData ) +bool WinSalInfoPrinter::Setup(weld::Window* pFrame, ImplJobSetup* pSetupData) { - if ( ImplUpdateSalJobSetup( this, pSetupData, true, static_cast<WinSalFrame*>(pFrame) ) ) + if ( ImplUpdateSalJobSetup(this, pSetupData, true, pFrame)) { ImplDevModeToJobSetup( this, pSetupData, JobSetFlags::ALL ); return ImplUpdateSalPrnIC( this, pSetupData ); |