| /************************************************************** |
| * |
| * 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" |
| |
| #undef SC_DLLIMPLEMENTATION |
| |
| |
| |
| //------------------------------------------------------------------ |
| |
| #include "inscodlg.hxx" |
| #include "scresid.hxx" |
| #include "miscdlgs.hrc" |
| |
| |
| //================================================================== |
| |
| sal_Bool ScInsertContentsDlg::bPreviousAllCheck = sal_False; |
| sal_uInt16 ScInsertContentsDlg::nPreviousChecks = (IDF_VALUE | IDF_DATETIME | IDF_STRING); |
| sal_uInt16 ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_NOFUNC; |
| sal_uInt16 ScInsertContentsDlg::nPreviousChecks2 = 0; |
| sal_uInt16 ScInsertContentsDlg::nPreviousMoveMode = INS_NONE; // enum InsCellCmd |
| |
| //----------------------------------------------------------------------- |
| |
| ScInsertContentsDlg::ScInsertContentsDlg( Window* pParent, |
| sal_uInt16 nCheckDefaults, |
| const String* pStrTitle ) |
| |
| : ModalDialog ( pParent, ScResId( RID_SCDLG_INSCONT ) ), |
| // |
| aFlFrame ( this, ScResId( FL_FRAME ) ), |
| aBtnInsAll ( this, ScResId( BTN_INSALL ) ), |
| aBtnInsStrings ( this, ScResId( BTN_INSSTRINGS ) ), |
| aBtnInsNumbers ( this, ScResId( BTN_INSNUMBERS ) ), |
| aBtnInsDateTime ( this, ScResId( BTN_INSDATETIME ) ), |
| aBtnInsFormulas ( this, ScResId( BTN_INSFORMULAS ) ), |
| aBtnInsNotes ( this, ScResId( BTN_INSNOTES ) ), |
| aBtnInsAttrs ( this, ScResId( BTN_INSATTRS ) ), |
| aBtnInsObjects ( this, ScResId( BTN_INSOBJECTS ) ), |
| aFlSep1 ( this, ScResId( FL_SEP1 ) ), |
| aFlOptions ( this, ScResId( FL_OPTIONS ) ), |
| aBtnSkipEmptyCells( this, ScResId(BTN_SKIP_EMPTY ) ), |
| aBtnTranspose ( this, ScResId( BTN_TRANSPOSE ) ), |
| aBtnLink ( this, ScResId( BTN_LINK ) ), |
| aFlOperation ( this, ScResId( FL_OPERATION ) ), |
| aRbNoOp ( this, ScResId( BTN_OP_NOOP ) ), |
| aRbAdd ( this, ScResId( BTN_OP_ADD ) ), |
| aRbSub ( this, ScResId( BTN_OP_SUB ) ), |
| aRbMul ( this, ScResId( BTN_OP_MUL ) ), |
| aRbDiv ( this, ScResId( BTN_OP_DIV ) ), |
| aFlSep2 ( this, ScResId( FL_SEP2 ) ), |
| aFlMove ( this, ScResId( FL_MOVE ) ), |
| aRbMoveNone ( this, ScResId( BTN_MV_NONE ) ), |
| aRbMoveDown ( this, ScResId( BTN_MV_DOWN ) ), |
| aRbMoveRight ( this, ScResId( BTN_MV_RIGHT ) ), |
| aBtnOk ( this, ScResId( BTN_OK ) ), |
| aBtnCancel ( this, ScResId( BTN_CANCEL ) ), |
| aBtnHelp ( this, ScResId( BTN_HELP ) ), |
| bOtherDoc ( sal_False ), |
| bFillMode ( sal_False ), |
| bChangeTrack ( sal_False ), |
| bMoveDownDisabled( sal_False ), |
| bMoveRightDisabled( sal_False ) |
| { |
| if ( pStrTitle ) |
| SetText( *pStrTitle ); |
| |
| if ( nCheckDefaults != 0 ) |
| { |
| ScInsertContentsDlg::nPreviousChecks = nCheckDefaults; |
| ScInsertContentsDlg::bPreviousAllCheck = sal_False; |
| ScInsertContentsDlg::nPreviousChecks2 = 0; |
| } |
| |
| aBtnInsAll.Check ( ScInsertContentsDlg::bPreviousAllCheck ); |
| aBtnInsStrings.Check ( IS_SET( IDF_STRING, |
| ScInsertContentsDlg::nPreviousChecks ) ); |
| aBtnInsNumbers.Check ( IS_SET( IDF_VALUE, |
| ScInsertContentsDlg::nPreviousChecks ) ); |
| aBtnInsDateTime.Check( IS_SET( IDF_DATETIME, |
| ScInsertContentsDlg::nPreviousChecks ) ); |
| aBtnInsFormulas.Check( IS_SET( IDF_FORMULA, |
| ScInsertContentsDlg::nPreviousChecks ) ); |
| aBtnInsNotes.Check ( IS_SET( IDF_NOTE, |
| ScInsertContentsDlg::nPreviousChecks ) ); |
| aBtnInsAttrs.Check ( IS_SET( IDF_ATTRIB, |
| ScInsertContentsDlg::nPreviousChecks ) ); |
| aBtnInsObjects.Check ( IS_SET( IDF_OBJECTS, |
| ScInsertContentsDlg::nPreviousChecks ) ); |
| |
| switch( ScInsertContentsDlg::nPreviousFormulaChecks ) |
| { |
| case PASTE_NOFUNC: aRbNoOp.Check(sal_True); break; |
| case PASTE_ADD: aRbAdd.Check(sal_True); break; |
| case PASTE_SUB: aRbSub.Check(sal_True); break; |
| case PASTE_MUL: aRbMul.Check(sal_True); break; |
| case PASTE_DIV: aRbDiv.Check(sal_True); break; |
| } |
| |
| switch( ScInsertContentsDlg::nPreviousMoveMode ) |
| { |
| case INS_NONE: aRbMoveNone.Check(sal_True); break; |
| case INS_CELLSDOWN: aRbMoveDown.Check(sal_True); break; |
| case INS_CELLSRIGHT: aRbMoveRight.Check(sal_True); break; |
| } |
| |
| aBtnSkipEmptyCells.Check( ( ScInsertContentsDlg::nPreviousChecks2 & INS_CONT_NOEMPTY ) != 0); |
| aBtnTranspose.Check( ( ScInsertContentsDlg::nPreviousChecks2 & INS_CONT_TRANS ) != 0); |
| aBtnLink.Check( ( ScInsertContentsDlg::nPreviousChecks2 & INS_CONT_LINK ) != 0); |
| |
| DisableChecks( aBtnInsAll.IsChecked() ); |
| |
| aFlSep1.SetStyle( aFlSep1.GetStyle() | WB_VERT ); |
| aFlSep2.SetStyle( aFlSep2.GetStyle() | WB_VERT ); |
| |
| aBtnInsAll.SetClickHdl( LINK( this, ScInsertContentsDlg, InsAllHdl ) ); |
| aBtnLink.SetClickHdl( LINK( this, ScInsertContentsDlg, LinkBtnHdl ) ); |
| |
| //------------- |
| FreeResource(); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_uInt16 ScInsertContentsDlg::GetInsContentsCmdBits() const |
| { |
| ScInsertContentsDlg::nPreviousChecks = 0; |
| |
| if ( aBtnInsStrings.IsChecked() ) |
| ScInsertContentsDlg::nPreviousChecks = IDF_STRING; |
| if ( aBtnInsNumbers.IsChecked() ) |
| ScInsertContentsDlg::nPreviousChecks |= IDF_VALUE; |
| if ( aBtnInsDateTime.IsChecked()) |
| ScInsertContentsDlg::nPreviousChecks |= IDF_DATETIME; |
| if ( aBtnInsFormulas.IsChecked()) |
| ScInsertContentsDlg::nPreviousChecks |= IDF_FORMULA; |
| if ( aBtnInsNotes.IsChecked() ) |
| ScInsertContentsDlg::nPreviousChecks |= IDF_NOTE; |
| if ( aBtnInsAttrs.IsChecked() ) |
| ScInsertContentsDlg::nPreviousChecks |= IDF_ATTRIB; |
| if ( aBtnInsObjects.IsChecked() ) |
| ScInsertContentsDlg::nPreviousChecks |= IDF_OBJECTS; |
| |
| ScInsertContentsDlg::bPreviousAllCheck = aBtnInsAll.IsChecked(); |
| |
| return ( (ScInsertContentsDlg::bPreviousAllCheck) |
| ? IDF_ALL |
| : ScInsertContentsDlg::nPreviousChecks ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| InsCellCmd ScInsertContentsDlg::GetMoveMode() |
| { |
| if ( aRbMoveDown.IsChecked() ) |
| return INS_CELLSDOWN; |
| if ( aRbMoveRight.IsChecked() ) |
| return INS_CELLSRIGHT; |
| |
| return INS_NONE; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| void ScInsertContentsDlg::DisableChecks( sal_Bool bInsAllChecked ) |
| { |
| if ( bInsAllChecked ) |
| { |
| aBtnInsStrings.Disable(); |
| aBtnInsNumbers.Disable(); |
| aBtnInsDateTime.Disable(); |
| aBtnInsFormulas.Disable(); |
| aBtnInsNotes.Disable(); |
| aBtnInsAttrs.Disable(); |
| aBtnInsObjects.Disable(); |
| } |
| else |
| { |
| aBtnInsStrings.Enable(); |
| aBtnInsNumbers.Enable(); |
| aBtnInsDateTime.Enable(); |
| aBtnInsFormulas.Enable(); |
| aBtnInsNotes.Enable(); |
| aBtnInsAttrs.Enable(); |
| |
| // "Objects" is disabled for "Fill Tables" |
| if ( bFillMode ) |
| aBtnInsObjects.Disable(); |
| else |
| aBtnInsObjects.Enable(); |
| } |
| } |
| |
| // Link in anderes Dokument -> alles andere disabled |
| |
| void ScInsertContentsDlg::TestModes() |
| { |
| if ( bOtherDoc && aBtnLink.IsChecked() ) |
| { |
| aBtnSkipEmptyCells.Disable(); |
| aBtnTranspose.Disable(); |
| aRbNoOp.Disable(); |
| aRbAdd.Disable(); |
| aRbSub.Disable(); |
| aRbMul.Disable(); |
| aRbDiv.Disable(); |
| aFlOperation.Disable(); |
| |
| aRbMoveNone.Disable(); |
| aRbMoveDown.Disable(); |
| aRbMoveRight.Disable(); |
| aFlMove.Disable(); |
| |
| aFlFrame.Disable(); |
| aBtnInsAll.Disable(); |
| DisableChecks(sal_True); |
| } |
| else |
| { |
| aBtnSkipEmptyCells.Enable(); |
| aBtnTranspose.Enable(!bFillMode); |
| aRbNoOp.Enable(); |
| aRbAdd.Enable(); |
| aRbSub.Enable(); |
| aRbMul.Enable(); |
| aRbDiv.Enable(); |
| aFlOperation.Enable(); |
| |
| aRbMoveNone.Enable(!bFillMode && !bChangeTrack && !(bMoveDownDisabled && bMoveRightDisabled)); |
| aRbMoveDown.Enable(!bFillMode && !bChangeTrack && !bMoveDownDisabled); |
| aRbMoveRight.Enable(!bFillMode && !bChangeTrack && !bMoveRightDisabled); |
| aFlMove.Enable(!bFillMode && !bChangeTrack && !(bMoveDownDisabled && bMoveRightDisabled)); |
| |
| aFlFrame.Enable(); |
| aBtnInsAll.Enable(); |
| DisableChecks( aBtnInsAll.IsChecked() ); |
| } |
| } |
| |
| void ScInsertContentsDlg::SetOtherDoc( sal_Bool bSet ) |
| { |
| if ( bSet != bOtherDoc ) |
| { |
| bOtherDoc = bSet; |
| TestModes(); |
| if ( bSet ) |
| aRbMoveNone.Check(sal_True); |
| } |
| } |
| |
| void ScInsertContentsDlg::SetFillMode( sal_Bool bSet ) |
| { |
| if ( bSet != bFillMode ) |
| { |
| bFillMode = bSet; |
| TestModes(); |
| if ( bSet ) |
| aRbMoveNone.Check(sal_True); |
| } |
| } |
| |
| void ScInsertContentsDlg::SetChangeTrack( sal_Bool bSet ) |
| { |
| if ( bSet != bChangeTrack ) |
| { |
| bChangeTrack = bSet; |
| TestModes(); |
| if ( bSet ) |
| aRbMoveNone.Check(sal_True); |
| } |
| } |
| |
| void ScInsertContentsDlg::SetCellShiftDisabled( int nDisable ) |
| { |
| sal_Bool bDown = ((nDisable & SC_CELL_SHIFT_DISABLE_DOWN) != 0); |
| sal_Bool bRight = ((nDisable & SC_CELL_SHIFT_DISABLE_RIGHT) != 0); |
| if ( bDown != bMoveDownDisabled || bRight != bMoveRightDisabled ) |
| { |
| bMoveDownDisabled = bDown; |
| bMoveRightDisabled = bRight; |
| TestModes(); |
| if ( bMoveDownDisabled && aRbMoveDown.IsChecked() ) |
| aRbMoveNone.Check(sal_True); |
| if ( bMoveRightDisabled && aRbMoveRight.IsChecked() ) |
| aRbMoveNone.Check(sal_True); |
| } |
| } |
| |
| |
| //------------------------------------------------------------------------ |
| |
| IMPL_LINK( ScInsertContentsDlg, InsAllHdl, void*, EMPTYARG ) |
| { |
| DisableChecks( aBtnInsAll.IsChecked() ); |
| |
| return 0; |
| } |
| |
| IMPL_LINK( ScInsertContentsDlg, LinkBtnHdl, void*, EMPTYARG ) |
| { |
| TestModes(); |
| |
| return 0; |
| } |
| |
| __EXPORT ScInsertContentsDlg::~ScInsertContentsDlg() |
| { |
| ScInsertContentsDlg::nPreviousChecks2 = 0; |
| if(aBtnSkipEmptyCells.IsChecked()) |
| ScInsertContentsDlg::nPreviousChecks2 |= INS_CONT_NOEMPTY; |
| if( aBtnTranspose.IsChecked()) |
| ScInsertContentsDlg::nPreviousChecks2 |= INS_CONT_TRANS; |
| if( aBtnLink.IsChecked() ) |
| ScInsertContentsDlg::nPreviousChecks2 |= INS_CONT_LINK; |
| |
| if (!bFillMode) // im FillMode ist None gecheckt und alle 3 disabled |
| { |
| if ( aRbMoveNone.IsChecked() ) |
| ScInsertContentsDlg::nPreviousMoveMode = INS_NONE; |
| else if ( aRbMoveDown.IsChecked() ) |
| ScInsertContentsDlg::nPreviousMoveMode = INS_CELLSDOWN; |
| else if ( aRbMoveRight.IsChecked() ) |
| ScInsertContentsDlg::nPreviousMoveMode = INS_CELLSRIGHT; |
| } |
| } |
| |
| sal_uInt16 ScInsertContentsDlg::GetFormulaCmdBits() const |
| { |
| ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_NOFUNC; |
| if(aRbAdd.IsChecked()) |
| ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_ADD; |
| else if(aRbSub.IsChecked()) |
| ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_SUB; |
| else if(aRbMul.IsChecked()) |
| ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_MUL; |
| else if(aRbDiv.IsChecked()) |
| ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_DIV; |
| // Bits fuer Checkboxen ausblenden |
| return ScInsertContentsDlg::nPreviousFormulaChecks; |
| } |
| |
| |
| |