#pragma once

enum lcCommandId
{
	LC_FILE_NEW,
	LC_FILE_OPEN,
	LC_FILE_MERGE,
	LC_FILE_SAVE,
	LC_FILE_SAVEAS,
	LC_FILE_SAVE_IMAGE,
	LC_FILE_IMPORT_LDD,
	LC_FILE_IMPORT_INVENTORY,
	LC_FILE_EXPORT_3DS,
	LC_FILE_EXPORT_COLLADA,
	LC_FILE_EXPORT_HTML,
	LC_FILE_EXPORT_BRICKLINK,
	LC_FILE_EXPORT_CSV,
	LC_FILE_EXPORT_POVRAY,
	LC_FILE_EXPORT_WAVEFRONT,
	LC_FILE_RENDER_POVRAY,
	LC_FILE_RENDER_BLENDER,
	LC_FILE_RENDER_OPEN_IN_BLENDER,
	LC_FILE_INSTRUCTIONS,
	LC_FILE_PRINT,
	LC_FILE_PRINT_PREVIEW,
	LC_FILE_RECENT_FIRST,
	LC_FILE_RECENT1 = LC_FILE_RECENT_FIRST,
	LC_FILE_RECENT2,
	LC_FILE_RECENT3,
	LC_FILE_RECENT4,
	LC_FILE_RECENT_LAST = LC_FILE_RECENT4,
	LC_FILE_EXIT,
	LC_EDIT_UNDO,
	LC_EDIT_REDO,
	LC_EDIT_CUT,
	LC_EDIT_COPY,
	LC_EDIT_PASTE,
	LC_EDIT_PASTE_STEPS,
	LC_EDIT_FIND,
	LC_EDIT_FIND_NEXT,
	LC_EDIT_FIND_PREVIOUS,
	LC_EDIT_FIND_ALL,
	LC_EDIT_REPLACE,
	LC_EDIT_REPLACE_NEXT,
	LC_EDIT_REPLACE_ALL,
	LC_EDIT_SELECT_ALL,
	LC_EDIT_SELECT_NONE,
	LC_EDIT_SELECT_INVERT,
	LC_EDIT_SELECT_BY_NAME,
	LC_EDIT_SELECTION_MODE_FIRST,
	LC_EDIT_SELECTION_SINGLE = LC_EDIT_SELECTION_MODE_FIRST,
	LC_EDIT_SELECTION_PIECE,
	LC_EDIT_SELECTION_COLOR,
	LC_EDIT_SELECTION_PIECE_COLOR,
	LC_EDIT_SELECTION_MODE_LAST = LC_EDIT_SELECTION_PIECE_COLOR,
	LC_EDIT_TRANSFORM_RELATIVE,
	LC_EDIT_TRANSFORM_ABSOLUTE,
	LC_EDIT_TRANSFORM_TOGGLE_RELATIVE,
	LC_EDIT_TRANSFORM_SEPARATELY,
	LC_EDIT_TRANSFORM_TOGETHER,
	LC_EDIT_TRANSFORM_TOGGLE_SEPARATE,
	LC_EDIT_SNAP_MOVE_TOGGLE,
	LC_EDIT_SNAP_MOVE_XY0,
	LC_EDIT_SNAP_MOVE_XY1,
	LC_EDIT_SNAP_MOVE_XY2,
	LC_EDIT_SNAP_MOVE_XY3,
	LC_EDIT_SNAP_MOVE_XY4,
	LC_EDIT_SNAP_MOVE_XY5,
	LC_EDIT_SNAP_MOVE_XY6,
	LC_EDIT_SNAP_MOVE_XY7,
	LC_EDIT_SNAP_MOVE_XY8,
	LC_EDIT_SNAP_MOVE_XY9,
	LC_EDIT_SNAP_MOVE_Z0,
	LC_EDIT_SNAP_MOVE_Z1,
	LC_EDIT_SNAP_MOVE_Z2,
	LC_EDIT_SNAP_MOVE_Z3,
	LC_EDIT_SNAP_MOVE_Z4,
	LC_EDIT_SNAP_MOVE_Z5,
	LC_EDIT_SNAP_MOVE_Z6,
	LC_EDIT_SNAP_MOVE_Z7,
	LC_EDIT_SNAP_MOVE_Z8,
	LC_EDIT_SNAP_MOVE_Z9,
	LC_EDIT_SNAP_ANGLE_TOGGLE,
	LC_EDIT_SNAP_ANGLE0,
	LC_EDIT_SNAP_ANGLE1,
	LC_EDIT_SNAP_ANGLE2,
	LC_EDIT_SNAP_ANGLE3,
	LC_EDIT_SNAP_ANGLE4,
	LC_EDIT_SNAP_ANGLE5,
	LC_EDIT_SNAP_ANGLE6,
	LC_EDIT_SNAP_ANGLE7,
	LC_EDIT_SNAP_ANGLE8,
	LC_EDIT_SNAP_ANGLE9,
	LC_EDIT_TRANSFORM,
	LC_EDIT_TRANSFORM_ABSOLUTE_TRANSLATION,
	LC_EDIT_TRANSFORM_RELATIVE_TRANSLATION,
	LC_EDIT_TRANSFORM_ABSOLUTE_ROTATION,
	LC_EDIT_TRANSFORM_RELATIVE_ROTATION,
	LC_EDIT_ACTION_FIRST,
	LC_EDIT_ACTION_INSERT = LC_EDIT_ACTION_FIRST,
	LC_EDIT_ACTION_POINT_LIGHT,
	LC_EDIT_ACTION_SPOTLIGHT,
	LC_EDIT_ACTION_DIRECTIONAL_LIGHT,
	LC_EDIT_ACTION_AREA_LIGHT,
	LC_EDIT_ACTION_CAMERA,
	LC_EDIT_ACTION_SELECT,
	LC_EDIT_ACTION_MOVE,
	LC_EDIT_ACTION_ROTATE,
	LC_EDIT_ACTION_DELETE,
	LC_EDIT_ACTION_PAINT,
	LC_EDIT_ACTION_COLOR_PICKER,
	LC_EDIT_ACTION_ZOOM,
	LC_EDIT_ACTION_PAN,
	LC_EDIT_ACTION_ROTATE_VIEW,
	LC_EDIT_ACTION_ROLL,
	LC_EDIT_ACTION_ZOOM_REGION,
	LC_EDIT_ACTION_LAST = LC_EDIT_ACTION_ZOOM_REGION,
	LC_EDIT_CANCEL,
	LC_VIEW_PREFERENCES,
	LC_VIEW_ZOOM_IN,
	LC_VIEW_ZOOM_OUT,
	LC_VIEW_ZOOM_EXTENTS,
	LC_VIEW_LOOK_AT,
	LC_VIEW_MOVE_FORWARD,
	LC_VIEW_MOVE_BACKWARD,
	LC_VIEW_MOVE_LEFT,
	LC_VIEW_MOVE_RIGHT,
	LC_VIEW_MOVE_UP,
	LC_VIEW_MOVE_DOWN,
	LC_VIEW_VIEWPOINT_FRONT,
	LC_VIEW_VIEWPOINT_BACK,
	LC_VIEW_VIEWPOINT_TOP,
	LC_VIEW_VIEWPOINT_BOTTOM,
	LC_VIEW_VIEWPOINT_LEFT,
	LC_VIEW_VIEWPOINT_RIGHT,
	LC_VIEW_VIEWPOINT_HOME,
	LC_VIEW_CAMERA_NONE,
	LC_VIEW_CAMERA_FIRST,
	LC_VIEW_CAMERA1 = LC_VIEW_CAMERA_FIRST,
	LC_VIEW_CAMERA2,
	LC_VIEW_CAMERA3,
	LC_VIEW_CAMERA4,
	LC_VIEW_CAMERA5,
	LC_VIEW_CAMERA6,
	LC_VIEW_CAMERA7,
	LC_VIEW_CAMERA8,
	LC_VIEW_CAMERA9,
	LC_VIEW_CAMERA10,
	LC_VIEW_CAMERA11,
	LC_VIEW_CAMERA12,
	LC_VIEW_CAMERA13,
	LC_VIEW_CAMERA14,
	LC_VIEW_CAMERA15,
	LC_VIEW_CAMERA16,
	LC_VIEW_CAMERA_LAST = LC_VIEW_CAMERA16,
	LC_VIEW_TIME_FIRST,
	LC_VIEW_TIME_PREVIOUS,
	LC_VIEW_TIME_NEXT,
	LC_VIEW_TIME_LAST,
	LC_VIEW_TIME_INSERT_BEFORE,
	LC_VIEW_TIME_INSERT_AFTER,
	LC_VIEW_TIME_DELETE,
	LC_VIEW_TIME_ADD_KEYS,
	LC_VIEW_SPLIT_HORIZONTAL,
	LC_VIEW_SPLIT_VERTICAL,
	LC_VIEW_REMOVE_VIEW,
	LC_VIEW_RESET_VIEWS,
	LC_VIEW_TOOLBAR_STANDARD,
	LC_VIEW_TOOLBAR_FIRST = LC_VIEW_TOOLBAR_STANDARD,
	LC_VIEW_TOOLBAR_TOOLS,
	LC_VIEW_TOOLBAR_TIME,
	LC_VIEW_TOOLBAR_PARTS,
	LC_VIEW_TOOLBAR_COLORS,
	LC_VIEW_TOOLBAR_PROPERTIES,
	LC_VIEW_TOOLBAR_TIMELINE,
	LC_VIEW_TOOLBAR_PREVIEW,
	LC_VIEW_TOOLBAR_LAST = LC_VIEW_TOOLBAR_PREVIEW,
	LC_VIEW_FULLSCREEN,
	LC_VIEW_CLOSE_CURRENT_TAB,
	LC_VIEW_SHADING_FIRST,
	LC_VIEW_SHADING_WIREFRAME = LC_VIEW_SHADING_FIRST,
	LC_VIEW_SHADING_FLAT,
	LC_VIEW_SHADING_DEFAULT_LIGHTS,
	LC_VIEW_SHADING_LAST = LC_VIEW_SHADING_DEFAULT_LIGHTS,
	LC_VIEW_PROJECTION_FIRST,
	LC_VIEW_PROJECTION_PERSPECTIVE = LC_VIEW_PROJECTION_FIRST,
	LC_VIEW_PROJECTION_ORTHO,
	LC_VIEW_PROJECTION_LAST = LC_VIEW_PROJECTION_ORTHO,
	LC_VIEW_TOGGLE_VIEW_SPHERE,
	LC_VIEW_TOGGLE_AXIS_ICON,
	LC_VIEW_TOGGLE_GRID,
	LC_VIEW_FADE_PREVIOUS_STEPS,
	LC_PIECE_INSERT,
	LC_PIECE_DELETE,
	LC_PIECE_DUPLICATE,
	LC_PIECE_PAINT_SELECTED,
	LC_PIECE_RESET_PIVOT_POINT,
	LC_PIECE_REMOVE_KEY_FRAMES,
	LC_PIECE_CONTROL_POINT_INSERT,
	LC_PIECE_CONTROL_POINT_REMOVE,
	LC_PIECE_TRAIN_TRACK_FOCUS_NEXT,
	LC_PIECE_TRAIN_TRACK_FOCUS_PREVIOUS,
	LC_PIECE_TRAIN_TRACK_ROTATE,
	LC_PIECE_MOVE_PLUSX,
	LC_PIECE_MOVE_MINUSX,
	LC_PIECE_MOVE_PLUSY,
	LC_PIECE_MOVE_MINUSY,
	LC_PIECE_MOVE_PLUSZ,
	LC_PIECE_MOVE_MINUSZ,
	LC_PIECE_ROTATE_PLUSX,
	LC_PIECE_ROTATE_MINUSX,
	LC_PIECE_ROTATE_PLUSY,
	LC_PIECE_ROTATE_MINUSY,
	LC_PIECE_ROTATE_PLUSZ,
	LC_PIECE_ROTATE_MINUSZ,
	LC_PIECE_MINIFIG_WIZARD,
	LC_PIECE_ARRAY,
	LC_PIECE_VIEW_SELECTED_MODEL,
	LC_PIECE_MOVE_SELECTION_TO_MODEL,
	LC_PIECE_INLINE_SELECTED_MODELS,
	LC_PIECE_EDIT_SELECTED_SUBMODEL,
	LC_PIECE_EDIT_END_SUBMODEL,
	LC_PIECE_GROUP,
	LC_PIECE_UNGROUP,
	LC_PIECE_GROUP_ADD,
	LC_PIECE_GROUP_REMOVE,
	LC_PIECE_GROUP_EDIT,
	LC_PIECE_HIDE_SELECTED,
	LC_PIECE_HIDE_UNSELECTED,
	LC_PIECE_UNHIDE_SELECTED,
	LC_PIECE_UNHIDE_ALL,
	LC_PIECE_SHOW_EARLIER,
	LC_PIECE_SHOW_LATER,
	LC_MODEL_NEW,
	LC_MODEL_PROPERTIES,
	LC_MODEL_LIST,
	LC_MODEL_FIRST,
	LC_MODEL_01 = LC_MODEL_FIRST,
	LC_MODEL_02,
	LC_MODEL_03,
	LC_MODEL_04,
	LC_MODEL_05,
	LC_MODEL_06,
	LC_MODEL_07,
	LC_MODEL_08,
	LC_MODEL_09,
	LC_MODEL_10,
	LC_MODEL_11,
	LC_MODEL_12,
	LC_MODEL_13,
	LC_MODEL_14,
	LC_MODEL_15,
	LC_MODEL_16,
	LC_MODEL_17,
	LC_MODEL_18,
	LC_MODEL_19,
	LC_MODEL_20,
	LC_MODEL_21,
	LC_MODEL_22,
	LC_MODEL_23,
	LC_MODEL_24,
	LC_MODEL_25,
	LC_MODEL_26,
	LC_MODEL_27,
	LC_MODEL_28,
	LC_MODEL_29,
	LC_MODEL_30,
	LC_MODEL_31,
	LC_MODEL_32,
	LC_MODEL_33,
	LC_MODEL_34,
	LC_MODEL_35,
	LC_MODEL_36,
	LC_MODEL_37,
	LC_MODEL_38,
	LC_MODEL_39,
	LC_MODEL_40,
	LC_MODEL_LAST = LC_MODEL_40,
	LC_HELP_HOMEPAGE,
	LC_HELP_BUG_REPORT,
	LC_HELP_UPDATES,
	LC_HELP_ABOUT,
	LC_TIMELINE_INSERT_BEFORE,
	LC_TIMELINE_INSERT_AFTER,
	LC_TIMELINE_DELETE,
	LC_TIMELINE_MOVE_SELECTION,
	LC_TIMELINE_MOVE_SELECTION_BEFORE,
	LC_TIMELINE_MOVE_SELECTION_AFTER,
	LC_TIMELINE_SET_CURRENT,
	LC_NUM_COMMANDS
};

struct lcCommand
{
	const char* ID;
	const char* MenuName;
	const char* StatusText;
	const char* DefaultShortcut;
};

extern const lcCommand gCommands[];

enum class lcTool
{
	Insert,
	PointLight,
	SpotLight,
	DirectionalLight,
	AreaLight,
	Camera,
	Select,
	Move,
	Rotate,
	Eraser,
	Paint,
	ColorPicker,
	Zoom,
	Pan,
	RotateView,
	Roll,
	ZoomRegion,
	Count
};

extern const char* gToolNames[];

