/**************************************************************
 *
 * 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 "Sidebar.hrc"

Resource RID_SIDEBAR_RESOURCE
{
	Image IMAGE_SIDEBAR_PLUS
	{
		ImageBitmap = Bitmap { File = "plus.png" ;} ;
	};

	Image IMAGE_SIDEBAR_PLUS_HC
	{
		ImageBitmap = Bitmap { File = "plus_hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_MINUS
	{
		ImageBitmap = Bitmap { File = "minus.png" ;} ;
	};

	Image IMAGE_SIDEBAR_MINUS_HC
	{
		ImageBitmap = Bitmap { File = "minus_hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_GRIP
	{
		ImageBitmap = Bitmap { File = "grip.png" ;} ;
	};

	Image IMAGE_SIDEBAR_GRIP_HC
	{
		ImageBitmap = Bitmap { File = "grip_hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_MENU
	{
		ImageBitmap = Bitmap { File = "sidebar/open_more.png" ;} ;
	};

	Image IMAGE_SIDEBAR_MENU_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/open_more_hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DETAIL_DIALOG
	{
		ImageBitmap = Bitmap { File = "sidebar/morebutton.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DETAIL_DIALOG_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/morebutton_h.png" ;} ;
	};

	Image IMAGE_SIDEBAR_TOOLBOX_SEPARATOR
	{
		ImageBitmap = Bitmap { File = "separator.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_3D_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-3d-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_3D_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-3d-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_3D_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-3d-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_3D_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-3d-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_ANIMATION_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-animation-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_ANIMATION_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-animation-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_ANIMATION_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-animation-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_ANIMATION_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-animation-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_COLORS_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-colors-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_COLORS_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-colors-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_COLORS_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-colors-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_COLORS_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-colors-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_EYEDROPPER_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-eyedropper-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_EYEDROPPER_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-eyedropper-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_EYEDROPPER_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-eyedropper-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_EYEDROPPER_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-eyedropper-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_GALLERY_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-gallery-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_GALLERY_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-gallery-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_GALLERY_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-gallery-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_GALLERY_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-gallery-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_IMGANIM_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-imganim-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_IMGANIM_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-imganim-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_IMGANIM_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-imganim-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_IMGANIM_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-imganim-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_NAVIGATOR_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-navigator-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_NAVIGATOR_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-navigator-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_NAVIGATOR_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-navigator-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_NAVIGATOR_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-navigator-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_PROPERTIES_DECK_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-property-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_PROPERTIES_DECK_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-property-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_PROPERTIES_DECK_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-property-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_PROPERTIES_DECK_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-property-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_STYLE_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-style-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_STYLE_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-style-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_STYLE_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-style-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_STYLE_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-style-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_TEMPLATE_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-template-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_TEMPLATE_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-template-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_TEMPLATE_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-template-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_TEMPLATE_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-template-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_TRANSITION_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-transition-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_TRANSITION_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-transition-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_TRANSITION_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-transition-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_TRANSITION_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-transition-small-hc.png" ;} ;
	};

	Image IMAGE_SIDEBAR_DECK_FUNCTIONS_LARGE
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-functions-large.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_FUNCTIONS_LARGE_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-functions-large-hc.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_FUNCTIONS_SMALL
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-functions-small.png" ;} ;
	};
	Image IMAGE_SIDEBAR_DECK_FUNCTIONS_SMALL_HC
	{
		ImageBitmap = Bitmap { File = "sidebar/sidebar-functions-small-hc.png" ;} ;
	};

	String STRING_CUSTOMIZATION
	{
		Text [en-US] = "Customization" ;
	};
	String STRING_RESTORE
	{
		Text [en-US] = "Restore Default" ;
	};
};

String SFX_STR_SIDEBAR_MORE_OPTIONS
{
	Text [en-US] = "More Options" ;
};

String SFX_STR_SIDEBAR_CLOSE_DECK
{
	Text [en-US] = "Close Sidebar Deck" ;
};

String SFX_STR_SIDEBAR_ACCESSIBILITY_PANEL_PREFIX
{
	Text [en-US] = "Panel: " ;
};

// ********************************************************************** EOF
