| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_sc.hxx" |
| |
| |
| |
| // INCLUDE --------------------------------------------------------------- |
| |
| #include <sfx2/app.hxx> |
| #include <sfx2/basedlgs.hxx> |
| #include <sfx2/bindings.hxx> |
| #include <sfx2/dispatch.hxx> |
| #include <sfx2/viewfrm.hxx> |
| |
| #include "reffact.hxx" |
| #include "tabvwsh.hxx" |
| #include "sc.hrc" |
| #include "acredlin.hxx" |
| #include "simpref.hxx" |
| #include "scmod.hxx" |
| //<!--Added by PengYunQuan for Validity Cell Range Picker |
| #include "validate.hxx" |
| //<!--Added by PengYunQuan for Validity Cell Range Picker |
| |
| // ----------------------------------------------------------------------- |
| |
| SFX_IMPL_MODELESSDIALOG(ScNameDlgWrapper, FID_DEFINE_NAME ) |
| SFX_IMPL_MODELESSDIALOG(ScSolverDlgWrapper, SID_OPENDLG_SOLVE ) |
| SFX_IMPL_MODELESSDIALOG(ScOptSolverDlgWrapper, SID_OPENDLG_OPTSOLVER ) |
| SFX_IMPL_MODELESSDIALOG(ScPivotLayoutWrapper, SID_OPENDLG_PIVOTTABLE ) |
| SFX_IMPL_MODELESSDIALOG(ScTabOpDlgWrapper, SID_OPENDLG_TABOP ) |
| SFX_IMPL_MODELESSDIALOG(ScFilterDlgWrapper, SID_FILTER ) |
| SFX_IMPL_MODELESSDIALOG(ScSpecialFilterDlgWrapper, SID_SPECIAL_FILTER ) |
| SFX_IMPL_MODELESSDIALOG(ScDbNameDlgWrapper, SID_DEFINE_DBNAME ) |
| SFX_IMPL_MODELESSDIALOG(ScConsolidateDlgWrapper, SID_OPENDLG_CONSOLIDATE ) |
| SFX_IMPL_MODELESSDIALOG(ScPrintAreasDlgWrapper, SID_OPENDLG_EDIT_PRINTAREA ) |
| SFX_IMPL_MODELESSDIALOG(ScCondFormatDlgWrapper, SID_OPENDLG_CONDFRMT ) |
| SFX_IMPL_MODELESSDIALOG(ScColRowNameRangesDlgWrapper, SID_DEFINE_COLROWNAMERANGES ) |
| SFX_IMPL_MODELESSDIALOG(ScFormulaDlgWrapper, SID_OPENDLG_FUNCTION ) |
| SFX_IMPL_MODELESSDIALOG(ScAcceptChgDlgWrapper, FID_CHG_ACCEPT ) |
| SFX_IMPL_MODELESSDIALOG(ScHighlightChgDlgWrapper, FID_CHG_SHOW ) |
| SFX_IMPL_MODELESSDIALOG(ScSimpleRefDlgWrapper, WID_SIMPLE_REF ) |
| /*!!! dafuer muss der Funktionsautopilot noch umgebaut werden |
| SFX_IMPL_CHILDWINDOW(ScFunctionDlgWrapper, SID_OPENDLG_FUNCTION ) |
| SFX_IMPL_CHILDWINDOW(ScEditFunctionDlgWrapper, SID_OPENDLG_EDITFUNCTION ) |
| SFX_IMPL_CHILDWINDOW(ScArgumentDlgWrapper, SID_OPENDLG_ARGUMENT ) |
| */ |
| //<!--Added by PengYunQuan for Validity Cell Range Picker |
| //SFX_IMPL_MODELESSDIALOG(ScValidityRefChildWin, SID_VALIDITY_REFERENCE ) |
| SFX_IMPL_CHILDWINDOW(ScValidityRefChildWin, SID_VALIDITY_REFERENCE) |
| SfxChildWinInfo __EXPORT ScValidityRefChildWin::GetInfo() const |
| { |
| SfxChildWinInfo anInfo = SfxChildWindow::GetInfo(); |
| |
| if( Window *pWnd = GetWindow() ) |
| { |
| anInfo.aSize = pWnd->GetSizePixel(); |
| |
| if( pWnd->IsDialog() ) |
| if ( static_cast<Dialog*>(pWnd)->IsRollUp() ) |
| anInfo.nFlags |= SFX_CHILDWIN_ZOOMIN; |
| } |
| |
| return anInfo; |
| } |
| |
| namespace { ScTabViewShell * lcl_GetTabViewShell( SfxBindings *pBindings ); } |
| //<!--Added by PengYunQuan for Validity Cell Range Picker |
| |
| #define IMPL_CHILD_CTOR(Class,sid) \ |
| Class::Class( Window* pParentP, \ |
| sal_uInt16 nId, \ |
| SfxBindings* p, \ |
| SfxChildWinInfo* pInfo ) \ |
| : SfxChildWindow(pParentP, nId) \ |
| { \ |
| /*//<!--Added by PengYunQuan for Validity Cell Range Picker*/\ |
| /************************************************************************************/\ |
| /* When a new document is creating, the SfxViewFrame may be ready, */\ |
| /* But the ScTabViewShell may have not been activated yet. In this */\ |
| /* situation, SfxViewShell::Current() does not get the correct shell, */\ |
| /* and we should lcl_GetTabViewShell( p ) instead of SfxViewShell::Current() */\ |
| /************************************************************************************/\ |
| ScTabViewShell* pViewShell = lcl_GetTabViewShell( p ); \ |
| /*//-->Added by PengYunQuan for Validity Cell Range Picker*/\ |
| if (!pViewShell) \ |
| pViewShell = PTR_CAST( ScTabViewShell, SfxViewShell::Current() ); \ |
| DBG_ASSERT( pViewShell, "missing view shell :-(" ); \ |
| pWindow = pViewShell ? \ |
| pViewShell->CreateRefDialog( p, this, pInfo, pParentP, sid ) : NULL; \ |
| if (pViewShell && !pWindow) \ |
| pViewShell->GetViewFrame()->SetChildWindow( nId, sal_False ); \ |
| } |
| |
| |
| //========================================================================= |
| |
| //------------------------------------------------------------------------- |
| // ScNameDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScNameDlgWrapper, FID_DEFINE_NAME ) |
| |
| //------------------------------------------------------------------------- |
| // ScSolverDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScSolverDlgWrapper, SID_OPENDLG_SOLVE ) |
| |
| //------------------------------------------------------------------------- |
| // ScOptSolverDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScOptSolverDlgWrapper, SID_OPENDLG_OPTSOLVER ) |
| |
| //------------------------------------------------------------------------- |
| // ScPivotLayoutWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScPivotLayoutWrapper, SID_OPENDLG_PIVOTTABLE ) |
| |
| //------------------------------------------------------------------------- |
| // ScTabOpDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScTabOpDlgWrapper, SID_OPENDLG_TABOP ) |
| |
| //------------------------------------------------------------------------- |
| // ScFilterDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScFilterDlgWrapper, SID_FILTER ) |
| |
| //------------------------------------------------------------------------- |
| // ScSpecialFilterDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScSpecialFilterDlgWrapper, SID_SPECIAL_FILTER ) |
| |
| //------------------------------------------------------------------------- |
| // ScDbNameDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScDbNameDlgWrapper, SID_DEFINE_DBNAME ) |
| |
| //------------------------------------------------------------------------- |
| // ScColRowNameRangesDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScColRowNameRangesDlgWrapper, SID_DEFINE_COLROWNAMERANGES ) |
| |
| //------------------------------------------------------------------------- |
| // ScConsolidateDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScConsolidateDlgWrapper, SID_OPENDLG_CONSOLIDATE ) |
| |
| //------------------------------------------------------------------------- |
| // ScPrintAreasDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScPrintAreasDlgWrapper, SID_OPENDLG_EDIT_PRINTAREA ) |
| |
| //------------------------------------------------------------------------- |
| // ScCondFormatDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScCondFormatDlgWrapper, SID_OPENDLG_CONDFRMT ) |
| |
| //------------------------------------------------------------------------- |
| // ScFormulaDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScFormulaDlgWrapper, SID_OPENDLG_FUNCTION ) |
| |
| |
| //------------------------------------------------------------------------- |
| // ScSimpleRefDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| static sal_Bool bScSimpleRefFlag; |
| static long nScSimpleRefHeight; |
| static long nScSimpleRefWidth; |
| static long nScSimpleRefX; |
| static long nScSimpleRefY; |
| static sal_Bool bAutoReOpen=sal_True; |
| |
| ScSimpleRefDlgWrapper::ScSimpleRefDlgWrapper( Window* pParentP, |
| sal_uInt16 nId, |
| SfxBindings* p, |
| SfxChildWinInfo* pInfo ) |
| : SfxChildWindow(pParentP, nId) |
| { |
| // ScTabViewShell* pViewShell = |
| // PTR_CAST( ScTabViewShell, SfxViewShell::Current() ); |
| |
| ScTabViewShell* pViewShell = NULL; |
| SfxDispatcher* pDisp = p->GetDispatcher(); |
| if ( pDisp ) |
| { |
| SfxViewFrame* pViewFrm = pDisp->GetFrame(); |
| if ( pViewFrm ) |
| pViewShell = PTR_CAST( ScTabViewShell, pViewFrm->GetViewShell() ); |
| } |
| |
| DBG_ASSERT( pViewShell, "missing view shell :-(" ); |
| |
| if(pInfo!=NULL && bScSimpleRefFlag) |
| { |
| pInfo->aPos.X()=nScSimpleRefX; |
| pInfo->aPos.Y()=nScSimpleRefY; |
| pInfo->aSize.Height()=nScSimpleRefHeight; |
| pInfo->aSize.Width()=nScSimpleRefWidth; |
| } |
| pWindow = NULL; |
| |
| if(bAutoReOpen && pViewShell) |
| pWindow = pViewShell->CreateRefDialog( p, this, pInfo, pParentP, WID_SIMPLE_REF); |
| |
| if (!pWindow) |
| { |
| SC_MOD()->SetRefDialog( nId, sal_False ); |
| } |
| } |
| |
| void ScSimpleRefDlgWrapper::SetDefaultPosSize(Point aPos, Size aSize, sal_Bool bSet) |
| { |
| bScSimpleRefFlag=bSet; |
| if(bScSimpleRefFlag) |
| { |
| nScSimpleRefX=aPos.X(); |
| nScSimpleRefY=aPos.Y(); |
| nScSimpleRefHeight=aSize.Height(); |
| nScSimpleRefWidth=aSize.Width(); |
| } |
| } |
| |
| |
| String ScSimpleRefDlgWrapper::GetRefString() |
| { |
| String aResult; |
| if(pWindow!=NULL) |
| { |
| aResult=((ScSimpleRefDlg*)pWindow)->GetRefString(); |
| } |
| return aResult; |
| } |
| |
| void ScSimpleRefDlgWrapper::SetAutoReOpen(sal_Bool bFlag) |
| { |
| bAutoReOpen=bFlag; |
| } |
| |
| void ScSimpleRefDlgWrapper::SetRefString(const String& rStr) |
| { |
| if(pWindow!=NULL) |
| { |
| ((ScSimpleRefDlg*)pWindow)->SetRefString(rStr); |
| } |
| } |
| |
| void ScSimpleRefDlgWrapper::SetCloseHdl( const Link& rLink ) |
| { |
| if(pWindow!=NULL) |
| { |
| ((ScSimpleRefDlg*)pWindow)->SetCloseHdl( rLink ); |
| } |
| } |
| |
| void ScSimpleRefDlgWrapper::SetUnoLinks( const Link& rDone, |
| const Link& rAbort, const Link& rChange ) |
| { |
| if(pWindow!=NULL) |
| { |
| ((ScSimpleRefDlg*)pWindow)->SetUnoLinks( rDone, rAbort, rChange ); |
| } |
| } |
| |
| void ScSimpleRefDlgWrapper::SetFlags( sal_Bool bCloseOnButtonUp, sal_Bool bSingleCell, sal_Bool bMultiSelection ) |
| { |
| if(pWindow!=NULL) |
| { |
| ((ScSimpleRefDlg*)pWindow)->SetFlags( bCloseOnButtonUp, bSingleCell, bMultiSelection ); |
| } |
| } |
| |
| void ScSimpleRefDlgWrapper::StartRefInput() |
| { |
| if(pWindow!=NULL) |
| { |
| ((ScSimpleRefDlg*)pWindow)->StartRefInput(); |
| } |
| } |
| |
| |
| |
| //------------------------------------------------------------------------- |
| // ScAcceptChgDlgWrapper //Kommentar: sollte in die ViewShell |
| //------------------------------------------------------------------------- |
| |
| ScAcceptChgDlgWrapper::ScAcceptChgDlgWrapper( Window* pParentP, |
| sal_uInt16 nId, |
| SfxBindings* pBindings, |
| SfxChildWinInfo* pInfo ) : |
| SfxChildWindow( pParentP, nId ) |
| { |
| ScTabViewShell* pViewShell = |
| PTR_CAST( ScTabViewShell, SfxViewShell::Current() ); |
| DBG_ASSERT( pViewShell, "missing view shell :-(" ); |
| pWindow = pViewShell ? |
| new ScAcceptChgDlg( pBindings, this, pParentP, pViewShell->GetViewData() ) : |
| NULL; |
| if(pWindow!=NULL) |
| { |
| ((ScAcceptChgDlg*)pWindow)->Initialize( pInfo ); |
| } |
| if (pViewShell && !pWindow) |
| pViewShell->GetViewFrame()->SetChildWindow( nId, sal_False ); |
| } |
| |
| void ScAcceptChgDlgWrapper::ReInitDlg() |
| { |
| ScTabViewShell* pViewShell = |
| PTR_CAST( ScTabViewShell, SfxViewShell::Current() ); |
| DBG_ASSERT( pViewShell, "missing view shell :-(" ); |
| |
| if(pWindow!=NULL && pViewShell) |
| { |
| ((ScAcceptChgDlg*)pWindow)->ReInit(pViewShell->GetViewData()); |
| } |
| } |
| |
| //------------------------------------------------------------------------- |
| // ScHighlightChgDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScHighlightChgDlgWrapper, FID_CHG_SHOW ) |
| |
| /*------------------------------------------------------------------------*/ |
| /*@@@ |
| //------------------------------------------------------------------------- |
| // ScFunctionDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScFunctionDlgWrapper, SID_OPENDLG_FUNCTION ) |
| |
| //------------------------------------------------------------------------- |
| // ScEditFunctionDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScEditFunctionDlgWrapper, SID_OPENDLG_EDITFUNCTION ) |
| |
| //------------------------------------------------------------------------- |
| // ScArgumentDlgWrapper |
| //------------------------------------------------------------------------- |
| |
| IMPL_CHILD_CTOR( ScArgumentDlgWrapper, SID_OPENDLG_ARGUMENT ) |
| @@@*/ |
| /*------------------------------------------------------------------------*/ |
| |
| |
| //<!--Added by PengYunQuan for Validity Cell Range Picker |
| namespace |
| { |
| ScTabViewShell * lcl_GetTabViewShell( SfxBindings *pBindings ) |
| { |
| if( pBindings ) |
| if( SfxDispatcher* pDisp = pBindings ->GetDispatcher() ) |
| if( SfxViewFrame *pFrm = pDisp->GetFrame() ) |
| if( SfxViewShell* pViewSh = pFrm->GetViewShell() ) |
| return dynamic_cast<ScTabViewShell*>( pViewSh ); |
| |
| return NULL; |
| } |
| } |
| |
| ScValidityRefChildWin::ScValidityRefChildWin( Window* pParentP, \ |
| sal_uInt16 nId, \ |
| SfxBindings* p, \ |
| SfxChildWinInfo* /*pInfo*/ ) \ |
| : SfxChildWindow(pParentP, nId), |
| m_bVisibleLock( false ), |
| m_bFreeWindowLock( false ), |
| m_pSavedWndParent( NULL ) |
| { |
| SetWantsFocus( sal_False );\ |
| ScTabViewShell* pViewShell = \ |
| NULL != ( pWindow = ScValidationDlg::Find1AliveObject( pParentP ) ) ? static_cast<ScValidationDlg*>(pWindow)->GetTabViewShell() : |
| lcl_GetTabViewShell( p ); |
| if (!pViewShell) |
| pViewShell = PTR_CAST( ScTabViewShell, SfxViewShell::Current() ); |
| DBG_ASSERT( pViewShell, "missing view shell :-(" ); \ |
| if (pViewShell && !pWindow) \ |
| pViewShell->GetViewFrame()->SetChildWindow( nId, sal_False ); \ |
| else if( pWindow /*&& pWindow->ISA(ScValidationDlg)*/ ) |
| {}//pWindow = new Window( pParentP, WB_HIDE ); |
| |
| if( pWindow ) m_pSavedWndParent = pWindow->GetParent(); |
| } |
| |
| ScValidityRefChildWin::~ScValidityRefChildWin() |
| { |
| if( pWindow ) pWindow->SetParent( m_pSavedWndParent ); |
| |
| if( m_bFreeWindowLock ) |
| pWindow = NULL; |
| } |
| //-->Added by PengYunQuan for Validity Cell Range Picker |