/******************************************\
	Doom Builder Actions Configuration
\******************************************/

// Categories for the Controls preferences
categories
{
	drawing = "Drawing";
	linedefs = "Lines";
	sectors = "Sectors";
	things = "Things";
}

// This just defines which actions there are, what description they have and
// some behaviour options. The Doom Builder core will bind to these actions
// with delegates (function pointers) where you use the BeginAction and
// EndAction attributes.

// Behaviour options:
//
// allowkeys: Allows the user to bind standard keys to this action.
// allowmouse: Allows the user to bind mouse buttons to this action.
// allowscroll: Allows the user to bind the scrollwheel to this action.
// disregardshift: This action will be triggered regardless if Shift is used.
// disregardcontrol: This action will be triggered regardless if Control is used.
// disregardalt: This action will be triggered regardless if Alt is used.
// repeat: BeginAction will be called for automatic key repetition.
//
// allowkeys and allowmouse are true by default, the others are false by default.
//

verticesmode
{
	title = "Vertices Mode";
	category = "modes";
	description = "Switches to vertices editing mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

linedefsmode
{
	title = "Linedefs Mode";
	category = "modes";
	description = "Switches to linedefs editing mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

sectorsmode
{
	title = "Sectors Mode";
	category = "modes";
	description = "Switches to sectors editing mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

thingsmode
{
	title = "Things Mode";
	category = "modes";
	description = "Switches to things editing mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

drawlinesmode
{
	title = "Start Drawing";
	category = "drawing";
	description = "Starts drawing lines. See the Drawing category for actions available during drawing mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

//mxd
drawrectanglemode
{
	title = "Start Rectangle Drawing";
	category = "drawing";
	description = "Starts drawing rectangle. Increase/Decrease Subdivision Level and Increase/Decrease Corners Bevel actions are available in this mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 196676;
}

//mxd
drawellipsemode
{
	title = "Start Ellipse Drawing";
	category = "drawing";
	description = "Starts drawing ellipse. Increase/Decrease Subdivision Level and Increase/Decrease Corners Bevel actions are available in this mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 327748;
}

//mxd
drawcurvemode
{
	title = "Start Curve Drawing";
	category = "drawing";
	description = "Starts drawing a curve. Increase/Decrease Subdivision Level actions are available in this mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 393284; //Ctrl-Alt-D
}

//mxd
drawgridmode
{
	title = "Start Grid Drawing";
	category = "drawing";
	description = "Starts drawing a grid. Increase/Decrease Subdivision Level and Increase/Decrease Corners Bevel actions are available in this mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

//mxd
increasesubdivlevel
{
  title = "Increase Subdivision Level";
	category = "drawing";
	description = "Increases subdivision level in Rectangle and Ellipse Drawing Modes.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
  default = 131066;
}

//mxd
decreasesubdivlevel
{
	title = "Decrease Subdivision Level";
	category = "drawing";
	description = "Decreases subdivision level in Rectangle and Ellipse Drawing Modes.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 131067;
}

//mxd
increasebevel
{
	title = "Increase Corners Bevel";
	category = "drawing";
	description = "Increase corners bevel in Rectangle Drawing Modes. Bevel can be negative.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 196602;
}

//mxd
decreasebevel
{
	title = "Decrease Corners Bevel";
	category = "drawing";
	description = "Decreases corners bevel in Rectangle Drawing Modes. Bevel can be negative.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 196603;
}

//mxd
bridgemode
{
	title = "Bridge Mode";
	category = "drawing";
	description = "Select two lines or two series of lines, then activate this tool to draw a bezier path between them.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
	default = 131138;
}

//mxd
placethings
{
	title = "Place Things";
	category = "edit";
	description = "Creates things of given type and places them inside of selected sectors or on top of selected vertices.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
}

//mxd
selectsimilar
{
	title = "Select Similar Map Elements";
	category = "edit";
	description = "Selects map elements, similar to currently selected ones, based on a set of settings.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
}

//mxd
filterselectedthings
{
	title = "Filter Selected Things";
	category = "things";
	description = "Opens a window, which lets you pick thing type(s) you want to leave selected.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
}

//mxd
classicpaintselect
{
	title = "Paint Selection";
	category = "classic";
	description = "Selects or deselects items by dragging the mouse. Hold shift while dragging to toggle additive selection. Hold Ctrl while dragging to enable subtractive selection";
	allowkeys = true;
	allowmouse = true;
	allowscroll = false;
	disregardshift = true;
	disregardcontrol = true;
	disregardalt = true;
}

drawpoint
{
	title = "Draw Vertex";
	category = "drawing";
	description = "Draws a vertex at the mousecursor position.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	disregardshift = true;
	disregardcontrol = true;
	disregardalt = true;
}

removepoint
{
	title = "Remove Last Vertex";
	category = "drawing";
	description = "Removes the last drawn vertex from the drawing session.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

removefirstpoint
{
	title = "Remove First Vertex";
	category = "drawing";
	description = "Removes the first drawn vertex from the drawing session.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 131080; // Ctrl-Backspace
}

finishdraw
{
	title = "Finish Drawing";
	category = "drawing";
	description = "Finishes the drawing and creates the geometry.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

selectsinglesided
{
	title = "Select Single-sided";
	category = "linedefs";
	description = "This keeps only the single-sided lines in your selection selected.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 65585;
}

selectdoublesided
{
	title = "Select Double-sided";
	category = "linedefs";
	description = "This keeps only the double-sided lines in your selection selected.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 65586;
}

fliplinedefs
{
	title = "Flip Linedefs";
	category = "linedefs";
	description = "This flips the selected linedefs around and keeps sidedefs on the correct side.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

alignlinedefs //mxd
{
	title = "Align Linedefs";
	category = "linedefs";
	description = "This aligns the selected linedefs, so their front (or back) point towards (or away from) the same sector.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

flipsidedefs
{
	title = "Flip Sidedefs";
	category = "linedefs";
	description = "This flips the sidedefs on the selected linedefs around, keeping the line in the same direction.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

applylightfogflag
{
	title = "Apply 'lightfog' flag";
	category = "linedefs";
	description = "This applies 'lightfog' flag to all sidedefs within current selection (UDMF only).";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
}

curvelinesmode
{
	title = "Curve Linedefs";
	category = "linedefs";
	description = "Curves the selected linedefs with a given number of vertices and distance from the line.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

splitlinedefs
{
	title = "Split Linedefs";
	category = "linedefs";
	description = "Splits the selected linedefs in the middle, or splits the highlighted linedef at the mouse position.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

//mxd
alignfloortofront
{
	title = "Align Floor Texture to Front Side";
	category = "linedefs";
	description = "Aligns floor textures to front sides of selected linedefs.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
}

//mxd
alignfloortoback
{
	title = "Align Floor Texture to Back Side";
	category = "linedefs";
	description = "Aligns floor textures to back sides of selected linedefs.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
}

//mxd
alignceilingtofront
{
	title = "Align Ceiling Texture to Front Side";
	category = "linedefs";
	description = "Aligns ceiling textures to front sides of selected linedefs.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
}

//mxd
alignceilingtoback
{
	title = "Align Ceiling Texture to Back Side";
	category = "linedefs";
	description = "Aligns ceiling textures to back sides of selected linedefs.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
}

joinsectors
{
	title = "Join Sectors";
	category = "sectors";
	description = "Joins two or more selected sectors together and keeps all linedefs.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

mergesectors
{
	title = "Merge Sectors";
	category = "sectors";
	description = "Joins two or more selected sectors together and removes the shared linedefs.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

//mxd
thingaligntowall
{
	title = "Align Things to Nearest Linedef";
	category = "things";
	description = "Aligns selected things to the nearest linedef.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 196673; //ctrl-shift-a
}

//mxd
thinglookatcursor
{
	title = "Point Thing to Cursor";
	category = "things";
	description = "Points selected things to cursor position. Hold Ctrl to point away from cursor.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	disregardcontrol = true;
	default = 65612; //Shift-L 
}

//mxd
syncedthingedit
{
	title = "Synchronized Things Editing";
	category = "sectors";
	description = "When enabled, things selection/dragging will be synchronized to sector selection/dragging in Sectors mode. Selected things will be dragged when dragging linedefs in Linedefs mode. Deleting sectors will delete selected things in Sectors mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = false;
	default = 65620; //Shift-T
}

makesectormode
{
	title = "Make Sector Mode";
	category = "modes";
	description = "Switches to the Make Sector editing mode. This mode allows creating and/or fixing split sectors by clicking within a closed region.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

findmode
{
	title = "Find and Replace Mode";
	category = "modes";
	description = "Finds vertices, linedefs, sectors or things with a specific property, selects them and optionally replaces them with a given setting.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

editselectionmode
{
	title = "Edit Selection Mode";
	category = "modes";
	description = "Allows rotating, resizing and moving a selection.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

gradientbrightness
{
	title = "Make Brightness Gradient";
	category = "sectors";
	description = "Creates a brightness gradient over all selected sectors from the first to the last selected sector.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

gradientfloors
{
	title = "Make Floors Gradient";
	category = "sectors";
	description = "Creates a floor heights gradient over all selected sectors from the first to the last selected sector.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

gradientceilings
{
	title = "Make Ceilings Gradient";
	category = "sectors";
	description = "Creates a ceiling heights gradient over all selected sectors from the first to the last selected sector.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

makedoor
{
	title = "Make Door";
	category = "sectors";
	description = "Creates doors from the highlighted or selected sectors.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	registertoast = true;
}

lowerfloor8
{
	title = "Lower Floor by 8 mp";
	category = "sectors";
	description = "Lowers the highlighted or selected floor heights by 8 mp.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
  default = 458747;
}

raisefloor8
{
	title = "Raise Floor by 8 mp";
	category = "sectors";
	description = "Raises the highlighted or selected floor heights by 8 mp.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
  default = 458746;
}

lowerceiling8
{
	title = "Lower Ceiling by 8 mp";
	category = "sectors";
	description = "Lowers the highlighted or selected ceiling heights by 8 mp.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true; 
  default = 393211;
}

raiseceiling8
{
	title = "Raise Ceiling by 8 mp";
	category = "sectors";
	description = "Raises the highlighted or selected ceiling heights by 8 mp.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
  default = 393210;
}

errorcheckmode
{
	title = "Map Analysis Mode";
	category = "modes";
	description = "Checks your map for errors and mistakes and reports the results.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

lowersector8
{
	title = "Lower Floor/Ceiling/Thing by 8 mp";
	category = "visual";
	description = "Lowers the targeted or selected floors/ceilings by 8 mp. This also lowers selected or targeted things.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

raisesector8
{
	title = "Raise Floor/Ceiling/Thing by 8 mp";
	category = "visual";
	description = "Raises the targeted or selected floors/ceilings by 8 mp. This also raises selected or targeted things.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

lowersector1
{
	title = "Lower Floor/Ceiling/Thing by 1 mp";
	category = "visual";
	description = "Lowers the targeted or selected floors/ceilings by 1 mp. This also lowers selected or targeted things.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

raisesector1
{
	title = "Raise Floor/Ceiling/Thing by 1 mp";
	category = "visual";
	description = "Raises the targeted or selected floors/ceilings by 1 mp. This also raises selected or targeted things.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

lowersector128
{
	title = "Lower Floor/Ceiling/Thing by 128 mp";
	category = "visual";
	description = "Lowers the targeted or selected floors/ceilings by 128 mp. This also lowers selected or targeted things.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

raisesector128
{
	title = "Raise Floor/Ceiling/Thing by 128 mp";
	category = "visual";
	description = "Raises the targeted or selected floors/ceilings by 128 mp. This also raises selected or targeted things.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

lowermapelementbygridsize
{
	title = "Lower Floor/Ceiling/Thing by grid size";
	category = "visual";
	description = "Lowers the targeted or selected floors/ceilings by the current grid size. This also lowers selected or targeted things.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

raisemapelementbygridsize
{
	title = "Raise Floor/Ceiling/Thing by grid size";
	category = "visual";
	description = "Raises the targeted or selected floors/ceilings by the current grid size. This also raises selected or targeted things.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

//mxd
lowersectortonearest
{
	title = "Lower Floor/Ceiling/Thing to adjacent Sector/Thing";
	category = "visual";
	description = "Lowers the targeted or selected floors/ceilings to match the height of adjacent sector. Hold Ctrl to lower to lowest surface in selection. Also drops targeted or selected things to the nearest floor or ceiling or on top of another thing.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	disregardcontrol = true;
	default = 34; //PgDn
}

//mxd
raisesectortonearest
{
	title = "Raise Floor/Ceiling/Thing to adjacent Sector/Thing";
	category = "visual";
	description = "Raises the targeted or selected floors/ceilings to match the height of adjacent sector. Hold Ctrl to raise to highest surface in selection. Also raises targeted or selected things to the nearest ceiling or floor or puts them on top of another thing.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	disregardcontrol = true;
	default = 33; //PgUp
}

showvisualthings
{
	title = "Show Things";
	category = "visual";
	description = "Cycles through the different ways the things are shown in Visual Mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	registertoast = true;
}

raisebrightness8
{
	title = "Increase Brightness by 8";
	category = "edit";
	description = "Increases the targeted or selected sector brightness level by 8.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	disregardalt = true;
}

lowerbrightness8
{
	title = "Decrease Brightness by 8";
	category = "edit";
	description = "Decreases the targeted or selected sector brightness level by 8.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	disregardalt = true;
}

movetextureleft
{
	title = "Move Texture Left by 1";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures to the left by 1 pixel.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

movetextureright
{
	title = "Move Texture Right by 1";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures to the right by 1 pixel.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

movetextureup
{
	title = "Move Texture Up by 1";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures up by 1 pixel.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

movetexturedown
{
	title = "Move Texture Down by 1";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures down by 1 pixel.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

movetextureleft8
{
	title = "Move Texture Left by 8";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures to the left by 8 pixels.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 65573;
}

movetextureright8
{
	title = "Move Texture Right by 8";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures to the right by 8 pixels.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 65575;
}

movetextureup8
{
	title = "Move Texture Up by 8";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures up by 8 pixels.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 65574;
}

movetexturedown8
{
	title = "Move Texture Down by 8";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures down by 8 pixels.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 65576;
}

//mxd
movetextureleftgs
{
	title = "Move Texture Left by Grid Size";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures to the left by current grid size.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 131109;
}

//mxd
movetexturerightgs
{
	title = "Move Texture Right by Grid Size";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures to the right by current grid size.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 131111;
}

//mxd
movetextureupgs
{
	title = "Move Texture Up by Grid Size";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures up by current grid size.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 131110;
}

//mxd
movetexturedowngs
{
	title = "Move Texture Down by Grid Size";
	category = "visual";
	description = "Moves the offset of the targeted or selected textures down by current grid size.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 131112;
}

//mxd
scaleup
{
	title = "Increase Scale";
	category = "visual";
	description = "Increases the scale of targeted or selected textures or things by 0.1 (UDMF only).";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 105; // Num 9
}

//mxd
scaledown
{
	title = "Decrease Scale";
	category = "visual";
	description = "Decreases the scale of targeted or selected textures or things by 0.1 (UDMF only).";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 103; // Num 7
}

//mxd
scaleupx
{
	title = "Increase Horizontal Scale";
	category = "visual";
	description = "Increases horizontal scale of targeted or selected textures or things by 0.1 (UDMF only).";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 102;
}

//mxd
scaledownx
{
	title = "Decrease Horizontal Scale";
	category = "visual";
	description = "Decreases horizontal scale of targeted or selected textures or things by 0.1 (UDMF only).";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 100;
}

//mxd
scaleupy
{
	title = "Increase Vertical Scale";
	category = "visual";
	description = "Increases vertical scale of targeted or selected textures or things by 0.1 (UDMF only).";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 104;
}

//mxd
scaledowny
{
	title = "Decrease Vertical Scale";
	category = "visual";
	description = "Decreases vertical scale of targeted or selected textures or things by 0.1 (UDMF only).";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
	default = 101;
}

//sphere
scalemultiply
{
	title = "Multiply Scale by 2";
	category = "visual";
	description = "Multiplies scale of targeted or selected textures or things by 2 (UDMF only).";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

//sphere
scaledivide
{
	title = "Divide Scale by 2";
	category = "visual";
	description = "Divides scale of targeted or selected textures or things by 2 (UDMF only).";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

//sphere
invertscalex
{
	title = "Invert Horizontal Scale";
	category = "visual";
	description = "Inverts/flips horizontal scale of targeted or selected textures (UDMF only).";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

//sphere
invertscaley
{
	title = "Invert Vertical Scale";
	category = "visual";
	description = "Inverts/flips vertical scale of targeted or selected textures (UDMF only).";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

textureselect
{
	title = "Select Texture";
	category = "visual";
	description = "Opens the texture browser to select a texture for the targeted or selected walls, floors or ceilings.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

texturecopy
{
	title = "Copy Texture";
	category = "visual";
	description = "Copies the targeted texture or flat for pasting.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

texturepaste
{
	title = "Paste Texture";
	category = "visual";
	description = "Pastes the copied texture onto the targeted or selected walls, floors or ceilings.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

//mxd
visualautoalign
{
	title = "Auto-align Textures X and Y";
	category = "visual";
	description = "Automatically aligns the neighbouring textures X and Y offsets until another texture is encountered.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 131137; //Ctrl-A
}

visualautoalignx
{
	title = "Auto-align Textures X";
	category = "visual";
	description = "Automatically aligns the neighbouring textures X offsets until another texture is encountered.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

visualautoaligny
{
	title = "Auto-align Textures Y";
	category = "visual";
	description = "Automatically aligns the neighbouring textures Y offsets until another texture is encountered. The Y alignment only takes the ceiling height for each sidedef into account.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

//mxd
visualautoaligntoselection
{
	title = "Auto-align Textures to Selection (X and Y)";
	category = "visual";
	description = "Automatically aligns the neighbouring textures X and Y offsets to selected sidedefs until another texture is encountered.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

//mxd
visualautoaligntoselectionx
{
	title = "Auto-align Textures to Selection (X)";
	category = "visual";
	description = "Automatically aligns the neighbouring textures X offsets to selected sidedefs until another texture is encountered.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

//mxd
visualautoaligntoselectiony
{
	title = "Auto-align Textures to Selection (Y)";
	category = "visual";
	description = "Automatically aligns the neighbouring textures Y offsets to selected sidedefs until another texture is encountered.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

//mxd
visualfittextures
{
	title = "Fit Textures";
	category = "visual";
	description = "Scales textures to match the size of selected surfaces.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 393281; //Ctrl-Alt-A
}

toggleupperunpegged
{
	title = "Toggle Upper Unpegged";
	category = "visual";
	description = "Toggles the Upper Unpegged setting on the selected or targeted linedef.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

togglelowerunpegged
{
	title = "Toggle Lower Unpegged";
	category = "visual";
	description = "Toggles the Lower Unpegged setting on the selected or targeted linedef.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

togglegravity
{
	title = "Toggle Gravity";
	category = "visual";
	description = "Toggles the use of gravity while moving around in visual mode. Turn gravity off to fly around, turn gravity on to walk on the sector floors.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	registertoast = true;
}

resettexture
{
	title = "Reset Texture Offsets";
	category = "visual";
	description = "Resets the texture offsets of targeted or selected sidedefs (all map formats) and floors/ceilings (UDMF only). Also resets scale of targeted or selected things (UDMF only)";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

//mxd
resettextureudmf
{
	title = "Reset Local Texture Offsets (UDMF)";
	category = "visual";
	description = "Resets upper/middle/lower texture offsets, scale and brightness of targeted or selected sidedefs. Resets texture offsets, rotation, scale and brightness of targeted or selected floors/ceilings. Resets scale, pitch and roll of targeted or selected things.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 196690;	//Ctrl-Shift-R
}

texturecopyoffsets
{
	title = "Copy Offsets";
	category = "visual";
	description = "Copies the targeted texture offsets for pasting.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

texturepasteoffsets
{
	title = "Paste Offsets";
	category = "visual";
	description = "Pastes the copied texture offsets onto the targeted or selected walls.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

copyproperties
{
	title = "Copy Properties";
	category = "visual";
	description = "Copies the targeted object properties for pasting.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

pasteproperties
{
	title = "Paste Properties";
	category = "visual";
	description = "Pastes the copied properties onto the targeted or selected object.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 393302;	// CTRL+ALT+V
}

//mxd
pastepropertieswithoptions
{
	title = "Paste Properties Special";
	category = "visual";
	description = "Pastes the copied properties onto the highlighted or selected objects allowing you to choose the properties to paste.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 196694;	// CTRL+SHIFT+V
}

//mxd
toggleslope
{
	title = "Toggle Slope";
	category = "visual";
	description = "Toggles Slope for selected surfaces. Select or highlight upper/lower walls to add a slope. Select or highlight floors or ceilings to remove slope.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 262227; //Alt-S
}

//mxd
alphabasedtexturehighlighting
{
	title = "Toggle Alpha-based Texture Highlighting";
	category = "visual";
	description = "Toggles Alpha-based Texture Highlighting. When enabled, 3d floor textures and middle textures on double-sided lines will be highlighted only when the crosshair points at a non-transparent pixel.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;	
}

placevisualstart
{
	title = "Place Visual Mode Camera";
	category = "classic";
	description = "Places a new, or moves the existing, Visual Mode start thing to the mouse position. This thing will keep track where you left Visual Mode so that you return to Visual Mode in the same location.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

classiccopyproperties
{
	title = "Copy Properties";
	category = "classic";
	description = "Copies the properties of the highlighted or selected object for pasting.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 196675;	// CTRL+SHIFT+C
}

classicpasteproperties
{
	title = "Paste Properties";
	category = "classic";
	description = "Pastes the copied properties onto the highlighted or selected objects.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 393302;	// CTRL+ALT+V
}

//mxd
classicpastepropertieswithoptions
{
	title = "Paste Properties Special";
	category = "classic";
	description = "Pastes the copied properties onto the highlighted or selected objects allowing you to choose the properties to paste.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 196694;	// CTRL+SHIFT+V
}

floodfilltextures
{
	title = "Paste Texture Flood-Fill";
	category = "visual";
	description = "This allows you to flood-fill all adjacent textures or flats that are identical to the original with the copied texture.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	default = 65540;
}

flipselectionv
{
	title = "Flip Selection Vertically";
	category = "edit";
	description = "Flips the selection in Edit Selection mode vertically.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

flipselectionh
{
	title = "Flip Selection Horizontally";
	category = "edit";
	description = "Flips the selection in Edit Selection mode horizontally.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

moveselectionup
{
	title = "Move Selection Up by Grid Size";
	category = "edit";
	description = "Moves the selection in Edit Selection mode up by the current grid size.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

moveselectiondown
{
	title = "Move Selection Down by Grid Size";
	category = "edit";
	description = "Moves the selection in Edit Selection mode down by the current grid size.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

moveselectionleft
{
	title = "Move Selection Left by Grid Size";
	category = "edit";
	description = "Moves the selection in Edit Selection mode left by the current grid size.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

moveselectionright
{
	title = "Move Selection Right by Grid Size";
	category = "edit";
	description = "Moves the selection in Edit Selection mode right by the current grid size.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	repeat = true;
}

//mxd
rotateclockwise
{
	title = "Rotate Clockwise";
	category = "edit";
	description = "Rotates selected or highlighted things clockwise. Also rotates floor/ceiling textures in UDMF map format, and rotates the selection in Edit Selection mode.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = true;
	repeat = true;
	default = 262138; // Ctrl + Shift + ScrollUp
}

//mxd
rotatecounterclockwise
{
	title = "Rotate Counterclockwise";
	category = "edit";
	description = "Rotates selected or highlighted things counterclockwise. Also rotates floor/ceiling textures in UDMF map format, and rotates the selection in Edit Selection mode.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = true;
	repeat = true;
	default = 262139; // Ctrl + Shift + ScrollDown
}

//mxd
pitchclockwise
{
	title = "Change Pitch Clockwise";
	category = "visual";
	description = "Increases pitch of selected or highlighted things (UDMF only).";
	allowkeys = true;
	allowmouse = false;
	allowscroll = true;
	repeat = true;
	default = 458746; // Ctrl + Alt + ScrollUp
}

//mxd
pitchcounterclockwise
{
	title = "Change Pitch Counterclockwise";
	category = "visual";
	description = "Decreases pitch of selected or highlighted things (UDMF only).";
	allowkeys = true;
	allowmouse = false;
	allowscroll = true;
	repeat = true;
	default = 458747; // Ctrl + Alt + ScrollDown
}

//mxd
rollclockwise
{
	title = "Change Roll Clockwise";
	category = "visual";
	description = "Increases roll of selected or highlighted things (UDMF only).";
	allowkeys = true;
	allowmouse = false;
	allowscroll = true;
	repeat = true;
	default = 327674; // Alt + ScrollUp
}

//mxd
rollcounterclockwise
{
	title = "Change Roll Counterclockwise";
	category = "visual";
	description = "Decreases roll of selected or highlighted things (UDMF only).";
	allowkeys = true;
	allowmouse = false;
	allowscroll = true;
	repeat = true;
	default = 327675; // Alt + ScrollDown
}

//mxd
lookthroughthing
{
	title = "Look Through Selection";
	category = "visual";
	description = "Places visual camera at the same position as selected thing and rotates it to match thing's angle.";
	allowkeys = true;
	allowmouse = false;
	allowscroll = true;
	default = 89; //Y
}

//mxd
matchbrightness
{
	title = "Match Brightness";
	category = "visual";
	description = "Makes the brightness of selected surfaces the same as the brightness of highlighted surface (UDMF only).";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
  default = 131149; //Ctrl-M
}

//mxd. moved from GZDoomEditing plugin
gzdbvisualmode
{
	title = "Visual Mode";
	category = "modes";
	description = "Switches to the visual editing mode. Hold Shift key to invert 'Synhcronize selection between Visual and Classic modes' setting. Hold Control key to disable position synchronization when 'Synchronize camera position between 2D and 3D modes' Preferences option is enabled.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
	disregardshift = true;
	disregardcontrol = true;
	default = 81; //Q
}

//mxd.
exporttoobj
{
	title = "Export to Wavefront .obj";
	category = "tools";
	description = "Exports selected sectors (or the whole map if no sectors selected) to Wavefront .obj";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
}

exporttoimage
{
	title = "Export to image";
	category = "tools";
	description = "Exports selected sectors (or the whole map if no sectors selected) to an image";
	allowkeys = true;
	allowmouse = false;
	allowscroll = false;
}

flooralignmode
{
	title = "Floor Align Mode";
	category = "modes";
	description = "Switches to the (G)ZDoom Floor Align mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

ceilingalignmode
{
	title = "Ceiling Align Mode";
	category = "modes";
	description = "Switches to the (G)ZDoom Ceiling Align mode.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = true;
}

// biwa
visualpaintselect
{
	title = "Paint Selection";
	category = "visual";
	description = "Selects or deselects items by dragging the mouse. Hold shift while dragging to toggle additive selection. Hold Ctrl while dragging to enable subtractive selection";
	allowkeys = true;
	allowmouse = true;
	allowscroll = false;
	disregardshift = true;
	disregardcontrol = true;
	disregardalt = true;
}

togglevisualslopepicking
{
	title = "Toggle Visual Sidedef Slope Picking";
	category = "visual";
	description = "Toggles picking visual sidedef slope handles.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = false;
}

togglevisualvertexslopepicking
{
	title = "Toggle Visual Vertex Slope Picking";
	category = "visual";
	description = "Toggles picking visual vertex slope handles.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = false;
}

togglevisualvertexslopeadjacentselection
{
	title = "Toggle Adjacent Visual Vertex Slope Selection";
	category = "visual";
	description = "Toggles selection of adjacent visual vertex slopes, so that selecting one visual vertex slope handle will select all adjacent visual vertex slope handles.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = false;
}

resetslope
{
        title = "Reset Plane Slope";
        category = "visual";
        description = "Resets UDMF slope applied to a floor/ceiling.";
        allowkeys = true;
        allowmouse = true;
        allowscroll = false;
}

slopebetweenhandles
{
	title = "Slope Between Handles";
	category = "visual";
	description = "Slopes the selected floors and ceilings between the selected slope handles.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = false;
}

archbetweenhandles
{
	title = "Arch Between Slope Handles";
	category = "visual";
	Description = "Arches the selected floors and ceilings between the selected slope handles.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = false;
}

applycamerarotationtothings
{
	title = "Apply Camera Rotation To Things";
	category = "visual";
	description = "Applies the Visual Mode's current camera pitch and yaw to the selected things.";
	allowkeys =  true;
	allowmouse = true;
	allowscroll = false;
}

changemapelementindex
{
	title = "Change Map Element Index";
	category = "linedefs";
	description = "Changes the index of the highlighted or selected vertex, linedef, sector, or thing. Only works on a single map element. It will shift all indices between the old and new index.";
	allowkeys = true;
	allowmouse = true;
	allowscroll = false;
}