diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-05-22 13:51:17 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-05-23 17:32:34 +0200 |
commit | caf72fd8a19d5544bfc86fba1306b4066c3c2d20 (patch) | |
tree | 916f6343657393ab892ecd9a716ab42716be1280 /svx/source/dialog/_contdlg.cxx | |
parent | 8b7f8f54a8ee35df98f8107a42981d3a0a659541 (diff) |
weld FloatingContour
Change-Id: I055f01d2ce462009986801d4a603b0b72b1a621c
Reviewed-on: https://gerrit.libreoffice.org/72787
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svx/source/dialog/_contdlg.cxx')
-rw-r--r-- | svx/source/dialog/_contdlg.cxx | 431 |
1 files changed, 184 insertions, 247 deletions
diff --git a/svx/source/dialog/_contdlg.cxx b/svx/source/dialog/_contdlg.cxx index a63ee17c932b..67001af2f779 100644 --- a/svx/source/dialog/_contdlg.cxx +++ b/svx/source/dialog/_contdlg.cxx @@ -43,7 +43,7 @@ #include "dlgunit.hxx" #include <vcl/weld.hxx> -SFX_IMPL_FLOATINGWINDOW_WITHID( SvxContourDlgChildWindow, SID_CONTOUR_DLG ); +SFX_IMPL_MODELESSDIALOGCONTOLLER_WITHID(SvxContourDlgChildWindow, SID_CONTOUR_DLG); SvxContourDlgItem::SvxContourDlgItem( SvxSuperContourDlg& rContourDlg, SfxBindings& rBindings ) : SfxControllerItem ( SID_CONTOUR_EXEC, rBindings ), @@ -62,41 +62,24 @@ void SvxContourDlgItem::StateChanged( sal_uInt16 nSID, SfxItemState /*eState*/, } } -SvxContourDlgChildWindow::SvxContourDlgChildWindow( vcl::Window* _pParent, sal_uInt16 nId, - SfxBindings* pBindings, SfxChildWinInfo const * pInfo ) : - SfxChildWindow( _pParent, nId ) +SvxContourDlgChildWindow::SvxContourDlgChildWindow(vcl::Window* _pParent, sal_uInt16 nId, + SfxBindings* pBindings, SfxChildWinInfo const * pInfo) + : SfxChildWindow( _pParent, nId ) { - VclPtr<SvxSuperContourDlg> pDlg = VclPtr<SvxSuperContourDlg>::Create(pBindings, this, _pParent); - SetWindow(pDlg); - - if ( pInfo->nFlags & SfxChildWindowFlags::ZOOMIN ) - pDlg->RollUp(); - + SetController(std::make_shared<SvxContourDlg>(pBindings, this, _pParent->GetFrameWeld())); + SvxContourDlg* pDlg = static_cast<SvxContourDlg*>(GetController().get()); pDlg->Initialize( pInfo ); } SvxContourDlg::SvxContourDlg(SfxBindings* _pBindings, SfxChildWindow* pCW, - vcl::Window* _pParent) - : SfxFloatingWindow(_pBindings, pCW, _pParent , "FloatingContour", - "svx/ui/floatingcontour.ui") - , pSuperClass(nullptr) + weld::Window* _pParent) + : SfxModelessDialogController(_pBindings, pCW, _pParent, "svx/ui/floatingcontour.ui", "FloatingContour") + , m_xImpl(std::make_unique<SvxSuperContourDlg>(*m_xBuilder, *m_xDialog, _pBindings)) { } SvxContourDlg::~SvxContourDlg() { - disposeOnce(); -} - -void SvxContourDlg::dispose() -{ - pSuperClass.clear(); - SfxFloatingWindow::dispose(); -} - -void SvxContourDlg::SetSuperClass( SvxSuperContourDlg& rSuperClass ) -{ - pSuperClass = &rSuperClass; } tools::PolyPolygon SvxContourDlg::CreateAutoContour( const Graphic& rGraphic, @@ -188,106 +171,65 @@ tools::PolyPolygon SvxContourDlg::CreateAutoContour( const Graphic& rGraphic, const Graphic& SvxContourDlg::GetGraphic() const { - return pSuperClass->GetGraphic(); + return m_xImpl->GetGraphic(); } bool SvxContourDlg::IsGraphicChanged() const { - return pSuperClass->IsGraphicChanged(); + return m_xImpl->IsGraphicChanged(); } tools::PolyPolygon SvxContourDlg::GetPolyPolygon() { - return pSuperClass->GetPolyPolygon(); + return m_xImpl->GetPolyPolygon(); } const void* SvxContourDlg::GetEditingObject() const { - return pSuperClass->GetEditingObject(); + return m_xImpl->GetEditingObject(); } void SvxContourDlg::Update( const Graphic& rGraphic, bool bGraphicLinked, const tools::PolyPolygon* pPolyPoly, void* pEditingObj ) { - pSuperClass->UpdateGraphic( rGraphic, bGraphicLinked, pPolyPoly, pEditingObj ); -} - -SvxSuperContourDlg::SvxSuperContourDlg(SfxBindings *_pBindings, SfxChildWindow *pCW, - vcl::Window* _pParent) : - SvxContourDlg ( _pBindings, pCW, _pParent ), - aUpdateIdle ( "SvxSuperContourDlg UpdateIdle" ), - aCreateIdle ( "SvxSuperContourDlg CreateIdle" ), - pUpdateEditingObject( nullptr ), - pCheckObj ( nullptr ), - aContourItem ( *this, *_pBindings ), - mnGrfChanged ( 0 ), - bExecState ( false ), - bUpdateGraphicLinked( false ), - bGraphicLinked ( false ) -{ - get(m_pTbx1, "toolbar"); - get(m_pMtfTolerance, "spinbutton"); - m_pContourWnd = VclPtr<ContourWindow>::Create(get<vcl::Window>("container"), WB_BORDER); - m_pContourWnd->set_hexpand(true); - m_pContourWnd->set_vexpand(true); - m_pContourWnd->Show(); - get(m_pStbStatus, "statusbar"); - - mnApplyId = m_pTbx1->GetItemId("TBI_APPLY"); - mnWorkSpaceId = m_pTbx1->GetItemId("TBI_WORKPLACE"); - m_pTbx1->SetItemBits(mnWorkSpaceId, ToolBoxItemBits::AUTOCHECK); - mnSelectId = m_pTbx1->GetItemId("TBI_SELECT"); - m_pTbx1->SetItemBits(mnSelectId, ToolBoxItemBits::RADIOCHECK | ToolBoxItemBits::AUTOCHECK); - mnRectId = m_pTbx1->GetItemId("TBI_RECT"); - m_pTbx1->SetItemBits(mnRectId, ToolBoxItemBits::RADIOCHECK | ToolBoxItemBits::AUTOCHECK); - mnCircleId = m_pTbx1->GetItemId("TBI_CIRCLE"); - m_pTbx1->SetItemBits(mnCircleId, ToolBoxItemBits::RADIOCHECK | ToolBoxItemBits::AUTOCHECK); - mnPolyId = m_pTbx1->GetItemId("TBI_POLY"); - m_pTbx1->SetItemBits(mnPolyId, ToolBoxItemBits::RADIOCHECK | ToolBoxItemBits::AUTOCHECK); - mnPolyEditId = m_pTbx1->GetItemId("TBI_POLYEDIT"); - m_pTbx1->SetItemBits(mnPolyEditId, ToolBoxItemBits::AUTOCHECK); - mnPolyMoveId = m_pTbx1->GetItemId("TBI_POLYMOVE"); - m_pTbx1->SetItemBits(mnPolyMoveId, ToolBoxItemBits::RADIOCHECK | ToolBoxItemBits::AUTOCHECK); - mnPolyInsertId = m_pTbx1->GetItemId("TBI_POLYINSERT"); - m_pTbx1->SetItemBits(mnPolyInsertId, ToolBoxItemBits::RADIOCHECK | ToolBoxItemBits::AUTOCHECK); - mnPolyDeleteId = m_pTbx1->GetItemId("TBI_POLYDELETE"); - mnAutoContourId = m_pTbx1->GetItemId("TBI_AUTOCONTOUR"); - mnUndoId = m_pTbx1->GetItemId("TBI_UNDO"); - mnRedoId = m_pTbx1->GetItemId("TBI_REDO"); - mnPipetteId = m_pTbx1->GetItemId("TBI_PIPETTE"); - m_pTbx1->SetItemBits(mnPipetteId, ToolBoxItemBits::AUTOCHECK); - - SvxContourDlg::SetSuperClass( *this ); - - m_pContourWnd->SetMousePosLink( LINK( this, SvxSuperContourDlg, MousePosHdl ) ); - m_pContourWnd->SetGraphSizeLink( LINK( this, SvxSuperContourDlg, GraphSizeHdl ) ); - m_pContourWnd->SetUpdateLink( LINK( this, SvxSuperContourDlg, StateHdl ) ); - m_pContourWnd->SetPipetteHdl( LINK( this, SvxSuperContourDlg, PipetteHdl ) ); - m_pContourWnd->SetPipetteClickHdl( LINK( this, SvxSuperContourDlg, PipetteClickHdl ) ); - m_pContourWnd->SetWorkplaceClickHdl( LINK( this, SvxSuperContourDlg, WorkplaceClickHdl ) ); - - const Size aTbxSize( m_pTbx1->CalcWindowSizePixel() ); - Point aPos( m_pTbx1->GetPosPixel() ); - SvtMiscOptions aMiscOptions; - - aMiscOptions.AddListenerLink( LINK( this, SvxSuperContourDlg, MiscHdl ) ); - - m_pTbx1->SetOutStyle( aMiscOptions.GetToolboxStyle() ); - m_pTbx1->SetSizePixel( aTbxSize ); - m_pTbx1->SetSelectHdl( LINK( this, SvxSuperContourDlg, Tbx1ClickHdl ) ); - - aPos.AdjustX(aTbxSize.Width() + LogicToPixel( Size( 3, 0 ), MapMode( MapUnit::MapAppFont ) ).Width() ); - m_pMtfTolerance->SetPosPixel( aPos ); - m_pMtfTolerance->SetValue( 10 ); - - SetMinOutputSizePixel( GetOutputSizePixel() ); - - m_pStbStatus->InsertItem( 1, 130, StatusBarItemBits::Left | StatusBarItemBits::In | StatusBarItemBits::AutoSize ); - m_pStbStatus->InsertItem( 2, 10 + GetTextWidth( " 9999,99 cm / 9999,99 cm " ) ); - m_pStbStatus->InsertItem( 3, 10 + GetTextWidth( " 9999,99 cm x 9999,99 cm " ) ); - m_pStbStatus->InsertItem( 4, 20 ); - - Resize(); + m_xImpl->UpdateGraphic( rGraphic, bGraphicLinked, pPolyPoly, pEditingObj ); +} + +SvxSuperContourDlg::SvxSuperContourDlg(weld::Builder& rBuilder, + weld::Dialog& rDialog, SfxBindings* pBindings) + : aUpdateIdle( "SvxSuperContourDlg UpdateIdle" ) + , aCreateIdle( "SvxSuperContourDlg CreateIdle" ) + , mpBindings(pBindings) + , pUpdateEditingObject( nullptr ) + , pCheckObj( nullptr ) + , aContourItem( *this, *pBindings ) + , mnGrfChanged( 0 ) + , bExecState( false ) + , bUpdateGraphicLinked( false ) + , bGraphicLinked( false ) + , m_rDialog(rDialog) + , m_xContourWnd(new ContourWindow(&rDialog)) + , m_xStbStatusColor(new StatusColor(*m_xContourWnd)) + , m_xTbx1(rBuilder.weld_toolbar("toolbar")) + , m_xMtfTolerance(rBuilder.weld_metric_spin_button("spinbutton", FieldUnit::PERCENT)) + , m_xStbStatus2(rBuilder.weld_label("statuspos")) + , m_xStbStatus3(rBuilder.weld_label("statussize")) + , m_xCancelBtn(rBuilder.weld_button("cancel")) + , m_xStbStatusColorWeld(new weld::CustomWeld(rBuilder, "statuscolor", *m_xStbStatusColor)) + , m_xContourWndWeld(new weld::CustomWeld(rBuilder, "container", *m_xContourWnd)) +{ + m_xCancelBtn->connect_clicked(LINK(this, SvxSuperContourDlg, CancelHdl)); + + m_xContourWnd->SetMousePosLink( LINK( this, SvxSuperContourDlg, MousePosHdl ) ); + m_xContourWnd->SetGraphSizeLink( LINK( this, SvxSuperContourDlg, GraphSizeHdl ) ); + m_xContourWnd->SetUpdateLink( LINK( this, SvxSuperContourDlg, StateHdl ) ); + m_xContourWnd->SetPipetteHdl( LINK( this, SvxSuperContourDlg, PipetteHdl ) ); + m_xContourWnd->SetPipetteClickHdl( LINK( this, SvxSuperContourDlg, PipetteClickHdl ) ); + m_xContourWnd->SetWorkplaceClickHdl( LINK( this, SvxSuperContourDlg, WorkplaceClickHdl ) ); + + m_xTbx1->connect_clicked( LINK( this, SvxSuperContourDlg, Tbx1ClickHdl ) ); + + m_xMtfTolerance->set_value(10, FieldUnit::PERCENT); aUpdateIdle.SetInvokeHandler( LINK( this, SvxSuperContourDlg, UpdateHdl ) ); @@ -297,30 +239,17 @@ SvxSuperContourDlg::SvxSuperContourDlg(SfxBindings *_pBindings, SfxChildWindow * SvxSuperContourDlg::~SvxSuperContourDlg() { - disposeOnce(); -} - -void SvxSuperContourDlg::dispose() -{ - m_pContourWnd->SetUpdateLink( Link<GraphCtrl*,void>() ); - - SvtMiscOptions aMiscOptions; - aMiscOptions.RemoveListenerLink( LINK(this, SvxSuperContourDlg, MiscHdl) ); - m_pContourWnd.disposeAndClear(); - m_pTbx1.clear(); - m_pMtfTolerance.clear(); - m_pStbStatus.clear(); - aContourItem.dispose(); - SvxContourDlg::dispose(); + m_xContourWnd->SetUpdateLink( Link<SvxGraphCtrl*,void>() ); + m_xContourWnd.reset(); } -bool SvxSuperContourDlg::Close() +IMPL_LINK_NOARG(SvxSuperContourDlg, CancelHdl, weld::Button&, void) { bool bRet = true; - if (m_pTbx1->IsItemEnabled(mnApplyId)) + if (m_xTbx1->get_item_sensitive("TBI_APPLY")) { - std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "svx/ui/querysavecontchangesdialog.ui")); + std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(&m_rDialog, "svx/ui/querysavecontchangesdialog.ui")); std::unique_ptr<weld::MessageDialog> xQBox(xBuilder->weld_message_dialog("QuerySaveContourChangesDialog")); const short nRet = xQBox->run(); @@ -335,7 +264,8 @@ bool SvxSuperContourDlg::Close() bRet = false; } - return bRet && SfxFloatingWindow::Close(); + if (bRet) + m_rDialog.response(RET_CANCEL); } // Enabled or disabled all Controls @@ -350,12 +280,12 @@ void SvxSuperContourDlg::SetGraphic( const Graphic& rGraphic ) aUndoGraphic = aRedoGraphic = Graphic(); aGraphic = rGraphic; mnGrfChanged = 0; - m_pContourWnd->SetGraphic( aGraphic ); + m_xContourWnd->SetGraphic( aGraphic ); } void SvxSuperContourDlg::SetPolyPolygon( const tools::PolyPolygon& rPolyPoly ) { - DBG_ASSERT( m_pContourWnd->GetGraphic().GetType() != GraphicType::NONE, "Graphic must've been set first!" ); + DBG_ASSERT( m_xContourWnd->GetGraphic().GetType() != GraphicType::NONE, "Graphic must've been set first!" ); tools::PolyPolygon aPolyPoly( rPolyPoly ); const MapMode aMap100( MapUnit::Map100thMM ); @@ -378,13 +308,13 @@ void SvxSuperContourDlg::SetPolyPolygon( const tools::PolyPolygon& rPolyPoly ) } } - m_pContourWnd->SetPolyPolygon( aPolyPoly ); - m_pContourWnd->GetSdrModel()->SetChanged(); + m_xContourWnd->SetPolyPolygon( aPolyPoly ); + m_xContourWnd->GetSdrModel()->SetChanged(); } tools::PolyPolygon SvxSuperContourDlg::GetPolyPolygon() { - tools::PolyPolygon aRetPolyPoly( m_pContourWnd->GetPolyPolygon() ); + tools::PolyPolygon aRetPolyPoly( m_xContourWnd->GetPolyPolygon() ); const MapMode aMap100( MapUnit::Map100thMM ); const MapMode aGrfMap( aGraphic.GetPrefMapMode() ); @@ -426,115 +356,127 @@ void SvxSuperContourDlg::UpdateGraphic( const Graphic& rGraphic, bool _bGraphicL // Click handler for ToolBox -IMPL_LINK( SvxSuperContourDlg, Tbx1ClickHdl, ToolBox*, pTbx, void ) +IMPL_LINK(SvxSuperContourDlg, Tbx1ClickHdl, const OString&, rId, void) { - sal_uInt16 nNewItemId = pTbx->GetCurItemId(); - - sal_uInt16 nId = pTbx->GetCurItemId(); - if (nId == mnApplyId) + if (rId == "TBI_APPLY") { SfxBoolItem aBoolItem( SID_CONTOUR_EXEC, true ); GetBindings().GetDispatcher()->ExecuteList( SID_CONTOUR_EXEC, SfxCallMode::ASYNCHRON | SfxCallMode::RECORD, { &aBoolItem }); } - else if (nId == mnWorkSpaceId) + else if (rId == "TBI_WORKPLACE") { - if (m_pTbx1->IsItemChecked(mnWorkSpaceId)) + if (m_xTbx1->get_item_active("TBI_WORKPLACE")) { - std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "svx/ui/querydeletecontourdialog.ui")); + std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(&m_rDialog, "svx/ui/querydeletecontourdialog.ui")); std::unique_ptr<weld::MessageDialog> xQBox(xBuilder->weld_message_dialog("QueryDeleteContourDialog")); - if (!m_pContourWnd->IsContourChanged() || (xQBox->run() == RET_YES)) - m_pContourWnd->SetWorkplaceMode( true ); + if (!m_xContourWnd->IsContourChanged() || (xQBox->run() == RET_YES)) + m_xContourWnd->SetWorkplaceMode( true ); else - m_pTbx1->CheckItem(mnWorkSpaceId, false); + m_xTbx1->set_item_active("TBI_WORKPLACE", false); } else - m_pContourWnd->SetWorkplaceMode( false ); + m_xContourWnd->SetWorkplaceMode( false ); } - else if (nId == mnSelectId) + else if (rId == "TBI_SELECT") { - pTbx->CheckItem( nNewItemId ); - m_pContourWnd->SetEditMode( true ); + SetActiveTool(rId); + m_xContourWnd->SetEditMode( true ); } - else if (nId == mnRectId) + else if (rId == "TBI_RECT") { - pTbx->CheckItem( nNewItemId ); - m_pContourWnd->SetObjKind( OBJ_RECT ); + SetActiveTool(rId); + m_xContourWnd->SetObjKind( OBJ_RECT ); } - else if (nId == mnCircleId) + else if (rId == "TBI_CIRCLE") { - pTbx->CheckItem( nNewItemId ); - m_pContourWnd->SetObjKind( OBJ_CIRC ); + SetActiveTool(rId); + m_xContourWnd->SetObjKind( OBJ_CIRC ); } - else if (nId == mnPolyId) + else if (rId == "TBI_POLY") { - pTbx->CheckItem( nNewItemId ); - m_pContourWnd->SetObjKind( OBJ_POLY ); + SetActiveTool(rId); + m_xContourWnd->SetObjKind( OBJ_POLY ); } - else if (nId == mnPolyEditId) + else if (rId == "TBI_POLYEDIT") { - m_pContourWnd->SetPolyEditMode(pTbx->IsItemChecked(mnPolyEditId) ? SID_BEZIER_MOVE : 0); + m_xContourWnd->SetPolyEditMode(m_xTbx1->get_item_active("TBI_POLYEDIT") ? SID_BEZIER_MOVE : 0); } - else if (nId == mnPolyMoveId) + else if (rId == "TBI_POLYMOVE") { - m_pContourWnd->SetPolyEditMode( SID_BEZIER_MOVE ); + SetActivePoly(rId); + m_xContourWnd->SetPolyEditMode( SID_BEZIER_MOVE ); } - else if (nId == mnPolyInsertId) + else if (rId == "TBI_POLYINSERT") { - m_pContourWnd->SetPolyEditMode( SID_BEZIER_INSERT ); + SetActivePoly(rId); + m_xContourWnd->SetPolyEditMode( SID_BEZIER_INSERT ); } - else if (nId == mnPolyDeleteId) + else if (rId == "TBI_POLYDELETE") { - m_pContourWnd->GetSdrView()->DeleteMarkedPoints(); + m_xContourWnd->GetSdrView()->DeleteMarkedPoints(); } - else if (nId == mnUndoId) + else if (rId == "TBI_UNDO") { mnGrfChanged = mnGrfChanged ? mnGrfChanged - 1 : 0; aRedoGraphic = aGraphic; aGraphic = aUndoGraphic; aUndoGraphic = Graphic(); - m_pContourWnd->SetGraphic( aGraphic, false ); + m_xContourWnd->SetGraphic( aGraphic, false ); } - else if (nId == mnRedoId) + else if (rId == "TBI_REDO") { mnGrfChanged++; aUndoGraphic = aGraphic; aGraphic = aRedoGraphic; aRedoGraphic = Graphic(); - m_pContourWnd->SetGraphic( aGraphic, false ); + m_xContourWnd->SetGraphic( aGraphic, false ); } - else if (nId == mnAutoContourId) + else if (rId == "TBI_AUTOCONTOUR") { aCreateIdle.Start(); } - else if (nId == mnPipetteId) + else if (rId == "TBI_PIPETTE") { - bool bPipette = m_pTbx1->IsItemChecked(mnPipetteId); + bool bPipette = m_xTbx1->get_item_active("TBI_PIPETTE"); if ( !bPipette ) - m_pStbStatus->Invalidate(); + m_xStbStatusColor->Invalidate(); else if ( bGraphicLinked ) { - std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "svx/ui/queryunlinkgraphicsdialog.ui")); + std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(&m_rDialog, "svx/ui/queryunlinkgraphicsdialog.ui")); std::unique_ptr<weld::MessageDialog> xQBox(xBuilder->weld_message_dialog("QueryUnlinkGraphicsDialog")); if (xQBox->run() != RET_YES) { bPipette = false; - m_pTbx1->CheckItem(mnPipetteId, bPipette); - m_pStbStatus->Invalidate(); + m_xTbx1->set_item_active("TBI_PIPETTE", bPipette); + m_xStbStatusColor->Invalidate(); } } - m_pContourWnd->SetPipetteMode( bPipette ); + m_xContourWnd->SetPipetteMode( bPipette ); } - Invalidate(); - m_pContourWnd->QueueIdleUpdate(); + m_xContourWnd->QueueIdleUpdate(); +} + +void SvxSuperContourDlg::SetActiveTool(const OString& rId) +{ + m_xTbx1->set_item_active("TBI_SELECT", rId == "TBI_SELECT"); + m_xTbx1->set_item_active("TBI_RECT", rId == "TBI_RECT"); + m_xTbx1->set_item_active("TBI_CIRCLE", rId == "TBI_CIRCLE"); + m_xTbx1->set_item_active("TBI_POLY", rId == "TBI_POLY"); +} + +void SvxSuperContourDlg::SetActivePoly(const OString& rId) +{ + m_xTbx1->set_item_active("TBI_POLYMOVE", rId == "TBI_POLYMOVE"); + m_xTbx1->set_item_active("TBI_POLYINSERT", rId == "TBI_POLYINSERT"); } -IMPL_LINK( SvxSuperContourDlg, MousePosHdl, GraphCtrl*, pWnd, void ) +IMPL_LINK( SvxSuperContourDlg, MousePosHdl, SvxGraphCtrl*, pWnd, void ) { OUString aStr; const FieldUnit eFieldUnit = GetBindings().GetDispatcher()->GetModule()->GetFieldUnit(); @@ -546,10 +488,10 @@ IMPL_LINK( SvxSuperContourDlg, MousePosHdl, GraphCtrl*, pWnd, void ) + " / " + GetUnitString( rMousePos.Y(), eFieldUnit, cSep ); - m_pStbStatus->SetItemText( 2, aStr ); + m_xStbStatus2->set_label( aStr ); } -IMPL_LINK( SvxSuperContourDlg, GraphSizeHdl, GraphCtrl*, pWnd, void ) +IMPL_LINK( SvxSuperContourDlg, GraphSizeHdl, SvxGraphCtrl*, pWnd, void ) { OUString aStr; const FieldUnit eFieldUnit = GetBindings().GetDispatcher()->GetModule()->GetFieldUnit(); @@ -561,7 +503,7 @@ IMPL_LINK( SvxSuperContourDlg, GraphSizeHdl, GraphCtrl*, pWnd, void ) + " x " + GetUnitString( rSize.Height(), eFieldUnit, cSep ); - m_pStbStatus->SetItemText( 3, aStr ); + m_xStbStatus3->set_label( aStr ); } IMPL_LINK_NOARG(SvxSuperContourDlg, UpdateHdl, Timer *, void) @@ -571,7 +513,7 @@ IMPL_LINK_NOARG(SvxSuperContourDlg, UpdateHdl, Timer *, void) if ( pUpdateEditingObject != pCheckObj ) { if( !GetEditingObject() ) - m_pContourWnd->GrabFocus(); + m_xContourWnd->GrabFocus(); SetGraphic( aUpdateGraphic ); SetPolyPolygon( aUpdatePolyPoly ); @@ -582,101 +524,105 @@ IMPL_LINK_NOARG(SvxSuperContourDlg, UpdateHdl, Timer *, void) aUpdatePolyPoly = tools::PolyPolygon(); bUpdateGraphicLinked = false; - m_pContourWnd->GetSdrModel()->SetChanged( false ); + m_xContourWnd->GetSdrModel()->SetChanged( false ); } GetBindings().Invalidate( SID_CONTOUR_EXEC ); - m_pContourWnd->QueueIdleUpdate(); + m_xContourWnd->QueueIdleUpdate(); } IMPL_LINK_NOARG(SvxSuperContourDlg, CreateHdl, Timer *, void) { aCreateIdle.Stop(); - const tools::Rectangle aWorkRect = m_pContourWnd->LogicToPixel( m_pContourWnd->GetWorkRect(), MapMode( MapUnit::Map100thMM ) ); - const Graphic& rGraphic = m_pContourWnd->GetGraphic(); + const tools::Rectangle aWorkRect = m_xContourWnd->GetDrawingArea()->get_ref_device().LogicToPixel( + m_xContourWnd->GetWorkRect(), MapMode( MapUnit::Map100thMM)); + + const Graphic& rGraphic = m_xContourWnd->GetGraphic(); const bool bValid = aWorkRect.Left() != aWorkRect.Right() && aWorkRect.Top() != aWorkRect.Bottom(); - EnterWait(); - SetPolyPolygon( CreateAutoContour( rGraphic, bValid ? &aWorkRect : nullptr ) ); - LeaveWait(); + weld::WaitObject aWaitObj(&m_rDialog); + SetPolyPolygon( SvxContourDlg::CreateAutoContour( rGraphic, bValid ? &aWorkRect : nullptr ) ); } -IMPL_LINK( SvxSuperContourDlg, StateHdl, GraphCtrl*, pWnd, void ) +IMPL_LINK( SvxSuperContourDlg, StateHdl, SvxGraphCtrl*, pWnd, void ) { const SdrObject* pObj = pWnd->GetSelectedSdrObject(); const SdrView* pView = pWnd->GetSdrView(); const bool bPolyEdit = ( pObj != nullptr ) && dynamic_cast<const SdrPathObj*>( pObj) != nullptr; - const bool bDrawEnabled = !(bPolyEdit && m_pTbx1->IsItemChecked(mnPolyEditId)); - const bool bPipette = m_pTbx1->IsItemChecked(mnPipetteId); - const bool bWorkplace = m_pTbx1->IsItemChecked(mnWorkSpaceId); + const bool bDrawEnabled = !(bPolyEdit && m_xTbx1->get_item_active("TBI_POLYEDIT")); + const bool bPipette = m_xTbx1->get_item_active("TBI_PIPETTE"); + const bool bWorkplace = m_xTbx1->get_item_active("TBI_WORKPLACE"); const bool bDontHide = !( bPipette || bWorkplace ); const bool bBitmap = pWnd->GetGraphic().GetType() == GraphicType::Bitmap; - m_pTbx1->EnableItem(mnApplyId, bDontHide && bExecState && pWnd->IsChanged()); + m_xTbx1->set_item_sensitive("TBI_APPLY", bDontHide && bExecState && pWnd->IsChanged()); - m_pTbx1->EnableItem(mnWorkSpaceId, !bPipette && bDrawEnabled); + m_xTbx1->set_item_sensitive("TBI_WORKPLACE", !bPipette && bDrawEnabled); - m_pTbx1->EnableItem(mnSelectId, bDontHide && bDrawEnabled); - m_pTbx1->EnableItem(mnRectId, bDontHide && bDrawEnabled); - m_pTbx1->EnableItem(mnCircleId, bDontHide && bDrawEnabled); - m_pTbx1->EnableItem(mnPolyId, bDontHide && bDrawEnabled); + m_xTbx1->set_item_sensitive("TBI_SELECT", bDontHide && bDrawEnabled); + m_xTbx1->set_item_sensitive("TBI_RECT", bDontHide && bDrawEnabled); + m_xTbx1->set_item_sensitive("TBI_CIRCLE", bDontHide && bDrawEnabled); + m_xTbx1->set_item_sensitive("TBI_POLY", bDontHide && bDrawEnabled); - m_pTbx1->EnableItem(mnPolyEditId, bDontHide && bPolyEdit); - m_pTbx1->EnableItem(mnPolyMoveId, bDontHide && !bDrawEnabled); - m_pTbx1->EnableItem(mnPolyInsertId, bDontHide && !bDrawEnabled); - m_pTbx1->EnableItem(mnPolyDeleteId, bDontHide && !bDrawEnabled && pView->IsDeleteMarkedPointsPossible()); + m_xTbx1->set_item_sensitive("TBI_POLYEDIT", bDontHide && bPolyEdit); + m_xTbx1->set_item_sensitive("TBI_POLYMOVE", bDontHide && !bDrawEnabled); + m_xTbx1->set_item_sensitive("TBI_POLYINSERT", bDontHide && !bDrawEnabled); + m_xTbx1->set_item_sensitive("TBI_POLYDELETE", bDontHide && !bDrawEnabled && pView->IsDeleteMarkedPointsPossible()); - m_pTbx1->EnableItem(mnAutoContourId, bDontHide && bDrawEnabled); - m_pTbx1->EnableItem(mnPipetteId, !bWorkplace && bDrawEnabled && bBitmap); + m_xTbx1->set_item_sensitive("TBI_AUTOCONTOUR", bDontHide && bDrawEnabled); + m_xTbx1->set_item_sensitive("TBI_PIPETTE", !bWorkplace && bDrawEnabled && bBitmap); - m_pTbx1->EnableItem(mnUndoId, bDontHide && aUndoGraphic.GetType() != GraphicType::NONE); - m_pTbx1->EnableItem(mnRedoId, bDontHide && aRedoGraphic.GetType() != GraphicType::NONE); + m_xTbx1->set_item_sensitive("TBI_UNDO", bDontHide && aUndoGraphic.GetType() != GraphicType::NONE); + m_xTbx1->set_item_sensitive("TBI_REDO", bDontHide && aRedoGraphic.GetType() != GraphicType::NONE); if ( bPolyEdit ) { - sal_uInt16 nId = 0; - switch( pWnd->GetPolyEditMode() ) { - case SID_BEZIER_MOVE: nId = mnPolyMoveId; break; - case SID_BEZIER_INSERT: nId = mnPolyInsertId; break; - + case SID_BEZIER_MOVE: + SetActivePoly("TBI_POLYMOVE"); + break; + case SID_BEZIER_INSERT: + SetActivePoly("TBI_POLYINSERT"); + break; default: - break; + break; } - - m_pTbx1->CheckItem( nId ); } else { - m_pTbx1->CheckItem(mnPolyEditId, false); - m_pTbx1->CheckItem(mnPolyMoveId); - m_pTbx1->CheckItem(mnPolyInsertId, false); + m_xTbx1->set_item_active("TBI_POLYEDIT", false); + SetActivePoly("TBI_POLYMOVE"); pWnd->SetPolyEditMode( 0 ); } } -IMPL_LINK( SvxSuperContourDlg, PipetteHdl, ContourWindow&, rWnd, void ) +IMPL_LINK_NOARG(SvxSuperContourDlg, PipetteHdl, ContourWindow&, void) +{ + m_xStbStatusColor->Invalidate(); +} + +void StatusColor::Paint(vcl::RenderContext& rDevice, const tools::Rectangle&) { - const Color& rOldLineColor = m_pStbStatus->GetLineColor(); - const Color& rOldFillColor = m_pStbStatus->GetFillColor(); + const Color& rOldLineColor = rDevice.GetLineColor(); + const Color& rOldFillColor = rDevice.GetFillColor(); - tools::Rectangle aRect( m_pStbStatus->GetItemRect( 4 ) ); - const Color& rColor = rWnd.GetPipetteColor(); + tools::Rectangle aRect(Point(), GetOutputSizePixel()); + const Color& rColor = m_rWnd.GetPipetteColor(); - m_pStbStatus->SetLineColor( rColor ); - m_pStbStatus->SetFillColor( rColor ); + rDevice.SetLineColor(rColor); + rDevice.SetFillColor(rColor); aRect.AdjustLeft(4 ); aRect.AdjustTop(4 ); aRect.AdjustRight( -4 ); aRect.AdjustBottom( -4 ); - m_pStbStatus->DrawRect( aRect ); + rDevice.DrawRect( aRect ); - m_pStbStatus->SetLineColor( rOldLineColor ); - m_pStbStatus->SetFillColor( rOldFillColor ); + rDevice.SetLineColor(rOldLineColor); + rDevice.SetFillColor(rOldFillColor); } IMPL_LINK( SvxSuperContourDlg, PipetteClickHdl, ContourWindow&, rWnd, void ) @@ -686,12 +632,12 @@ IMPL_LINK( SvxSuperContourDlg, PipetteClickHdl, ContourWindow&, rWnd, void ) Bitmap aMask; const Color& rColor = rWnd.GetPipetteColor(); - EnterWait(); + weld::WaitObject aWaitObj(&m_rDialog); if( aGraphic.GetType() == GraphicType::Bitmap ) { Bitmap aBmp( aGraphic.GetBitmapEx().GetBitmap() ); - const long nTol = static_cast<long>(m_pMtfTolerance->GetValue() * 255L / 100L); + const long nTol = static_cast<long>(m_xMtfTolerance->get_value(FieldUnit::PERCENT) * 255L / 100L); aMask = aBmp.CreateMask( rColor, nTol ); @@ -700,7 +646,7 @@ IMPL_LINK( SvxSuperContourDlg, PipetteClickHdl, ContourWindow&, rWnd, void ) if( !!aMask ) { - std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "svx/ui/querynewcontourdialog.ui")); + std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(&m_rDialog, "svx/ui/querynewcontourdialog.ui")); std::unique_ptr<weld::MessageDialog> xQBox(xBuilder->weld_message_dialog("QueryNewContourDialog")); bool bNewContour; @@ -717,29 +663,20 @@ IMPL_LINK( SvxSuperContourDlg, PipetteClickHdl, ContourWindow&, rWnd, void ) aCreateIdle.Start(); } } - - LeaveWait(); } - m_pTbx1->CheckItem(mnPipetteId, false); + m_xTbx1->set_item_active("TBI_PIPETTE", false); rWnd.SetPipetteMode( false ); - m_pStbStatus->Invalidate(); + m_xStbStatusColor->Invalidate(); } IMPL_LINK( SvxSuperContourDlg, WorkplaceClickHdl, ContourWindow&, rWnd, void ) { - m_pTbx1->CheckItem(mnWorkSpaceId, false); - m_pTbx1->CheckItem(mnSelectId); + m_xTbx1->set_item_active("TBI_WORKPLACE", false); + m_xTbx1->set_item_active("TBI_SELECT", true); rWnd.SetWorkplaceMode( false ); - m_pContourWnd->QueueIdleUpdate(); - Invalidate(); -} - -IMPL_LINK_NOARG(SvxSuperContourDlg, MiscHdl, LinkParamNone*, void) -{ - SvtMiscOptions aMiscOptions; - m_pTbx1->SetOutStyle( aMiscOptions.GetToolboxStyle() ); + m_xContourWnd->QueueIdleUpdate(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |