1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef SC_EDITABLE_HXX 29 #define SC_EDITABLE_HXX 30 31 #include "address.hxx" 32 #include <tools/solar.h> 33 34 class ScDocument; 35 class ScViewFunc; 36 class ScMarkData; 37 class ScRange; 38 39 40 class ScEditableTester 41 { 42 sal_Bool bIsEditable; 43 sal_Bool bOnlyMatrix; 44 45 public: 46 // no test in ctor 47 ScEditableTester(); 48 49 // calls TestBlock 50 ScEditableTester( ScDocument* pDoc, SCTAB nTab, 51 SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow ); 52 53 // calls TestSelectedBlock 54 ScEditableTester( ScDocument* pDoc, 55 SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, 56 const ScMarkData& rMark ); 57 58 // calls TestRange 59 ScEditableTester( ScDocument* pDoc, const ScRange& rRange ); 60 61 // calls TestSelection 62 ScEditableTester( ScDocument* pDoc, const ScMarkData& rMark ); 63 64 // calls TestView 65 ScEditableTester( ScViewFunc* pView ); 66 67 ~ScEditableTester() {} 68 69 // Several calls to the Test... methods check if *all* of the ranges 70 // are editable. For several independent checks, Reset() has to be used. 71 void TestBlock( ScDocument* pDoc, SCTAB nTab, 72 SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow ); 73 void TestSelectedBlock( ScDocument* pDoc, 74 SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, 75 const ScMarkData& rMark ); 76 void TestRange( ScDocument* pDoc, const ScRange& rRange ); 77 void TestSelection( ScDocument* pDoc, const ScMarkData& rMark ); 78 void TestView( ScViewFunc* pView ); 79 80 sal_Bool IsEditable() const { return bIsEditable; } 81 sal_Bool IsFormatEditable() const { return bIsEditable || bOnlyMatrix; } 82 sal_uInt16 GetMessageId() const; 83 }; 84 85 #endif 86 87