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



#include "macros.inc"

Module gid_Module_Prg_Base
    MOD_NAME_DESC(MODULE_PRG_BASE);
    ParentID = gid_Module_Prg;
    Sortkey = "500";
    Styles =(APPLICATIONMODULE);
End

Module gid_Module_Prg_Base_Bin
    PackageInfo = "packinfo_office.txt";
    MOD_NAME_DESC ( MODULE_PRG_BASE_BIN );
    ParentID = gid_Module_Prg_Base;
    Sortkey = "100";
    Minimal = NO;
    Default = YES;
    Styles = (HIDDEN_ROOT);
    Files = (
        gid_File_Share_Registry_Base_Xcd
        ,gid_File_Lib_Abp
        ,gid_File_Lib_Dbp
        ,gid_File_Lib_Dbu
        ,gid_File_Lib_Adabasui
        ,gid_File_Lib_Rpt
        ,gid_File_Lib_Rptui
        ,gid_File_Lib_Rptxml
    );
End

// Module gid_Module_Prg_Base_Help
//     MOD_NAME_DESC ( MODULE_PRG_BASE_HELP );
//     ParentID = gid_Module_Prg_Base;
//     Sortkey = "200";
//     Minimal = NO;
//     Default = YES;
//     Files = (gid_File_Help_Sdatabase_Zip);
// End

Module gid_Module_Brand_Prg_Base
    PackageInfo = "packinfo_brand.txt";
    Name = "gid_Module_Brand_Prg_Base";
    Description = "gid_Module_Brand_Prg_Base";
    ParentID = gid_Module_Prg_Base;
    Sortkey = "100";
    InstallOrder = "1040";
    Minimal = YES;
    Default = YES;
    Styles = (HIDDEN_ROOT);
    Files = (gid_File_Exe_Sbase);
End

Module gid_Module_Langpack_Base_Template
    ParentID = gid_Module_Prg_Base_Bin;
    Name = "gid_Module_Langpack_Base_Template";
    Description = "gid_Module_Langpack_Base_Template";
    Styles = (TEMPLATEMODULE);
    Files = (gid_File_Help_Sdatabase_Zip,
             gid_File_Res_Abp,
             gid_File_Res_Adabasui,
             gid_File_Res_Cnr,
             gid_File_Res_Dbp,
             gid_File_Res_Dbu,
             gid_File_Res_Rpt,
             gid_File_Res_Rptui,
             gid_File_Res_Sdbcl,
             gid_File_Res_Sdberr);
End

#include "alllangmodules_base.inc"
