/**************************************************************
 * 
 * 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.
 * 
 *************************************************************/



module
"ADC7D7A1-2341-101C-A55A-04021C007002"
"82528B40-234D-101C-A55A-04021C007002"
StarCalc
[
HelpText( "StarDivision StarCalc" ),
SlotIdFile( "scslots.hrc" )
ModulePrefix( "Sc" )
]
{
    struct ScProtection
    {
        BOOL    Locked              MID_1;
        BOOL    FormulasHidden      MID_2;
        BOOL    Hidden              MID_3;
        BOOL    HiddenInPrintout    MID_4
    };
    item ScProtection ScProtectionAttr;

    item double ScDoubleItem;
    item INT32 SfxIntegerListItem;

	//----------------------------------------------------------
	// bei Problemen ggF. "von Hand" includen (=Copy/Paste)
    include "sfx2/sfxitems.sdi"
    include "sfx2/sfx.sdi"
    include "svx/svxitems.sdi"
    include "svx/xoitems.sdi"
    include "svx/svx.sdi"

	include "scalc.sdi"
	include "docsh.sdi"
	include "tabvwsh.sdi"
	include "drawsh.sdi"
	include "editsh.sdi"
	include "pivotsh.sdi"
	include "app.sdi"
	include "drtxtob.sdi"
	include "prevwsh.sdi"
	include "auditsh.sdi"
	include "drformsh.sdi"
	include "formatsh.sdi"
	include "cellsh.sdi"
	include "oleobjsh.sdi"
	include "chartsh.sdi"
	include "graphsh.sdi"
	include "pgbrksh.sdi"
	include "mediash.sdi"

}

