<sect1 id="edit-level-dialog">
<title id="edit-level-dialog.title">The level edit window</title>

<para>
In this window you can edit a level.
Just select the object you want to add (Wall, Empty field, Keeper, Gem, Goal) and click
in the map to place it at the desired place. You can also 'draw lines' by holding
the &LMB; down and moving the mouse.
There are some (sensible) restrictions in what you can place where:

</para><itemizedlist mark="opencircle">

<listitem><para>
You cannot place an empty field, a wall, a goal or a gem on the field of the keeper.
You first have to move the keeper away.
</para></listitem>

<listitem><para>
You cannot move the keeper to a gem or wall field.
</para></listitem>

<listitem><para>
You put a gem or a goal on a wall field. You first have to place an empty field at the
desired position.
</para></listitem>

</itemizedlist>

<para>
The meaning of the other menu entries is:
</para>

<variablelist>


<varlistentry id="edit-level-properties"><term>Change properties ...</term><listitem><para>

Lets you enter the properties (author, homepage, name, copyright) of the level.

</para></listitem></varlistentry>


<varlistentry id="edit-level-size"><term>Change size ...</term><listitem><para>

Lets you change the the size (width and height) of the level.
If you increase the size, the new fields will be empty.
If you decrease the size and the keeper will fall outside the map, it is forced to be
in the map.

</para></listitem></varlistentry>


<varlistentry id="edit-level-adjust"><term>Adjust size</term><listitem><para>

Adjusts the size of the map, so that every nonempty field will fit in the map and
the size is as small as possible.

</para></listitem></varlistentry>


<varlistentry id="edit-level-rotate-left"><term>Rotate left</term><listitem><para>

Rotates the map left (counterclockwise) by 90 degrees.

</para></listitem></varlistentry>


<varlistentry id="edit-level-rotate-right"><term>Rotate right</term><listitem><para>

Rotates the map right (clockwise) by 90 degrees.

</para></listitem></varlistentry>


<varlistentry id="edit-level-hmirror"><term>Mirror horizontally</term><listitem><para>

Mirrors the level by the middle horizontal line.

</para></listitem></varlistentry>


<varlistentry id="edit-level-vmirror"><term>Mirror vertically</term><listitem><para>

Mirrors the level by the middle vertical line.

</para></listitem></varlistentry>


<varlistentry id="edit-level-undo"><term>Undo</term><listitem><para>

Undoes the last modification of the level.

</para></listitem></varlistentry>


<varlistentry id="edit-level-redo"><term>Redo</term><listitem><para>

Redoes the last modification of the level.

</para></listitem></varlistentry>


<varlistentry id="edit-level-simplify"><term>Simplify</term><listitem><para>

Removes all gems and walls of the level, which are not really needed.
Gems on goals which cannot be moved are replaced by gems.
All this should not change the solution of the level (if it does, you have
found a bug)!

</para></listitem></varlistentry>


<varlistentry id="edit-level-round-edges"><term>Fill edges</term><listitem><para>

Tries to fill edges of the walls. Just try it, to see the effect!

</para></listitem></varlistentry>


<varlistentry id="edit-level-fill-outside"><term>Fill outside</term><listitem><para>

Fills all outside fields with walls.

</para></listitem></varlistentry>


<varlistentry id="edit-level-create-map"><term>Create empty map ...</term><listitem><para>

Creates a random map of the size of the actual map. The map will contain no
gems or goals.
You will be asked to give a fill amount (the percentage of the fields to be filled
with walls). Note that the fill amount will only be respected with a certain error.
This function can be useful to find a starting map for a new level
(most of the time the create level will need manual adjustmenst to be really useful).

</para></listitem></varlistentry>


<varlistentry id="edit-level-create-goals"><term>Create goals ...</term><listitem><para>

Fills the map with goals in random positions. The former goals will all be
deleted. You will be asked to give the number of goals.

</para></listitem></varlistentry>


<varlistentry id="edit-level-create-gems"><term>Create gems ...</term><listitem><para>

Fills the map with gems in random positions. A gem is created for every goal
(if it is possible). All former gems will be deleted first.

</para></listitem></varlistentry>


<varlistentry id="edit-level-validity"><term>Is Map Valid?</term><listitem><para>

Checks the validity of the map.
There are many reasons why a map may be invalid:

</para><itemizedlist mark="opencircle"> 

<listitem><para>
<guilabel>There are no gems</guilabel>. You must have at least one gem in the map.
</para></listitem>

<listitem><para>
<guilabel>There are more gems than goals</guilabel>. The number of gems and goals must be the same.
</para></listitem>

<listitem><para>
<guilabel>There are more goals than gems</guilabel>. The number of gems and goals must be the same.
</para></listitem>

<listitem><para>
<guilabel>The map leaks</guilabel>. This means, the keeper reachable fields are not completely
enclosed by walls, so that outside fields (empty fields which lie outside of the walls) have
contact to non wall fields. Note that &EasySok; calculates the outside fields itself, so you
cannot declare what is an outside field and what not, apart from enclosing it by walls.
</para></listitem>

<listitem><para>
<guilabel>There map is already solved</guilabel>. It doesn't makes much sense to supply an
already solved map.
</para></listitem>
</itemizedlist>

</listitem></varlistentry>


<varlistentry id="edit-level-is-solvable"><term>Is solvable?</term><listitem><para>

Starts the solver and informs you if the level is solvable or not.

</para></listitem></varlistentry>


</variablelist>


</sect1>
