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


#ifndef _SCRIPTDLG_HRC
#define _SCRIPTDLG_HRC

#include <svl/solar.hrc>

#define SCRIPTDLG_OFFSET		400

// ScriptOrgDialog
#define SF_TXT_SCRIPTS				    1
#define SF_CTRL_SCRIPTSBOX  			2
#define SF_PB_RUN						3
#define SF_PB_CLOSE					    4
#define SF_PB_CREATE					5
#define SF_PB_EDIT						6
#define SF_PB_RENAME					7
#define SF_PB_DEL						8
#define SF_PB_HELP						9

#define IMG_HARDDISK                    1
#define IMG_HARDDISK_HC                 2
#define IMG_LIB                         3
#define IMG_LIB_HC                      4
#define IMG_MACRO                       5
#define IMG_MACRO_HC                    6
#define IMG_DOCUMENT                    7
#define IMG_DOCUMENT_HC                 8

#define RID_IMGLST_OBJECTS				( RID_BASICIDE_START +  7 )
#define RID_IMGLST_OBJECTS_HC (RID_BASICIDE_START + 13)

// NewObjectDialog
#define FT_NEWLIB                       10
#define STR_FT_NEWMACRO                 11
#define STR_NEWLIB                      12
#define STR_NEWMACRO                    13
#define ED_LIBNAME                      14
#define PB_OK                           15
#define PB_CANCEL                       16
#define DLG_NEWLIB                      17
#define STR_FT_RENAME                   18
#define STR_RENAME                      19

// Others
/*
Please be aware that these strings are global resources, don't use self-defined values!
You have to use the RID_SVXSTART macro do avoid ID clashes with other resource files. Sfx2 delivers
some of its own resource files to svx - where they are added to svx resource file!!
*/

#define STR_MYMACROS                    32
#define STR_PRODMACROS                  33


#endif	// _SCRIPTDLG_HRC
