[SCM] 2D CAD system branch, master, updated. debian/1.0.0-rc1+nolibs-4-8-g40b9f44

Lisandro Damián Nicanor Pérez Meyer perezmeyer at gmail.com
Tue Sep 6 02:11:22 UTC 2011


The following commit has been merged in the master branch:
commit e3ebc413e300f743b759f96061f30e6ff264ce06
Author: Lisandro Damián Nicanor Pérez Meyer <perezmeyer at gmail.com>
Date:   Mon Sep 5 22:41:32 2011 -0300

    Imported Upstream version 1.0.0~rc2+nolibs

diff --git a/.gitignore b/.gitignore
index 00eb20c..ae47087 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,9 @@ Info.plist
 # Unix generated directories (except Apple)
 unix/
 
+#Doxygen
+html/
+
 # All platforms generated directories and files
 *.qm
 intermediate/
diff --git a/desktop/graphics_icons_and_splash/Icon LibreCAD/Icon_Librecad.svg b/desktop/graphics_icons_and_splash/Icon LibreCAD/Icon_Librecad.svg
index 8dee71f..61df798 100644
--- a/desktop/graphics_icons_and_splash/Icon LibreCAD/Icon_Librecad.svg	
+++ b/desktop/graphics_icons_and_splash/Icon LibreCAD/Icon_Librecad.svg	
@@ -9,11 +9,11 @@
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
+   width="99.999725"
+   height="100.00037"
    id="svg2"
    version="1.1"
-   inkscape:version="0.48.0 r9654"
+   inkscape:version="0.48.1 r9760"
    sodipodi:docname="Icon_Librecad.svg">
   <title
      id="title3808">LibreCAD Icon</title>
@@ -37,16 +37,20 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="6.1060241"
-     inkscape:cx="282.85714"
-     inkscape:cy="564.28571"
+     inkscape:cx="53.295482"
+     inkscape:cy="49.04802"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="false"
-     inkscape:window-width="1680"
-     inkscape:window-height="942"
+     inkscape:window-width="1440"
+     inkscape:window-height="876"
      inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="0" />
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -95,7 +99,8 @@
   <g
      inkscape:label="Layer 1"
      inkscape:groupmode="layer"
-     id="layer1">
+     id="layer1"
+     transform="translate(-226.69563,-436.90297)">
     <rect
        height="100.00001"
        width="99.999428"
@@ -111,13 +116,13 @@
        inkscape:connector-curvature="0" />
     <g
        id="g3010"
-       transform="translate(-95.351883,-39.277969)">
+       transform="translate(-95.35188,-39.277969)">
       <polygon
          transform="matrix(5.7120336,0,0,5.7120336,322.04724,476.18085)"
          style="fill:#4d4d4d"
          id="_471970800"
          class="fil2"
-         points="4.20177,7.70289 17.5069,7.70289 17.5069,9.80372 4.20177,9.80372 4.20177,10.8542 0.000103387,10.8542 0.000103387,6.65257 4.20177,6.65257 " />
+         points="0.000103387,6.65257 4.20177,6.65257 4.20177,7.70289 17.5069,7.70289 17.5069,9.80372 4.20177,9.80372 4.20177,10.8542 0.000103387,10.8542 " />
       <g
          id="g3004">
         <rect
diff --git a/desktop/graphics_icons_and_splash/Readme.txt b/desktop/graphics_icons_and_splash/Readme.txt
index 07fecf2..96f6bd2 100644
--- a/desktop/graphics_icons_and_splash/Readme.txt
+++ b/desktop/graphics_icons_and_splash/Readme.txt
@@ -1,32 +1,32 @@
-///////////////// LibreCAD logo /////////////////
-
-Content:
-
-Logo: Inkscape - Gimp
-Splash Screen: Inkscape - Gimp
-Icons 
-
-//////////////////////////////////////////////////
-
-
-Info:
-Based on the point and the line as two basic elements of design, 
-the point is squared due to the graphic representation in CAD (pixel), 
-the design is simple showing the easy functions of the software.
-
-
-
-
----Spanish---
-
-Información del logo:
-basado en el punto y la línea como dos elementos básicos del diseño,
-el punto es cuadrado, debido a la representación gráfica en CAD (píxel),
-el diseño es sencillo y representa las funciones del software.
-
-
-Designed By:
-Diego Alejandro Torres M. "Daltom Designer"
-http://daltom.2082studio.com
-
+///////////////// LibreCAD logo /////////////////
+
+Content:
+
+Logo: Inkscape - Gimp
+Splash Screen: Inkscape - Gimp
+Icons 
+
+//////////////////////////////////////////////////
+
+
+Info:
+Based on the point and the line as two basic elements of design, 
+the point is squared due to the graphic representation in CAD (pixel), 
+the design is simple showing the easy functions of the software.
+
+
+
+
+---Spanish---
+
+Información del logo:
+basado en el punto y la línea como dos elementos básicos del diseño,
+el punto es cuadrado, debido a la representación gráfica en CAD (píxel),
+el diseño es sencillo y representa las funciones del software.
+
+
+Designed By:
+Diego Alejandro Torres M. "Daltom Designer"
+http://daltom.2082studio.com
+
 Graphics work is supplied under the License : CC BY-SA
\ No newline at end of file
diff --git a/librecad.pro b/librecad.pro
index dcf737f..dbf3ea8 100755
--- a/librecad.pro
+++ b/librecad.pro
@@ -5,7 +5,7 @@ DEFINES += QC_APPKEY="\"/LibreCAD\""
 DEFINES += QC_APPNAME="\"LibreCAD\""
 DEFINES += QC_COMPANYNAME="\"LibreCAD\""
 DEFINES += QC_COMPANYKEY="\"LibreCAD\""
-DEFINES += QC_VERSION="\"1.0.0rc1\""
+DEFINES += QC_VERSION="\"1.0.0rc2\""
 DEFINES += QC_DELAYED_SPLASH_SCREEN=1
 
 
@@ -74,7 +74,8 @@ UI_HEADERS_DIR = intermediate/ui
 UI_SOURCES_DIR = intermediate/ui
 RESOURCES += res/extui/extui.qrc
 
-INCLUDEPATH += dxflib/src \
+INCLUDEPATH += \
+    dxflib/src \
     fparser \
     src/cmd \
     src/lib/actions \
@@ -116,7 +117,6 @@ HEADERS = \
     src/lib/creation/rs_creation.h \
     src/lib/debug/rs_debug.h \
     src/lib/engine/rs.h \
-    src/lib/engine/rs_application.h \
     src/lib/engine/rs_arc.h \
     src/lib/engine/rs_atomicentity.h \
     src/lib/engine/rs_block.h \
@@ -126,20 +126,16 @@ HEADERS = \
     src/lib/engine/rs_circle.h \
     src/lib/engine/rs_color.h \
     src/lib/engine/rs_constructionline.h \
-    src/lib/engine/rs_datetime.h \
     src/lib/engine/rs_dimaligned.h \
     src/lib/engine/rs_dimangular.h \
     src/lib/engine/rs_dimdiametric.h \
     src/lib/engine/rs_dimension.h \
     src/lib/engine/rs_dimlinear.h \
     src/lib/engine/rs_dimradial.h \
-    src/lib/engine/rs_dir.h \
     src/lib/engine/rs_document.h \
     src/lib/engine/rs_ellipse.h \
     src/lib/engine/rs_entity.h \
     src/lib/engine/rs_entitycontainer.h \
-    src/lib/engine/rs_file.h \
-    src/lib/engine/rs_fileinfo.h \
     src/lib/engine/rs_flags.h \
     src/lib/engine/rs_font.h \
     src/lib/engine/rs_fontchar.h \
@@ -147,7 +143,6 @@ HEADERS = \
     src/lib/engine/rs_graphic.h \
     src/lib/engine/rs_hatch.h \
     src/lib/engine/rs_insert.h \
-    src/lib/engine/rs_img.h \
     src/lib/engine/rs_image.h \
     src/lib/engine/rs_layer.h \
     src/lib/engine/rs_layerlist.h \
@@ -161,22 +156,17 @@ HEADERS = \
     src/lib/engine/rs_pen.h \
     src/lib/engine/rs_point.h \
     src/lib/engine/rs_polyline.h \
-    src/lib/engine/rs_ptrlist.h \
-    src/lib/engine/rs_regexp.h \
     src/lib/engine/rs_settings.h \
     src/lib/engine/rs_solid.h \
     src/lib/engine/rs_spline.h \
-    src/lib/engine/rs_string.h \
-    src/lib/engine/rs_stringlist.h \
     src/lib/engine/rs_system.h \
     src/lib/engine/rs_text.h \
-    src/lib/engine/rs_textstream.h \
     src/lib/engine/rs_undo.h \
     src/lib/engine/rs_undoable.h \
     src/lib/engine/rs_undocycle.h \
     src/lib/engine/rs_units.h \
     src/lib/engine/rs_utility.h \
-    src/lib/engine/rs_valuelist.h \
+    src/lib/engine/rs_variable.h \
     src/lib/engine/rs_variabledict.h \
     src/lib/engine/rs_vector.h \
     src/lib/fileio/rs_fileio.h \
@@ -189,16 +179,12 @@ HEADERS = \
     src/lib/gui/rs_dialogfactory.h \
     src/lib/gui/rs_dialogfactoryinterface.h \
     src/lib/gui/rs_dialogfactoryadapter.h \
-    src/lib/gui/rs_event.h \
     src/lib/gui/rs_eventhandler.h \
     src/lib/gui/rs_graphicview.h \
     src/lib/gui/rs_grid.h \
-    src/lib/gui/rs_keyevent.h \
     src/lib/gui/rs_linetypepattern.h \
     src/lib/gui/rs_mainwindowinterface.h \
-    src/lib/gui/rs_mouseevent.h \
     src/lib/gui/rs_painter.h \
-    src/lib/gui/rs_painteradapter.h \
     src/lib/gui/rs_painterqt.h \
     src/lib/gui/rs_staticgraphicview.h \
     src/lib/information/rs_locale.h \
@@ -214,9 +200,13 @@ HEADERS = \
     src/lib/scripting/rs_scriptlist.h \ 
     src/main/doc_plugin_interface.h \
     src/plugins/document_interface.h \
-    src/plugins/qc_plugininterface.h
+    src/plugins/qc_plugininterface.h \
+    src/plugins/intern/qc_actiongetpoint.h \
+    src/plugins/intern/qc_actiongetselect.h \
+    src/plugins/intern/qc_actiongetent.h
 
-SOURCES = dxflib/src/dl_dxf.cpp \
+SOURCES = \
+    dxflib/src/dl_dxf.cpp \
     dxflib/src/dl_writer_ascii.cpp \
     fparser/fparser.cc \
     src/lib/actions/rs_actioninterface.cpp \
@@ -260,7 +250,6 @@ SOURCES = dxflib/src/dl_dxf.cpp \
     src/lib/engine/rs_settings.cpp \
     src/lib/engine/rs_solid.cpp \
     src/lib/engine/rs_spline.cpp \
-    src/lib/engine/rs_string.cpp \
     src/lib/engine/rs_system.cpp \
     src/lib/engine/rs_text.cpp \
     src/lib/engine/rs_undo.cpp \
@@ -292,7 +281,10 @@ SOURCES = dxflib/src/dl_dxf.cpp \
     src/lib/scripting/rs_python_wrappers.cpp \
     src/lib/scripting/rs_script.cpp \
     src/lib/scripting/rs_scriptlist.cpp \
-    src/main/doc_plugin_interface.cpp
+    src/main/doc_plugin_interface.cpp \
+    src/plugins/intern/qc_actiongetpoint.cpp \
+    src/plugins/intern/qc_actiongetselect.cpp \
+    src/plugins/intern/qc_actiongetent.cpp
 
 # ################################################################################
 # Command
@@ -577,11 +569,11 @@ HEADERS += src/ui/qg_actionfactory.h \
     src/ui/qg_mainwindowinterface.h \
     src/ui/qg_patternbox.h \
     src/ui/qg_pentoolbar.h \
-    src/ui/qg_qt2rs.h \
     src/ui/qg_recentfiles.h \
     src/ui/qg_scrollbar.h \
     src/ui/qg_widthbox.h \
     src/ui/forms/qg_arcoptions.h \
+    src/ui/forms/qg_arctangentialoptions.h \
     src/ui/forms/qg_beveloptions.h \
     src/ui/forms/qg_blockdialog.h \
     src/ui/forms/qg_cadtoolbar.h \
@@ -601,7 +593,6 @@ HEADERS += src/ui/qg_actionfactory.h \
     src/ui/forms/qg_cadtoolbararcs.h \
     src/ui/forms/qg_circleoptions.h \
     src/ui/forms/qg_coordinatewidget.h \
-    src/ui/forms/qg_arctangentialoptions.h \
     src/ui/forms/qg_dimensionlabeleditor.h \
     src/ui/forms/qg_dimlinearoptions.h \
     src/ui/forms/qg_dimoptions.h \
@@ -653,38 +644,6 @@ HEADERS += src/ui/qg_actionfactory.h \
     src/ui/forms/qg_textoptions.h \
     src/ui/forms/qg_trimamountoptions.h \
     src/ui/forms/qg_widgetpen.h \
-    src/ui/forms/qg_arcoptions.ui.h \
-    src/ui/forms/qg_arctangentialoptions.ui.h \
-    src/ui/forms/qg_beveloptions.ui.h \
-    src/ui/forms/qg_blockdialog.ui.h \
-    src/ui/forms/qg_cadtoolbar.ui.h \
-    src/ui/forms/qg_cadtoolbararcs.ui.h \
-    src/ui/forms/qg_cadtoolbarcircles.ui.h \
-    src/ui/forms/qg_cadtoolbardim.ui.h \
-    src/ui/forms/qg_cadtoolbarellipses.ui.h \
-    src/ui/forms/qg_cadtoolbarinfo.ui.h \
-    src/ui/forms/qg_cadtoolbarlines.ui.h \
-    src/ui/forms/qg_cadtoolbarmain.ui.h \
-    src/ui/forms/qg_cadtoolbarmodify.ui.h \
-    src/ui/forms/qg_cadtoolbarpoints.ui.h \
-    src/ui/forms/qg_cadtoolbarpolylines.ui.h \
-    src/ui/forms/qg_cadtoolbarselect.ui.h \
-    src/ui/forms/qg_cadtoolbarsnap.ui.h \
-    src/ui/forms/qg_cadtoolbarsplines.ui.h \
-    src/ui/forms/qg_circleoptions.ui.h \
-    src/ui/forms/qg_commandwidget.ui.h \
-    src/ui/forms/qg_coordinatewidget.ui.h \
-    src/ui/forms/qg_dimensionlabeleditor.ui.h \
-    src/ui/forms/qg_dimlinearoptions.ui.h \
-    src/ui/forms/qg_dimoptions.ui.h \
-    src/ui/forms/qg_dlgarc.ui.h \
-    src/ui/forms/qg_dlgattributes.ui.h \
-    src/ui/forms/qg_dlgcircle.ui.h \
-    src/ui/forms/qg_dlgdimension.ui.h \
-    src/ui/forms/qg_dlgdimlinear.ui.h \
-    src/ui/forms/qg_dlgellipse.ui.h \
-    src/ui/forms/qg_dlghatch.ui.h \
-    src/ui/forms/qg_dlgimageoptions.ui.h \
     src/ui/forms/qg_dlginitial.ui.h \
     src/ui/forms/qg_dlginsert.ui.h \
     src/ui/forms/qg_dlgline.ui.h \
@@ -958,6 +917,8 @@ TRANSLATIONS = ts/librecad_cs.ts \
     ts/librecad_pt.ts \
     ts/librecad_ru.ts \
     ts/librecad_sk.ts \
+    ts/librecad_sq_al.ts \
+    ts/librecad_sv.ts \
     ts/librecad_tr.ts \
     ts/librecad_uk.ts \
     ts/librecad_zh_cn.ts \
diff --git a/mkspecs/defs.pro b/mkspecs/defs.pro
deleted file mode 100644
index b3fe2f3..0000000
--- a/mkspecs/defs.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-QMAKE_CXXFLAGS_DEBUG += 
-QMAKE_CXXFLAGS += 
-
-# detect cam_rvt support
-rvt_cam {
-  exists(../qcadrvtcam) {
-    DEFINES += RVT_CAM
-    INCLUDEPATH += ../../qcadrvtcam/include
-    LIBS += -lpython 
-  }
-}
-
diff --git a/plugins/align/align.cpp b/plugins/align/align.cpp
new file mode 100755
index 0000000..62480c8
--- /dev/null
+++ b/plugins/align/align.cpp
@@ -0,0 +1,80 @@
+/*****************************************************************************/
+/*  align.cpp - move and rotate entities using align points                  */
+/*                                                                           */
+/*  Copyright (C) 2011 Rallaz, rallazz at gmail.com                             */
+/*                                                                           */
+/*  This library is free software, licensed under the terms of the GNU       */
+/*  General Public License as published by the Free Software Foundation,     */
+/*  either version 2 of the License, or (at your option) any later version.  */
+/*  You should have received a copy of the GNU General Public License        */
+/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
+/*****************************************************************************/
+
+
+#include "document_interface.h"
+#include "align.h"
+#include <math.h>
+
+QString LC_Align::name() const
+ {
+     return (tr("Align"));
+ }
+
+PluginCapabilities LC_Align::getCapabilities() const
+{
+    PluginCapabilities pluginCapabilities;
+    pluginCapabilities.menuEntryPoints
+            << PluginMenuLocation("Modify", tr("Align"));
+    return pluginCapabilities;
+}
+
+void LC_Align::execComm(Document_Interface *doc,
+                             QWidget *parent, QString cmd)
+{
+    Q_UNUSED(parent);
+    QPointF base1, base2, target1, target2;
+    QList<Plug_Entity *> obj;
+    bool yes  = doc->getSelect(&obj);
+    if (!yes || obj.isEmpty()) return;
+    yes = doc->getPoint(&base1, QString("first base point:"));
+    if (yes) {
+        yes = doc->getPoint(&target1, QString("first target point:"), &base1);
+        if (yes) {
+            yes = doc->getPoint(&base2, QString("second base point:"));
+            if (yes) {
+                yes = doc->getPoint(&target2, QString("second target point:"), &base2);
+            }
+        }
+
+    }
+    if (yes) {
+        //first, move selection
+        QPointF movev = target1 - base1;
+        for (int i = 0; i < obj.size(); ++i) {
+            obj.at(i)->move(movev);
+        }
+        //calculate angle
+        double incx1, incx2, incy1, incy2, abase, atarget, angle;
+        incx1 = base2.x() - base1.x();
+        incx2 = target2.x() - target1.x();
+        incy1 = base2.y() - base1.y();
+        incy2 = target2.y() - target1.y();
+        if (incx1 == 0) abase = M_PI/4;
+        else abase = atan(incy1/incx1);
+        if (incx2 == 0) atarget = M_PI/4;
+        else atarget = atan(incy2/incx2);
+        angle = atarget - abase;
+        //end, rotate selection
+        for (int i = 0; i < obj.size(); ++i) {
+            obj.at(i)->rotate(target1, angle);
+        }
+
+    }
+
+//selection cleanup
+    while (!obj.isEmpty())
+        delete obj.takeFirst();
+}
+
+
+Q_EXPORT_PLUGIN2(lc_align, LC_Align);
diff --git a/plugins/align/align.h b/plugins/align/align.h
new file mode 100755
index 0000000..34b9060
--- /dev/null
+++ b/plugins/align/align.h
@@ -0,0 +1,30 @@
+/*****************************************************************************/
+/*  align.h - move and rotate entities using align points                    */
+/*                                                                           */
+/*  Copyright (C) 2011 Rallaz, rallazz at gmail.com                             */
+/*                                                                           */
+/*  This library is free software, licensed under the terms of the GNU       */
+/*  General Public License as published by the Free Software Foundation,     */
+/*  either version 2 of the License, or (at your option) any later version.  */
+/*  You should have received a copy of the GNU General Public License        */
+/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
+/*****************************************************************************/
+
+#ifndef ALIGN_H
+#define ALIGN_H
+
+#include "qc_plugininterface.h"
+
+class LC_Align : public QObject, QC_PluginInterface
+{
+    Q_OBJECT
+     Q_INTERFACES(QC_PluginInterface)
+
+ public:
+    virtual PluginCapabilities getCapabilities() const;
+    virtual QString name() const;
+    virtual void execComm(Document_Interface *doc,
+                                       QWidget *parent, QString cmd);
+};
+
+#endif // ALIGN_H
diff --git a/plugins/align/align.pro b/plugins/align/align.pro
new file mode 100644
index 0000000..caed8fd
--- /dev/null
+++ b/plugins/align/align.pro
@@ -0,0 +1,48 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2011-03-22T19:33:11
+#
+#-------------------------------------------------
+
+QT       += gui
+TEMPLATE = lib
+CONFIG += plugin
+VERSION = 1.0.1
+PLUGIN_NAME=align
+
+SOURCES += align.cpp
+
+HEADERS += align.h
+
+
+# DLLDESTDIR = ../../unix/resources/plugins/
+win32 {
+    Debug {
+        DLLDESTDIR = ../../debug/resources/plugins
+        TARGET = $$PLUGIN_NAME
+
+    } else {
+        DLLDESTDIR = ../../release/resources/plugins
+        TARGET = $$PLUGIN_NAME
+    }
+}
+unix {
+    macx { 
+	TARGET = ../../LibreCAD.app/Contents/Resources/plugins/$$PLUGIN_NAME
+    }
+    else { 
+	TARGET = ../../unix/resources/plugins/$$PLUGIN_NAME
+    }
+}
+INCLUDEPATH    += ../../src/plugins
+
+# Store intermedia stuff somewhere else
+OBJECTS_DIR = ../intermediate/obj
+MOC_DIR = ../intermediate/moc
+RCC_DIR = ../intermediate/rcc
+TS_DIR = ../intermediate/ts
+UI_DIR = ../intermediate/ui
+UI_HERADERS_DIR = ../intermediate/ui
+UI_SOURCES_DIR = ../intermediate/ui
+
+#DEFINES += sample_LIBRARY
diff --git a/plugins/asciifile/asciifile.cpp b/plugins/asciifile/asciifile.cpp
index 624913d..38dff57 100755
--- a/plugins/asciifile/asciifile.cpp
+++ b/plugins/asciifile/asciifile.cpp
@@ -1,3 +1,15 @@
+/*****************************************************************************/
+/*  Asciifile.cpp - ascii file importer                                          */
+/*                                                                           */
+/*  Copyright (C) 2011 Rallaz, rallazz at gmail.com                             */
+/*                                                                           */
+/*  This library is free software, licensed under the terms of the GNU       */
+/*  General Public License as published by the Free Software Foundation,     */
+/*  either version 2 of the License, or (at your option) any later version.  */
+/*  You should have received a copy of the GNU General Public License        */
+/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
+/*****************************************************************************/
+
 #include <QtPlugin>
 #include <QPicture>
 #include <QPainter>
@@ -15,10 +27,13 @@
 #include "document_interface.h"
 #include "asciifile.h"
 
-QString AsciiFile::menu() const
- {
-     return ("File/Import");
- }
+PluginCapabilities AsciiFile::getCapabilities() const
+{
+    PluginCapabilities pluginCapabilities;
+    pluginCapabilities.menuEntryPoints
+            << PluginMenuLocation("File/Import", tr("Read ascii points"));
+    return pluginCapabilities;
+}
 
 QString AsciiFile::name() const
  {
@@ -26,7 +41,7 @@ QString AsciiFile::name() const
  }
 
 void AsciiFile::execComm(Document_Interface *doc,
-                             QWidget *parent)
+                             QWidget *parent, QString cmd)
 {
     dibPunto pdt(parent);
     int result = pdt.exec();
diff --git a/plugins/asciifile/asciifile.h b/plugins/asciifile/asciifile.h
index 7117d79..e138d8e 100755
--- a/plugins/asciifile/asciifile.h
+++ b/plugins/asciifile/asciifile.h
@@ -1,11 +1,11 @@
 /*****************************************************************************/
-/*  DibPunto - Conversor de ascii a dxf                                      */
+/*  Asciifile.h - ascii file importer                                        */
 /*                                                                           */
 /*  Copyright (C) 2011 Rallaz, rallazz at gmail.com                             */
 /*                                                                           */
 /*  This library is free software, licensed under the terms of the GNU       */
 /*  General Public License as published by the Free Software Foundation,     */
-/*  either version 3 of the License, or (at your option) any later version.  */
+/*  either version 2 of the License, or (at your option) any later version.  */
 /*  You should have received a copy of the GNU General Public License        */
 /*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
 /*****************************************************************************/
@@ -35,10 +35,10 @@ class AsciiFile : public QObject, QC_PluginInterface
      Q_INTERFACES(QC_PluginInterface)
 
  public:
-     virtual QString menu() const;
+     virtual PluginCapabilities getCapabilities() const;
      virtual QString name() const;
      virtual void execComm(Document_Interface *doc,
-                                        QWidget *parent);
+                                        QWidget *parent, QString cmd);
 };
 
 namespace DPT {
diff --git a/plugins/asciifile/asciifile.pro b/plugins/asciifile/asciifile.pro
index 35544ae..2b11861 100755
--- a/plugins/asciifile/asciifile.pro
+++ b/plugins/asciifile/asciifile.pro
@@ -14,11 +14,13 @@ SOURCES += asciifile.cpp
 HEADERS += asciifile.h
 
 win32 {
-    debug {
-        TARGET = ../../debug/resources/plugins/$$PLUGIN_NAME
+    Debug {
+        DLLDESTDIR = ../../debug/resources/plugins
+        TARGET = $$PLUGIN_NAME
 
     } else {
-        TARGET = ../../release/resources/plugins/$$PLUGIN_NAME
+        DLLDESTDIR = ../../release/resources/plugins
+        TARGET = $$PLUGIN_NAME
     }
 }
 unix {
diff --git a/plugins/asciifile/sample-levels.txt b/plugins/asciifile/sample-levels.txt
index 8fb324e..fa80ed5 100644
--- a/plugins/asciifile/sample-levels.txt
+++ b/plugins/asciifile/sample-levels.txt
@@ -1,46 +1,46 @@
-101	100.0000	100.0000	3.5000	E-1
-1	96.7489	115.7626	4.7843	
-2	97.8836	114.1813	3.8585	
-3	96.0069	109.1310	3.3841	
-4	93.2663	109.1474	2.7956	
-5	93.5579	109.4581	3.4924	
-6	91.9150	117.4389	3.5442	
-7	89.6679	107.2924	1.8785	
-8	89.7550	102.4185	1.8601	
-9	86.9725	100.1201	0.9824	
-10	86.7972	109.4477	1.6099	
-11	95.4141	83.9169	0.5911	
-12	97.0318	86.7990	1.0882	
-13	98.1628	89.1308	1.5648	
-14	99.7478	93.4150	2.4087	
-15	101.0426	96.4195	2.9927	
-16	102.3991	97.1479	3.1881	
-17	101.7184	97.8495	3.2503	
-18	98.5573	97.1676	2.8797	
-19	96.9225	102.6942	3.0276	
-20	98.8866	111.4297	3.8100	
-21	105.0832	103.9690	4.7065	
-22	111.8276	104.0788	5.2617	
-23	102.9928	103.0377	3.8572	
-24	109.0816	95.0818	4.6732	
-25	109.8411	92.9588	4.0459	
-26	106.4783	92.9087	3.4394	
-27	102.8864	93.6489	2.9843	
-28	115.0306	87.5107	4.0234	
-29	119.2955	82.5127	3.3044	
-102	108.9816	87.1408	2.9063	E-2
-30	109.8670	87.5096	2.9551	
-31	110.0912	81.4451	2.1972	
-32	120.3599	73.3924	2.3200	
-33	120.3354	69.1418	1.8899	
-34	118.2818	68.7667	0.9380	
-35	106.2704	75.3276	1.0458	
-36	101.8516	75.2145	0.4556	
-37	105.8550	77.8586	1.1454	
-38	107.5263	80.2858	1.9919	
-39	106.1929	82.7569	2.1709	
-40	95.1114	80.9960	0.3350	
-41	97.8808	85.2507	1.0078	
-42	99.3784	88.1488	1.5959	
-43	102.9824	82.7499	2.0633	
-44	103.5828	82.4412	2.0641	
+101	100.0000	100.0000	3.5000	E-1
+1	96.7489	115.7626	4.7843	
+2	97.8836	114.1813	3.8585	
+3	96.0069	109.1310	3.3841	
+4	93.2663	109.1474	2.7956	
+5	93.5579	109.4581	3.4924	
+6	91.9150	117.4389	3.5442	
+7	89.6679	107.2924	1.8785	
+8	89.7550	102.4185	1.8601	
+9	86.9725	100.1201	0.9824	
+10	86.7972	109.4477	1.6099	
+11	95.4141	83.9169	0.5911	
+12	97.0318	86.7990	1.0882	
+13	98.1628	89.1308	1.5648	
+14	99.7478	93.4150	2.4087	
+15	101.0426	96.4195	2.9927	
+16	102.3991	97.1479	3.1881	
+17	101.7184	97.8495	3.2503	
+18	98.5573	97.1676	2.8797	
+19	96.9225	102.6942	3.0276	
+20	98.8866	111.4297	3.8100	
+21	105.0832	103.9690	4.7065	
+22	111.8276	104.0788	5.2617	
+23	102.9928	103.0377	3.8572	
+24	109.0816	95.0818	4.6732	
+25	109.8411	92.9588	4.0459	
+26	106.4783	92.9087	3.4394	
+27	102.8864	93.6489	2.9843	
+28	115.0306	87.5107	4.0234	
+29	119.2955	82.5127	3.3044	
+102	108.9816	87.1408	2.9063	E-2
+30	109.8670	87.5096	2.9551	
+31	110.0912	81.4451	2.1972	
+32	120.3599	73.3924	2.3200	
+33	120.3354	69.1418	1.8899	
+34	118.2818	68.7667	0.9380	
+35	106.2704	75.3276	1.0458	
+36	101.8516	75.2145	0.4556	
+37	105.8550	77.8586	1.1454	
+38	107.5263	80.2858	1.9919	
+39	106.1929	82.7569	2.1709	
+40	95.1114	80.9960	0.3350	
+41	97.8808	85.2507	1.0078	
+42	99.3784	88.1488	1.5959	
+43	102.9824	82.7499	2.0633	
+44	103.5828	82.4412	2.0641	
diff --git a/plugins/importshp/importshp.cpp b/plugins/importshp/importshp.cpp
new file mode 100644
index 0000000..7462e3e
--- /dev/null
+++ b/plugins/importshp/importshp.cpp
@@ -0,0 +1,413 @@
+/*****************************************************************************/
+/*  importshp.cpp - shape file importer                                      */
+/*                                                                           */
+/*  Copyright (C) 2011 Rallaz, rallazz at gmail.com                             */
+/*                                                                           */
+/*  This library is free software, licensed under the terms of the GNU       */
+/*  General Public License as published by the Free Software Foundation,     */
+/*  either version 2 of the License, or (at your option) any later version.  */
+/*  You should have received a copy of the GNU General Public License        */
+/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
+/*****************************************************************************/
+
+#include <QtPlugin>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QFileDialog>
+#include <QSettings>
+#include <QMessageBox>
+
+#include "importshp.h"
+
+/*TODO
+    complete readAttributes
+    void readPolyline(DBFHandle dh, int i);
+    void readPolylineC(DBFHandle dh, int i);
+    void readMultiPolyline(DBFHandle dh, int i);
+    SHPT_MULTIPOINT
+*/
+
+PluginCapabilities ImportShp::getCapabilities() const
+{
+    PluginCapabilities pluginCapabilities;
+    pluginCapabilities.menuEntryPoints
+            << PluginMenuLocation("File/Import", tr("shape file"));
+    return pluginCapabilities;
+}
+
+QString ImportShp::name() const
+ {
+     return (tr("shape file"));
+ }
+
+void ImportShp::execComm(Document_Interface *doc,
+                             QWidget *parent, QString /*cmd*/)
+{
+    dibSHP pdt(parent);
+    int result = pdt.exec();
+    if (result == QDialog::Accepted)
+        pdt.procesFile(doc);
+}
+
+
+/*****************************/
+dibSHP::dibSHP(QWidget *parent) :  QDialog(parent)
+{
+    QVBoxLayout *mainLayout = new QVBoxLayout;
+
+    QPushButton *filebut = new QPushButton(tr("File..."));
+    fileedit = new QLineEdit();
+    QHBoxLayout *lofile = new QHBoxLayout;
+    lofile->addWidget(filebut);
+    lofile->addWidget(fileedit);
+    lofile->setSizeConstraint(QLayout::SetFixedSize);//ni caso
+    mainLayout->addLayout(lofile);
+
+    QLabel *formatlabel = new QLabel(tr("File type:"));
+    formattype = new QLabel(tr("Unknoun"));
+    QHBoxLayout *loformat = new QHBoxLayout;
+    loformat->addWidget(formatlabel);
+    loformat->addWidget(formattype);
+    loformat->addStretch();
+    mainLayout->addLayout(loformat);
+
+    QGroupBox *laybox = new QGroupBox(tr("Layer"));
+    radiolay1 = new QRadioButton(tr("Current"));
+    QRadioButton *radiolay2 = new QRadioButton(tr("From data:"));
+    layerdata = new QComboBox();
+    radiolay1->setChecked(true);
+    QHBoxLayout *laylayout = new QHBoxLayout;
+    laylayout->addWidget(radiolay1);
+    laylayout->addWidget(radiolay2);
+    laylayout->addWidget(layerdata);
+    laylayout->addStretch(0);
+    laybox->setLayout(laylayout);
+    mainLayout->addWidget(laybox);
+
+    QGroupBox *colbox = new QGroupBox(tr("Color"));
+    radiocol1 = new QRadioButton(tr("Current"));
+    QRadioButton *radiocol2 = new QRadioButton(tr("From data:"));
+    colordata = new QComboBox();
+    radiocol1->setChecked(true);
+    QHBoxLayout *collayout = new QHBoxLayout;
+    collayout->addWidget(radiocol1);
+    collayout->addWidget(radiocol2);
+    collayout->addWidget(colordata);
+    collayout->addStretch(1);
+    colbox->setLayout(collayout);
+    mainLayout->addWidget(colbox);
+
+    QGroupBox *ltypebox = new QGroupBox(tr("Line type"));
+    radioltype1 = new QRadioButton(tr("Current"));
+    QRadioButton *radioltype2 = new QRadioButton(tr("From data:"));
+    ltypedata = new QComboBox();
+    radioltype1->setChecked(true);
+    QHBoxLayout *ltypelayout = new QHBoxLayout;
+    ltypelayout->addWidget(radioltype1);
+    ltypelayout->addWidget(radioltype2);
+    ltypelayout->addWidget(ltypedata);
+    ltypelayout->addStretch(1);
+    ltypebox->setLayout(ltypelayout);
+    mainLayout->addWidget(ltypebox);
+
+    QGroupBox *lwidthbox = new QGroupBox(tr("Width"));
+    radiolwidth1 = new QRadioButton(tr("Current"));
+    QRadioButton *radiolwidth2 = new QRadioButton(tr("From data:"));
+    lwidthdata = new QComboBox();
+    radiolwidth1->setChecked(true);
+    QHBoxLayout *lwidthlayout = new QHBoxLayout;
+    lwidthlayout->addWidget(radiolwidth1);
+    lwidthlayout->addWidget(radiolwidth2);
+    lwidthlayout->addWidget(lwidthdata);
+    lwidthlayout->addStretch(1);
+    lwidthbox->setLayout(lwidthlayout);
+    mainLayout->addWidget(lwidthbox);
+
+    pointbox = new QGroupBox(tr("Point"));
+    radiopoint1 = new QRadioButton(tr("as Point"));
+    QRadioButton *radiopoint2 = new QRadioButton(tr("as Label:"));
+    pointdata = new QComboBox();
+    radiopoint1->setChecked(true);
+    QHBoxLayout *pointlayout = new QHBoxLayout;
+    pointlayout->addWidget(radiopoint1);
+    pointlayout->addWidget(radiopoint2);
+    pointlayout->addWidget(pointdata);
+    pointlayout->addStretch(1);
+    pointbox->setLayout(pointlayout);
+    mainLayout->addWidget(pointbox);
+
+    QHBoxLayout *loaccept = new QHBoxLayout;
+    QPushButton *acceptbut = new QPushButton(tr("Accept"));
+    QPushButton *cancelbut = new QPushButton(tr("Cancel"));
+    loaccept->addStretch();
+    loaccept->addWidget(acceptbut);
+    loaccept->addWidget(cancelbut);
+    loaccept->addStretch();
+    mainLayout->addLayout(loaccept);
+
+    setLayout(mainLayout);
+    readSettings();
+    updateFile();
+
+    connect(cancelbut, SIGNAL(clicked()), this, SLOT(reject()));
+    connect(acceptbut, SIGNAL(clicked()), this, SLOT(checkAccept()));
+    connect(filebut, SIGNAL(clicked()), this, SLOT(getFile()));
+    connect(fileedit, SIGNAL(editingFinished()), this, SLOT(updateFile()));
+}
+
+void dibSHP::checkAccept()
+{
+    writeSettings();
+    accept();
+}
+
+void dibSHP::getFile()
+{
+    QString fileName = QFileDialog::getOpenFileName(this, tr("Select file"),
+                                fileedit->text(), "Shapefiles *.shp(*.shp)");
+    fileedit->setText(fileName);
+    updateFile();
+}
+
+void dibSHP::updateFile()
+{
+    QString fileName = fileedit->text();
+    int num_ent, st, num_field;
+    double min_bound[4], max_bound[4];
+    QStringList txtformats;
+    char field_name[12];
+
+    QFileInfo fi = QFileInfo(fileName);
+    if (fi.suffix() != "shp") return;
+    QString file = fi.canonicalFilePath ();
+    if (file.isEmpty()) return;
+
+    SHPHandle sh = SHPOpen( file.toLocal8Bit(), "rb" );
+    SHPGetInfo( sh, &num_ent, &st, min_bound, max_bound );
+    SHPClose( sh );
+    DBFHandle dh = DBFOpen( file.toLocal8Bit(), "rb" );
+    num_field = DBFGetFieldCount( dh );
+
+    for( int i = 0; i < num_field; i++ ) {
+        DBFGetFieldInfo( dh, i, field_name,NULL, NULL);
+
+        txtformats << field_name;
+    }
+    DBFClose( dh );
+
+    txtformats.sort();
+    layerdata->clear();
+    layerdata->addItems(txtformats);
+    colordata->clear();
+    colordata->addItems(txtformats);
+    ltypedata->clear();
+    ltypedata->addItems(txtformats);
+    lwidthdata->clear();
+    lwidthdata->addItems(txtformats);
+    pointdata->clear();
+    pointdata->addItems(txtformats);
+
+    switch (st) {
+    case SHPT_POINT:
+    case SHPT_POINTM:
+    case SHPT_POINTZ: //3d point
+    case SHPT_MULTIPOINT:
+    case SHPT_MULTIPOINTM:
+    case SHPT_MULTIPOINTZ:
+        formattype->setText(tr("Point"));
+        pointbox->setDisabled(false);
+        break;
+    case SHPT_ARC:
+    case SHPT_ARCM:
+    case SHPT_ARCZ:
+        formattype->setText(tr("Arc"));
+        pointbox->setDisabled(true);
+        break;
+    case SHPT_POLYGON:
+    case SHPT_POLYGONM:
+    case SHPT_POLYGONZ:
+        formattype->setText(tr("Poligon"));
+        pointbox->setDisabled(true);
+        break;
+    case SHPT_MULTIPATCH:
+    case SHPT_NULL:
+    default:
+        formattype->setText(tr("Unknoun"));
+        pointbox->setDisabled(true);
+        break;
+    }
+}
+
+void dibSHP::procesFile(Document_Interface *doc)
+{
+    int num_ent, st;
+    double min_bound[4], max_bound[4];
+
+    currDoc = doc;
+
+    QFileInfo fi = QFileInfo(fileedit->text());
+    if (fi.suffix() != "shp") {
+        QMessageBox::critical ( this, "Shapefile", QString(tr("The file %1 not have extension .shp")).arg(fileedit->text()) );
+        return;
+    }
+
+    if (!fi.exists() ) {
+        QMessageBox::critical ( this, "Shapefile", QString(tr("The file %1 not exist")).arg(fileedit->text()) );
+        return;
+    }
+
+    QString file = fi.canonicalFilePath ();
+
+    SHPHandle sh = SHPOpen( file.toLocal8Bit(), "rb" );
+    SHPGetInfo( sh, &num_ent, &st, min_bound, max_bound );
+    DBFHandle dh = DBFOpen( file.toLocal8Bit(), "rb" );
+
+    if (radiolay1->isChecked()) {
+        layerF = -1;
+        attdata.layer = currDoc->getCurrentLayer();
+    } else {
+        layerF = DBFGetFieldIndex( dh, (layerdata->currentText()).toLatin1().data() );
+        layerT = DBFGetFieldInfo( dh, layerF, NULL, NULL, NULL );
+    }
+    if (radiocol1->isChecked())
+        colorF = -1;
+    else {
+        colorF = DBFGetFieldIndex( dh, (colordata->currentText()).toLatin1().data() );
+        colorT = DBFGetFieldInfo( dh, colorF, NULL, NULL, NULL );
+    }
+    if (radioltype1->isChecked())
+        ltypeF = -1;
+    else {
+        ltypeF = DBFGetFieldIndex( dh, (ltypedata->currentText()).toLatin1().data() );
+        ltypeT = DBFGetFieldInfo( dh, ltypeF, NULL, NULL, NULL );
+    }
+    if (radiolwidth1->isChecked())
+        lwidthF = -1;
+    else {
+        lwidthF = DBFGetFieldIndex( dh, (lwidthdata->currentText()).toLatin1().data() );
+        lwidthT = DBFGetFieldInfo( dh, lwidthF, NULL, NULL, NULL );
+    }
+    if (radiopoint1->isChecked())
+        pointF = -1;
+    else {
+        pointF = DBFGetFieldIndex( dh, (pointdata->currentText()).toLatin1().data() );
+        pointT = DBFGetFieldInfo( dh, pointF, NULL, NULL, NULL );
+    }
+
+    currlayer =currDoc->getCurrentLayer();
+    for( int i = 0; i < num_ent; i++ ) {
+        sobject= NULL;
+        sobject = SHPReadObject( sh, i );
+        if (sobject) {
+            switch (sobject->nSHPType) {
+            case SHPT_NULL:
+                break;
+            case SHPT_POINT:
+            case SHPT_POINTM: //2d point with measure
+            case SHPT_POINTZ: //3d point
+                readPoint(dh, i);
+                break;
+            case SHPT_MULTIPOINT:
+            case SHPT_MULTIPOINTM:
+            case SHPT_MULTIPOINTZ:
+                break;
+            case SHPT_ARC:
+            case SHPT_ARCM:
+            case SHPT_ARCZ:
+                readPolyline(dh, i);
+                break;
+            case SHPT_POLYGON:
+            case SHPT_POLYGONM:
+            case SHPT_POLYGONZ:
+                readPolylineC(dh, i);
+            case SHPT_MULTIPATCH:
+                readMultiPolyline(dh, i);
+            default:
+                break;
+            }
+            SHPDestroyObject(sobject);
+        }
+    }
+
+    SHPClose( sh );
+    DBFClose( dh );
+    currDoc->setLayer(currlayer);
+}
+
+void dibSHP::readPoint(DBFHandle dh, int i){
+    Plug_Entity *ent =NULL;
+    QHash<int, QVariant> data;
+    if (pointF < 0) {
+        ent = currDoc->newEntity(DPI::POINT);
+        ent->getData(&data);
+    } else {
+        ent = currDoc->newEntity(DPI::TEXT);
+        ent->getData(&data);
+        data.insert(DPI::TEXTCONTENT, DBFReadStringAttribute( dh, i, pointF ) );
+    }
+    data.insert(DPI::STARTX, *(sobject->padfX));
+    data.insert(DPI::STARTY, *(sobject->padfY));
+    readAttributes(dh, i);
+    data.insert(DPI::LAYER, attdata.layer);
+    ent->updateData(&data);
+    currDoc->addEntity(ent);
+}
+
+void dibSHP::readPolyline(DBFHandle dh, int i){
+    Plug_Entity *ent =NULL;
+    QHash<int, QVariant> data;
+    ent = currDoc->newEntity(DPI::POLYLINE);
+/*    data.insert(DPI::STARTX, *(sobject->padfX));
+    data.insert(DPI::STARTY, *(sobject->padfY));*/
+    readAttributes(dh, i);
+    data.insert(DPI::LAYER, attdata.layer);
+    ent->updateData(&data);
+    currDoc->addEntity(ent);
+}
+
+void dibSHP::readPolylineC(DBFHandle dh, int i){
+}
+
+void dibSHP::readMultiPolyline(DBFHandle dh, int i){
+}
+
+void dibSHP::readAttributes(DBFHandle dh, int i){
+    if (layerF >= 0) {
+        attdata.layer = DBFReadStringAttribute( dh, i, layerF );
+        currDoc->setLayer(attdata.layer);
+    }
+/*    if (colorF >= 0)
+        readColor(dh, i);
+    if (ltypeF >= 0)
+        readLType(dh, i);
+    if (lwidthF >= 0)
+        readWidth(dh, i);*/
+}
+
+dibSHP::~dibSHP()
+{
+/*    while (!dataList.isEmpty())
+         delete dataList.takeFirst();*/
+}
+
+void dibSHP::readSettings()
+ {
+    QString str;
+    QSettings settings(QSettings::IniFormat, QSettings::UserScope, "LibreCAD", "importshp");
+    QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
+    QSize size = settings.value("size", QSize(325,425)).toSize();
+    str = settings.value("lastfile").toString();
+    fileedit->setText(str);
+    resize(size);
+    move(pos);
+ }
+
+void dibSHP::writeSettings()
+ {
+    QSettings settings(QSettings::IniFormat, QSettings::UserScope, "LibreCAD", "importshp");
+    settings.setValue("pos", pos());
+    settings.setValue("size", size());
+    settings.setValue("lastfile", fileedit->text());
+ }
+
+Q_EXPORT_PLUGIN2(importshp, ImportShp);
diff --git a/plugins/importshp/importshp.h b/plugins/importshp/importshp.h
new file mode 100644
index 0000000..3d73987
--- /dev/null
+++ b/plugins/importshp/importshp.h
@@ -0,0 +1,111 @@
+/*****************************************************************************/
+/*  importshp.h - shape file importer                                        */
+/*                                                                           */
+/*  Copyright (C) 2011 Rallaz, rallazz at gmail.com                             */
+/*                                                                           */
+/*  This library is free software, licensed under the terms of the GNU       */
+/*  General Public License as published by the Free Software Foundation,     */
+/*  either version 2 of the License, or (at your option) any later version.  */
+/*  You should have received a copy of the GNU General Public License        */
+/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
+/*****************************************************************************/
+
+#ifndef IMPORTSHP_H
+#define IMPORTSHP_H
+
+#include <QLabel>
+#include <QGroupBox>
+#include <QLineEdit>
+#include <QComboBox>
+#include <QDialog>
+#include <QRadioButton>
+#include "qc_plugininterface.h"
+#include "document_interface.h"
+#include "shapefil.h"
+
+class ImportShp : public QObject, QC_PluginInterface
+{
+    Q_OBJECT
+     Q_INTERFACES(QC_PluginInterface)
+
+ public:
+     virtual PluginCapabilities getCapabilities() const;
+     virtual QString name() const;
+     virtual void execComm(Document_Interface *doc,
+                                        QWidget *parent, QString cmd);
+};
+
+/*namespace DPT {
+    enum txtposition {N, S, E, O, NE, SE, SO, NO};
+}*/
+
+/***********/
+
+class AttribData
+{
+public:
+    AttribData(){
+        layer = "0";
+        color = Qt::black;
+        lineType = "BYLAYER";
+        width = "BYLAYER";
+    }
+    QString layer;
+    QString lineType;
+    QString width;
+    QColor color;
+};
+
+/***********/
+
+class dibSHP : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit dibSHP(QWidget *parent = 0);
+    ~dibSHP();
+    void procesFile(Document_Interface *doc);
+
+public slots:
+    void getFile();
+    void checkAccept();
+    void updateFile();
+
+private:
+    void readSettings();
+    void writeSettings();
+
+    void readPoint(DBFHandle dh, int i);
+    void readPolyline(DBFHandle dh, int i);
+    void readPolylineC(DBFHandle dh, int i);
+    void readMultiPolyline(DBFHandle dh, int i);
+//    void readText(SHPHandle sh, DBFHandle dh, int i, Plug_Entity *ent);
+    void readAttributes(DBFHandle dh, int i);
+
+private:
+    QLineEdit *fileedit;
+    QComboBox *layerdata;
+    QComboBox *colordata;
+    QComboBox *ltypedata;
+    QComboBox *lwidthdata;
+    QComboBox *pointdata;
+    QGroupBox *pointbox;
+    QRadioButton *radiolay1;
+    QRadioButton *radiocol1;
+    QRadioButton *radioltype1;
+    QRadioButton *radiolwidth1;
+    QRadioButton *radiopoint1;
+    QLabel *formattype;
+
+    int layerF, colorF, ltypeF, lwidthF, pointF;
+    int layerT, colorT, ltypeT, lwidthT, pointT;
+    AttribData attdata;
+    SHPObject *sobject;
+    QString currlayer;
+
+    Document_Interface *currDoc;
+
+};
+
+#endif // IMPORTSHP_H
diff --git a/plugins/importshp/importshp.pro b/plugins/importshp/importshp.pro
new file mode 100644
index 0000000..4e7fe13
--- /dev/null
+++ b/plugins/importshp/importshp.pro
@@ -0,0 +1,50 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2011-03-22T19:33:11
+#
+#-------------------------------------------------
+
+QT       += gui
+TEMPLATE = lib
+CONFIG += plugin
+VERSION = 1.0.0
+PLUGIN_NAME=importshp
+
+SOURCES += importshp.cpp \
+           shapelib/shpopen.c \
+           shapelib/safileio.c \
+           shapelib/dbfopen.c
+HEADERS += importshp.h \
+           shapelib/shapefil.h
+
+win32 {
+    Debug {
+        DLLDESTDIR = ../../debug/resources/plugins
+        TARGET = $$PLUGIN_NAME
+
+    } else {
+        DLLDESTDIR = ../../release/resources/plugins
+        TARGET = $$PLUGIN_NAME
+    }
+}
+unix {
+    macx { 
+	TARGET = ../../LibreCAD.app/Contents/Resources/plugins/$$PLUGIN_NAME
+    }
+    else { 
+	TARGET = ../../unix/resources/plugins/$$PLUGIN_NAME
+    }
+}
+
+INCLUDEPATH    += ../../src/plugins \
+                  shapelib
+
+# Store intermedia stuff somewhere else
+OBJECTS_DIR = ../intermediate/obj
+MOC_DIR = ../intermediate/moc
+RCC_DIR = ../intermediate/rcc
+TS_DIR = ../intermediate/ts
+UI_DIR = ../intermediate/ui
+UI_HERADERS_DIR = ../intermediate/ui
+UI_SOURCES_DIR = ../intermediate/ui
+
diff --git a/plugins/importshp/shapelib/ChangeLog b/plugins/importshp/shapelib/ChangeLog
new file mode 100644
index 0000000..0fe04b5
--- /dev/null
+++ b/plugins/importshp/shapelib/ChangeLog
@@ -0,0 +1,385 @@
+2010-01-28  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c/shapefil.h: Handle the .shp file length limits more 
+	gracefully. (http://trac.osgeo.org/gdal/ticket/3236)
+
+	* shpopen.c: Improve the numerical accurancy of algorithms in
+	SHPRewind() (http://trac.osgeo.org/gdal/ticket/3363).
+
+2010-01-16  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c: support passing in zero/nulls to create an empty
+	SHPObject: http://bugzilla.maptools.org/show_bug.cgi?id=2148
+
+2009-10-29  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: avoid crash risk for truncated files. 
+	http://trac.osgeo.org/gdal/ticket/3093
+
+2009-09-17  Bram de Greve <bram.degreve at bramz.net>
+
+	* shpopen.c: on Win32, define snprintf as alias to _snprintf
+
+2008-11-12  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shptree.c: improve safety in face of buggy .shp file. 
+	http://trac.osgeo.org/gdal/ticket/2610
+
+	* dbfopen.c: DBFCreateField() can now also operate on files with
+	records, c/o Martin Dobias. 
+	https://trac.osgeo.org/gdal/ticket/2672
+
+2008-11-11  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: Introduce DBFDeleteField() function from Martin Dobias.
+	http://trac.osgeo.org/gdal/ticket/2671
+
+2008-03-14  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* Correct crash on buggy geometries (Even Rouault).
+	http://trac.osgeo.org/gdal/ticket/2218
+
+2008-01-16  Bram de Greve <bram.degreve at bramz.net>
+
+	* shapefil.h, safileio.c:  add file hooks that accept UTF-8
+	encoded filenames on some platforms.  Use SASetupUtf8Hooks
+	to setup the hooks and check SHPAPI_UTF8_HOOKS for its
+	availability.  Currently, this is only available on the Windows
+	platform that decodes the UTF-8 filenames to wide character 
+	strings and feed them to _wfopen and _wremove.
+	
+2008-01-10  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shapefil.h: Avoid _ prefix on #defines.
+	http://bugzilla.maptools.org/show_bug.cgi?id=1840
+
+2008-01-03  Bram de Greve <bram.degreve at bramz.net>
+
+	* dbfopen.c: in DBFCreate, use default code page
+	LDID/87 (= 0x57, ANSI) instead of LDID/3.  This seems 
+	to be the same as what ESRI would be doing by default.
+
+2007-12-30  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpadd.c/shpcreate.c: Add support for z and m files.
+
+	* Massive overhaul to use hooks for file io, etc. 
+
+2007-12-18  Bram de Greve <bram.degreve at bramz.net>
+
+	* dbfopen.c/shapefil.h/safileio.c:  create hook for client 
+	specific atof http://bugzilla.maptools.org/show_bug.cgi?id=1615
+	
+	* dbfopen.c: check for NULL handle before closing cpCPG file, 
+	and close after reading.
+
+2007-12-15  Bram de Greve <bram.degreve at bramz.net>
+
+	* dbfopen.c/shapefil.h/safileio.c: read the Code Page information 
+	from the DBF file, and exports this information as a string through 
+	the DBFGetCodePage function.  This is either the number from the LDID
+	header field ("LDID/<number>") or as the content of an accompanying 
+	.CPG file.	When creating a DBF file, the code can be set using 
+	DBFCreateEx.
+
+2007-12-12  Bram de Greve <bram.degreve at bramz.net>
+
+	* dbfopen.c: check for NULL handle in DBFClose.
+
+2007-11-21  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c/shapefil.h: Don't keep .shx file open in read-only mode.
+	http://trac.osgeo.org/gdal/ticket/1956
+
+2007-11-14  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c: checks after mallocs to detect for corrupted/voluntary 
+	broken shapefiles.  http://trac.osgeo.org/gdal/ticket/1991
+
+2007-09-03  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpgeo.c: Fixed SHPDimension() (missing breaks) in shpgeo.c.
+	Fix contributed by Andrea Peri.
+
+	* dbfopen.c: Move the static dDoubleField return buffer into DBFInfo
+	structure to avoid multithreaded risks. 
+
+	* dbfopen.c: Simplify DBFReadTuple() to avoid use of static tuple.
+	Note that this means DBFReadTuple() results are only valid till the 
+	next record is read for any reason.
+
+2007-06-21  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c: Fix for SHPRewind() for "contact at one vertex" 
+	cases in rings. http://trac.osgeo.org/gdal/ticket/976
+
+2006-11-06  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* contrib/shpgeo.c: Modified SHPProject to use pj_transform() so 
+	it works for datums and stuff.  Submitted by Steffen Macke.
+
+2006-09-04  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpeopen.c: (MLoskot) Added stronger test of Shapefile reading 
+	failures, e.g. truncated files.  The problem was discovered by Tim 
+	Sutton and reported here:
+	      https://svn.qgis.org/trac/ticket/200
+
+2006-06-17  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: use calloc() for DBFInfo in DBFCreate() to ensure
+	all fields initialized to zero if not otherwise mentioned.
+
+	* dbfopen.c: Don't allow creation of string fields with width larger
+	than 255 per http://bugzilla.maptools.org/show_bug.cgi?id=1434
+
+2006-06-16  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: Don't treat decimals value as high order field length
+	for strings, as it causes serious bugs in some cases such as
+	http://bugzilla.remotesensing.org/show_bug.cgi?id=1202
+
+	* dbfopen.c: Made static field buffer in DBFReadAttribute() into a
+	field in the DBFInfo structure to avoid multi-threading problems.
+
+2006-03-29  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: Fixed bug in DBFCloneEmpty() (treating pachFieldType as
+	an array of int).
+
+2006-02-08  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: Changed to put spaces into string fields that are NULL
+	as per http://bugzilla.maptools.org/show_bug.cgi?id=316.
+
+2006-01-26  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c, shapefil.h, shpdump.c: Added bMeasureIsUsed support as
+	per http://bugzilla.maptools.org/show_bug.cgi?id=1249
+	
+2006-01-04  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c/shapefil.h: Added functions to check if dbf record is
+	deleted, and to mark it as deleted.
+
+2005-02-11  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c: Check panPartStart[0] is 0 in SHPCreateObject().
+
+	* Fixed bug 305 in DBFCloneEmpty() - header length problem.
+
+	* Make the pszStringField buffer for DBFReadAttribute() static char 
+	[256] as per bug 306.
+
+2004-09-15  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: treat all blanks as NULL in DBFIsAttributeNULL().
+
+2004-06-23  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* contrib/shpsort.c: added new contribute program from Eric Miller.
+
+2003-04-07  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* Issue 1.2.10 Release.
+
+2003-03-10  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: modified DBFWriteAttribute call so that it returns FALSE
+	if it has to truncate the input value.
+
+2003-01-28  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shptree.c: avoid build warnings.
+
+2002-05-07  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: Added DBFWriteAttributeDirectly() from the AVCE00
+	distribution to simplify AVC integration in GDAL.
+
+	* shptree.c: added use of qsort() in place of bubble sort as 
+	submitted by Bernhard Herzog.
+
+2002-04-10  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c: Added SHPRewindObject() to correct ring winding.
+
+	* shprewind.c: New utility program.
+
+2002-03-12  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shapelib.def: added DBFWriteNULLAttribute.
+
+2002-01-17  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* contrib/ShapeFileII.pas: Contributed Delphi Pascal interface
+	to Shapelib. 
+
+2002-01-15  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shapelib.h: Added support for SHAPELIB_DLLEXPORT macro, and write
+	up material attempting to explain the use of SHPAPI_CALL macros.
+
+	* dbfopen.c: Compute nHeaderLength in DBFCloneEmpty() instead of
+	copying it from the source file so we don't have quirks when copying
+	from files with extra bytes of spacers in the header that don't 
+	themselves get copied properly.
+
+2001-12-07  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c: Fix fclose() of SHX file if SHX file fails to open. 
+	Should be closing SHP file.  Reported by Ben Discoe.
+
+2001-11-28  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: two fixes for compiler warnings as suggested by
+	Richard Hash.
+
+2001-11-01  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c/shapefil.h: Move record buffer into SHPInfo so that 
+	different threads can safely access separate files.  Other threading
+	issues may remain.
+
+2001-08-28  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* Issue Shapelib 1.2.9
+
+	* shputils.c: DBFAddField() call should check for -1 return value
+	for failure.
+
+2001-07-03  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c: cleanup better if SHX missing, provided by 
+	Riccardo Cohen.
+
+2001-06-21  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: Fixed NULL support with patches from Jim Matthews. 
+
+	* shpopen.c: Be more careful of establishing initial file bounds in
+	face of possible NULL shapes.
+
+2001-06-01  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* dbfopen.c: ensure binary mode open.
+
+2001-05-31  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c: Add support for writing null shapes.
+
+	* dbfopen.c: added DBFGetFieldIndex(), contributed by Jim Matthews.
+
+	* dbfopen.c/shapefil.h/dbf_api.h: added support for NULL fields
+	in .dbf files. 
+
+2001-05-28  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shpopen.c: add some checking on the record count to ensure it
+	is reasonable.
+
+2001-05-23  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* shapefile.h, shpopen.c, dbfopen.c, shptree.c: added the SHPAPI_CALL
+	macro to allow compilation with _stdcall conventions. 
+
+2001-02-06  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* Fixed a few memory leaks when SHPOpen() fails. 
+
+2000-12-05  Frank Warmerdam  <warmerdam at pobox.com>
+
+	* Fix from Craig Bruce (Cubewerx) for DBFReadAttribute() for
+	the white space trimming code to avoid reading outside allocated
+	memory.
+
+2000-11-02  Frank Warmerdam  <warmerda at cs46980-c>
+
+	* Checked in upgraded shputils.c from Bill Miller.
+
+2000-10-05  Frank Warmerdam  <warmerda at cs46980-c>
+
+	* Fixed DBFWriteAttribute() to ensure we can't overwrite the
+	end of the szSField buffer even if the width is set large.
+	Bug report by Kirk Benell <kirk at rsinc.com>.
+
+2000-09-25  Frank Warmerdam  <warmerda at cs46980-c>
+
+	* Added DBFGetNativeFieldType() (contributed by Daniel) to dbfopen.c.
+
+2000-07-18  Frank Warmerdam  <warmerda at cs46980-c>
+
+	* added better enforcement of -1 for append in SHPWriteObject().
+
+2000-07-07  Frank Warmerdam  <warmerda at cs46980-c>
+
+	* Added stdlib.h and string.h where needed, and removed lots of 
+	unused variables, mainly from example mainlines at the suggestion
+	of Bill Hughes. 
+
+2000-05-24  Frank Warmerdam  <warmerda at cs46980-c>
+
+	* Added logic to shpadd to grow vertex lists at the suggestion of 
+	Santiago Nullo <sn at softhome.net>.
+	
+2000-05-23  Frank Warmerdam  <warmerda at cs46980-c>
+
+	* Added checks in dbfopen.c on return result of fseek() and fread().
+
+	* Avoid crashing in DBReadIntegerAttribute() or DBFReadDoubleAttribte()
+	if the field or record are out of range.
+
+2000-03-28  Frank Warmerdam  <warmerda at cs46980-c>
+
+	* Release as 1.2.8.
+
+	* Incorporated a -version-info fix and added mkinstalldirs from Jan.
+
+2000-03-17  Frank Warmerdam  <warmerda at cs46980-c>
+
+	* Added shared library hack to Makefile.
+
+	* Fixed up test scripts to look in ./ for executables.
+
+Wed Feb 16 11:20:29 2000  Frank Warmerdam  <warmerda at gdal.velocet.ca>
+
+	* Release 1.2.7.
+
+	* Modified SHPReadObject() so that will return NULL (type 0) shapes
+	in a sort of sensible way.
+
+Wed Dec 15 08:49:53 1999  Frank Warmerdam  <warmerda at gdal.velocet.ca>
+
+	* Fixed record size written at beginning of records in .shp
+	file.  It was 4 bytes to long (thanks to Mikko Syrja of 3D-system Oy)
+	
+	* Use atof() instead of sscanf() in dbfopen.c, and add stdlib.h.
+
+Mon Dec 13 12:29:01 1999  Frank Warmerdam  <warmerda at gdal.velocet.ca>
+
+	* Added support for uppercase .DBF extention c/o 
+          Dennis Christopher <dennis at avenza.com>
+
+Fri Nov  5 09:12:31 1999  Frank Warmerdam  <warmerda at gdal.velocet.ca>
+
+	* Updated license headers to include the option of use of the code
+	  under the LGPL.
+	  
+1999-09-15 <warmerda at CS46980-B>
+
+	* Added shapelib.dll target to makefile.vc.
+
+Mon May 10 23:19:42 1999  Frank Warmerdam  <warmerda at gdal.velocet.ca>
+
+	* Added candrsn's improvements to extension handling in dbfopen.c
+
+	* Added ``raw tuple'' api to dbfopen.c, still not in dbf_api.html.
+	  From candrsn.
+	
+
+Tue May  4 11:04:31 1999  Frank Warmerdam  <warmerda at gdal.velocet.ca>
+
+	* Prepare 1.2.5 release.
+
+	* Added support for 'F' fields.
+
diff --git a/plugins/importshp/shapelib/LICENSE.LGPL b/plugins/importshp/shapelib/LICENSE.LGPL
new file mode 100644
index 0000000..0b643ac
--- /dev/null
+++ b/plugins/importshp/shapelib/LICENSE.LGPL
@@ -0,0 +1,483 @@
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+                    675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+     Appendix: How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
diff --git a/plugins/importshp/shapelib/dbfopen.c b/plugins/importshp/shapelib/dbfopen.c
new file mode 100644
index 0000000..2554905
--- /dev/null
+++ b/plugins/importshp/shapelib/dbfopen.c
@@ -0,0 +1,1883 @@
+/******************************************************************************
+ * $Id: dbfopen.c,v 1.84 2009-10-29 19:59:48 fwarmerdam Exp $
+ *
+ * Project:  Shapelib
+ * Purpose:  Implementation of .dbf access API documented in dbf_api.html.
+ * Author:   Frank Warmerdam, warmerdam at pobox.com
+ *
+ ******************************************************************************
+ * Copyright (c) 1999, Frank Warmerdam
+ *
+ * This software is available under the following "MIT Style" license,
+ * or at the option of the licensee under the LGPL (see LICENSE.LGPL).  This
+ * option is discussed in more detail in shapelib.html.
+ *
+ * --
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ ******************************************************************************
+ *
+ * $Log: dbfopen.c,v $
+ * Revision 1.84  2009-10-29 19:59:48  fwarmerdam
+ * avoid crash on truncated header (gdal #3093)
+ *
+ * Revision 1.83  2008/11/12 14:28:15  fwarmerdam
+ * DBFCreateField() now works on files with records
+ *
+ * Revision 1.82  2008/11/11 17:47:09  fwarmerdam
+ * added DBFDeleteField() function
+ *
+ * Revision 1.81  2008/01/03 17:48:13  bram
+ * in DBFCreate, use default code page LDID/87 (= 0x57, ANSI)
+ * instead of LDID/3.  This seems to be the same as what ESRI
+ * would be doing by default.
+ *
+ * Revision 1.80  2007/12/30 14:36:39  fwarmerdam
+ * avoid syntax issue with last comment.
+ *
+ * Revision 1.79  2007/12/30 14:35:48  fwarmerdam
+ * Avoid char* / unsigned char* warnings.
+ *
+ * Revision 1.78  2007/12/18 18:28:07  bram
+ * - create hook for client specific atof (bugzilla ticket 1615)
+ * - check for NULL handle before closing cpCPG file, and close after reading.
+ *
+ * Revision 1.77  2007/12/15 20:25:21  bram
+ * dbfopen.c now reads the Code Page information from the DBF file, and exports
+ * this information as a string through the DBFGetCodePage function.  This is 
+ * either the number from the LDID header field ("LDID/<number>") or as the 
+ * content of an accompanying .CPG file.  When creating a DBF file, the code can
+ * be set using DBFCreateEx.
+ *
+ * Revision 1.76  2007/12/12 22:21:32  bram
+ * DBFClose: check for NULL psDBF handle before trying to close it.
+ *
+ * Revision 1.75  2007/12/06 13:58:19  fwarmerdam
+ * make sure file offset calculations are done in as SAOffset
+ *
+ * Revision 1.74  2007/12/06 07:00:25  fwarmerdam
+ * dbfopen now using SAHooks for fileio
+ *
+ * Revision 1.73  2007/09/03 19:48:11  fwarmerdam
+ * move DBFReadAttribute() static dDoubleField into dbfinfo
+ *
+ * Revision 1.72  2007/09/03 19:34:06  fwarmerdam
+ * Avoid use of static tuple buffer in DBFReadTuple()
+ *
+ * Revision 1.71  2006/06/22 14:37:18  fwarmerdam
+ * avoid memory leak if dbfopen fread fails
+ *
+ * Revision 1.70  2006/06/17 17:47:05  fwarmerdam
+ * use calloc() for dbfinfo in DBFCreate
+ *
+ * Revision 1.69  2006/06/17 15:34:32  fwarmerdam
+ * disallow creating fields wider than 255
+ *
+ * Revision 1.68  2006/06/17 15:12:40  fwarmerdam
+ * Fixed C++ style comments.
+ *
+ * Revision 1.67  2006/06/17 00:24:53  fwarmerdam
+ * Don't treat non-zero decimals values as high order byte for length
+ * for strings.  It causes serious corruption for some files.
+ * http://bugzilla.remotesensing.org/show_bug.cgi?id=1202
+ *
+ * Revision 1.66  2006/03/29 18:26:20  fwarmerdam
+ * fixed bug with size of pachfieldtype in dbfcloneempty
+ *
+ * Revision 1.65  2006/02/15 01:14:30  fwarmerdam
+ * added DBFAddNativeFieldType
+ *
+ * Revision 1.64  2006/02/09 00:29:04  fwarmerdam
+ * Changed to put spaces into string fields that are NULL as
+ * per http://bugzilla.maptools.org/show_bug.cgi?id=316.
+ *
+ * Revision 1.63  2006/01/25 15:35:43  fwarmerdam
+ * check success on DBFFlushRecord
+ *
+ * Revision 1.62  2006/01/10 16:28:03  fwarmerdam
+ * Fixed typo in CPLError.
+ *
+ * Revision 1.61  2006/01/10 16:26:29  fwarmerdam
+ * Push loading record buffer into DBFLoadRecord.
+ * Implement CPL error reporting if USE_CPL defined.
+ *
+ * Revision 1.60  2006/01/05 01:27:27  fwarmerdam
+ * added dbf deletion mark/fetch
+ *
+ * Revision 1.59  2005/03/14 15:20:28  fwarmerdam
+ * Fixed last change.
+ *
+ * Revision 1.58  2005/03/14 15:18:54  fwarmerdam
+ * Treat very wide fields with no decimals as double.  This is
+ * more than 32bit integer fields.
+ *
+ * Revision 1.57  2005/02/10 20:16:54  fwarmerdam
+ * Make the pszStringField buffer for DBFReadAttribute() static char [256]
+ * as per bug 306.
+ *
+ * Revision 1.56  2005/02/10 20:07:56  fwarmerdam
+ * Fixed bug 305 in DBFCloneEmpty() - header length problem.
+ *
+ * Revision 1.55  2004/09/26 20:23:46  fwarmerdam
+ * avoid warnings with rcsid and signed/unsigned stuff
+ *
+ * Revision 1.54  2004/09/15 16:26:10  fwarmerdam
+ * Treat all blank numeric fields as null too.
+ */
+
+#include "shapefil.h"
+
+#include <math.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+
+SHP_CVSID("$Id: dbfopen.c,v 1.84 2009-10-29 19:59:48 fwarmerdam Exp $")
+
+#ifndef FALSE
+#  define FALSE		0
+#  define TRUE		1
+#endif
+
+/************************************************************************/
+/*                             SfRealloc()                              */
+/*                                                                      */
+/*      A realloc cover function that will access a NULL pointer as     */
+/*      a valid input.                                                  */
+/************************************************************************/
+
+static void * SfRealloc( void * pMem, int nNewSize )
+
+{
+    if( pMem == NULL )
+        return( (void *) malloc(nNewSize) );
+    else
+        return( (void *) realloc(pMem,nNewSize) );
+}
+
+/************************************************************************/
+/*                           DBFWriteHeader()                           */
+/*                                                                      */
+/*      This is called to write out the file header, and field          */
+/*      descriptions before writing any actual data records.  This      */
+/*      also computes all the DBFDataSet field offset/size/decimals     */
+/*      and so forth values.                                            */
+/************************************************************************/
+
+static void DBFWriteHeader(DBFHandle psDBF)
+
+{
+    unsigned char	abyHeader[XBASE_FLDHDR_SZ];
+    int		i;
+
+    if( !psDBF->bNoHeader )
+        return;
+
+    psDBF->bNoHeader = FALSE;
+
+/* -------------------------------------------------------------------- */
+/*	Initialize the file header information.				*/
+/* -------------------------------------------------------------------- */
+    for( i = 0; i < XBASE_FLDHDR_SZ; i++ )
+        abyHeader[i] = 0;
+
+    abyHeader[0] = 0x03;		/* memo field? - just copying 	*/
+
+    /* write out a dummy date */
+    abyHeader[1] = 95;			/* YY */
+    abyHeader[2] = 7;			/* MM */
+    abyHeader[3] = 26;			/* DD */
+
+    /* record count preset at zero */
+
+    abyHeader[8] = (unsigned char) (psDBF->nHeaderLength % 256);
+    abyHeader[9] = (unsigned char) (psDBF->nHeaderLength / 256);
+    
+    abyHeader[10] = (unsigned char) (psDBF->nRecordLength % 256);
+    abyHeader[11] = (unsigned char) (psDBF->nRecordLength / 256);
+
+    abyHeader[29] = (unsigned char) (psDBF->iLanguageDriver);
+
+/* -------------------------------------------------------------------- */
+/*      Write the initial 32 byte file header, and all the field        */
+/*      descriptions.                                     		*/
+/* -------------------------------------------------------------------- */
+    psDBF->sHooks.FSeek( psDBF->fp, 0, 0 );
+    psDBF->sHooks.FWrite( abyHeader, XBASE_FLDHDR_SZ, 1, psDBF->fp );
+    psDBF->sHooks.FWrite( psDBF->pszHeader, XBASE_FLDHDR_SZ, psDBF->nFields, 
+                          psDBF->fp );
+
+/* -------------------------------------------------------------------- */
+/*      Write out the newline character if there is room for it.        */
+/* -------------------------------------------------------------------- */
+    if( psDBF->nHeaderLength > 32*psDBF->nFields + 32 )
+    {
+        char	cNewline;
+
+        cNewline = 0x0d;
+        psDBF->sHooks.FWrite( &cNewline, 1, 1, psDBF->fp );
+    }
+}
+
+/************************************************************************/
+/*                           DBFFlushRecord()                           */
+/*                                                                      */
+/*      Write out the current record if there is one.                   */
+/************************************************************************/
+
+static int DBFFlushRecord( DBFHandle psDBF )
+
+{
+    SAOffset	nRecordOffset;
+
+    if( psDBF->bCurrentRecordModified && psDBF->nCurrentRecord > -1 )
+    {
+	psDBF->bCurrentRecordModified = FALSE;
+
+	nRecordOffset = 
+            psDBF->nRecordLength * (SAOffset) psDBF->nCurrentRecord 
+            + psDBF->nHeaderLength;
+
+	if( psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ) != 0 
+            || psDBF->sHooks.FWrite( psDBF->pszCurrentRecord, 
+                                     psDBF->nRecordLength, 
+                                     1, psDBF->fp ) != 1 )
+        {
+#ifdef USE_CPL
+            CPLError( CE_Failure, CPLE_FileIO, 
+                      "Failure writing DBF record %d.", 
+                      psDBF->nCurrentRecord );
+#else           
+            fprintf( stderr, "Failure writing DBF record %d.", 
+                     psDBF->nCurrentRecord );
+#endif
+            return FALSE;
+        }
+    }
+
+    return TRUE;
+}
+
+/************************************************************************/
+/*                           DBFLoadRecord()                            */
+/************************************************************************/
+
+static int DBFLoadRecord( DBFHandle psDBF, int iRecord )
+
+{
+    if( psDBF->nCurrentRecord != iRecord )
+    {
+        SAOffset nRecordOffset;
+
+	if( !DBFFlushRecord( psDBF ) )
+            return FALSE;
+
+	nRecordOffset = 
+            psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength;
+
+	if( psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, SEEK_SET ) != 0 )
+        {
+#ifdef USE_CPL
+            CPLError( CE_Failure, CPLE_FileIO,
+                      "fseek(%ld) failed on DBF file.\n",
+                      (long) nRecordOffset );
+#else
+            fprintf( stderr, "fseek(%ld) failed on DBF file.\n",
+                     (long) nRecordOffset );
+#endif
+            return FALSE;
+        }
+
+	if( psDBF->sHooks.FRead( psDBF->pszCurrentRecord, 
+                                 psDBF->nRecordLength, 1, psDBF->fp ) != 1 )
+        {
+#ifdef USE_CPL
+            CPLError( CE_Failure, CPLE_FileIO, 
+                      "fread(%d) failed on DBF file.\n",
+                      psDBF->nRecordLength );
+#else
+            fprintf( stderr, "fread(%d) failed on DBF file.\n",
+                     psDBF->nRecordLength );
+#endif
+            return FALSE;
+        }
+
+	psDBF->nCurrentRecord = iRecord;
+    }
+
+    return TRUE;
+}
+
+/************************************************************************/
+/*                          DBFUpdateHeader()                           */
+/************************************************************************/
+
+void SHPAPI_CALL
+DBFUpdateHeader( DBFHandle psDBF )
+
+{
+    unsigned char		abyFileHeader[32];
+
+    if( psDBF->bNoHeader )
+        DBFWriteHeader( psDBF );
+
+    DBFFlushRecord( psDBF );
+
+    psDBF->sHooks.FSeek( psDBF->fp, 0, 0 );
+    psDBF->sHooks.FRead( abyFileHeader, 32, 1, psDBF->fp );
+    
+    abyFileHeader[4] = (unsigned char) (psDBF->nRecords % 256);
+    abyFileHeader[5] = (unsigned char) ((psDBF->nRecords/256) % 256);
+    abyFileHeader[6] = (unsigned char) ((psDBF->nRecords/(256*256)) % 256);
+    abyFileHeader[7] = (unsigned char) ((psDBF->nRecords/(256*256*256)) % 256);
+    
+    psDBF->sHooks.FSeek( psDBF->fp, 0, 0 );
+    psDBF->sHooks.FWrite( abyFileHeader, 32, 1, psDBF->fp );
+
+    psDBF->sHooks.FFlush( psDBF->fp );
+}
+
+/************************************************************************/
+/*                              DBFOpen()                               */
+/*                                                                      */
+/*      Open a .dbf file.                                               */
+/************************************************************************/
+   
+DBFHandle SHPAPI_CALL
+DBFOpen( const char * pszFilename, const char * pszAccess )
+
+{
+    SAHooks sHooks;
+
+    SASetupDefaultHooks( &sHooks );
+
+    return DBFOpenLL( pszFilename, pszAccess, &sHooks );
+}
+
+/************************************************************************/
+/*                              DBFOpen()                               */
+/*                                                                      */
+/*      Open a .dbf file.                                               */
+/************************************************************************/
+   
+DBFHandle SHPAPI_CALL
+DBFOpenLL( const char * pszFilename, const char * pszAccess, SAHooks *psHooks )
+
+{
+    DBFHandle		psDBF;
+    SAFile		pfCPG;
+    unsigned char	*pabyBuf;
+    int			nFields, nHeadLen, iField, i;
+    char		*pszBasename, *pszFullname;
+    int                 nBufSize = 500;
+
+/* -------------------------------------------------------------------- */
+/*      We only allow the access strings "rb" and "r+".                  */
+/* -------------------------------------------------------------------- */
+    if( strcmp(pszAccess,"r") != 0 && strcmp(pszAccess,"r+") != 0 
+        && strcmp(pszAccess,"rb") != 0 && strcmp(pszAccess,"rb+") != 0
+        && strcmp(pszAccess,"r+b") != 0 )
+        return( NULL );
+
+    if( strcmp(pszAccess,"r") == 0 )
+        pszAccess = "rb";
+ 
+    if( strcmp(pszAccess,"r+") == 0 )
+        pszAccess = "rb+";
+
+/* -------------------------------------------------------------------- */
+/*	Compute the base (layer) name.  If there is any extension	*/
+/*	on the passed in filename we will strip it off.			*/
+/* -------------------------------------------------------------------- */
+    pszBasename = (char *) malloc(strlen(pszFilename)+5);
+    strcpy( pszBasename, pszFilename );
+    for( i = strlen(pszBasename)-1; 
+	 i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'
+	       && pszBasename[i] != '\\';
+	 i-- ) {}
+
+    if( pszBasename[i] == '.' )
+        pszBasename[i] = '\0';
+
+    pszFullname = (char *) malloc(strlen(pszBasename) + 5);
+    sprintf( pszFullname, "%s.dbf", pszBasename );
+        
+    psDBF = (DBFHandle) calloc( 1, sizeof(DBFInfo) );
+    psDBF->fp = psHooks->FOpen( pszFullname, pszAccess );
+    memcpy( &(psDBF->sHooks), psHooks, sizeof(SAHooks) );
+
+    if( psDBF->fp == NULL )
+    {
+        sprintf( pszFullname, "%s.DBF", pszBasename );
+        psDBF->fp = psDBF->sHooks.FOpen(pszFullname, pszAccess );
+    }
+
+    sprintf( pszFullname, "%s.cpg", pszBasename );
+    pfCPG = psHooks->FOpen( pszFullname, "r" );
+    if( pfCPG == NULL )
+    {
+        sprintf( pszFullname, "%s.CPG", pszBasename );
+        pfCPG = psHooks->FOpen( pszFullname, "r" );
+    }
+
+    free( pszBasename );
+    free( pszFullname );
+    
+    if( psDBF->fp == NULL )
+    {
+        free( psDBF );
+        if( pfCPG ) psHooks->FClose( pfCPG );
+        return( NULL );
+    }
+
+    psDBF->bNoHeader = FALSE;
+    psDBF->nCurrentRecord = -1;
+    psDBF->bCurrentRecordModified = FALSE;
+
+/* -------------------------------------------------------------------- */
+/*  Read Table Header info                                              */
+/* -------------------------------------------------------------------- */
+    pabyBuf = (unsigned char *) malloc(nBufSize);
+    if( psDBF->sHooks.FRead( pabyBuf, 32, 1, psDBF->fp ) != 1 )
+    {
+        psDBF->sHooks.FClose( psDBF->fp );
+        if( pfCPG ) psDBF->sHooks.FClose( pfCPG );
+        free( pabyBuf );
+        free( psDBF );
+        return NULL;
+    }
+
+    psDBF->nRecords = 
+     pabyBuf[4] + pabyBuf[5]*256 + pabyBuf[6]*256*256 + pabyBuf[7]*256*256*256;
+
+    psDBF->nHeaderLength = nHeadLen = pabyBuf[8] + pabyBuf[9]*256;
+    psDBF->nRecordLength = pabyBuf[10] + pabyBuf[11]*256;
+    psDBF->iLanguageDriver = pabyBuf[29];
+
+    if (nHeadLen < 32)
+    {
+        psDBF->sHooks.FClose( psDBF->fp );
+        if( pfCPG ) psDBF->sHooks.FClose( pfCPG );
+        free( pabyBuf );
+        free( psDBF );
+        return NULL;
+    }
+
+    psDBF->nFields = nFields = (nHeadLen - 32) / 32;
+
+    psDBF->pszCurrentRecord = (char *) malloc(psDBF->nRecordLength);
+
+/* -------------------------------------------------------------------- */
+/*  Figure out the code page from the LDID and CPG                      */
+/* -------------------------------------------------------------------- */
+
+    psDBF->pszCodePage = NULL;
+    if( pfCPG )
+    {
+        size_t n;
+        char *buffer = (char *) pabyBuf;
+        buffer[0] = '\0';
+        psDBF->sHooks.FRead( pabyBuf, nBufSize - 1, 1, pfCPG );
+        n = strcspn( (char *) pabyBuf, "\n\r" );
+        if( n > 0 )
+        {
+            pabyBuf[n] = '\0';
+            psDBF->pszCodePage = (char *) malloc(n + 1);
+            memcpy( psDBF->pszCodePage, pabyBuf, n + 1 );
+        }
+		psDBF->sHooks.FClose( pfCPG );
+    }
+    if( psDBF->pszCodePage == NULL && pabyBuf[29] != 0 )
+    {
+        sprintf( (char *) pabyBuf, "LDID/%d", psDBF->iLanguageDriver );
+        psDBF->pszCodePage = (char *) malloc(strlen((char*)pabyBuf) + 1);
+        strcpy( psDBF->pszCodePage, (char *) pabyBuf );
+    }
+
+/* -------------------------------------------------------------------- */
+/*  Read in Field Definitions                                           */
+/* -------------------------------------------------------------------- */
+    
+    pabyBuf = (unsigned char *) SfRealloc(pabyBuf,nHeadLen);
+    psDBF->pszHeader = (char *) pabyBuf;
+
+    psDBF->sHooks.FSeek( psDBF->fp, 32, 0 );
+    if( psDBF->sHooks.FRead( pabyBuf, nHeadLen-32, 1, psDBF->fp ) != 1 )
+    {
+        psDBF->sHooks.FClose( psDBF->fp );
+        free( pabyBuf );
+        free( psDBF->pszCurrentRecord );
+        free( psDBF );
+        return NULL;
+    }
+
+    psDBF->panFieldOffset = (int *) malloc(sizeof(int) * nFields);
+    psDBF->panFieldSize = (int *) malloc(sizeof(int) * nFields);
+    psDBF->panFieldDecimals = (int *) malloc(sizeof(int) * nFields);
+    psDBF->pachFieldType = (char *) malloc(sizeof(char) * nFields);
+
+    for( iField = 0; iField < nFields; iField++ )
+    {
+	unsigned char		*pabyFInfo;
+
+	pabyFInfo = pabyBuf+iField*32;
+
+	if( pabyFInfo[11] == 'N' || pabyFInfo[11] == 'F' )
+	{
+	    psDBF->panFieldSize[iField] = pabyFInfo[16];
+	    psDBF->panFieldDecimals[iField] = pabyFInfo[17];
+	}
+	else
+	{
+	    psDBF->panFieldSize[iField] = pabyFInfo[16];
+	    psDBF->panFieldDecimals[iField] = 0;
+
+/*
+** The following seemed to be used sometimes to handle files with long
+** string fields, but in other cases (such as bug 1202) the decimals field
+** just seems to indicate some sort of preferred formatting, not very
+** wide fields.  So I have disabled this code.  FrankW.
+	    psDBF->panFieldSize[iField] = pabyFInfo[16] + pabyFInfo[17]*256;
+	    psDBF->panFieldDecimals[iField] = 0;
+*/
+	}
+
+	psDBF->pachFieldType[iField] = (char) pabyFInfo[11];
+	if( iField == 0 )
+	    psDBF->panFieldOffset[iField] = 1;
+	else
+	    psDBF->panFieldOffset[iField] = 
+	      psDBF->panFieldOffset[iField-1] + psDBF->panFieldSize[iField-1];
+    }
+
+    return( psDBF );
+}
+
+/************************************************************************/
+/*                              DBFClose()                              */
+/************************************************************************/
+
+void SHPAPI_CALL
+DBFClose(DBFHandle psDBF)
+{
+    if( psDBF == NULL )
+        return;
+
+/* -------------------------------------------------------------------- */
+/*      Write out header if not already written.                        */
+/* -------------------------------------------------------------------- */
+    if( psDBF->bNoHeader )
+        DBFWriteHeader( psDBF );
+
+    DBFFlushRecord( psDBF );
+
+/* -------------------------------------------------------------------- */
+/*      Update last access date, and number of records if we have	*/
+/*	write access.                					*/
+/* -------------------------------------------------------------------- */
+    if( psDBF->bUpdated )
+        DBFUpdateHeader( psDBF );
+
+/* -------------------------------------------------------------------- */
+/*      Close, and free resources.                                      */
+/* -------------------------------------------------------------------- */
+    psDBF->sHooks.FClose( psDBF->fp );
+
+    if( psDBF->panFieldOffset != NULL )
+    {
+        free( psDBF->panFieldOffset );
+        free( psDBF->panFieldSize );
+        free( psDBF->panFieldDecimals );
+        free( psDBF->pachFieldType );
+    }
+
+    if( psDBF->pszWorkField != NULL )
+        free( psDBF->pszWorkField );
+
+    free( psDBF->pszHeader );
+    free( psDBF->pszCurrentRecord );
+    free( psDBF->pszCodePage );
+
+    free( psDBF );
+}
+
+/************************************************************************/
+/*                             DBFCreate()                              */
+/*                                                                      */
+/* Create a new .dbf file with default code page LDID/87 (0x57)         */
+/************************************************************************/
+
+DBFHandle SHPAPI_CALL
+DBFCreate( const char * pszFilename )
+
+{
+    return DBFCreateEx( pszFilename, "LDID/87" ); // 0x57
+}
+
+/************************************************************************/
+/*                            DBFCreateEx()                             */
+/*                                                                      */
+/*      Create a new .dbf file.                                         */
+/************************************************************************/
+
+DBFHandle SHPAPI_CALL
+DBFCreateEx( const char * pszFilename, const char* pszCodePage )
+
+{
+    SAHooks sHooks;
+
+    SASetupDefaultHooks( &sHooks );
+
+    return DBFCreateLL( pszFilename, pszCodePage , &sHooks );
+}
+
+/************************************************************************/
+/*                             DBFCreate()                              */
+/*                                                                      */
+/*      Create a new .dbf file.                                         */
+/************************************************************************/
+
+DBFHandle SHPAPI_CALL
+DBFCreateLL( const char * pszFilename, const char * pszCodePage, SAHooks *psHooks )
+
+{
+    DBFHandle	psDBF;
+    SAFile	fp;
+    char	*pszFullname, *pszBasename;
+    int		i, ldid = -1;
+    char chZero = '\0';
+
+/* -------------------------------------------------------------------- */
+/*	Compute the base (layer) name.  If there is any extension	*/
+/*	on the passed in filename we will strip it off.			*/
+/* -------------------------------------------------------------------- */
+    pszBasename = (char *) malloc(strlen(pszFilename)+5);
+    strcpy( pszBasename, pszFilename );
+    for( i = strlen(pszBasename)-1; 
+	 i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'
+	       && pszBasename[i] != '\\';
+	 i-- ) {}
+
+    if( pszBasename[i] == '.' )
+        pszBasename[i] = '\0';
+
+    pszFullname = (char *) malloc(strlen(pszBasename) + 5);
+    sprintf( pszFullname, "%s.dbf", pszBasename );
+
+/* -------------------------------------------------------------------- */
+/*      Create the file.                                                */
+/* -------------------------------------------------------------------- */
+    fp = psHooks->FOpen( pszFullname, "wb" );
+    if( fp == NULL )
+        return( NULL );
+    
+    psHooks->FWrite( &chZero, 1, 1, fp );
+    psHooks->FClose( fp );
+
+    fp = psHooks->FOpen( pszFullname, "rb+" );
+    if( fp == NULL )
+        return( NULL );
+
+
+    sprintf( pszFullname, "%s.cpg", pszBasename );
+    if( pszCodePage != NULL )
+    {
+        if( strncmp( pszCodePage, "LDID/", 5 ) == 0 )
+        {
+            ldid = atoi( pszCodePage + 5 );
+            if( ldid > 255 )
+                ldid = -1; // don't use 0 to indicate out of range as LDID/0 is a valid one
+        }
+        if( ldid < 0 )
+        {
+            SAFile fpCPG = psHooks->FOpen( pszFullname, "w" );
+            psHooks->FWrite( (char*) pszCodePage, strlen(pszCodePage), 1, fpCPG );
+            psHooks->FClose( fpCPG );
+        }
+    }
+    if( pszCodePage == NULL || ldid >= 0 )
+    {
+        psHooks->Remove( pszFullname );
+    }
+
+    free( pszBasename );
+    free( pszFullname );
+
+/* -------------------------------------------------------------------- */
+/*	Create the info structure.					*/
+/* -------------------------------------------------------------------- */
+    psDBF = (DBFHandle) calloc(1,sizeof(DBFInfo));
+
+    memcpy( &(psDBF->sHooks), psHooks, sizeof(SAHooks) );
+    psDBF->fp = fp;
+    psDBF->nRecords = 0;
+    psDBF->nFields = 0;
+    psDBF->nRecordLength = 1;
+    psDBF->nHeaderLength = 33;
+    
+    psDBF->panFieldOffset = NULL;
+    psDBF->panFieldSize = NULL;
+    psDBF->panFieldDecimals = NULL;
+    psDBF->pachFieldType = NULL;
+    psDBF->pszHeader = NULL;
+
+    psDBF->nCurrentRecord = -1;
+    psDBF->bCurrentRecordModified = FALSE;
+    psDBF->pszCurrentRecord = NULL;
+
+    psDBF->bNoHeader = TRUE;
+
+    psDBF->iLanguageDriver = ldid > 0 ? ldid : 0;
+    psDBF->pszCodePage = NULL;
+    if( pszCodePage )
+    {
+        psDBF->pszCodePage = (char * ) malloc( strlen(pszCodePage) + 1 );
+        strcpy( psDBF->pszCodePage, pszCodePage );
+    }
+
+    return( psDBF );
+}
+
+/************************************************************************/
+/*                            DBFAddField()                             */
+/*                                                                      */
+/*      Add a field to a newly created .dbf or to an existing one       */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFAddField(DBFHandle psDBF, const char * pszFieldName, 
+            DBFFieldType eType, int nWidth, int nDecimals )
+
+{
+    char chNativeType = 'C';
+
+    if( eType == FTLogical )
+        chNativeType = 'L';
+    else if( eType == FTString )
+        chNativeType = 'C';
+    else
+        chNativeType = 'N';
+
+    return DBFAddNativeFieldType( psDBF, pszFieldName, chNativeType, 
+                                  nWidth, nDecimals );
+}
+
+/************************************************************************/
+/*                            DBFAddField()                             */
+/*                                                                      */
+/*      Add a field to a newly created .dbf file before any records     */
+/*      are written.                                                    */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFAddNativeFieldType(DBFHandle psDBF, const char * pszFieldName, 
+                      char chType, int nWidth, int nDecimals )
+
+{
+    char	*pszFInfo;
+    int		i;
+    int         nOldRecordLength, nOldHeaderLength;
+    char        *pszRecord;
+    char        chFieldFill;
+    SAOffset    nRecordOffset;
+
+/* -------------------------------------------------------------------- */
+/*      Do some checking to ensure we can add records to this file.     */
+/* -------------------------------------------------------------------- */
+    if( nWidth < 1 )
+        return -1;
+
+    if( nWidth > 255 )
+        nWidth = 255;
+
+    nOldRecordLength = psDBF->nRecordLength;
+    nOldHeaderLength = psDBF->nHeaderLength;
+
+/* -------------------------------------------------------------------- */
+/*      SfRealloc all the arrays larger to hold the additional field      */
+/*      information.                                                    */
+/* -------------------------------------------------------------------- */
+    psDBF->nFields++;
+
+    psDBF->panFieldOffset = (int *) 
+        SfRealloc( psDBF->panFieldOffset, sizeof(int) * psDBF->nFields );
+
+    psDBF->panFieldSize = (int *) 
+        SfRealloc( psDBF->panFieldSize, sizeof(int) * psDBF->nFields );
+
+    psDBF->panFieldDecimals = (int *) 
+        SfRealloc( psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields );
+
+    psDBF->pachFieldType = (char *) 
+        SfRealloc( psDBF->pachFieldType, sizeof(char) * psDBF->nFields );
+
+/* -------------------------------------------------------------------- */
+/*      Assign the new field information fields.                        */
+/* -------------------------------------------------------------------- */
+    psDBF->panFieldOffset[psDBF->nFields-1] = psDBF->nRecordLength;
+    psDBF->nRecordLength += nWidth;
+    psDBF->panFieldSize[psDBF->nFields-1] = nWidth;
+    psDBF->panFieldDecimals[psDBF->nFields-1] = nDecimals;
+    psDBF->pachFieldType[psDBF->nFields-1] = chType;
+
+/* -------------------------------------------------------------------- */
+/*      Extend the required header information.                         */
+/* -------------------------------------------------------------------- */
+    psDBF->nHeaderLength += 32;
+    psDBF->bUpdated = FALSE;
+
+    psDBF->pszHeader = (char *) SfRealloc(psDBF->pszHeader,psDBF->nFields*32);
+
+    pszFInfo = psDBF->pszHeader + 32 * (psDBF->nFields-1);
+
+    for( i = 0; i < 32; i++ )
+        pszFInfo[i] = '\0';
+
+    if( (int) strlen(pszFieldName) < 10 )
+        strncpy( pszFInfo, pszFieldName, strlen(pszFieldName));
+    else
+        strncpy( pszFInfo, pszFieldName, 10);
+
+    pszFInfo[11] = psDBF->pachFieldType[psDBF->nFields-1];
+
+    if( chType == 'C' )
+    {
+        pszFInfo[16] = (unsigned char) (nWidth % 256);
+        pszFInfo[17] = (unsigned char) (nWidth / 256);
+    }
+    else
+    {
+        pszFInfo[16] = (unsigned char) nWidth;
+        pszFInfo[17] = (unsigned char) nDecimals;
+    }
+    
+/* -------------------------------------------------------------------- */
+/*      Make the current record buffer appropriately larger.            */
+/* -------------------------------------------------------------------- */
+    psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord,
+                                                 psDBF->nRecordLength);
+
+    /* we're done if dealing with new .dbf */
+    if( psDBF->bNoHeader )
+        return( psDBF->nFields - 1 );
+
+/* -------------------------------------------------------------------- */
+/*      For existing .dbf file, shift records                           */
+/* -------------------------------------------------------------------- */
+
+    /* alloc record */
+    pszRecord = (char *) malloc(sizeof(char) * psDBF->nRecordLength);
+
+    switch (chType)
+    {
+      case 'N':
+      case 'F':
+        chFieldFill = '*';
+        break;
+      case 'D':
+        chFieldFill = '0';
+        break;
+      case 'L':
+       chFieldFill = '?';
+       break;
+      default:
+       chFieldFill = ' ';
+       break;
+    }
+
+    for (i = psDBF->nRecords-1; i >= 0; --i)
+    {
+        nRecordOffset = nOldRecordLength * (SAOffset) i + nOldHeaderLength;
+
+        /* load record */
+        psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
+        psDBF->sHooks.FRead( pszRecord, nOldRecordLength, 1, psDBF->fp );
+
+        /* set new field's value to NULL */
+        memset(pszRecord + nOldRecordLength, chFieldFill, nWidth);
+
+        nRecordOffset = psDBF->nRecordLength * (SAOffset) i + psDBF->nHeaderLength;
+
+        /* move record to the new place*/
+        psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
+        psDBF->sHooks.FWrite( pszRecord, psDBF->nRecordLength, 1, psDBF->fp );
+    }
+
+    /* free record */
+    free(pszRecord);
+
+    /* force update of header with new header, record length and new field */
+    psDBF->bNoHeader = TRUE;
+    DBFUpdateHeader( psDBF );
+
+    return( psDBF->nFields-1 );
+}
+
+/************************************************************************/
+/*                          DBFReadAttribute()                          */
+/*                                                                      */
+/*      Read one of the attribute fields of a record.                   */
+/************************************************************************/
+
+static void *DBFReadAttribute(DBFHandle psDBF, int hEntity, int iField,
+                              char chReqType )
+
+{
+    unsigned char	*pabyRec;
+    void	*pReturnField = NULL;
+
+/* -------------------------------------------------------------------- */
+/*      Verify selection.                                               */
+/* -------------------------------------------------------------------- */
+    if( hEntity < 0 || hEntity >= psDBF->nRecords )
+        return( NULL );
+
+    if( iField < 0 || iField >= psDBF->nFields )
+        return( NULL );
+
+/* -------------------------------------------------------------------- */
+/*	Have we read the record?					*/
+/* -------------------------------------------------------------------- */
+    if( !DBFLoadRecord( psDBF, hEntity ) )
+        return NULL;
+
+    pabyRec = (unsigned char *) psDBF->pszCurrentRecord;
+
+/* -------------------------------------------------------------------- */
+/*      Ensure we have room to extract the target field.                */
+/* -------------------------------------------------------------------- */
+    if( psDBF->panFieldSize[iField] >= psDBF->nWorkFieldLength )
+    {
+        psDBF->nWorkFieldLength = psDBF->panFieldSize[iField] + 100;
+        if( psDBF->pszWorkField == NULL )
+            psDBF->pszWorkField = (char *) malloc(psDBF->nWorkFieldLength);
+        else
+            psDBF->pszWorkField = (char *) realloc(psDBF->pszWorkField,
+                                                   psDBF->nWorkFieldLength);
+    }
+
+/* -------------------------------------------------------------------- */
+/*	Extract the requested field.					*/
+/* -------------------------------------------------------------------- */
+    strncpy( psDBF->pszWorkField,
+	     ((const char *) pabyRec) + psDBF->panFieldOffset[iField],
+	     psDBF->panFieldSize[iField] );
+    psDBF->pszWorkField[psDBF->panFieldSize[iField]] = '\0';
+
+    pReturnField = psDBF->pszWorkField;
+
+/* -------------------------------------------------------------------- */
+/*      Decode the field.                                               */
+/* -------------------------------------------------------------------- */
+    if( chReqType == 'N' )
+    {
+        psDBF->dfDoubleField = psDBF->sHooks.Atof(psDBF->pszWorkField);
+
+	pReturnField = &(psDBF->dfDoubleField);
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Should we trim white space off the string attribute value?      */
+/* -------------------------------------------------------------------- */
+#ifdef TRIM_DBF_WHITESPACE
+    else
+    {
+        char	*pchSrc, *pchDst;
+
+        pchDst = pchSrc = psDBF->pszWorkField;
+        while( *pchSrc == ' ' )
+            pchSrc++;
+
+        while( *pchSrc != '\0' )
+            *(pchDst++) = *(pchSrc++);
+        *pchDst = '\0';
+
+        while( pchDst != psDBF->pszWorkField && *(--pchDst) == ' ' )
+            *pchDst = '\0';
+    }
+#endif
+    
+    return( pReturnField );
+}
+
+/************************************************************************/
+/*                        DBFReadIntAttribute()                         */
+/*                                                                      */
+/*      Read an integer attribute.                                      */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFReadIntegerAttribute( DBFHandle psDBF, int iRecord, int iField )
+
+{
+    double	*pdValue;
+
+    pdValue = (double *) DBFReadAttribute( psDBF, iRecord, iField, 'N' );
+
+    if( pdValue == NULL )
+        return 0;
+    else
+        return( (int) *pdValue );
+}
+
+/************************************************************************/
+/*                        DBFReadDoubleAttribute()                      */
+/*                                                                      */
+/*      Read a double attribute.                                        */
+/************************************************************************/
+
+double SHPAPI_CALL
+DBFReadDoubleAttribute( DBFHandle psDBF, int iRecord, int iField )
+
+{
+    double	*pdValue;
+
+    pdValue = (double *) DBFReadAttribute( psDBF, iRecord, iField, 'N' );
+
+    if( pdValue == NULL )
+        return 0.0;
+    else
+        return( *pdValue );
+}
+
+/************************************************************************/
+/*                        DBFReadStringAttribute()                      */
+/*                                                                      */
+/*      Read a string attribute.                                        */
+/************************************************************************/
+
+const char SHPAPI_CALL1(*)
+DBFReadStringAttribute( DBFHandle psDBF, int iRecord, int iField )
+
+{
+    return( (const char *) DBFReadAttribute( psDBF, iRecord, iField, 'C' ) );
+}
+
+/************************************************************************/
+/*                        DBFReadLogicalAttribute()                     */
+/*                                                                      */
+/*      Read a logical attribute.                                       */
+/************************************************************************/
+
+const char SHPAPI_CALL1(*)
+DBFReadLogicalAttribute( DBFHandle psDBF, int iRecord, int iField )
+
+{
+    return( (const char *) DBFReadAttribute( psDBF, iRecord, iField, 'L' ) );
+}
+
+/************************************************************************/
+/*                         DBFIsAttributeNULL()                         */
+/*                                                                      */
+/*      Return TRUE if value for field is NULL.                         */
+/*                                                                      */
+/*      Contributed by Jim Matthews.                                    */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFIsAttributeNULL( DBFHandle psDBF, int iRecord, int iField )
+
+{
+    const char	*pszValue;
+    int i;
+
+    pszValue = DBFReadStringAttribute( psDBF, iRecord, iField );
+
+    if( pszValue == NULL )
+        return TRUE;
+
+    switch(psDBF->pachFieldType[iField])
+    {
+      case 'N':
+      case 'F':
+        /*
+        ** We accept all asterisks or all blanks as NULL 
+        ** though according to the spec I think it should be all 
+        ** asterisks. 
+        */
+        if( pszValue[0] == '*' )
+            return TRUE;
+
+        for( i = 0; pszValue[i] != '\0'; i++ )
+        {
+            if( pszValue[i] != ' ' )
+                return FALSE;
+        }
+        return TRUE;
+
+      case 'D':
+        /* NULL date fields have value "00000000" */
+        return strncmp(pszValue,"00000000",8) == 0;
+
+      case 'L':
+        /* NULL boolean fields have value "?" */ 
+        return pszValue[0] == '?';
+
+      default:
+        /* empty string fields are considered NULL */
+        return strlen(pszValue) == 0;
+    }
+}
+
+/************************************************************************/
+/*                          DBFGetFieldCount()                          */
+/*                                                                      */
+/*      Return the number of fields in this table.                      */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFGetFieldCount( DBFHandle psDBF )
+
+{
+    return( psDBF->nFields );
+}
+
+/************************************************************************/
+/*                         DBFGetRecordCount()                          */
+/*                                                                      */
+/*      Return the number of records in this table.                     */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFGetRecordCount( DBFHandle psDBF )
+
+{
+    return( psDBF->nRecords );
+}
+
+/************************************************************************/
+/*                          DBFGetFieldInfo()                           */
+/*                                                                      */
+/*      Return any requested information about the field.               */
+/************************************************************************/
+
+DBFFieldType SHPAPI_CALL
+DBFGetFieldInfo( DBFHandle psDBF, int iField, char * pszFieldName,
+                 int * pnWidth, int * pnDecimals )
+
+{
+    if( iField < 0 || iField >= psDBF->nFields )
+        return( FTInvalid );
+
+    if( pnWidth != NULL )
+        *pnWidth = psDBF->panFieldSize[iField];
+
+    if( pnDecimals != NULL )
+        *pnDecimals = psDBF->panFieldDecimals[iField];
+
+    if( pszFieldName != NULL )
+    {
+	int	i;
+
+	strncpy( pszFieldName, (char *) psDBF->pszHeader+iField*32, 11 );
+	pszFieldName[11] = '\0';
+	for( i = 10; i > 0 && pszFieldName[i] == ' '; i-- )
+	    pszFieldName[i] = '\0';
+    }
+
+    if ( psDBF->pachFieldType[iField] == 'L' )
+	return( FTLogical);
+
+    else if( psDBF->pachFieldType[iField] == 'N' 
+             || psDBF->pachFieldType[iField] == 'F' )
+    {
+	if( psDBF->panFieldDecimals[iField] > 0 
+            || psDBF->panFieldSize[iField] > 10 )
+	    return( FTDouble );
+	else
+	    return( FTInteger );
+    }
+    else
+    {
+	return( FTString );
+    }
+}
+
+/************************************************************************/
+/*                         DBFWriteAttribute()                          */
+/*									*/
+/*	Write an attribute record to the file.				*/
+/************************************************************************/
+
+static int DBFWriteAttribute(DBFHandle psDBF, int hEntity, int iField,
+			     void * pValue )
+
+{
+    int	       	i, j, nRetResult = TRUE;
+    unsigned char	*pabyRec;
+    char	szSField[400], szFormat[20];
+
+/* -------------------------------------------------------------------- */
+/*	Is this a valid record?						*/
+/* -------------------------------------------------------------------- */
+    if( hEntity < 0 || hEntity > psDBF->nRecords )
+        return( FALSE );
+
+    if( psDBF->bNoHeader )
+        DBFWriteHeader(psDBF);
+
+/* -------------------------------------------------------------------- */
+/*      Is this a brand new record?                                     */
+/* -------------------------------------------------------------------- */
+    if( hEntity == psDBF->nRecords )
+    {
+	if( !DBFFlushRecord( psDBF ) )
+            return FALSE;
+
+	psDBF->nRecords++;
+	for( i = 0; i < psDBF->nRecordLength; i++ )
+	    psDBF->pszCurrentRecord[i] = ' ';
+
+	psDBF->nCurrentRecord = hEntity;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Is this an existing record, but different than the last one     */
+/*      we accessed?                                                    */
+/* -------------------------------------------------------------------- */
+    if( !DBFLoadRecord( psDBF, hEntity ) )
+        return FALSE;
+
+    pabyRec = (unsigned char *) psDBF->pszCurrentRecord;
+
+    psDBF->bCurrentRecordModified = TRUE;
+    psDBF->bUpdated = TRUE;
+
+/* -------------------------------------------------------------------- */
+/*      Translate NULL value to valid DBF file representation.          */
+/*                                                                      */
+/*      Contributed by Jim Matthews.                                    */
+/* -------------------------------------------------------------------- */
+    if( pValue == NULL )
+    {
+        switch(psDBF->pachFieldType[iField])
+        {
+          case 'N':
+          case 'F':
+	    /* NULL numeric fields have value "****************" */
+            memset( (char *) (pabyRec+psDBF->panFieldOffset[iField]), '*', 
+                    psDBF->panFieldSize[iField] );
+            break;
+
+          case 'D':
+	    /* NULL date fields have value "00000000" */
+            memset( (char *) (pabyRec+psDBF->panFieldOffset[iField]), '0', 
+                    psDBF->panFieldSize[iField] );
+            break;
+
+          case 'L':
+	    /* NULL boolean fields have value "?" */ 
+            memset( (char *) (pabyRec+psDBF->panFieldOffset[iField]), '?', 
+                    psDBF->panFieldSize[iField] );
+            break;
+
+          default:
+            /* empty string fields are considered NULL */
+            memset( (char *) (pabyRec+psDBF->panFieldOffset[iField]), ' ', 
+                    psDBF->panFieldSize[iField] );
+            break;
+        }
+        return TRUE;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Assign all the record fields.                                   */
+/* -------------------------------------------------------------------- */
+    switch( psDBF->pachFieldType[iField] )
+    {
+      case 'D':
+      case 'N':
+      case 'F':
+	if( psDBF->panFieldDecimals[iField] == 0 )
+	{
+            int		nWidth = psDBF->panFieldSize[iField];
+
+            if( (int) sizeof(szSField)-2 < nWidth )
+                nWidth = sizeof(szSField)-2;
+
+	    sprintf( szFormat, "%%%dd", nWidth );
+	    sprintf(szSField, szFormat, (int) *((double *) pValue) );
+	    if( (int)strlen(szSField) > psDBF->panFieldSize[iField] )
+            {
+	        szSField[psDBF->panFieldSize[iField]] = '\0';
+                nRetResult = FALSE;
+            }
+
+	    strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]),
+		    szSField, strlen(szSField) );
+	}
+	else
+	{
+            int		nWidth = psDBF->panFieldSize[iField];
+
+            if( (int) sizeof(szSField)-2 < nWidth )
+                nWidth = sizeof(szSField)-2;
+
+	    sprintf( szFormat, "%%%d.%df", 
+                     nWidth, psDBF->panFieldDecimals[iField] );
+	    sprintf(szSField, szFormat, *((double *) pValue) );
+	    if( (int) strlen(szSField) > psDBF->panFieldSize[iField] )
+            {
+	        szSField[psDBF->panFieldSize[iField]] = '\0';
+                nRetResult = FALSE;
+            }
+	    strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]),
+		    szSField, strlen(szSField) );
+	}
+	break;
+
+      case 'L':
+        if (psDBF->panFieldSize[iField] >= 1  && 
+            (*(char*)pValue == 'F' || *(char*)pValue == 'T'))
+            *(pabyRec+psDBF->panFieldOffset[iField]) = *(char*)pValue;
+        break;
+
+      default:
+	if( (int) strlen((char *) pValue) > psDBF->panFieldSize[iField] )
+        {
+	    j = psDBF->panFieldSize[iField];
+            nRetResult = FALSE;
+        }
+	else
+        {
+            memset( pabyRec+psDBF->panFieldOffset[iField], ' ',
+                    psDBF->panFieldSize[iField] );
+	    j = strlen((char *) pValue);
+        }
+
+	strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]),
+		(char *) pValue, j );
+	break;
+    }
+
+    return( nRetResult );
+}
+
+/************************************************************************/
+/*                     DBFWriteAttributeDirectly()                      */
+/*                                                                      */
+/*      Write an attribute record to the file, but without any          */
+/*      reformatting based on type.  The provided buffer is written     */
+/*      as is to the field position in the record.                      */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFWriteAttributeDirectly(DBFHandle psDBF, int hEntity, int iField,
+                              void * pValue )
+
+{
+    int	       		i, j;
+    unsigned char	*pabyRec;
+
+/* -------------------------------------------------------------------- */
+/*	Is this a valid record?						*/
+/* -------------------------------------------------------------------- */
+    if( hEntity < 0 || hEntity > psDBF->nRecords )
+        return( FALSE );
+
+    if( psDBF->bNoHeader )
+        DBFWriteHeader(psDBF);
+
+/* -------------------------------------------------------------------- */
+/*      Is this a brand new record?                                     */
+/* -------------------------------------------------------------------- */
+    if( hEntity == psDBF->nRecords )
+    {
+	if( !DBFFlushRecord( psDBF ) )
+            return FALSE;
+
+	psDBF->nRecords++;
+	for( i = 0; i < psDBF->nRecordLength; i++ )
+	    psDBF->pszCurrentRecord[i] = ' ';
+
+	psDBF->nCurrentRecord = hEntity;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Is this an existing record, but different than the last one     */
+/*      we accessed?                                                    */
+/* -------------------------------------------------------------------- */
+    if( !DBFLoadRecord( psDBF, hEntity ) )
+        return FALSE;
+
+    pabyRec = (unsigned char *) psDBF->pszCurrentRecord;
+
+/* -------------------------------------------------------------------- */
+/*      Assign all the record fields.                                   */
+/* -------------------------------------------------------------------- */
+    if( (int)strlen((char *) pValue) > psDBF->panFieldSize[iField] )
+        j = psDBF->panFieldSize[iField];
+    else
+    {
+        memset( pabyRec+psDBF->panFieldOffset[iField], ' ',
+                psDBF->panFieldSize[iField] );
+        j = strlen((char *) pValue);
+    }
+
+    strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]),
+            (char *) pValue, j );
+
+    psDBF->bCurrentRecordModified = TRUE;
+    psDBF->bUpdated = TRUE;
+
+    return( TRUE );
+}
+
+/************************************************************************/
+/*                      DBFWriteDoubleAttribute()                       */
+/*                                                                      */
+/*      Write a double attribute.                                       */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFWriteDoubleAttribute( DBFHandle psDBF, int iRecord, int iField,
+                         double dValue )
+
+{
+    return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) &dValue ) );
+}
+
+/************************************************************************/
+/*                      DBFWriteIntegerAttribute()                      */
+/*                                                                      */
+/*      Write a integer attribute.                                      */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFWriteIntegerAttribute( DBFHandle psDBF, int iRecord, int iField,
+                          int nValue )
+
+{
+    double	dValue = nValue;
+
+    return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) &dValue ) );
+}
+
+/************************************************************************/
+/*                      DBFWriteStringAttribute()                       */
+/*                                                                      */
+/*      Write a string attribute.                                       */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFWriteStringAttribute( DBFHandle psDBF, int iRecord, int iField,
+                         const char * pszValue )
+
+{
+    return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) pszValue ) );
+}
+
+/************************************************************************/
+/*                      DBFWriteNULLAttribute()                         */
+/*                                                                      */
+/*      Write a string attribute.                                       */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFWriteNULLAttribute( DBFHandle psDBF, int iRecord, int iField )
+
+{
+    return( DBFWriteAttribute( psDBF, iRecord, iField, NULL ) );
+}
+
+/************************************************************************/
+/*                      DBFWriteLogicalAttribute()                      */
+/*                                                                      */
+/*      Write a logical attribute.                                      */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFWriteLogicalAttribute( DBFHandle psDBF, int iRecord, int iField,
+		       const char lValue)
+
+{
+    return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) (&lValue) ) );
+}
+
+/************************************************************************/
+/*                         DBFWriteTuple()                              */
+/*									*/
+/*	Write an attribute record to the file.				*/
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFWriteTuple(DBFHandle psDBF, int hEntity, void * pRawTuple )
+
+{
+    int	       		i;
+    unsigned char	*pabyRec;
+
+/* -------------------------------------------------------------------- */
+/*	Is this a valid record?						*/
+/* -------------------------------------------------------------------- */
+    if( hEntity < 0 || hEntity > psDBF->nRecords )
+        return( FALSE );
+
+    if( psDBF->bNoHeader )
+        DBFWriteHeader(psDBF);
+
+/* -------------------------------------------------------------------- */
+/*      Is this a brand new record?                                     */
+/* -------------------------------------------------------------------- */
+    if( hEntity == psDBF->nRecords )
+    {
+	if( !DBFFlushRecord( psDBF ) )
+            return FALSE;
+
+	psDBF->nRecords++;
+	for( i = 0; i < psDBF->nRecordLength; i++ )
+	    psDBF->pszCurrentRecord[i] = ' ';
+
+	psDBF->nCurrentRecord = hEntity;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Is this an existing record, but different than the last one     */
+/*      we accessed?                                                    */
+/* -------------------------------------------------------------------- */
+    if( !DBFLoadRecord( psDBF, hEntity ) )
+        return FALSE;
+
+    pabyRec = (unsigned char *) psDBF->pszCurrentRecord;
+
+    memcpy ( pabyRec, pRawTuple,  psDBF->nRecordLength );
+
+    psDBF->bCurrentRecordModified = TRUE;
+    psDBF->bUpdated = TRUE;
+
+    return( TRUE );
+}
+
+/************************************************************************/
+/*                            DBFReadTuple()                            */
+/*                                                                      */
+/*      Read a complete record.  Note that the result is only valid     */
+/*      till the next record read for any reason.                       */
+/************************************************************************/
+
+const char SHPAPI_CALL1(*)
+DBFReadTuple(DBFHandle psDBF, int hEntity )
+
+{
+    if( hEntity < 0 || hEntity >= psDBF->nRecords )
+        return( NULL );
+
+    if( !DBFLoadRecord( psDBF, hEntity ) )
+        return NULL;
+
+    return (const char *) psDBF->pszCurrentRecord;
+}
+
+/************************************************************************/
+/*                          DBFCloneEmpty()                              */
+/*                                                                      */
+/*      Read one of the attribute fields of a record.                   */
+/************************************************************************/
+
+DBFHandle SHPAPI_CALL
+DBFCloneEmpty(DBFHandle psDBF, const char * pszFilename ) 
+{
+    DBFHandle	newDBF;
+
+   newDBF = DBFCreateEx ( pszFilename, psDBF->pszCodePage );
+   if ( newDBF == NULL ) return ( NULL ); 
+   
+   newDBF->nFields = psDBF->nFields;
+   newDBF->nRecordLength = psDBF->nRecordLength;
+   newDBF->nHeaderLength = psDBF->nHeaderLength;
+    
+   newDBF->pszHeader = (char *) malloc ( newDBF->nHeaderLength );
+   memcpy ( newDBF->pszHeader, psDBF->pszHeader, newDBF->nHeaderLength );
+   
+   newDBF->panFieldOffset = (int *) malloc ( sizeof(int) * psDBF->nFields ); 
+   memcpy ( newDBF->panFieldOffset, psDBF->panFieldOffset, sizeof(int) * psDBF->nFields );
+   newDBF->panFieldSize = (int *) malloc ( sizeof(int) * psDBF->nFields );
+   memcpy ( newDBF->panFieldSize, psDBF->panFieldSize, sizeof(int) * psDBF->nFields );
+   newDBF->panFieldDecimals = (int *) malloc ( sizeof(int) * psDBF->nFields );
+   memcpy ( newDBF->panFieldDecimals, psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields );
+   newDBF->pachFieldType = (char *) malloc ( sizeof(char) * psDBF->nFields );
+   memcpy ( newDBF->pachFieldType, psDBF->pachFieldType, sizeof(char)*psDBF->nFields );
+
+   newDBF->bNoHeader = TRUE;
+   newDBF->bUpdated = TRUE;
+   
+   DBFWriteHeader ( newDBF );
+   DBFClose ( newDBF );
+   
+   newDBF = DBFOpen ( pszFilename, "rb+" );
+
+   return ( newDBF );
+}
+
+/************************************************************************/
+/*                       DBFGetNativeFieldType()                        */
+/*                                                                      */
+/*      Return the DBase field type for the specified field.            */
+/*                                                                      */
+/*      Value can be one of: 'C' (String), 'D' (Date), 'F' (Float),     */
+/*                           'N' (Numeric, with or without decimal),    */
+/*                           'L' (Logical),                             */
+/*                           'M' (Memo: 10 digits .DBT block ptr)       */
+/************************************************************************/
+
+char SHPAPI_CALL
+DBFGetNativeFieldType( DBFHandle psDBF, int iField )
+
+{
+    if( iField >=0 && iField < psDBF->nFields )
+        return psDBF->pachFieldType[iField];
+
+    return  ' ';
+}
+
+/************************************************************************/
+/*                            str_to_upper()                            */
+/************************************************************************/
+
+static void str_to_upper (char *string)
+{
+    int len;
+    short i = -1;
+
+    len = strlen (string);
+
+    while (++i < len)
+        if (isalpha(string[i]) && islower(string[i]))
+            string[i] = (char) toupper ((int)string[i]);
+}
+
+/************************************************************************/
+/*                          DBFGetFieldIndex()                          */
+/*                                                                      */
+/*      Get the index number for a field in a .dbf file.                */
+/*                                                                      */
+/*      Contributed by Jim Matthews.                                    */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFGetFieldIndex(DBFHandle psDBF, const char *pszFieldName)
+
+{
+    char          name[12], name1[12], name2[12];
+    int           i;
+
+    strncpy(name1, pszFieldName,11);
+    name1[11] = '\0';
+    str_to_upper(name1);
+
+    for( i = 0; i < DBFGetFieldCount(psDBF); i++ )
+    {
+        DBFGetFieldInfo( psDBF, i, name, NULL, NULL );
+        strncpy(name2,name,11);
+        str_to_upper(name2);
+
+        if(!strncmp(name1,name2,10))
+            return(i);
+    }
+    return(-1);
+}
+
+/************************************************************************/
+/*                         DBFIsRecordDeleted()                         */
+/*                                                                      */
+/*      Returns TRUE if the indicated record is deleted, otherwise      */
+/*      it returns FALSE.                                               */
+/************************************************************************/
+
+int SHPAPI_CALL DBFIsRecordDeleted( DBFHandle psDBF, int iShape )
+
+{
+/* -------------------------------------------------------------------- */
+/*      Verify selection.                                               */
+/* -------------------------------------------------------------------- */
+    if( iShape < 0 || iShape >= psDBF->nRecords )
+        return TRUE;
+
+/* -------------------------------------------------------------------- */
+/*	Have we read the record?					*/
+/* -------------------------------------------------------------------- */
+    if( !DBFLoadRecord( psDBF, iShape ) )
+        return FALSE;
+
+/* -------------------------------------------------------------------- */
+/*      '*' means deleted.                                              */
+/* -------------------------------------------------------------------- */
+    return psDBF->pszCurrentRecord[0] == '*';
+}
+
+/************************************************************************/
+/*                        DBFMarkRecordDeleted()                        */
+/************************************************************************/
+
+int SHPAPI_CALL DBFMarkRecordDeleted( DBFHandle psDBF, int iShape, 
+                                      int bIsDeleted )
+
+{
+    char chNewFlag;
+
+/* -------------------------------------------------------------------- */
+/*      Verify selection.                                               */
+/* -------------------------------------------------------------------- */
+    if( iShape < 0 || iShape >= psDBF->nRecords )
+        return FALSE;
+
+/* -------------------------------------------------------------------- */
+/*      Is this an existing record, but different than the last one     */
+/*      we accessed?                                                    */
+/* -------------------------------------------------------------------- */
+    if( !DBFLoadRecord( psDBF, iShape ) )
+        return FALSE;
+
+/* -------------------------------------------------------------------- */
+/*      Assign value, marking record as dirty if it changes.            */
+/* -------------------------------------------------------------------- */
+    if( bIsDeleted )
+        chNewFlag = '*';
+    else 
+        chNewFlag = ' ';
+
+    if( psDBF->pszCurrentRecord[0] != chNewFlag )
+    {
+        psDBF->bCurrentRecordModified = TRUE;
+        psDBF->bUpdated = TRUE;
+        psDBF->pszCurrentRecord[0] = chNewFlag;
+    }
+
+    return TRUE;
+}
+
+/************************************************************************/
+/*                            DBFGetCodePage                            */
+/************************************************************************/
+
+const char SHPAPI_CALL1(*)
+DBFGetCodePage(DBFHandle psDBF )
+{
+    if( psDBF == NULL )
+        return NULL;
+    return psDBF->pszCodePage;
+}
+
+/************************************************************************/
+/*                          DBFDeleteField()                            */
+/*                                                                      */
+/*      Remove a field from a .dbf file                                 */
+/************************************************************************/
+
+int SHPAPI_CALL
+DBFDeleteField(DBFHandle psDBF, int iField)
+{
+    int nOldRecordLength, nOldHeaderLength;
+    int nDeletedFieldOffset, nDeletedFieldSize;
+    SAOffset nRecordOffset;
+    char* pszRecord;
+    int i, iRecord;
+
+    if (iField < 0 || iField >= psDBF->nFields)
+        return FALSE;
+
+    /* make sure that everything is written in .dbf */
+    if( !DBFFlushRecord( psDBF ) )
+        return FALSE;
+
+    /* get information about field to be deleted */
+    nOldRecordLength = psDBF->nRecordLength;
+    nOldHeaderLength = psDBF->nHeaderLength;
+    nDeletedFieldOffset = psDBF->panFieldOffset[iField];
+    nDeletedFieldSize = psDBF->panFieldSize[iField];
+
+    /* update fields info */
+    for (i = iField + 1; i < psDBF->nFields; i++)
+    {
+        psDBF->panFieldOffset[i-1] = psDBF->panFieldOffset[i] - nDeletedFieldSize;
+        psDBF->panFieldSize[i-1] = psDBF->panFieldSize[i];
+        psDBF->panFieldDecimals[i-1] = psDBF->panFieldDecimals[i];
+        psDBF->pachFieldType[i-1] = psDBF->pachFieldType[i];
+    }
+
+    /* resize fields arrays */
+    psDBF->nFields--;
+
+    psDBF->panFieldOffset = (int *) 
+        SfRealloc( psDBF->panFieldOffset, sizeof(int) * psDBF->nFields );
+
+    psDBF->panFieldSize = (int *) 
+        SfRealloc( psDBF->panFieldSize, sizeof(int) * psDBF->nFields );
+
+    psDBF->panFieldDecimals = (int *) 
+        SfRealloc( psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields );
+
+    psDBF->pachFieldType = (char *) 
+        SfRealloc( psDBF->pachFieldType, sizeof(char) * psDBF->nFields );
+
+    /* update header information */
+    psDBF->nHeaderLength -= 32;
+    psDBF->nRecordLength -= nDeletedFieldSize;
+
+    /* overwrite field information in header */
+    memcpy(psDBF->pszHeader + iField*32,
+           psDBF->pszHeader + (iField+1)*32,
+           sizeof(char) * (psDBF->nFields - iField)*32);
+
+    psDBF->pszHeader = (char *) SfRealloc(psDBF->pszHeader,psDBF->nFields*32);
+
+    /* update size of current record appropriately */
+    psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord,
+                                                 psDBF->nRecordLength);
+
+    /* we're done if we're dealing with not yet created .dbf */
+    if ( psDBF->bNoHeader && psDBF->nRecords == 0 )
+        return TRUE;
+
+    /* force update of header with new header and record length */
+    psDBF->bNoHeader = TRUE;
+    DBFUpdateHeader( psDBF );
+
+    /* alloc record */
+    pszRecord = (char *) malloc(sizeof(char) * nOldRecordLength);
+
+    /* shift records to their new positions */
+    for (iRecord = 0; iRecord < psDBF->nRecords; iRecord++)
+    {
+        nRecordOffset = 
+            nOldRecordLength * (SAOffset) iRecord + nOldHeaderLength;
+
+        /* load record */
+        psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
+        psDBF->sHooks.FRead( pszRecord, nOldRecordLength, 1, psDBF->fp );
+
+        nRecordOffset = 
+            psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength;
+
+        /* move record in two steps */
+        psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
+        psDBF->sHooks.FWrite( pszRecord, nDeletedFieldOffset, 1, psDBF->fp );
+        psDBF->sHooks.FWrite( pszRecord + nDeletedFieldOffset + nDeletedFieldSize,
+                              nOldRecordLength - nDeletedFieldOffset - nDeletedFieldSize,
+                              1, psDBF->fp );
+
+    }
+
+    /* TODO: truncate file */
+
+    /* free record */
+    free(pszRecord);
+
+    return TRUE;
+}
diff --git a/plugins/importshp/shapelib/safileio.c b/plugins/importshp/shapelib/safileio.c
new file mode 100644
index 0000000..f3affe2
--- /dev/null
+++ b/plugins/importshp/shapelib/safileio.c
@@ -0,0 +1,286 @@
+/******************************************************************************
+ * $Id: safileio.c,v 1.4 2008-01-16 20:05:14 bram Exp $
+ *
+ * Project:  Shapelib
+ * Purpose:  Default implementation of file io based on stdio.
+ * Author:   Frank Warmerdam, warmerdam at pobox.com
+ *
+ ******************************************************************************
+ * Copyright (c) 2007, Frank Warmerdam
+ *
+ * This software is available under the following "MIT Style" license,
+ * or at the option of the licensee under the LGPL (see LICENSE.LGPL).  This
+ * option is discussed in more detail in shapelib.html.
+ *
+ * --
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ ******************************************************************************
+ *
+ * $Log: safileio.c,v $
+ * Revision 1.4  2008-01-16 20:05:14  bram
+ * Add file hooks that accept UTF-8 encoded filenames on some platforms.  Use SASetupUtf8Hooks
+ *  tosetup the hooks and check SHPAPI_UTF8_HOOKS for its availability.  Currently, this
+ *  is only available on the Windows platform that decodes the UTF-8 filenames to wide
+ *  character strings and feeds them to _wfopen and _wremove.
+ *
+ * Revision 1.3  2007/12/18 18:28:11  bram
+ * - create hook for client specific atof (bugzilla ticket 1615)
+ * - check for NULL handle before closing cpCPG file, and close after reading.
+ *
+ * Revision 1.2  2007/12/15 20:25:30  bram
+ * dbfopen.c now reads the Code Page information from the DBF file, and exports
+ * this information as a string through the DBFGetCodePage function.  This is 
+ * either the number from the LDID header field ("LDID/<number>") or as the 
+ * content of an accompanying .CPG file.  When creating a DBF file, the code can
+ * be set using DBFCreateEx.
+ *
+ * Revision 1.1  2007/12/06 06:56:41  fwarmerdam
+ * new
+ *
+ */
+
+#include "shapefil.h"
+
+#include <math.h>
+#include <limits.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+SHP_CVSID("$Id: safileio.c,v 1.4 2008-01-16 20:05:14 bram Exp $");
+
+#ifdef SHPAPI_UTF8_HOOKS
+#   ifdef SHPAPI_WINDOWS
+#       define WIN32_LEAN_AND_MEAN
+#       define NOMINMAX
+#       include <windows.h>
+#       pragma comment(lib, "kernel32.lib")
+#   endif
+#endif
+
+/************************************************************************/
+/*                              SADFOpen()                              */
+/************************************************************************/
+
+SAFile SADFOpen( const char *pszFilename, const char *pszAccess )
+
+{
+    return (SAFile) fopen( pszFilename, pszAccess );
+}
+
+/************************************************************************/
+/*                              SADFRead()                              */
+/************************************************************************/
+
+SAOffset SADFRead( void *p, SAOffset size, SAOffset nmemb, SAFile file )
+
+{
+    return (SAOffset) fread( p, (size_t) size, (size_t) nmemb, 
+                             (FILE *) file );
+}
+
+/************************************************************************/
+/*                             SADFWrite()                              */
+/************************************************************************/
+
+SAOffset SADFWrite( void *p, SAOffset size, SAOffset nmemb, SAFile file )
+
+{
+    return (SAOffset) fwrite( p, (size_t) size, (size_t) nmemb, 
+                              (FILE *) file );
+}
+
+/************************************************************************/
+/*                              SADFSeek()                              */
+/************************************************************************/
+
+SAOffset SADFSeek( SAFile file, SAOffset offset, int whence )
+
+{
+    return (SAOffset) fseek( (FILE *) file, (long) offset, whence );
+}
+
+/************************************************************************/
+/*                              SADFTell()                              */
+/************************************************************************/
+
+SAOffset SADFTell( SAFile file )
+
+{
+    return (SAOffset) ftell( (FILE *) file );
+}
+
+/************************************************************************/
+/*                             SADFFlush()                              */
+/************************************************************************/
+
+int SADFFlush( SAFile file )
+
+{
+    return fflush( (FILE *) file );
+}
+
+/************************************************************************/
+/*                             SADFClose()                              */
+/************************************************************************/
+
+int SADFClose( SAFile file )
+
+{
+    return fclose( (FILE *) file );
+}
+
+/************************************************************************/
+/*                             SADFClose()                              */
+/************************************************************************/
+
+int SADRemove( const char *filename )
+
+{
+    return remove( filename );
+}
+
+/************************************************************************/
+/*                              SADError()                              */
+/************************************************************************/
+
+void SADError( const char *message )
+
+{
+    fprintf( stderr, "%s\n", message );
+}
+
+/************************************************************************/
+/*                        SASetupDefaultHooks()                         */
+/************************************************************************/
+
+void SASetupDefaultHooks( SAHooks *psHooks )
+
+{
+    psHooks->FOpen   = SADFOpen;
+    psHooks->FRead   = SADFRead;
+    psHooks->FWrite  = SADFWrite;
+    psHooks->FSeek   = SADFSeek;
+    psHooks->FTell   = SADFTell;
+    psHooks->FFlush  = SADFFlush;
+    psHooks->FClose  = SADFClose;
+    psHooks->Remove  = SADRemove;
+
+    psHooks->Error   = SADError;
+    psHooks->Atof    = atof;
+}
+
+
+
+
+#ifdef SHPAPI_WINDOWS
+
+/************************************************************************/
+/*                          Utf8ToWideChar                              */
+/************************************************************************/
+
+const wchar_t* Utf8ToWideChar( const char *pszFilename )
+{
+    int nMulti, nWide;
+    wchar_t *pwszFileName;
+    
+    nMulti = strlen(pszFilename) + 1;
+    nWide = MultiByteToWideChar( CP_UTF8, 0, pszFilename, nMulti, 0, 0);
+    if( nWide == 0 )
+    {
+        return NULL;
+    }
+    pwszFileName = (wchar_t*) malloc(nWide * sizeof(wchar_t));
+    if ( pwszFileName == NULL )
+    {
+        return NULL;
+    }
+    if( MultiByteToWideChar( CP_UTF8, 0, pszFilename, nMulti, pwszFileName, nWide ) == 0 )
+    {
+        free( pwszFileName );
+        return NULL;
+    }
+    return pwszFileName;
+}
+
+/************************************************************************/
+/*                           SAUtf8WFOpen                               */
+/************************************************************************/
+
+SAFile SAUtf8WFOpen( const char *pszFilename, const char *pszAccess )
+{
+    SAFile file = NULL;
+    const wchar_t *pwszFileName, *pwszAccess;
+    pwszFileName = Utf8ToWideChar( pszFilename );
+    pwszAccess = Utf8ToWideChar( pszAccess );
+    if( pwszFileName != NULL && pwszFileName != NULL)
+    {
+        file = (SAFile) _wfopen( pwszFileName, pwszAccess );
+    }
+    free ((wchar_t*) pwszFileName);
+    free ((wchar_t*) pwszAccess);
+    return file;
+}
+
+/************************************************************************/
+/*                             SAUtf8WRemove()                          */
+/************************************************************************/
+
+int SAUtf8WRemove( const char *pszFilename )
+{
+    const wchar_t *pwszFileName = Utf8ToWideChar( pszFilename );
+    int rc = -1; 
+    if( pwszFileName != NULL )
+    {
+        rc = _wremove( pwszFileName );
+    }
+    free ((wchar_t*) pwszFileName);
+    return rc;
+}
+
+#endif
+
+#ifdef SHPAPI_UTF8_HOOKS
+
+/************************************************************************/
+/*                          SASetupUtf8Hooks()                          */
+/************************************************************************/
+
+void SASetupUtf8Hooks( SAHooks *psHooks )
+{
+#ifdef SHPAPI_WINDOWS    
+    psHooks->FOpen   = SAUtf8WFOpen;
+    psHooks->Remove  = SAUtf8WRemove;
+#else
+#   error "no implementations of UTF-8 hooks available for this platform"
+#endif
+    psHooks->FRead   = SADFRead;
+    psHooks->FWrite  = SADFWrite;
+    psHooks->FSeek   = SADFSeek;
+    psHooks->FTell   = SADFTell;
+    psHooks->FFlush  = SADFFlush;
+    psHooks->FClose  = SADFClose;
+
+    psHooks->Error   = SADError;
+    psHooks->Atof    = atof;
+}
+
+#endif
diff --git a/plugins/importshp/shapelib/shapefil.h b/plugins/importshp/shapelib/shapefil.h
new file mode 100644
index 0000000..b1d7f6e
--- /dev/null
+++ b/plugins/importshp/shapelib/shapefil.h
@@ -0,0 +1,612 @@
+#ifndef SHAPEFILE_H_INCLUDED
+#define SHAPEFILE_H_INCLUDED
+
+/******************************************************************************
+ * $Id: shapefil.h,v 1.47 2010-01-28 11:34:34 fwarmerdam Exp $
+ *
+ * Project:  Shapelib
+ * Purpose:  Primary include file for Shapelib.
+ * Author:   Frank Warmerdam, warmerdam at pobox.com
+ *
+ ******************************************************************************
+ * Copyright (c) 1999, Frank Warmerdam
+ *
+ * This software is available under the following "MIT Style" license,
+ * or at the option of the licensee under the LGPL (see LICENSE.LGPL).  This
+ * option is discussed in more detail in shapelib.html.
+ *
+ * --
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ ******************************************************************************
+ *
+ * $Log: shapefil.h,v $
+ * Revision 1.47  2010-01-28 11:34:34  fwarmerdam
+ * handle the shape file length limits more gracefully (#3236)
+ *
+ * Revision 1.46  2008-11-12 14:28:15  fwarmerdam
+ * DBFCreateField() now works on files with records
+ *
+ * Revision 1.45  2008/11/11 17:47:10  fwarmerdam
+ * added DBFDeleteField() function
+ *
+ * Revision 1.44  2008/01/16 20:05:19  bram
+ * Add file hooks that accept UTF-8 encoded filenames on some platforms.  Use SASetupUtf8Hooks
+ *  tosetup the hooks and check SHPAPI_UTF8_HOOKS for its availability.  Currently, this
+ *  is only available on the Windows platform that decodes the UTF-8 filenames to wide
+ *  character strings and feeds them to _wfopen and _wremove.
+ *
+ * Revision 1.43  2008/01/10 16:35:30  fwarmerdam
+ * avoid _ prefix on #defined symbols (bug 1840)
+ *
+ * Revision 1.42  2007/12/18 18:28:14  bram
+ * - create hook for client specific atof (bugzilla ticket 1615)
+ * - check for NULL handle before closing cpCPG file, and close after reading.
+ *
+ * Revision 1.41  2007/12/15 20:25:32  bram
+ * dbfopen.c now reads the Code Page information from the DBF file, and exports
+ * this information as a string through the DBFGetCodePage function.  This is 
+ * either the number from the LDID header field ("LDID/<number>") or as the 
+ * content of an accompanying .CPG file.  When creating a DBF file, the code can
+ * be set using DBFCreateEx.
+ *
+ * Revision 1.40  2007/12/06 07:00:25  fwarmerdam
+ * dbfopen now using SAHooks for fileio
+ *
+ * Revision 1.39  2007/12/04 20:37:56  fwarmerdam
+ * preliminary implementation of hooks api for io and errors
+ *
+ * Revision 1.38  2007/11/21 22:39:56  fwarmerdam
+ * close shx file in readonly mode (GDAL #1956)
+ *
+ * Revision 1.37  2007/10/27 03:31:14  fwarmerdam
+ * limit default depth of tree to 12 levels (gdal ticket #1594)
+ *
+ * Revision 1.36  2007/09/10 23:33:15  fwarmerdam
+ * Upstreamed support for visibility flag in SHPAPI_CALL for the needs
+ * of GDAL (gdal ticket #1810).
+ *
+ * Revision 1.35  2007/09/03 19:48:10  fwarmerdam
+ * move DBFReadAttribute() static dDoubleField into dbfinfo
+ *
+ * Revision 1.34  2006/06/17 15:33:32  fwarmerdam
+ * added pszWorkField - bug 1202 (rso)
+ *
+ * Revision 1.33  2006/02/15 01:14:30  fwarmerdam
+ * added DBFAddNativeFieldType
+ *
+ * Revision 1.32  2006/01/26 15:07:32  fwarmerdam
+ * add bMeasureIsUsed flag from Craig Bruce: Bug 1249
+ *
+ * Revision 1.31  2006/01/05 01:27:27  fwarmerdam
+ * added dbf deletion mark/fetch
+ *
+ * Revision 1.30  2005/01/03 22:30:13  fwarmerdam
+ * added support for saved quadtrees
+ *
+ * Revision 1.29  2004/09/26 20:09:35  fwarmerdam
+ * avoid rcsid warnings
+ *
+ * Revision 1.28  2003/12/29 06:02:18  fwarmerdam
+ * added cpl_error.h option
+ *
+ * Revision 1.27  2003/04/21 18:30:37  warmerda
+ * added header write/update public methods
+ *
+ * Revision 1.26  2002/09/29 00:00:08  warmerda
+ * added FTLogical and logical attribute read/write calls
+ *
+ * Revision 1.25  2002/05/07 13:46:30  warmerda
+ * added DBFWriteAttributeDirectly().
+ *
+ * Revision 1.24  2002/04/10 16:59:54  warmerda
+ * added SHPRewindObject
+ *
+ * Revision 1.23  2002/01/15 14:36:07  warmerda
+ * updated email address
+ *
+ * Revision 1.22  2002/01/15 14:32:00  warmerda
+ * try to improve SHPAPI_CALL docs
+ */
+
+#include <stdio.h>
+
+#ifdef USE_DBMALLOC
+#include <dbmalloc.h>
+#endif
+
+#ifdef USE_CPL
+#include "cpl_error.h"
+#include "cpl_vsi.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/************************************************************************/
+/*                        Configuration options.                        */
+/************************************************************************/
+
+/* -------------------------------------------------------------------- */
+/*      Should the DBFReadStringAttribute() strip leading and           */
+/*      trailing white space?                                           */
+/* -------------------------------------------------------------------- */
+#define TRIM_DBF_WHITESPACE
+
+/* -------------------------------------------------------------------- */
+/*      Should we write measure values to the Multipatch object?        */
+/*      Reportedly ArcView crashes if we do write it, so for now it     */
+/*      is disabled.                                                    */
+/* -------------------------------------------------------------------- */
+#define DISABLE_MULTIPATCH_MEASURE
+    
+/* -------------------------------------------------------------------- */
+/*      SHPAPI_CALL                                                     */
+/*                                                                      */
+/*      The following two macros are present to allow forcing           */
+/*      various calling conventions on the Shapelib API.                */
+/*                                                                      */
+/*      To force __stdcall conventions (needed to call Shapelib         */
+/*      from Visual Basic and/or Dephi I believe) the makefile could    */
+/*      be modified to define:                                          */
+/*                                                                      */
+/*        /DSHPAPI_CALL=__stdcall                                       */
+/*                                                                      */
+/*      If it is desired to force export of the Shapelib API without    */
+/*      using the shapelib.def file, use the following definition.      */
+/*                                                                      */
+/*        /DSHAPELIB_DLLEXPORT                                          */
+/*                                                                      */
+/*      To get both at once it will be necessary to hack this           */
+/*      include file to define:                                         */
+/*                                                                      */
+/*        #define SHPAPI_CALL __declspec(dllexport) __stdcall           */
+/*        #define SHPAPI_CALL1 __declspec(dllexport) * __stdcall        */
+/*                                                                      */
+/*      The complexity of the situtation is partly caused by the        */
+/*      peculiar requirement of Visual C++ that __stdcall appear        */
+/*      after any "*"'s in the return value of a function while the     */
+/*      __declspec(dllexport) must appear before them.                  */
+/* -------------------------------------------------------------------- */
+
+#ifdef SHAPELIB_DLLEXPORT
+#  define SHPAPI_CALL __declspec(dllexport)
+#  define SHPAPI_CALL1(x)  __declspec(dllexport) x
+#endif
+
+#ifndef SHPAPI_CALL
+#  if defined(USE_GCC_VISIBILITY_FLAG)
+#    define SHPAPI_CALL     __attribute__ ((visibility("default")))
+#    define SHPAPI_CALL1(x) __attribute__ ((visibility("default")))     x
+#  else
+#    define SHPAPI_CALL
+#  endif
+#endif
+
+#ifndef SHPAPI_CALL1
+#  define SHPAPI_CALL1(x)      x SHPAPI_CALL
+#endif
+    
+/* -------------------------------------------------------------------- */
+/*      Macros for controlling CVSID and ensuring they don't appear     */
+/*      as unreferenced variables resulting in lots of warnings.        */
+/* -------------------------------------------------------------------- */
+#ifndef DISABLE_CVSID
+#  define SHP_CVSID(string)     static char cpl_cvsid[] = string; \
+static char *cvsid_aw() { return( cvsid_aw() ? ((char *) NULL) : cpl_cvsid ); }
+#else
+#  define SHP_CVSID(string)
+#endif
+
+/* -------------------------------------------------------------------- */
+/*      On some platforms, additional file IO hooks are defined that    */
+/*      UTF-8 encoded filenames Unicode filenames                       */
+/* -------------------------------------------------------------------- */
+#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+#	define SHPAPI_WINDOWS
+#	define SHPAPI_UTF8_HOOKS
+#endif
+
+/* -------------------------------------------------------------------- */
+/*      IO/Error hook functions.                                        */
+/* -------------------------------------------------------------------- */
+typedef int *SAFile;
+
+#ifndef SAOffset
+typedef unsigned long SAOffset;
+#endif
+
+typedef struct {
+    SAFile     (*FOpen) ( const char *filename, const char *access);
+    SAOffset   (*FRead) ( void *p, SAOffset size, SAOffset nmemb, SAFile file);
+    SAOffset   (*FWrite)( void *p, SAOffset size, SAOffset nmemb, SAFile file);
+    SAOffset   (*FSeek) ( SAFile file, SAOffset offset, int whence );
+    SAOffset   (*FTell) ( SAFile file );
+    int        (*FFlush)( SAFile file );
+    int        (*FClose)( SAFile file );
+    int        (*Remove) ( const char *filename );
+
+    void       (*Error) ( const char *message );
+    double     (*Atof)  ( const char *str );
+} SAHooks;
+
+void SHPAPI_CALL SASetupDefaultHooks( SAHooks *psHooks );
+#ifdef SHPAPI_UTF8_HOOKS
+void SHPAPI_CALL SASetupUtf8Hooks( SAHooks *psHooks );
+#endif
+
+/************************************************************************/
+/*                             SHP Support.                             */
+/************************************************************************/
+typedef	struct
+{
+    SAHooks sHooks;
+
+    SAFile      fpSHP;
+    SAFile 	fpSHX;
+
+    int		nShapeType;				/* SHPT_* */
+    
+    unsigned int 	nFileSize;				/* SHP file */
+
+    int         nRecords;
+    int		nMaxRecords;
+    unsigned int		*panRecOffset;
+    unsigned int		*panRecSize;
+
+    double	adBoundsMin[4];
+    double	adBoundsMax[4];
+
+    int		bUpdated;
+
+    unsigned char *pabyRec;
+    int         nBufSize;
+} SHPInfo;
+
+typedef SHPInfo * SHPHandle;
+
+/* -------------------------------------------------------------------- */
+/*      Shape types (nSHPType)                                          */
+/* -------------------------------------------------------------------- */
+#define SHPT_NULL	0
+#define SHPT_POINT	1
+#define SHPT_ARC	3
+#define SHPT_POLYGON	5
+#define SHPT_MULTIPOINT	8
+#define SHPT_POINTZ	11
+#define SHPT_ARCZ	13
+#define SHPT_POLYGONZ	15
+#define SHPT_MULTIPOINTZ 18
+#define SHPT_POINTM	21
+#define SHPT_ARCM	23
+#define SHPT_POLYGONM	25
+#define SHPT_MULTIPOINTM 28
+#define SHPT_MULTIPATCH 31
+
+
+/* -------------------------------------------------------------------- */
+/*      Part types - everything but SHPT_MULTIPATCH just uses           */
+/*      SHPP_RING.                                                      */
+/* -------------------------------------------------------------------- */
+
+#define SHPP_TRISTRIP	0
+#define SHPP_TRIFAN	1
+#define SHPP_OUTERRING	2
+#define SHPP_INNERRING	3
+#define SHPP_FIRSTRING	4
+#define SHPP_RING	5
+
+/* -------------------------------------------------------------------- */
+/*      SHPObject - represents on shape (without attributes) read       */
+/*      from the .shp file.                                             */
+/* -------------------------------------------------------------------- */
+typedef struct
+{
+    int		nSHPType;
+
+    int		nShapeId; /* -1 is unknown/unassigned */
+
+    int		nParts;
+    int		*panPartStart;
+    int		*panPartType;
+    
+    int		nVertices;
+    double	*padfX;
+    double	*padfY;
+    double	*padfZ;
+    double	*padfM;
+
+    double	dfXMin;
+    double	dfYMin;
+    double	dfZMin;
+    double	dfMMin;
+
+    double	dfXMax;
+    double	dfYMax;
+    double	dfZMax;
+    double	dfMMax;
+
+    int		bMeasureIsUsed;
+} SHPObject;
+
+/* -------------------------------------------------------------------- */
+/*      SHP API Prototypes                                              */
+/* -------------------------------------------------------------------- */
+
+/* If pszAccess is read-only, the fpSHX field of the returned structure */
+/* will be NULL as it is not necessary to keep the SHX file open */
+SHPHandle SHPAPI_CALL
+      SHPOpen( const char * pszShapeFile, const char * pszAccess );
+SHPHandle SHPAPI_CALL
+      SHPOpenLL( const char *pszShapeFile, const char *pszAccess, 
+                 SAHooks *psHooks );
+SHPHandle SHPAPI_CALL
+      SHPCreate( const char * pszShapeFile, int nShapeType );
+SHPHandle SHPAPI_CALL
+      SHPCreateLL( const char * pszShapeFile, int nShapeType,
+                   SAHooks *psHooks );
+void SHPAPI_CALL
+      SHPGetInfo( SHPHandle hSHP, int * pnEntities, int * pnShapeType,
+                  double * padfMinBound, double * padfMaxBound );
+
+SHPObject SHPAPI_CALL1(*)
+      SHPReadObject( SHPHandle hSHP, int iShape );
+int SHPAPI_CALL
+      SHPWriteObject( SHPHandle hSHP, int iShape, SHPObject * psObject );
+
+void SHPAPI_CALL
+      SHPDestroyObject( SHPObject * psObject );
+void SHPAPI_CALL
+      SHPComputeExtents( SHPObject * psObject );
+SHPObject SHPAPI_CALL1(*)
+      SHPCreateObject( int nSHPType, int nShapeId, int nParts, 
+                       const int * panPartStart, const int * panPartType,
+                       int nVertices, 
+                       const double * padfX, const double * padfY,
+                       const double * padfZ, const double * padfM );
+SHPObject SHPAPI_CALL1(*)
+      SHPCreateSimpleObject( int nSHPType, int nVertices,
+                             const double * padfX, 
+                             const double * padfY, 
+                             const double * padfZ );
+
+int SHPAPI_CALL
+      SHPRewindObject( SHPHandle hSHP, SHPObject * psObject );
+
+void SHPAPI_CALL SHPClose( SHPHandle hSHP );
+void SHPAPI_CALL SHPWriteHeader( SHPHandle hSHP );
+
+const char SHPAPI_CALL1(*)
+      SHPTypeName( int nSHPType );
+const char SHPAPI_CALL1(*)
+      SHPPartTypeName( int nPartType );
+
+/* -------------------------------------------------------------------- */
+/*      Shape quadtree indexing API.                                    */
+/* -------------------------------------------------------------------- */
+
+/* this can be two or four for binary or quad tree */
+#define MAX_SUBNODE	4
+
+/* upper limit of tree levels for automatic estimation */
+#define MAX_DEFAULT_TREE_DEPTH 12
+
+typedef struct shape_tree_node
+{
+    /* region covered by this node */
+    double	adfBoundsMin[4];
+    double	adfBoundsMax[4];
+
+    /* list of shapes stored at this node.  The papsShapeObj pointers
+       or the whole list can be NULL */
+    int		nShapeCount;
+    int		*panShapeIds;
+    SHPObject   **papsShapeObj;
+
+    int		nSubNodes;
+    struct shape_tree_node *apsSubNode[MAX_SUBNODE];
+    
+} SHPTreeNode;
+
+typedef struct
+{
+    SHPHandle   hSHP;
+    
+    int		nMaxDepth;
+    int		nDimension;
+    int         nTotalCount;
+    
+    SHPTreeNode	*psRoot;
+} SHPTree;
+
+SHPTree SHPAPI_CALL1(*)
+      SHPCreateTree( SHPHandle hSHP, int nDimension, int nMaxDepth,
+                     double *padfBoundsMin, double *padfBoundsMax );
+void    SHPAPI_CALL
+      SHPDestroyTree( SHPTree * hTree );
+
+int	SHPAPI_CALL
+      SHPWriteTree( SHPTree *hTree, const char * pszFilename );
+SHPTree SHPAPI_CALL
+      SHPReadTree( const char * pszFilename );
+
+int	SHPAPI_CALL
+      SHPTreeAddObject( SHPTree * hTree, SHPObject * psObject );
+int	SHPAPI_CALL
+      SHPTreeAddShapeId( SHPTree * hTree, SHPObject * psObject );
+int	SHPAPI_CALL
+      SHPTreeRemoveShapeId( SHPTree * hTree, int nShapeId );
+
+void 	SHPAPI_CALL
+      SHPTreeTrimExtraNodes( SHPTree * hTree );
+
+int    SHPAPI_CALL1(*)
+      SHPTreeFindLikelyShapes( SHPTree * hTree,
+                               double * padfBoundsMin,
+                               double * padfBoundsMax,
+                               int * );
+int     SHPAPI_CALL
+      SHPCheckBoundsOverlap( double *, double *, double *, double *, int );
+
+int SHPAPI_CALL1(*) 
+SHPSearchDiskTree( FILE *fp, 
+                   double *padfBoundsMin, double *padfBoundsMax,
+                   int *pnShapeCount );
+
+/************************************************************************/
+/*                             DBF Support.                             */
+/************************************************************************/
+typedef	struct
+{
+    SAHooks sHooks;
+
+    SAFile	fp;
+
+    int         nRecords;
+
+    int		nRecordLength;
+    int		nHeaderLength;
+    int		nFields;
+    int		*panFieldOffset;
+    int		*panFieldSize;
+    int		*panFieldDecimals;
+    char	*pachFieldType;
+
+    char	*pszHeader;
+
+    int		nCurrentRecord;
+    int		bCurrentRecordModified;
+    char	*pszCurrentRecord;
+
+    int         nWorkFieldLength;
+    char        *pszWorkField;
+    
+    int		bNoHeader;
+    int		bUpdated;
+
+    double      dfDoubleField;
+
+    int         iLanguageDriver;
+    char        *pszCodePage;
+} DBFInfo;
+
+typedef DBFInfo * DBFHandle;
+
+typedef enum {
+  FTString,
+  FTInteger,
+  FTDouble,
+  FTLogical,
+  FTInvalid
+} DBFFieldType;
+
+#define XBASE_FLDHDR_SZ       32
+
+
+DBFHandle SHPAPI_CALL
+      DBFOpen( const char * pszDBFFile, const char * pszAccess );
+DBFHandle SHPAPI_CALL
+      DBFOpenLL( const char * pszDBFFile, const char * pszAccess,
+                 SAHooks *psHooks );
+DBFHandle SHPAPI_CALL
+      DBFCreate( const char * pszDBFFile );
+DBFHandle SHPAPI_CALL
+      DBFCreateEx( const char * pszDBFFile, const char * pszCodePage );
+DBFHandle SHPAPI_CALL
+      DBFCreateLL( const char * pszDBFFile, const char * pszCodePage, SAHooks *psHooks );
+
+int	SHPAPI_CALL
+      DBFGetFieldCount( DBFHandle psDBF );
+int	SHPAPI_CALL
+      DBFGetRecordCount( DBFHandle psDBF );
+int	SHPAPI_CALL
+      DBFAddField( DBFHandle hDBF, const char * pszFieldName,
+                   DBFFieldType eType, int nWidth, int nDecimals );
+
+int	SHPAPI_CALL
+      DBFAddNativeFieldType( DBFHandle hDBF, const char * pszFieldName,
+                             char chType, int nWidth, int nDecimals );
+
+int	SHPAPI_CALL
+      DBFDeleteField( DBFHandle hDBF, int iField );
+
+DBFFieldType SHPAPI_CALL
+      DBFGetFieldInfo( DBFHandle psDBF, int iField, 
+                       char * pszFieldName, int * pnWidth, int * pnDecimals );
+
+int SHPAPI_CALL
+      DBFGetFieldIndex(DBFHandle psDBF, const char *pszFieldName);
+
+int 	SHPAPI_CALL
+      DBFReadIntegerAttribute( DBFHandle hDBF, int iShape, int iField );
+double 	SHPAPI_CALL
+      DBFReadDoubleAttribute( DBFHandle hDBF, int iShape, int iField );
+const char SHPAPI_CALL1(*)
+      DBFReadStringAttribute( DBFHandle hDBF, int iShape, int iField );
+const char SHPAPI_CALL1(*)
+      DBFReadLogicalAttribute( DBFHandle hDBF, int iShape, int iField );
+int     SHPAPI_CALL
+      DBFIsAttributeNULL( DBFHandle hDBF, int iShape, int iField );
+
+int SHPAPI_CALL
+      DBFWriteIntegerAttribute( DBFHandle hDBF, int iShape, int iField, 
+                                int nFieldValue );
+int SHPAPI_CALL
+      DBFWriteDoubleAttribute( DBFHandle hDBF, int iShape, int iField,
+                               double dFieldValue );
+int SHPAPI_CALL
+      DBFWriteStringAttribute( DBFHandle hDBF, int iShape, int iField,
+                               const char * pszFieldValue );
+int SHPAPI_CALL
+     DBFWriteNULLAttribute( DBFHandle hDBF, int iShape, int iField );
+
+int SHPAPI_CALL
+     DBFWriteLogicalAttribute( DBFHandle hDBF, int iShape, int iField,
+			       const char lFieldValue);
+int SHPAPI_CALL
+     DBFWriteAttributeDirectly(DBFHandle psDBF, int hEntity, int iField,
+                               void * pValue );
+const char SHPAPI_CALL1(*)
+      DBFReadTuple(DBFHandle psDBF, int hEntity );
+int SHPAPI_CALL
+      DBFWriteTuple(DBFHandle psDBF, int hEntity, void * pRawTuple );
+
+int SHPAPI_CALL DBFIsRecordDeleted( DBFHandle psDBF, int iShape );
+int SHPAPI_CALL DBFMarkRecordDeleted( DBFHandle psDBF, int iShape, 
+                                      int bIsDeleted );
+
+DBFHandle SHPAPI_CALL
+      DBFCloneEmpty(DBFHandle psDBF, const char * pszFilename );
+ 
+void	SHPAPI_CALL
+      DBFClose( DBFHandle hDBF );
+void    SHPAPI_CALL
+      DBFUpdateHeader( DBFHandle hDBF );
+char    SHPAPI_CALL
+      DBFGetNativeFieldType( DBFHandle hDBF, int iField );
+
+const char SHPAPI_CALL1(*)
+      DBFGetCodePage(DBFHandle psDBF );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ndef SHAPEFILE_H_INCLUDED */
diff --git a/plugins/importshp/shapelib/shpopen.c b/plugins/importshp/shapelib/shpopen.c
new file mode 100644
index 0000000..be2f03a
--- /dev/null
+++ b/plugins/importshp/shapelib/shpopen.c
@@ -0,0 +1,2340 @@
+/******************************************************************************
+ * $Id: shpopen.c,v 1.64 2010-01-28 11:34:34 fwarmerdam Exp $
+ *
+ * Project:  Shapelib
+ * Purpose:  Implementation of core Shapefile read/write functions.
+ * Author:   Frank Warmerdam, warmerdam at pobox.com
+ *
+ ******************************************************************************
+ * Copyright (c) 1999, 2001, Frank Warmerdam
+ *
+ * This software is available under the following "MIT Style" license,
+ * or at the option of the licensee under the LGPL (see LICENSE.LGPL).  This
+ * option is discussed in more detail in shapelib.html.
+ *
+ * --
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ ******************************************************************************
+ *
+ * $Log: shpopen.c,v $
+ * Revision 1.64  2010-01-28 11:34:34  fwarmerdam
+ * handle the shape file length limits more gracefully (#3236)
+ *
+ * Revision 1.63  2010-01-28 04:04:40  fwarmerdam
+ * improve numerical accuracy of SHPRewind() algs (gdal #3363)
+ *
+ * Revision 1.62  2010-01-17 05:34:13  fwarmerdam
+ * Remove asserts on x/y being null (#2148).
+ *
+ * Revision 1.61  2010-01-16 05:07:42  fwarmerdam
+ * allow 0/nulls in shpcreateobject (#2148)
+ *
+ * Revision 1.60  2009-09-17 20:50:02  bram
+ * on Win32, define snprintf as alias to _snprintf
+ *
+ * Revision 1.59  2008-03-14 05:25:31  fwarmerdam
+ * Correct crash on buggy geometries (gdal #2218)
+ *
+ * Revision 1.58  2008/01/08 23:28:26  bram
+ * on line 2095, use a float instead of a double to avoid a compiler warning
+ *
+ * Revision 1.57  2007/12/06 07:00:25  fwarmerdam
+ * dbfopen now using SAHooks for fileio
+ *
+ * Revision 1.56  2007/12/04 20:37:56  fwarmerdam
+ * preliminary implementation of hooks api for io and errors
+ *
+ * Revision 1.55  2007/11/21 22:39:56  fwarmerdam
+ * close shx file in readonly mode (GDAL #1956)
+ *
+ * Revision 1.54  2007/11/15 00:12:47  mloskot
+ * Backported recent changes from GDAL (Ticket #1415) to Shapelib.
+ *
+ * Revision 1.53  2007/11/14 22:31:08  fwarmerdam
+ * checks after mallocs to detect for corrupted/voluntary broken shapefiles.
+ * http://trac.osgeo.org/gdal/ticket/1991
+ *
+ * Revision 1.52  2007/06/21 15:58:33  fwarmerdam
+ * fix for SHPRewindObject when rings touch at one vertex (gdal #976)
+ *
+ * Revision 1.51  2006/09/04 15:24:01  fwarmerdam
+ * Fixed up log message for 1.49.
+ *
+ * Revision 1.50  2006/09/04 15:21:39  fwarmerdam
+ * fix of last fix
+ *
+ * Revision 1.49  2006/09/04 15:21:00  fwarmerdam
+ * MLoskot: Added stronger test of Shapefile reading failures, e.g. truncated
+ * files.  The problem was discovered by Tim Sutton and reported here
+ *   https://svn.qgis.org/trac/ticket/200
+ *
+ * Revision 1.48  2006/01/26 15:07:32  fwarmerdam
+ * add bMeasureIsUsed flag from Craig Bruce: Bug 1249
+ *
+ * Revision 1.47  2006/01/04 20:07:23  fwarmerdam
+ * In SHPWriteObject() make sure that the record length is updated
+ * when rewriting an existing record.
+ *
+ * Revision 1.46  2005/02/11 17:17:46  fwarmerdam
+ * added panPartStart[0] validation
+ *
+ * Revision 1.45  2004/09/26 20:09:48  fwarmerdam
+ * const correctness changes
+ *
+ * Revision 1.44  2003/12/29 00:18:39  fwarmerdam
+ * added error checking for failed IO and optional CPL error reporting
+ *
+ * Revision 1.43  2003/12/01 16:20:08  warmerda
+ * be careful of zero vertex shapes
+ *
+ * Revision 1.42  2003/12/01 14:58:27  warmerda
+ * added degenerate object check in SHPRewindObject()
+ *
+ * Revision 1.41  2003/07/08 15:22:43  warmerda
+ * avoid warning
+ *
+ * Revision 1.40  2003/04/21 18:30:37  warmerda
+ * added header write/update public methods
+ *
+ * Revision 1.39  2002/08/26 06:46:56  warmerda
+ * avoid c++ comments
+ *
+ * Revision 1.38  2002/05/07 16:43:39  warmerda
+ * Removed debugging printf.
+ *
+ * Revision 1.37  2002/04/10 17:35:22  warmerda
+ * fixed bug in ring reversal code
+ *
+ * Revision 1.36  2002/04/10 16:59:54  warmerda
+ * added SHPRewindObject
+ *
+ * Revision 1.35  2001/12/07 15:10:44  warmerda
+ * fix if .shx fails to open
+ *
+ * Revision 1.34  2001/11/01 16:29:55  warmerda
+ * move pabyRec into SHPInfo for thread safety
+ *
+ * Revision 1.33  2001/07/03 12:18:15  warmerda
+ * Improved cleanup if SHX not found, provied by Riccardo Cohen.
+ *
+ * Revision 1.32  2001/06/22 01:58:07  warmerda
+ * be more careful about establishing initial bounds in face of NULL shapes
+ *
+ * Revision 1.31  2001/05/31 19:35:29  warmerda
+ * added support for writing null shapes
+ *
+ * Revision 1.30  2001/05/28 12:46:29  warmerda
+ * Add some checking on reasonableness of record count when opening.
+ *
+ * Revision 1.29  2001/05/23 13:36:52  warmerda
+ * added use of SHPAPI_CALL
+ *
+ * Revision 1.28  2001/02/06 22:25:06  warmerda
+ * fixed memory leaks when SHPOpen() fails
+ *
+ * Revision 1.27  2000/07/18 15:21:33  warmerda
+ * added better enforcement of -1 for append in SHPWriteObject
+ *
+ * Revision 1.26  2000/02/16 16:03:51  warmerda
+ * added null shape support
+ *
+ * Revision 1.25  1999/12/15 13:47:07  warmerda
+ * Fixed record size settings in .shp file (was 4 words too long)
+ * Added stdlib.h.
+ *
+ * Revision 1.24  1999/11/05 14:12:04  warmerda
+ * updated license terms
+ *
+ * Revision 1.23  1999/07/27 00:53:46  warmerda
+ * added support for rewriting shapes
+ *
+ * Revision 1.22  1999/06/11 19:19:11  warmerda
+ * Cleanup pabyRec static buffer on SHPClose().
+ *
+ * Revision 1.21  1999/06/02 14:57:56  kshih
+ * Remove unused variables
+ *
+ * Revision 1.20  1999/04/19 21:04:17  warmerda
+ * Fixed syntax error.
+ *
+ * Revision 1.19  1999/04/19 21:01:57  warmerda
+ * Force access string to binary in SHPOpen().
+ *
+ * Revision 1.18  1999/04/01 18:48:07  warmerda
+ * Try upper case extensions if lower case doesn't work.
+ *
+ * Revision 1.17  1998/12/31 15:29:39  warmerda
+ * Disable writing measure values to multipatch objects if
+ * DISABLE_MULTIPATCH_MEASURE is defined.
+ *
+ * Revision 1.16  1998/12/16 05:14:33  warmerda
+ * Added support to write MULTIPATCH.  Fixed reading Z coordinate of
+ * MULTIPATCH. Fixed record size written for all feature types.
+ *
+ * Revision 1.15  1998/12/03 16:35:29  warmerda
+ * r+b is proper binary access string, not rb+.
+ *
+ * Revision 1.14  1998/12/03 15:47:56  warmerda
+ * Fixed setting of nVertices in SHPCreateObject().
+ *
+ * Revision 1.13  1998/12/03 15:33:54  warmerda
+ * Made SHPCalculateExtents() separately callable.
+ *
+ * Revision 1.12  1998/11/11 20:01:50  warmerda
+ * Fixed bug writing ArcM/Z, and PolygonM/Z for big endian machines.
+ *
+ * Revision 1.11  1998/11/09 20:56:44  warmerda
+ * Fixed up handling of file wide bounds.
+ *
+ * Revision 1.10  1998/11/09 20:18:51  warmerda
+ * Converted to support 3D shapefiles, and use of SHPObject.
+ *
+ * Revision 1.9  1998/02/24 15:09:05  warmerda
+ * Fixed memory leak.
+ *
+ * Revision 1.8  1997/12/04 15:40:29  warmerda
+ * Fixed byte swapping of record number, and record length fields in the
+ * .shp file.
+ *
+ * Revision 1.7  1995/10/21 03:15:58  warmerda
+ * Added support for binary file access, the magic cookie 9997
+ * and tried to improve the int32 selection logic for 16bit systems.
+ *
+ * Revision 1.6  1995/09/04  04:19:41  warmerda
+ * Added fix for file bounds.
+ *
+ * Revision 1.5  1995/08/25  15:16:44  warmerda
+ * Fixed a couple of problems with big endian systems ... one with bounds
+ * and the other with multipart polygons.
+ *
+ * Revision 1.4  1995/08/24  18:10:17  warmerda
+ * Switch to use SfRealloc() to avoid problems with pre-ANSI realloc()
+ * functions (such as on the Sun).
+ *
+ * Revision 1.3  1995/08/23  02:23:15  warmerda
+ * Added support for reading bounds, and fixed up problems in setting the
+ * file wide bounds.
+ *
+ * Revision 1.2  1995/08/04  03:16:57  warmerda
+ * Added header.
+ *
+ */
+
+#include "shapefil.h"
+
+#include <math.h>
+#include <limits.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+SHP_CVSID("$Id: shpopen.c,v 1.64 2010-01-28 11:34:34 fwarmerdam Exp $")
+
+typedef unsigned char uchar;
+
+#if UINT_MAX == 65535
+typedef unsigned long	      int32;
+#else
+typedef unsigned int	      int32;
+#endif
+
+#ifndef FALSE
+#  define FALSE		0
+#  define TRUE		1
+#endif
+
+#define ByteCopy( a, b, c )	memcpy( b, a, c )
+#ifndef MAX
+#  define MIN(a,b)      ((a<b) ? a : b)
+#  define MAX(a,b)      ((a>b) ? a : b)
+#endif
+
+#if defined(WIN32) || defined(_WIN32)
+#  ifndef snprintf
+#     define snprintf _snprintf
+#  endif
+#endif
+
+static int 	bBigEndian;
+
+
+/************************************************************************/
+/*                              SwapWord()                              */
+/*                                                                      */
+/*      Swap a 2, 4 or 8 byte word.                                     */
+/************************************************************************/
+
+static void	SwapWord( int length, void * wordP )
+
+{
+    int		i;
+    uchar	temp;
+
+    for( i=0; i < length/2; i++ )
+    {
+	temp = ((uchar *) wordP)[i];
+	((uchar *)wordP)[i] = ((uchar *) wordP)[length-i-1];
+	((uchar *) wordP)[length-i-1] = temp;
+    }
+}
+
+/************************************************************************/
+/*                             SfRealloc()                              */
+/*                                                                      */
+/*      A realloc cover function that will access a NULL pointer as     */
+/*      a valid input.                                                  */
+/************************************************************************/
+
+static void * SfRealloc( void * pMem, int nNewSize )
+
+{
+    if( pMem == NULL )
+        return( (void *) malloc(nNewSize) );
+    else
+        return( (void *) realloc(pMem,nNewSize) );
+}
+
+/************************************************************************/
+/*                          SHPWriteHeader()                            */
+/*                                                                      */
+/*      Write out a header for the .shp and .shx files as well as the	*/
+/*	contents of the index (.shx) file.				*/
+/************************************************************************/
+
+void SHPWriteHeader( SHPHandle psSHP )
+
+{
+    uchar     	abyHeader[100];
+    int		i;
+    int32	i32;
+    double	dValue;
+    int32	*panSHX;
+    
+    if (psSHP->fpSHX == NULL)
+    {
+        psSHP->sHooks.Error( "SHPWriteHeader failed : SHX file is closed");
+        return;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Prepare header block for .shp file.                             */
+/* -------------------------------------------------------------------- */
+    for( i = 0; i < 100; i++ )
+      abyHeader[i] = 0;
+
+    abyHeader[2] = 0x27;				/* magic cookie */
+    abyHeader[3] = 0x0a;
+
+    i32 = psSHP->nFileSize/2;				/* file size */
+    ByteCopy( &i32, abyHeader+24, 4 );
+    if( !bBigEndian ) SwapWord( 4, abyHeader+24 );
+    
+    i32 = 1000;						/* version */
+    ByteCopy( &i32, abyHeader+28, 4 );
+    if( bBigEndian ) SwapWord( 4, abyHeader+28 );
+    
+    i32 = psSHP->nShapeType;				/* shape type */
+    ByteCopy( &i32, abyHeader+32, 4 );
+    if( bBigEndian ) SwapWord( 4, abyHeader+32 );
+
+    dValue = psSHP->adBoundsMin[0];			/* set bounds */
+    ByteCopy( &dValue, abyHeader+36, 8 );
+    if( bBigEndian ) SwapWord( 8, abyHeader+36 );
+
+    dValue = psSHP->adBoundsMin[1];
+    ByteCopy( &dValue, abyHeader+44, 8 );
+    if( bBigEndian ) SwapWord( 8, abyHeader+44 );
+
+    dValue = psSHP->adBoundsMax[0];
+    ByteCopy( &dValue, abyHeader+52, 8 );
+    if( bBigEndian ) SwapWord( 8, abyHeader+52 );
+
+    dValue = psSHP->adBoundsMax[1];
+    ByteCopy( &dValue, abyHeader+60, 8 );
+    if( bBigEndian ) SwapWord( 8, abyHeader+60 );
+
+    dValue = psSHP->adBoundsMin[2];			/* z */
+    ByteCopy( &dValue, abyHeader+68, 8 );
+    if( bBigEndian ) SwapWord( 8, abyHeader+68 );
+
+    dValue = psSHP->adBoundsMax[2];
+    ByteCopy( &dValue, abyHeader+76, 8 );
+    if( bBigEndian ) SwapWord( 8, abyHeader+76 );
+
+    dValue = psSHP->adBoundsMin[3];			/* m */
+    ByteCopy( &dValue, abyHeader+84, 8 );
+    if( bBigEndian ) SwapWord( 8, abyHeader+84 );
+
+    dValue = psSHP->adBoundsMax[3];
+    ByteCopy( &dValue, abyHeader+92, 8 );
+    if( bBigEndian ) SwapWord( 8, abyHeader+92 );
+
+/* -------------------------------------------------------------------- */
+/*      Write .shp file header.                                         */
+/* -------------------------------------------------------------------- */
+    if( psSHP->sHooks.FSeek( psSHP->fpSHP, 0, 0 ) != 0 
+        || psSHP->sHooks.FWrite( abyHeader, 100, 1, psSHP->fpSHP ) != 1 )
+    {
+        psSHP->sHooks.Error( "Failure writing .shp header" );
+        return;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Prepare, and write .shx file header.                            */
+/* -------------------------------------------------------------------- */
+    i32 = (psSHP->nRecords * 2 * sizeof(int32) + 100)/2;   /* file size */
+    ByteCopy( &i32, abyHeader+24, 4 );
+    if( !bBigEndian ) SwapWord( 4, abyHeader+24 );
+    
+    if( psSHP->sHooks.FSeek( psSHP->fpSHX, 0, 0 ) != 0 
+        || psSHP->sHooks.FWrite( abyHeader, 100, 1, psSHP->fpSHX ) != 1 )
+    {
+        psSHP->sHooks.Error( "Failure writing .shx header" );
+        return;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Write out the .shx contents.                                    */
+/* -------------------------------------------------------------------- */
+    panSHX = (int32 *) malloc(sizeof(int32) * 2 * psSHP->nRecords);
+
+    for( i = 0; i < psSHP->nRecords; i++ )
+    {
+	panSHX[i*2  ] = psSHP->panRecOffset[i]/2;
+	panSHX[i*2+1] = psSHP->panRecSize[i]/2;
+	if( !bBigEndian ) SwapWord( 4, panSHX+i*2 );
+	if( !bBigEndian ) SwapWord( 4, panSHX+i*2+1 );
+    }
+
+    if( (int)psSHP->sHooks.FWrite( panSHX, sizeof(int32)*2, psSHP->nRecords, psSHP->fpSHX ) 
+        != psSHP->nRecords )
+    {
+        psSHP->sHooks.Error( "Failure writing .shx contents" );
+    }
+
+    free( panSHX );
+
+/* -------------------------------------------------------------------- */
+/*      Flush to disk.                                                  */
+/* -------------------------------------------------------------------- */
+    psSHP->sHooks.FFlush( psSHP->fpSHP );
+    psSHP->sHooks.FFlush( psSHP->fpSHX );
+}
+
+/************************************************************************/
+/*                              SHPOpen()                               */
+/************************************************************************/
+
+SHPHandle SHPAPI_CALL
+SHPOpen( const char * pszLayer, const char * pszAccess )
+
+{
+    SAHooks sHooks;
+
+    SASetupDefaultHooks( &sHooks );
+
+    return SHPOpenLL( pszLayer, pszAccess, &sHooks );
+}
+
+/************************************************************************/
+/*                              SHPOpen()                               */
+/*                                                                      */
+/*      Open the .shp and .shx files based on the basename of the       */
+/*      files or either file name.                                      */
+/************************************************************************/
+   
+SHPHandle SHPAPI_CALL
+SHPOpenLL( const char * pszLayer, const char * pszAccess, SAHooks *psHooks )
+
+{
+    char		*pszFullname, *pszBasename;
+    SHPHandle		psSHP;
+    
+    uchar		*pabyBuf;
+    int			i;
+    double		dValue;
+    
+/* -------------------------------------------------------------------- */
+/*      Ensure the access string is one of the legal ones.  We          */
+/*      ensure the result string indicates binary to avoid common       */
+/*      problems on Windows.                                            */
+/* -------------------------------------------------------------------- */
+    if( strcmp(pszAccess,"rb+") == 0 || strcmp(pszAccess,"r+b") == 0
+        || strcmp(pszAccess,"r+") == 0 )
+        pszAccess = "r+b";
+    else
+        pszAccess = "rb";
+    
+/* -------------------------------------------------------------------- */
+/*	Establish the byte order on this machine.			*/
+/* -------------------------------------------------------------------- */
+    i = 1;
+    if( *((uchar *) &i) == 1 )
+        bBigEndian = FALSE;
+    else
+        bBigEndian = TRUE;
+
+/* -------------------------------------------------------------------- */
+/*	Initialize the info structure.					*/
+/* -------------------------------------------------------------------- */
+    psSHP = (SHPHandle) calloc(sizeof(SHPInfo),1);
+
+    psSHP->bUpdated = FALSE;
+    memcpy( &(psSHP->sHooks), psHooks, sizeof(SAHooks) );
+
+/* -------------------------------------------------------------------- */
+/*	Compute the base (layer) name.  If there is any extension	*/
+/*	on the passed in filename we will strip it off.			*/
+/* -------------------------------------------------------------------- */
+    pszBasename = (char *) malloc(strlen(pszLayer)+5);
+    strcpy( pszBasename, pszLayer );
+    for( i = strlen(pszBasename)-1; 
+	 i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'
+	       && pszBasename[i] != '\\';
+	 i-- ) {}
+
+    if( pszBasename[i] == '.' )
+        pszBasename[i] = '\0';
+
+/* -------------------------------------------------------------------- */
+/*	Open the .shp and .shx files.  Note that files pulled from	*/
+/*	a PC to Unix with upper case filenames won't work!		*/
+/* -------------------------------------------------------------------- */
+    pszFullname = (char *) malloc(strlen(pszBasename) + 5);
+    sprintf( pszFullname, "%s.shp", pszBasename ) ;
+    psSHP->fpSHP = psSHP->sHooks.FOpen(pszFullname, pszAccess );
+    if( psSHP->fpSHP == NULL )
+    {
+        sprintf( pszFullname, "%s.SHP", pszBasename );
+        psSHP->fpSHP = psSHP->sHooks.FOpen(pszFullname, pszAccess );
+    }
+    
+    if( psSHP->fpSHP == NULL )
+    {
+#ifdef USE_CPL
+        CPLError( CE_Failure, CPLE_OpenFailed, 
+                  "Unable to open %s.shp or %s.SHP.", 
+                  pszBasename, pszBasename );
+#endif
+        free( psSHP );
+        free( pszBasename );
+        free( pszFullname );
+        return( NULL );
+    }
+
+    sprintf( pszFullname, "%s.shx", pszBasename );
+    psSHP->fpSHX =  psSHP->sHooks.FOpen(pszFullname, pszAccess );
+    if( psSHP->fpSHX == NULL )
+    {
+        sprintf( pszFullname, "%s.SHX", pszBasename );
+        psSHP->fpSHX = psSHP->sHooks.FOpen(pszFullname, pszAccess );
+    }
+    
+    if( psSHP->fpSHX == NULL )
+    {
+#ifdef USE_CPL
+        CPLError( CE_Failure, CPLE_OpenFailed, 
+                  "Unable to open %s.shx or %s.SHX.", 
+                  pszBasename, pszBasename );
+#endif
+        psSHP->sHooks.FClose( psSHP->fpSHP );
+        free( psSHP );
+        free( pszBasename );
+        free( pszFullname );
+        return( NULL );
+    }
+
+    free( pszFullname );
+    free( pszBasename );
+
+/* -------------------------------------------------------------------- */
+/*  Read the file size from the SHP file.				*/
+/* -------------------------------------------------------------------- */
+    pabyBuf = (uchar *) malloc(100);
+    psSHP->sHooks.FRead( pabyBuf, 100, 1, psSHP->fpSHP );
+
+    psSHP->nFileSize = ((unsigned int)pabyBuf[24] * 256 * 256 * 256
+			+ (unsigned int)pabyBuf[25] * 256 * 256
+			+ (unsigned int)pabyBuf[26] * 256
+			+ (unsigned int)pabyBuf[27]) * 2;
+
+/* -------------------------------------------------------------------- */
+/*  Read SHX file Header info                                           */
+/* -------------------------------------------------------------------- */
+    if( psSHP->sHooks.FRead( pabyBuf, 100, 1, psSHP->fpSHX ) != 1 
+        || pabyBuf[0] != 0 
+        || pabyBuf[1] != 0 
+        || pabyBuf[2] != 0x27 
+        || (pabyBuf[3] != 0x0a && pabyBuf[3] != 0x0d) )
+    {
+        psSHP->sHooks.Error( ".shx file is unreadable, or corrupt." );
+	psSHP->sHooks.FClose( psSHP->fpSHP );
+	psSHP->sHooks.FClose( psSHP->fpSHX );
+	free( psSHP );
+
+	return( NULL );
+    }
+
+    psSHP->nRecords = pabyBuf[27] + pabyBuf[26] * 256
+      + pabyBuf[25] * 256 * 256 + pabyBuf[24] * 256 * 256 * 256;
+    psSHP->nRecords = (psSHP->nRecords*2 - 100) / 8;
+
+    psSHP->nShapeType = pabyBuf[32];
+
+    if( psSHP->nRecords < 0 || psSHP->nRecords > 256000000 )
+    {
+        char szError[200];
+        
+        sprintf( szError, 
+                 "Record count in .shp header is %d, which seems\n"
+                 "unreasonable.  Assuming header is corrupt.",
+                  psSHP->nRecords );
+        psSHP->sHooks.Error( szError );				       
+	psSHP->sHooks.FClose( psSHP->fpSHP );
+	psSHP->sHooks.FClose( psSHP->fpSHX );
+	free( psSHP );
+        free(pabyBuf);
+
+	return( NULL );
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Read the bounds.                                                */
+/* -------------------------------------------------------------------- */
+    if( bBigEndian ) SwapWord( 8, pabyBuf+36 );
+    memcpy( &dValue, pabyBuf+36, 8 );
+    psSHP->adBoundsMin[0] = dValue;
+
+    if( bBigEndian ) SwapWord( 8, pabyBuf+44 );
+    memcpy( &dValue, pabyBuf+44, 8 );
+    psSHP->adBoundsMin[1] = dValue;
+
+    if( bBigEndian ) SwapWord( 8, pabyBuf+52 );
+    memcpy( &dValue, pabyBuf+52, 8 );
+    psSHP->adBoundsMax[0] = dValue;
+
+    if( bBigEndian ) SwapWord( 8, pabyBuf+60 );
+    memcpy( &dValue, pabyBuf+60, 8 );
+    psSHP->adBoundsMax[1] = dValue;
+
+    if( bBigEndian ) SwapWord( 8, pabyBuf+68 );		/* z */
+    memcpy( &dValue, pabyBuf+68, 8 );
+    psSHP->adBoundsMin[2] = dValue;
+    
+    if( bBigEndian ) SwapWord( 8, pabyBuf+76 );
+    memcpy( &dValue, pabyBuf+76, 8 );
+    psSHP->adBoundsMax[2] = dValue;
+    
+    if( bBigEndian ) SwapWord( 8, pabyBuf+84 );		/* z */
+    memcpy( &dValue, pabyBuf+84, 8 );
+    psSHP->adBoundsMin[3] = dValue;
+
+    if( bBigEndian ) SwapWord( 8, pabyBuf+92 );
+    memcpy( &dValue, pabyBuf+92, 8 );
+    psSHP->adBoundsMax[3] = dValue;
+
+    free( pabyBuf );
+
+/* -------------------------------------------------------------------- */
+/*	Read the .shx file to get the offsets to each record in 	*/
+/*	the .shp file.							*/
+/* -------------------------------------------------------------------- */
+    psSHP->nMaxRecords = psSHP->nRecords;
+
+    psSHP->panRecOffset = (unsigned int *)
+        malloc(sizeof(unsigned int) * MAX(1,psSHP->nMaxRecords) );
+    psSHP->panRecSize = (unsigned int *)
+        malloc(sizeof(unsigned int) * MAX(1,psSHP->nMaxRecords) );
+    pabyBuf = (uchar *) malloc(8 * MAX(1,psSHP->nRecords) );
+
+    if (psSHP->panRecOffset == NULL ||
+        psSHP->panRecSize == NULL ||
+        pabyBuf == NULL)
+    {
+        char szError[200];
+
+        sprintf(szError, 
+                "Not enough memory to allocate requested memory (nRecords=%d).\n"
+                "Probably broken SHP file", 
+                psSHP->nRecords );
+        psSHP->sHooks.Error( szError );
+	psSHP->sHooks.FClose( psSHP->fpSHP );
+	psSHP->sHooks.FClose( psSHP->fpSHX );
+        if (psSHP->panRecOffset) free( psSHP->panRecOffset );
+        if (psSHP->panRecSize) free( psSHP->panRecSize );
+        if (pabyBuf) free( pabyBuf );
+        free( psSHP );
+        return( NULL );
+    }
+
+    if( (int) psSHP->sHooks.FRead( pabyBuf, 8, psSHP->nRecords, psSHP->fpSHX ) 
+			!= psSHP->nRecords )
+    {
+        char szError[200];
+
+        sprintf( szError, 
+                 "Failed to read all values for %d records in .shx file.",
+                 psSHP->nRecords );
+        psSHP->sHooks.Error( szError );
+
+        /* SHX is short or unreadable for some reason. */
+	psSHP->sHooks.FClose( psSHP->fpSHP );
+	psSHP->sHooks.FClose( psSHP->fpSHX );
+        free( psSHP->panRecOffset );
+        free( psSHP->panRecSize );
+        free( pabyBuf );
+	free( psSHP );
+
+	return( NULL );
+    }
+    
+    /* In read-only mode, we can close the SHX now */
+    if (strcmp(pszAccess, "rb") == 0)
+    {
+        psSHP->sHooks.FClose( psSHP->fpSHX );
+        psSHP->fpSHX = NULL;
+    }
+
+    for( i = 0; i < psSHP->nRecords; i++ )
+    {
+	int32		nOffset, nLength;
+
+	memcpy( &nOffset, pabyBuf + i * 8, 4 );
+	if( !bBigEndian ) SwapWord( 4, &nOffset );
+
+	memcpy( &nLength, pabyBuf + i * 8 + 4, 4 );
+	if( !bBigEndian ) SwapWord( 4, &nLength );
+
+	psSHP->panRecOffset[i] = nOffset*2;
+	psSHP->panRecSize[i] = nLength*2;
+    }
+    free( pabyBuf );
+
+    return( psSHP );
+}
+
+/************************************************************************/
+/*                              SHPClose()                              */
+/*								       	*/
+/*	Close the .shp and .shx files.					*/
+/************************************************************************/
+
+void SHPAPI_CALL
+SHPClose(SHPHandle psSHP )
+
+{
+    if( psSHP == NULL )
+        return;
+
+/* -------------------------------------------------------------------- */
+/*	Update the header if we have modified anything.			*/
+/* -------------------------------------------------------------------- */
+    if( psSHP->bUpdated )
+	SHPWriteHeader( psSHP );
+
+/* -------------------------------------------------------------------- */
+/*      Free all resources, and close files.                            */
+/* -------------------------------------------------------------------- */
+    free( psSHP->panRecOffset );
+    free( psSHP->panRecSize );
+
+    if ( psSHP->fpSHX != NULL)
+        psSHP->sHooks.FClose( psSHP->fpSHX );
+    psSHP->sHooks.FClose( psSHP->fpSHP );
+
+    if( psSHP->pabyRec != NULL )
+    {
+        free( psSHP->pabyRec );
+    }
+    
+    free( psSHP );
+}
+
+/************************************************************************/
+/*                             SHPGetInfo()                             */
+/*                                                                      */
+/*      Fetch general information about the shape file.                 */
+/************************************************************************/
+
+void SHPAPI_CALL
+SHPGetInfo(SHPHandle psSHP, int * pnEntities, int * pnShapeType,
+           double * padfMinBound, double * padfMaxBound )
+
+{
+    int		i;
+
+    if( psSHP == NULL )
+        return;
+    
+    if( pnEntities != NULL )
+        *pnEntities = psSHP->nRecords;
+
+    if( pnShapeType != NULL )
+        *pnShapeType = psSHP->nShapeType;
+
+    for( i = 0; i < 4; i++ )
+    {
+        if( padfMinBound != NULL )
+            padfMinBound[i] = psSHP->adBoundsMin[i];
+        if( padfMaxBound != NULL )
+            padfMaxBound[i] = psSHP->adBoundsMax[i];
+    }
+}
+
+/************************************************************************/
+/*                             SHPCreate()                              */
+/*                                                                      */
+/*      Create a new shape file and return a handle to the open         */
+/*      shape file with read/write access.                              */
+/************************************************************************/
+
+SHPHandle SHPAPI_CALL
+SHPCreate( const char * pszLayer, int nShapeType )
+
+{
+    SAHooks sHooks;
+
+    SASetupDefaultHooks( &sHooks );
+
+    return SHPCreateLL( pszLayer, nShapeType, &sHooks );
+}
+
+/************************************************************************/
+/*                             SHPCreate()                              */
+/*                                                                      */
+/*      Create a new shape file and return a handle to the open         */
+/*      shape file with read/write access.                              */
+/************************************************************************/
+
+SHPHandle SHPAPI_CALL
+SHPCreateLL( const char * pszLayer, int nShapeType, SAHooks *psHooks )
+
+{
+    char	*pszBasename, *pszFullname;
+    int		i;
+    SAFile	fpSHP, fpSHX;
+    uchar     	abyHeader[100];
+    int32	i32;
+    double	dValue;
+    
+/* -------------------------------------------------------------------- */
+/*      Establish the byte order on this system.                        */
+/* -------------------------------------------------------------------- */
+    i = 1;
+    if( *((uchar *) &i) == 1 )
+        bBigEndian = FALSE;
+    else
+        bBigEndian = TRUE;
+
+/* -------------------------------------------------------------------- */
+/*	Compute the base (layer) name.  If there is any extension	*/
+/*	on the passed in filename we will strip it off.			*/
+/* -------------------------------------------------------------------- */
+    pszBasename = (char *) malloc(strlen(pszLayer)+5);
+    strcpy( pszBasename, pszLayer );
+    for( i = strlen(pszBasename)-1; 
+	 i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'
+	       && pszBasename[i] != '\\';
+	 i-- ) {}
+
+    if( pszBasename[i] == '.' )
+        pszBasename[i] = '\0';
+
+/* -------------------------------------------------------------------- */
+/*      Open the two files so we can write their headers.               */
+/* -------------------------------------------------------------------- */
+    pszFullname = (char *) malloc(strlen(pszBasename) + 5);
+    sprintf( pszFullname, "%s.shp", pszBasename );
+    fpSHP = psHooks->FOpen(pszFullname, "wb" );
+    if( fpSHP == NULL )
+    {
+        psHooks->Error( "Failed to create file .shp file." );
+        return( NULL );
+    }
+
+    sprintf( pszFullname, "%s.shx", pszBasename );
+    fpSHX = psHooks->FOpen(pszFullname, "wb" );
+    if( fpSHX == NULL )
+    {
+        psHooks->Error( "Failed to create file .shx file." );
+        return( NULL );
+    }
+
+    free( pszFullname );
+    free( pszBasename );
+
+/* -------------------------------------------------------------------- */
+/*      Prepare header block for .shp file.                             */
+/* -------------------------------------------------------------------- */
+    for( i = 0; i < 100; i++ )
+      abyHeader[i] = 0;
+
+    abyHeader[2] = 0x27;				/* magic cookie */
+    abyHeader[3] = 0x0a;
+
+    i32 = 50;						/* file size */
+    ByteCopy( &i32, abyHeader+24, 4 );
+    if( !bBigEndian ) SwapWord( 4, abyHeader+24 );
+    
+    i32 = 1000;						/* version */
+    ByteCopy( &i32, abyHeader+28, 4 );
+    if( bBigEndian ) SwapWord( 4, abyHeader+28 );
+    
+    i32 = nShapeType;					/* shape type */
+    ByteCopy( &i32, abyHeader+32, 4 );
+    if( bBigEndian ) SwapWord( 4, abyHeader+32 );
+
+    dValue = 0.0;					/* set bounds */
+    ByteCopy( &dValue, abyHeader+36, 8 );
+    ByteCopy( &dValue, abyHeader+44, 8 );
+    ByteCopy( &dValue, abyHeader+52, 8 );
+    ByteCopy( &dValue, abyHeader+60, 8 );
+
+/* -------------------------------------------------------------------- */
+/*      Write .shp file header.                                         */
+/* -------------------------------------------------------------------- */
+    if( psHooks->FWrite( abyHeader, 100, 1, fpSHP ) != 1 )
+    {
+        psHooks->Error( "Failed to write .shp header." );
+        return NULL;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Prepare, and write .shx file header.                            */
+/* -------------------------------------------------------------------- */
+    i32 = 50;						/* file size */
+    ByteCopy( &i32, abyHeader+24, 4 );
+    if( !bBigEndian ) SwapWord( 4, abyHeader+24 );
+    
+    if( psHooks->FWrite( abyHeader, 100, 1, fpSHX ) != 1 )
+    {
+        psHooks->Error( "Failed to write .shx header." );
+        return NULL;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Close the files, and then open them as regular existing files.  */
+/* -------------------------------------------------------------------- */
+    psHooks->FClose( fpSHP );
+    psHooks->FClose( fpSHX );
+
+    return( SHPOpenLL( pszLayer, "r+b", psHooks ) );
+}
+
+/************************************************************************/
+/*                           _SHPSetBounds()                            */
+/*                                                                      */
+/*      Compute a bounds rectangle for a shape, and set it into the     */
+/*      indicated location in the record.                               */
+/************************************************************************/
+
+static void	_SHPSetBounds( uchar * pabyRec, SHPObject * psShape )
+
+{
+    ByteCopy( &(psShape->dfXMin), pabyRec +  0, 8 );
+    ByteCopy( &(psShape->dfYMin), pabyRec +  8, 8 );
+    ByteCopy( &(psShape->dfXMax), pabyRec + 16, 8 );
+    ByteCopy( &(psShape->dfYMax), pabyRec + 24, 8 );
+
+    if( bBigEndian )
+    {
+        SwapWord( 8, pabyRec + 0 );
+        SwapWord( 8, pabyRec + 8 );
+        SwapWord( 8, pabyRec + 16 );
+        SwapWord( 8, pabyRec + 24 );
+    }
+}
+
+/************************************************************************/
+/*                         SHPComputeExtents()                          */
+/*                                                                      */
+/*      Recompute the extents of a shape.  Automatically done by        */
+/*      SHPCreateObject().                                              */
+/************************************************************************/
+
+void SHPAPI_CALL
+SHPComputeExtents( SHPObject * psObject )
+
+{
+    int		i;
+    
+/* -------------------------------------------------------------------- */
+/*      Build extents for this object.                                  */
+/* -------------------------------------------------------------------- */
+    if( psObject->nVertices > 0 )
+    {
+        psObject->dfXMin = psObject->dfXMax = psObject->padfX[0];
+        psObject->dfYMin = psObject->dfYMax = psObject->padfY[0];
+        psObject->dfZMin = psObject->dfZMax = psObject->padfZ[0];
+        psObject->dfMMin = psObject->dfMMax = psObject->padfM[0];
+    }
+    
+    for( i = 0; i < psObject->nVertices; i++ )
+    {
+        psObject->dfXMin = MIN(psObject->dfXMin, psObject->padfX[i]);
+        psObject->dfYMin = MIN(psObject->dfYMin, psObject->padfY[i]);
+        psObject->dfZMin = MIN(psObject->dfZMin, psObject->padfZ[i]);
+        psObject->dfMMin = MIN(psObject->dfMMin, psObject->padfM[i]);
+
+        psObject->dfXMax = MAX(psObject->dfXMax, psObject->padfX[i]);
+        psObject->dfYMax = MAX(psObject->dfYMax, psObject->padfY[i]);
+        psObject->dfZMax = MAX(psObject->dfZMax, psObject->padfZ[i]);
+        psObject->dfMMax = MAX(psObject->dfMMax, psObject->padfM[i]);
+    }
+}
+
+/************************************************************************/
+/*                          SHPCreateObject()                           */
+/*                                                                      */
+/*      Create a shape object.  It should be freed with                 */
+/*      SHPDestroyObject().                                             */
+/************************************************************************/
+
+SHPObject SHPAPI_CALL1(*)
+SHPCreateObject( int nSHPType, int nShapeId, int nParts,
+                 const int * panPartStart, const int * panPartType,
+                 int nVertices, const double *padfX, const double *padfY,
+                 const double * padfZ, const double * padfM )
+
+{
+    SHPObject	*psObject;
+    int		i, bHasM, bHasZ;
+
+    psObject = (SHPObject *) calloc(1,sizeof(SHPObject));
+    psObject->nSHPType = nSHPType;
+    psObject->nShapeId = nShapeId;
+    psObject->bMeasureIsUsed = FALSE;
+
+/* -------------------------------------------------------------------- */
+/*	Establish whether this shape type has M, and Z values.		*/
+/* -------------------------------------------------------------------- */
+    if( nSHPType == SHPT_ARCM
+        || nSHPType == SHPT_POINTM
+        || nSHPType == SHPT_POLYGONM
+        || nSHPType == SHPT_MULTIPOINTM )
+    {
+        bHasM = TRUE;
+        bHasZ = FALSE;
+    }
+    else if( nSHPType == SHPT_ARCZ
+             || nSHPType == SHPT_POINTZ
+             || nSHPType == SHPT_POLYGONZ
+             || nSHPType == SHPT_MULTIPOINTZ
+             || nSHPType == SHPT_MULTIPATCH )
+    {
+        bHasM = TRUE;
+        bHasZ = TRUE;
+    }
+    else
+    {
+        bHasM = FALSE;
+        bHasZ = FALSE;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Capture parts.  Note that part type is optional, and            */
+/*      defaults to ring.                                               */
+/* -------------------------------------------------------------------- */
+    if( nSHPType == SHPT_ARC || nSHPType == SHPT_POLYGON
+        || nSHPType == SHPT_ARCM || nSHPType == SHPT_POLYGONM
+        || nSHPType == SHPT_ARCZ || nSHPType == SHPT_POLYGONZ
+        || nSHPType == SHPT_MULTIPATCH )
+    {
+        psObject->nParts = MAX(1,nParts);
+
+        psObject->panPartStart = (int *)
+            calloc(sizeof(int), psObject->nParts);
+        psObject->panPartType = (int *)
+            malloc(sizeof(int) * psObject->nParts);
+
+        psObject->panPartStart[0] = 0;
+        psObject->panPartType[0] = SHPP_RING;
+        
+        for( i = 0; i < nParts; i++ )
+        {
+            if( psObject->panPartStart != NULL )
+                psObject->panPartStart[i] = panPartStart[i];
+
+            if( panPartType != NULL )
+                psObject->panPartType[i] = panPartType[i];
+            else
+                psObject->panPartType[i] = SHPP_RING;
+        }
+
+        if( psObject->panPartStart[0] != 0 )
+            psObject->panPartStart[0] = 0;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Capture vertices.  Note that X, Y, Z and M are optional.        */
+/* -------------------------------------------------------------------- */
+    if( nVertices > 0 )
+    {
+        psObject->padfX = (double *) calloc(sizeof(double),nVertices);
+        psObject->padfY = (double *) calloc(sizeof(double),nVertices);
+        psObject->padfZ = (double *) calloc(sizeof(double),nVertices);
+        psObject->padfM = (double *) calloc(sizeof(double),nVertices);
+
+        for( i = 0; i < nVertices; i++ )
+        {
+            if( padfX != NULL )
+                psObject->padfX[i] = padfX[i];
+            if( padfY != NULL )
+                psObject->padfY[i] = padfY[i];
+            if( padfZ != NULL && bHasZ )
+                psObject->padfZ[i] = padfZ[i];
+            if( padfM != NULL && bHasM )
+                psObject->padfM[i] = padfM[i];
+        }
+        if( padfM != NULL && bHasM )
+            psObject->bMeasureIsUsed = TRUE;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Compute the extents.                                            */
+/* -------------------------------------------------------------------- */
+    psObject->nVertices = nVertices;
+    SHPComputeExtents( psObject );
+
+    return( psObject );
+}
+
+/************************************************************************/
+/*                       SHPCreateSimpleObject()                        */
+/*                                                                      */
+/*      Create a simple (common) shape object.  Destroy with            */
+/*      SHPDestroyObject().                                             */
+/************************************************************************/
+
+SHPObject SHPAPI_CALL1(*)
+SHPCreateSimpleObject( int nSHPType, int nVertices,
+                       const double * padfX, const double * padfY,
+                       const double * padfZ )
+
+{
+    return( SHPCreateObject( nSHPType, -1, 0, NULL, NULL,
+                             nVertices, padfX, padfY, padfZ, NULL ) );
+}
+                                  
+/************************************************************************/
+/*                           SHPWriteObject()                           */
+/*                                                                      */
+/*      Write out the vertices of a new structure.  Note that it is     */
+/*      only possible to write vertices at the end of the file.         */
+/************************************************************************/
+
+int SHPAPI_CALL
+SHPWriteObject(SHPHandle psSHP, int nShapeId, SHPObject * psObject )
+		      
+{
+    unsigned int	       	nRecordOffset, nRecordSize=0;
+    int i;
+    uchar	*pabyRec;
+    int32	i32;
+
+    psSHP->bUpdated = TRUE;
+
+/* -------------------------------------------------------------------- */
+/*      Ensure that shape object matches the type of the file it is     */
+/*      being written to.                                               */
+/* -------------------------------------------------------------------- */
+    assert( psObject->nSHPType == psSHP->nShapeType 
+            || psObject->nSHPType == SHPT_NULL );
+
+/* -------------------------------------------------------------------- */
+/*      Ensure that -1 is used for appends.  Either blow an             */
+/*      assertion, or if they are disabled, set the shapeid to -1       */
+/*      for appends.                                                    */
+/* -------------------------------------------------------------------- */
+    assert( nShapeId == -1 
+            || (nShapeId >= 0 && nShapeId < psSHP->nRecords) );
+
+    if( nShapeId != -1 && nShapeId >= psSHP->nRecords )
+        nShapeId = -1;
+
+/* -------------------------------------------------------------------- */
+/*      Add the new entity to the in memory index.                      */
+/* -------------------------------------------------------------------- */
+    if( nShapeId == -1 && psSHP->nRecords+1 > psSHP->nMaxRecords )
+    {
+	psSHP->nMaxRecords =(int) ( psSHP->nMaxRecords * 1.3 + 100);
+
+	psSHP->panRecOffset = (unsigned int *) 
+            SfRealloc(psSHP->panRecOffset,sizeof(unsigned int) * psSHP->nMaxRecords );
+	psSHP->panRecSize = (unsigned int *) 
+            SfRealloc(psSHP->panRecSize,sizeof(unsigned int) * psSHP->nMaxRecords );
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Initialize record.                                              */
+/* -------------------------------------------------------------------- */
+    pabyRec = (uchar *) malloc(psObject->nVertices * 4 * sizeof(double) 
+			       + psObject->nParts * 8 + 128);
+    
+/* -------------------------------------------------------------------- */
+/*  Extract vertices for a Polygon or Arc.				*/
+/* -------------------------------------------------------------------- */
+    if( psObject->nSHPType == SHPT_POLYGON
+        || psObject->nSHPType == SHPT_POLYGONZ
+        || psObject->nSHPType == SHPT_POLYGONM
+        || psObject->nSHPType == SHPT_ARC 
+        || psObject->nSHPType == SHPT_ARCZ
+        || psObject->nSHPType == SHPT_ARCM
+        || psObject->nSHPType == SHPT_MULTIPATCH )
+    {
+	int32		nPoints, nParts;
+	int    		i;
+
+	nPoints = psObject->nVertices;
+	nParts = psObject->nParts;
+
+	_SHPSetBounds( pabyRec + 12, psObject );
+
+	if( bBigEndian ) SwapWord( 4, &nPoints );
+	if( bBigEndian ) SwapWord( 4, &nParts );
+
+	ByteCopy( &nPoints, pabyRec + 40 + 8, 4 );
+	ByteCopy( &nParts, pabyRec + 36 + 8, 4 );
+
+        nRecordSize = 52;
+
+        /*
+         * Write part start positions.
+         */
+	ByteCopy( psObject->panPartStart, pabyRec + 44 + 8,
+                  4 * psObject->nParts );
+	for( i = 0; i < psObject->nParts; i++ )
+	{
+	    if( bBigEndian ) SwapWord( 4, pabyRec + 44 + 8 + 4*i );
+            nRecordSize += 4;
+	}
+
+        /*
+         * Write multipatch part types if needed.
+         */
+        if( psObject->nSHPType == SHPT_MULTIPATCH )
+        {
+            memcpy( pabyRec + nRecordSize, psObject->panPartType,
+                    4*psObject->nParts );
+            for( i = 0; i < psObject->nParts; i++ )
+            {
+                if( bBigEndian ) SwapWord( 4, pabyRec + nRecordSize );
+                nRecordSize += 4;
+            }
+        }
+
+        /*
+         * Write the (x,y) vertex values.
+         */
+	for( i = 0; i < psObject->nVertices; i++ )
+	{
+	    ByteCopy( psObject->padfX + i, pabyRec + nRecordSize, 8 );
+	    ByteCopy( psObject->padfY + i, pabyRec + nRecordSize + 8, 8 );
+
+	    if( bBigEndian )
+                SwapWord( 8, pabyRec + nRecordSize );
+            
+	    if( bBigEndian )
+                SwapWord( 8, pabyRec + nRecordSize + 8 );
+
+            nRecordSize += 2 * 8;
+	}
+
+        /*
+         * Write the Z coordinates (if any).
+         */
+        if( psObject->nSHPType == SHPT_POLYGONZ
+            || psObject->nSHPType == SHPT_ARCZ
+            || psObject->nSHPType == SHPT_MULTIPATCH )
+        {
+            ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 );
+            if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+            nRecordSize += 8;
+            
+            ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 );
+            if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+            nRecordSize += 8;
+
+            for( i = 0; i < psObject->nVertices; i++ )
+            {
+                ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 );
+                if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+                nRecordSize += 8;
+            }
+        }
+
+        /*
+         * Write the M values, if any.
+         */
+        if( psObject->bMeasureIsUsed
+            && (psObject->nSHPType == SHPT_POLYGONM
+            || psObject->nSHPType == SHPT_ARCM
+#ifndef DISABLE_MULTIPATCH_MEASURE            
+            || psObject->nSHPType == SHPT_MULTIPATCH
+#endif            
+            || psObject->nSHPType == SHPT_POLYGONZ
+            || psObject->nSHPType == SHPT_ARCZ) )
+        {
+            ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 );
+            if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+            nRecordSize += 8;
+            
+            ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 );
+            if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+            nRecordSize += 8;
+
+            for( i = 0; i < psObject->nVertices; i++ )
+            {
+                ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 );
+                if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+                nRecordSize += 8;
+            }
+        }
+    }
+
+/* -------------------------------------------------------------------- */
+/*  Extract vertices for a MultiPoint.					*/
+/* -------------------------------------------------------------------- */
+    else if( psObject->nSHPType == SHPT_MULTIPOINT
+             || psObject->nSHPType == SHPT_MULTIPOINTZ
+             || psObject->nSHPType == SHPT_MULTIPOINTM )
+    {
+	int32		nPoints;
+	int    		i;
+
+	nPoints = psObject->nVertices;
+
+        _SHPSetBounds( pabyRec + 12, psObject );
+
+	if( bBigEndian ) SwapWord( 4, &nPoints );
+	ByteCopy( &nPoints, pabyRec + 44, 4 );
+	
+	for( i = 0; i < psObject->nVertices; i++ )
+	{
+	    ByteCopy( psObject->padfX + i, pabyRec + 48 + i*16, 8 );
+	    ByteCopy( psObject->padfY + i, pabyRec + 48 + i*16 + 8, 8 );
+
+	    if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 );
+	    if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 + 8 );
+	}
+
+	nRecordSize = 48 + 16 * psObject->nVertices;
+
+        if( psObject->nSHPType == SHPT_MULTIPOINTZ )
+        {
+            ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 );
+            if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+            nRecordSize += 8;
+
+            ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 );
+            if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+            nRecordSize += 8;
+            
+            for( i = 0; i < psObject->nVertices; i++ )
+            {
+                ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 );
+                if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+                nRecordSize += 8;
+            }
+        }
+
+        if( psObject->bMeasureIsUsed
+            && (psObject->nSHPType == SHPT_MULTIPOINTZ
+            || psObject->nSHPType == SHPT_MULTIPOINTM) )
+        {
+            ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 );
+            if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+            nRecordSize += 8;
+
+            ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 );
+            if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+            nRecordSize += 8;
+            
+            for( i = 0; i < psObject->nVertices; i++ )
+            {
+                ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 );
+                if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+                nRecordSize += 8;
+            }
+        }
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Write point.							*/
+/* -------------------------------------------------------------------- */
+    else if( psObject->nSHPType == SHPT_POINT
+             || psObject->nSHPType == SHPT_POINTZ
+             || psObject->nSHPType == SHPT_POINTM )
+    {
+	ByteCopy( psObject->padfX, pabyRec + 12, 8 );
+	ByteCopy( psObject->padfY, pabyRec + 20, 8 );
+
+	if( bBigEndian ) SwapWord( 8, pabyRec + 12 );
+	if( bBigEndian ) SwapWord( 8, pabyRec + 20 );
+
+        nRecordSize = 28;
+        
+        if( psObject->nSHPType == SHPT_POINTZ )
+        {
+            ByteCopy( psObject->padfZ, pabyRec + nRecordSize, 8 );
+            if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+            nRecordSize += 8;
+        }
+        
+        if( psObject->bMeasureIsUsed
+            && (psObject->nSHPType == SHPT_POINTZ
+            || psObject->nSHPType == SHPT_POINTM) )
+        {
+            ByteCopy( psObject->padfM, pabyRec + nRecordSize, 8 );
+            if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
+            nRecordSize += 8;
+        }
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Not much to do for null geometries.                             */
+/* -------------------------------------------------------------------- */
+    else if( psObject->nSHPType == SHPT_NULL )
+    {
+        nRecordSize = 12;
+    }
+
+    else
+    {
+        /* unknown type */
+        assert( FALSE );
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Establish where we are going to put this record. If we are      */
+/*      rewriting and existing record, and it will fit, then put it     */
+/*      back where the original came from.  Otherwise write at the end. */
+/* -------------------------------------------------------------------- */
+    if( nShapeId == -1 || psSHP->panRecSize[nShapeId] < nRecordSize-8 )
+    {
+        unsigned int nExpectedSize = psSHP->nFileSize + nRecordSize;
+        if( nExpectedSize < psSHP->nFileSize ) // due to unsigned int overflow
+        {
+            char str[128];
+            sprintf( str, "Failed to write shape object. "
+                          "File size cannot reach %u + %u.",
+                          psSHP->nFileSize, nRecordSize );
+            psSHP->sHooks.Error( str );
+            free( pabyRec );
+            return -1;
+        }
+
+        if( nShapeId == -1 )
+            nShapeId = psSHP->nRecords++;
+
+        psSHP->panRecOffset[nShapeId] = nRecordOffset = psSHP->nFileSize;
+        psSHP->panRecSize[nShapeId] = nRecordSize-8;
+        psSHP->nFileSize += nRecordSize;
+    }
+    else
+    {
+        nRecordOffset = psSHP->panRecOffset[nShapeId];
+        psSHP->panRecSize[nShapeId] = nRecordSize-8;
+    }
+    
+/* -------------------------------------------------------------------- */
+/*      Set the shape type, record number, and record size.             */
+/* -------------------------------------------------------------------- */
+    i32 = nShapeId+1;					/* record # */
+    if( !bBigEndian ) SwapWord( 4, &i32 );
+    ByteCopy( &i32, pabyRec, 4 );
+
+    i32 = (nRecordSize-8)/2;				/* record size */
+    if( !bBigEndian ) SwapWord( 4, &i32 );
+    ByteCopy( &i32, pabyRec + 4, 4 );
+
+    i32 = psObject->nSHPType;				/* shape type */
+    if( bBigEndian ) SwapWord( 4, &i32 );
+    ByteCopy( &i32, pabyRec + 8, 4 );
+
+/* -------------------------------------------------------------------- */
+/*      Write out record.                                               */
+/* -------------------------------------------------------------------- */
+    if( psSHP->sHooks.FSeek( psSHP->fpSHP, nRecordOffset, 0 ) != 0 )
+    {
+        psSHP->sHooks.Error( "Error in psSHP->sHooks.FSeek() while writing object to .shp file." );
+        free( pabyRec );
+        return -1;
+    }
+    if( psSHP->sHooks.FWrite( pabyRec, nRecordSize, 1, psSHP->fpSHP ) < 1 )
+    {
+        psSHP->sHooks.Error( "Error in psSHP->sHooks.Fwrite() while writing object to .shp file." );
+        free( pabyRec );
+        return -1;
+    }
+    
+    free( pabyRec );
+
+/* -------------------------------------------------------------------- */
+/*	Expand file wide bounds based on this shape.			*/
+/* -------------------------------------------------------------------- */
+    if( psSHP->adBoundsMin[0] == 0.0
+        && psSHP->adBoundsMax[0] == 0.0
+        && psSHP->adBoundsMin[1] == 0.0
+        && psSHP->adBoundsMax[1] == 0.0 )
+    {
+        if( psObject->nSHPType == SHPT_NULL || psObject->nVertices == 0 )
+        {
+            psSHP->adBoundsMin[0] = psSHP->adBoundsMax[0] = 0.0;
+            psSHP->adBoundsMin[1] = psSHP->adBoundsMax[1] = 0.0;
+            psSHP->adBoundsMin[2] = psSHP->adBoundsMax[2] = 0.0;
+            psSHP->adBoundsMin[3] = psSHP->adBoundsMax[3] = 0.0;
+        }
+        else
+        {
+            psSHP->adBoundsMin[0] = psSHP->adBoundsMax[0] = psObject->padfX[0];
+            psSHP->adBoundsMin[1] = psSHP->adBoundsMax[1] = psObject->padfY[0];
+            psSHP->adBoundsMin[2] = psSHP->adBoundsMax[2] = psObject->padfZ[0];
+            psSHP->adBoundsMin[3] = psSHP->adBoundsMax[3] = psObject->padfM[0];
+        }
+    }
+
+    for( i = 0; i < psObject->nVertices; i++ )
+    {
+	psSHP->adBoundsMin[0] = MIN(psSHP->adBoundsMin[0],psObject->padfX[i]);
+	psSHP->adBoundsMin[1] = MIN(psSHP->adBoundsMin[1],psObject->padfY[i]);
+	psSHP->adBoundsMin[2] = MIN(psSHP->adBoundsMin[2],psObject->padfZ[i]);
+	psSHP->adBoundsMin[3] = MIN(psSHP->adBoundsMin[3],psObject->padfM[i]);
+	psSHP->adBoundsMax[0] = MAX(psSHP->adBoundsMax[0],psObject->padfX[i]);
+	psSHP->adBoundsMax[1] = MAX(psSHP->adBoundsMax[1],psObject->padfY[i]);
+	psSHP->adBoundsMax[2] = MAX(psSHP->adBoundsMax[2],psObject->padfZ[i]);
+	psSHP->adBoundsMax[3] = MAX(psSHP->adBoundsMax[3],psObject->padfM[i]);
+    }
+
+    return( nShapeId  );
+}
+
+/************************************************************************/
+/*                          SHPReadObject()                             */
+/*                                                                      */
+/*      Read the vertices, parts, and other non-attribute information	*/
+/*	for one shape.							*/
+/************************************************************************/
+
+SHPObject SHPAPI_CALL1(*)
+SHPReadObject( SHPHandle psSHP, int hEntity )
+
+{
+    int                  nEntitySize, nRequiredSize;
+    SHPObject		*psShape;
+    char                 pszErrorMsg[128];
+
+/* -------------------------------------------------------------------- */
+/*      Validate the record/entity number.                              */
+/* -------------------------------------------------------------------- */
+    if( hEntity < 0 || hEntity >= psSHP->nRecords )
+        return( NULL );
+
+/* -------------------------------------------------------------------- */
+/*      Ensure our record buffer is large enough.                       */
+/* -------------------------------------------------------------------- */
+    nEntitySize = psSHP->panRecSize[hEntity]+8;
+    if( nEntitySize > psSHP->nBufSize )
+    {
+	psSHP->pabyRec = (uchar *) SfRealloc(psSHP->pabyRec,nEntitySize);
+        if (psSHP->pabyRec == NULL)
+        {
+            char szError[200];
+
+            /* Reallocate previous successfull size for following features */
+            psSHP->pabyRec = malloc(psSHP->nBufSize);
+
+            sprintf( szError, 
+                     "Not enough memory to allocate requested memory (nBufSize=%d). "
+                     "Probably broken SHP file", psSHP->nBufSize );
+            psSHP->sHooks.Error( szError );
+            return NULL;
+        }
+
+        /* Only set new buffer size after successfull alloc */
+	psSHP->nBufSize = nEntitySize;
+    }
+
+    /* In case we were not able to reallocate the buffer on a previous step */
+    if (psSHP->pabyRec == NULL)
+    {
+        return NULL;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Read the record.                                                */
+/* -------------------------------------------------------------------- */
+    if( psSHP->sHooks.FSeek( psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0 ) != 0 )
+    {
+        /*
+         * TODO - mloskot: Consider detailed diagnostics of shape file,
+         * for example to detect if file is truncated.
+         */
+        char str[128];
+        sprintf( str,
+                 "Error in fseek() reading object from .shp file at offset %u",
+                 psSHP->panRecOffset[hEntity]);
+
+        psSHP->sHooks.Error( str );
+        return NULL;
+    }
+
+    if( psSHP->sHooks.FRead( psSHP->pabyRec, nEntitySize, 1, psSHP->fpSHP ) != 1 )
+    {
+        /*
+         * TODO - mloskot: Consider detailed diagnostics of shape file,
+         * for example to detect if file is truncated.
+         */
+        char str[128];
+        sprintf( str,
+                 "Error in fread() reading object of size %u from .shp file",
+                 nEntitySize);
+
+        psSHP->sHooks.Error( str );
+        return NULL;
+    }
+
+/* -------------------------------------------------------------------- */
+/*	Allocate and minimally initialize the object.			*/
+/* -------------------------------------------------------------------- */
+    psShape = (SHPObject *) calloc(1,sizeof(SHPObject));
+    psShape->nShapeId = hEntity;
+    psShape->bMeasureIsUsed = FALSE;
+
+    if ( 8 + 4 > nEntitySize )
+    {
+        snprintf(pszErrorMsg, 128, "Corrupted .shp file : shape %d : nEntitySize = %d",
+                    hEntity, nEntitySize); 
+        psSHP->sHooks.Error( pszErrorMsg );
+        SHPDestroyObject(psShape);
+        return NULL;
+    }
+    memcpy( &psShape->nSHPType, psSHP->pabyRec + 8, 4 );
+
+    if( bBigEndian ) SwapWord( 4, &(psShape->nSHPType) );
+
+/* ==================================================================== */
+/*  Extract vertices for a Polygon or Arc.				*/
+/* ==================================================================== */
+    if( psShape->nSHPType == SHPT_POLYGON || psShape->nSHPType == SHPT_ARC
+        || psShape->nSHPType == SHPT_POLYGONZ
+        || psShape->nSHPType == SHPT_POLYGONM
+        || psShape->nSHPType == SHPT_ARCZ
+        || psShape->nSHPType == SHPT_ARCM
+        || psShape->nSHPType == SHPT_MULTIPATCH )
+    {
+	int32		nPoints, nParts;
+	int    		i, nOffset;
+
+        if ( 40 + 8 + 4 > nEntitySize )
+        {
+            snprintf(pszErrorMsg, 128, "Corrupted .shp file : shape %d : nEntitySize = %d",
+                     hEntity, nEntitySize); 
+            psSHP->sHooks.Error( pszErrorMsg );
+            SHPDestroyObject(psShape);
+            return NULL;
+        }
+/* -------------------------------------------------------------------- */
+/*	Get the X/Y bounds.						*/
+/* -------------------------------------------------------------------- */
+        memcpy( &(psShape->dfXMin), psSHP->pabyRec + 8 +  4, 8 );
+        memcpy( &(psShape->dfYMin), psSHP->pabyRec + 8 + 12, 8 );
+        memcpy( &(psShape->dfXMax), psSHP->pabyRec + 8 + 20, 8 );
+        memcpy( &(psShape->dfYMax), psSHP->pabyRec + 8 + 28, 8 );
+
+	if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) );
+	if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) );
+	if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) );
+	if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) );
+
+/* -------------------------------------------------------------------- */
+/*      Extract part/point count, and build vertex and part arrays      */
+/*      to proper size.                                                 */
+/* -------------------------------------------------------------------- */
+	memcpy( &nPoints, psSHP->pabyRec + 40 + 8, 4 );
+	memcpy( &nParts, psSHP->pabyRec + 36 + 8, 4 );
+
+	if( bBigEndian ) SwapWord( 4, &nPoints );
+	if( bBigEndian ) SwapWord( 4, &nParts );
+
+        if (nPoints < 0 || nParts < 0 ||
+            nPoints > 50 * 1000 * 1000 || nParts > 10 * 1000 * 1000)
+        {
+            snprintf(pszErrorMsg, 128, "Corrupted .shp file : shape %d, nPoints=%d, nParts=%d.",
+                        hEntity, nPoints, nParts);
+            psSHP->sHooks.Error( pszErrorMsg );
+            SHPDestroyObject(psShape);
+            return NULL;
+        }
+        
+        /* With the previous checks on nPoints and nParts, */
+        /* we should not overflow here and after */
+        /* since 50 M * (16 + 8 + 8) = 1 600 MB */
+        nRequiredSize = 44 + 8 + 4 * nParts + 16 * nPoints;
+        if ( psShape->nSHPType == SHPT_POLYGONZ
+            || psShape->nSHPType == SHPT_ARCZ
+            || psShape->nSHPType == SHPT_MULTIPATCH )
+        {
+            nRequiredSize += 16 + 8 * nPoints;
+        }
+        if( psShape->nSHPType == SHPT_MULTIPATCH )
+        {
+            nRequiredSize += 4 * nParts;
+        }
+        if (nRequiredSize > nEntitySize)
+        {
+            snprintf(pszErrorMsg, 128, "Corrupted .shp file : shape %d, nPoints=%d, nParts=%d, nEntitySize=%d.",
+                        hEntity, nPoints, nParts, nEntitySize);
+            psSHP->sHooks.Error( pszErrorMsg );
+            SHPDestroyObject(psShape);
+            return NULL;
+        }
+
+	psShape->nVertices = nPoints;
+        psShape->padfX = (double *) calloc(nPoints,sizeof(double));
+        psShape->padfY = (double *) calloc(nPoints,sizeof(double));
+        psShape->padfZ = (double *) calloc(nPoints,sizeof(double));
+        psShape->padfM = (double *) calloc(nPoints,sizeof(double));
+
+	psShape->nParts = nParts;
+        psShape->panPartStart = (int *) calloc(nParts,sizeof(int));
+        psShape->panPartType = (int *) calloc(nParts,sizeof(int));
+        
+        if (psShape->padfX == NULL ||
+            psShape->padfY == NULL ||
+            psShape->padfZ == NULL ||
+            psShape->padfM == NULL ||
+            psShape->panPartStart == NULL ||
+            psShape->panPartType == NULL)
+        {
+            snprintf(pszErrorMsg, 128,
+                     "Not enough memory to allocate requested memory (nPoints=%d, nParts=%d) for shape %d. "
+                     "Probably broken SHP file", hEntity, nPoints, nParts );
+            psSHP->sHooks.Error( pszErrorMsg );
+            SHPDestroyObject(psShape);
+            return NULL;
+        }
+
+        for( i = 0; i < nParts; i++ )
+            psShape->panPartType[i] = SHPP_RING;
+
+/* -------------------------------------------------------------------- */
+/*      Copy out the part array from the record.                        */
+/* -------------------------------------------------------------------- */
+	memcpy( psShape->panPartStart, psSHP->pabyRec + 44 + 8, 4 * nParts );
+	for( i = 0; i < nParts; i++ )
+	{
+	    if( bBigEndian ) SwapWord( 4, psShape->panPartStart+i );
+
+            /* We check that the offset is inside the vertex array */
+            if (psShape->panPartStart[i] < 0 ||
+                psShape->panPartStart[i] >= psShape->nVertices)
+            {
+                snprintf(pszErrorMsg, 128, "Corrupted .shp file : shape %d : panPartStart[%d] = %d, nVertices = %d",
+                         hEntity, i, psShape->panPartStart[i], psShape->nVertices); 
+                psSHP->sHooks.Error( pszErrorMsg );
+                SHPDestroyObject(psShape);
+                return NULL;
+            }
+            if (i > 0 && psShape->panPartStart[i] <= psShape->panPartStart[i-1])
+            {
+                snprintf(pszErrorMsg, 128, "Corrupted .shp file : shape %d : panPartStart[%d] = %d, panPartStart[%d] = %d",
+                         hEntity, i, psShape->panPartStart[i], i - 1, psShape->panPartStart[i - 1]); 
+                psSHP->sHooks.Error( pszErrorMsg );
+                SHPDestroyObject(psShape);
+                return NULL;
+            }
+	}
+
+	nOffset = 44 + 8 + 4*nParts;
+
+/* -------------------------------------------------------------------- */
+/*      If this is a multipatch, we will also have parts types.         */
+/* -------------------------------------------------------------------- */
+        if( psShape->nSHPType == SHPT_MULTIPATCH )
+        {
+            memcpy( psShape->panPartType, psSHP->pabyRec + nOffset, 4*nParts );
+            for( i = 0; i < nParts; i++ )
+            {
+                if( bBigEndian ) SwapWord( 4, psShape->panPartType+i );
+            }
+
+            nOffset += 4*nParts;
+        }
+        
+/* -------------------------------------------------------------------- */
+/*      Copy out the vertices from the record.                          */
+/* -------------------------------------------------------------------- */
+	for( i = 0; i < nPoints; i++ )
+	{
+	    memcpy(psShape->padfX + i,
+		   psSHP->pabyRec + nOffset + i * 16,
+		   8 );
+
+	    memcpy(psShape->padfY + i,
+		   psSHP->pabyRec + nOffset + i * 16 + 8,
+		   8 );
+
+	    if( bBigEndian ) SwapWord( 8, psShape->padfX + i );
+	    if( bBigEndian ) SwapWord( 8, psShape->padfY + i );
+	}
+
+        nOffset += 16*nPoints;
+        
+/* -------------------------------------------------------------------- */
+/*      If we have a Z coordinate, collect that now.                    */
+/* -------------------------------------------------------------------- */
+        if( psShape->nSHPType == SHPT_POLYGONZ
+            || psShape->nSHPType == SHPT_ARCZ
+            || psShape->nSHPType == SHPT_MULTIPATCH )
+        {
+            memcpy( &(psShape->dfZMin), psSHP->pabyRec + nOffset, 8 );
+            memcpy( &(psShape->dfZMax), psSHP->pabyRec + nOffset + 8, 8 );
+            
+            if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) );
+            if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) );
+            
+            for( i = 0; i < nPoints; i++ )
+            {
+                memcpy( psShape->padfZ + i,
+                        psSHP->pabyRec + nOffset + 16 + i*8, 8 );
+                if( bBigEndian ) SwapWord( 8, psShape->padfZ + i );
+            }
+
+            nOffset += 16 + 8*nPoints;
+        }
+
+/* -------------------------------------------------------------------- */
+/*      If we have a M measure value, then read it now.  We assume      */
+/*      that the measure can be present for any shape if the size is    */
+/*      big enough, but really it will only occur for the Z shapes      */
+/*      (options), and the M shapes.                                    */
+/* -------------------------------------------------------------------- */
+        if( nEntitySize >= nOffset + 16 + 8*nPoints )
+        {
+            memcpy( &(psShape->dfMMin), psSHP->pabyRec + nOffset, 8 );
+            memcpy( &(psShape->dfMMax), psSHP->pabyRec + nOffset + 8, 8 );
+            
+            if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) );
+            if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) );
+            
+            for( i = 0; i < nPoints; i++ )
+            {
+                memcpy( psShape->padfM + i,
+                        psSHP->pabyRec + nOffset + 16 + i*8, 8 );
+                if( bBigEndian ) SwapWord( 8, psShape->padfM + i );
+            }
+            psShape->bMeasureIsUsed = TRUE;
+        }
+    }
+
+/* ==================================================================== */
+/*  Extract vertices for a MultiPoint.					*/
+/* ==================================================================== */
+    else if( psShape->nSHPType == SHPT_MULTIPOINT
+             || psShape->nSHPType == SHPT_MULTIPOINTM
+             || psShape->nSHPType == SHPT_MULTIPOINTZ )
+    {
+	int32		nPoints;
+	int    		i, nOffset;
+
+        if ( 44 + 4 > nEntitySize )
+        {
+            snprintf(pszErrorMsg, 128, "Corrupted .shp file : shape %d : nEntitySize = %d",
+                     hEntity, nEntitySize); 
+            psSHP->sHooks.Error( pszErrorMsg );
+            SHPDestroyObject(psShape);
+            return NULL;
+        }
+	memcpy( &nPoints, psSHP->pabyRec + 44, 4 );
+
+	if( bBigEndian ) SwapWord( 4, &nPoints );
+
+        if (nPoints < 0 || nPoints > 50 * 1000 * 1000)
+        {
+            snprintf(pszErrorMsg, 128, "Corrupted .shp file : shape %d : nPoints = %d",
+                     hEntity, nPoints); 
+            psSHP->sHooks.Error( pszErrorMsg );
+            SHPDestroyObject(psShape);
+            return NULL;
+        }
+
+        nRequiredSize = 48 + nPoints * 16;
+        if( psShape->nSHPType == SHPT_MULTIPOINTZ )
+        {
+            nRequiredSize += 16 + nPoints * 8;
+        }
+        if (nRequiredSize > nEntitySize)
+        {
+            snprintf(pszErrorMsg, 128, "Corrupted .shp file : shape %d : nPoints = %d, nEntitySize = %d",
+                     hEntity, nPoints, nEntitySize); 
+            psSHP->sHooks.Error( pszErrorMsg );
+            SHPDestroyObject(psShape);
+            return NULL;
+        }
+        
+	psShape->nVertices = nPoints;
+        psShape->padfX = (double *) calloc(nPoints,sizeof(double));
+        psShape->padfY = (double *) calloc(nPoints,sizeof(double));
+        psShape->padfZ = (double *) calloc(nPoints,sizeof(double));
+        psShape->padfM = (double *) calloc(nPoints,sizeof(double));
+
+        if (psShape->padfX == NULL ||
+            psShape->padfY == NULL ||
+            psShape->padfZ == NULL ||
+            psShape->padfM == NULL)
+        {
+            snprintf(pszErrorMsg, 128,
+                     "Not enough memory to allocate requested memory (nPoints=%d) for shape %d. "
+                     "Probably broken SHP file", hEntity, nPoints );
+            psSHP->sHooks.Error( pszErrorMsg );
+            SHPDestroyObject(psShape);
+            return NULL;
+        }
+
+	for( i = 0; i < nPoints; i++ )
+	{
+	    memcpy(psShape->padfX+i, psSHP->pabyRec + 48 + 16 * i, 8 );
+	    memcpy(psShape->padfY+i, psSHP->pabyRec + 48 + 16 * i + 8, 8 );
+
+	    if( bBigEndian ) SwapWord( 8, psShape->padfX + i );
+	    if( bBigEndian ) SwapWord( 8, psShape->padfY + i );
+	}
+
+        nOffset = 48 + 16*nPoints;
+        
+/* -------------------------------------------------------------------- */
+/*	Get the X/Y bounds.						*/
+/* -------------------------------------------------------------------- */
+        memcpy( &(psShape->dfXMin), psSHP->pabyRec + 8 +  4, 8 );
+        memcpy( &(psShape->dfYMin), psSHP->pabyRec + 8 + 12, 8 );
+        memcpy( &(psShape->dfXMax), psSHP->pabyRec + 8 + 20, 8 );
+        memcpy( &(psShape->dfYMax), psSHP->pabyRec + 8 + 28, 8 );
+
+	if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) );
+	if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) );
+	if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) );
+	if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) );
+
+/* -------------------------------------------------------------------- */
+/*      If we have a Z coordinate, collect that now.                    */
+/* -------------------------------------------------------------------- */
+        if( psShape->nSHPType == SHPT_MULTIPOINTZ )
+        {
+            memcpy( &(psShape->dfZMin), psSHP->pabyRec + nOffset, 8 );
+            memcpy( &(psShape->dfZMax), psSHP->pabyRec + nOffset + 8, 8 );
+            
+            if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) );
+            if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) );
+            
+            for( i = 0; i < nPoints; i++ )
+            {
+                memcpy( psShape->padfZ + i,
+                        psSHP->pabyRec + nOffset + 16 + i*8, 8 );
+                if( bBigEndian ) SwapWord( 8, psShape->padfZ + i );
+            }
+
+            nOffset += 16 + 8*nPoints;
+        }
+
+/* -------------------------------------------------------------------- */
+/*      If we have a M measure value, then read it now.  We assume      */
+/*      that the measure can be present for any shape if the size is    */
+/*      big enough, but really it will only occur for the Z shapes      */
+/*      (options), and the M shapes.                                    */
+/* -------------------------------------------------------------------- */
+        if( nEntitySize >= nOffset + 16 + 8*nPoints )
+        {
+            memcpy( &(psShape->dfMMin), psSHP->pabyRec + nOffset, 8 );
+            memcpy( &(psShape->dfMMax), psSHP->pabyRec + nOffset + 8, 8 );
+            
+            if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) );
+            if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) );
+            
+            for( i = 0; i < nPoints; i++ )
+            {
+                memcpy( psShape->padfM + i,
+                        psSHP->pabyRec + nOffset + 16 + i*8, 8 );
+                if( bBigEndian ) SwapWord( 8, psShape->padfM + i );
+            }
+            psShape->bMeasureIsUsed = TRUE;
+        }
+    }
+
+/* ==================================================================== */
+/*      Extract vertices for a point.                                   */
+/* ==================================================================== */
+    else if( psShape->nSHPType == SHPT_POINT
+             || psShape->nSHPType == SHPT_POINTM
+             || psShape->nSHPType == SHPT_POINTZ )
+    {
+        int	nOffset;
+        
+	psShape->nVertices = 1;
+        psShape->padfX = (double *) calloc(1,sizeof(double));
+        psShape->padfY = (double *) calloc(1,sizeof(double));
+        psShape->padfZ = (double *) calloc(1,sizeof(double));
+        psShape->padfM = (double *) calloc(1,sizeof(double));
+
+        if (20 + 8 + (( psShape->nSHPType == SHPT_POINTZ ) ? 8 : 0)> nEntitySize)
+        {
+            snprintf(pszErrorMsg, 128, "Corrupted .shp file : shape %d : nEntitySize = %d",
+                     hEntity, nEntitySize); 
+            psSHP->sHooks.Error( pszErrorMsg );
+            SHPDestroyObject(psShape);
+            return NULL;
+        }
+	memcpy( psShape->padfX, psSHP->pabyRec + 12, 8 );
+	memcpy( psShape->padfY, psSHP->pabyRec + 20, 8 );
+
+	if( bBigEndian ) SwapWord( 8, psShape->padfX );
+	if( bBigEndian ) SwapWord( 8, psShape->padfY );
+
+        nOffset = 20 + 8;
+        
+/* -------------------------------------------------------------------- */
+/*      If we have a Z coordinate, collect that now.                    */
+/* -------------------------------------------------------------------- */
+        if( psShape->nSHPType == SHPT_POINTZ )
+        {
+            memcpy( psShape->padfZ, psSHP->pabyRec + nOffset, 8 );
+        
+            if( bBigEndian ) SwapWord( 8, psShape->padfZ );
+            
+            nOffset += 8;
+        }
+
+/* -------------------------------------------------------------------- */
+/*      If we have a M measure value, then read it now.  We assume      */
+/*      that the measure can be present for any shape if the size is    */
+/*      big enough, but really it will only occur for the Z shapes      */
+/*      (options), and the M shapes.                                    */
+/* -------------------------------------------------------------------- */
+        if( nEntitySize >= nOffset + 8 )
+        {
+            memcpy( psShape->padfM, psSHP->pabyRec + nOffset, 8 );
+        
+            if( bBigEndian ) SwapWord( 8, psShape->padfM );
+            psShape->bMeasureIsUsed = TRUE;
+        }
+
+/* -------------------------------------------------------------------- */
+/*      Since no extents are supplied in the record, we will apply      */
+/*      them from the single vertex.                                    */
+/* -------------------------------------------------------------------- */
+        psShape->dfXMin = psShape->dfXMax = psShape->padfX[0];
+        psShape->dfYMin = psShape->dfYMax = psShape->padfY[0];
+        psShape->dfZMin = psShape->dfZMax = psShape->padfZ[0];
+        psShape->dfMMin = psShape->dfMMax = psShape->padfM[0];
+    }
+
+    return( psShape );
+}
+
+/************************************************************************/
+/*                            SHPTypeName()                             */
+/************************************************************************/
+
+const char SHPAPI_CALL1(*)
+SHPTypeName( int nSHPType )
+
+{
+    switch( nSHPType )
+    {
+      case SHPT_NULL:
+        return "NullShape";
+
+      case SHPT_POINT:
+        return "Point";
+
+      case SHPT_ARC:
+        return "Arc";
+
+      case SHPT_POLYGON:
+        return "Polygon";
+
+      case SHPT_MULTIPOINT:
+        return "MultiPoint";
+        
+      case SHPT_POINTZ:
+        return "PointZ";
+
+      case SHPT_ARCZ:
+        return "ArcZ";
+
+      case SHPT_POLYGONZ:
+        return "PolygonZ";
+
+      case SHPT_MULTIPOINTZ:
+        return "MultiPointZ";
+        
+      case SHPT_POINTM:
+        return "PointM";
+
+      case SHPT_ARCM:
+        return "ArcM";
+
+      case SHPT_POLYGONM:
+        return "PolygonM";
+
+      case SHPT_MULTIPOINTM:
+        return "MultiPointM";
+
+      case SHPT_MULTIPATCH:
+        return "MultiPatch";
+
+      default:
+        return "UnknownShapeType";
+    }
+}
+
+/************************************************************************/
+/*                          SHPPartTypeName()                           */
+/************************************************************************/
+
+const char SHPAPI_CALL1(*)
+SHPPartTypeName( int nPartType )
+
+{
+    switch( nPartType )
+    {
+      case SHPP_TRISTRIP:
+        return "TriangleStrip";
+        
+      case SHPP_TRIFAN:
+        return "TriangleFan";
+
+      case SHPP_OUTERRING:
+        return "OuterRing";
+
+      case SHPP_INNERRING:
+        return "InnerRing";
+
+      case SHPP_FIRSTRING:
+        return "FirstRing";
+
+      case SHPP_RING:
+        return "Ring";
+
+      default:
+        return "UnknownPartType";
+    }
+}
+
+/************************************************************************/
+/*                          SHPDestroyObject()                          */
+/************************************************************************/
+
+void SHPAPI_CALL
+SHPDestroyObject( SHPObject * psShape )
+
+{
+    if( psShape == NULL )
+        return;
+    
+    if( psShape->padfX != NULL )
+        free( psShape->padfX );
+    if( psShape->padfY != NULL )
+        free( psShape->padfY );
+    if( psShape->padfZ != NULL )
+        free( psShape->padfZ );
+    if( psShape->padfM != NULL )
+        free( psShape->padfM );
+
+    if( psShape->panPartStart != NULL )
+        free( psShape->panPartStart );
+    if( psShape->panPartType != NULL )
+        free( psShape->panPartType );
+
+    free( psShape );
+}
+
+/************************************************************************/
+/*                          SHPRewindObject()                           */
+/*                                                                      */
+/*      Reset the winding of polygon objects to adhere to the           */
+/*      specification.                                                  */
+/************************************************************************/
+
+int SHPAPI_CALL
+SHPRewindObject( SHPHandle hSHP, SHPObject * psObject )
+
+{
+    int  iOpRing, bAltered = 0;
+
+/* -------------------------------------------------------------------- */
+/*      Do nothing if this is not a polygon object.                     */
+/* -------------------------------------------------------------------- */
+    if( psObject->nSHPType != SHPT_POLYGON
+        && psObject->nSHPType != SHPT_POLYGONZ
+        && psObject->nSHPType != SHPT_POLYGONM )
+        return 0;
+
+    if( psObject->nVertices == 0 || psObject->nParts == 0 )
+        return 0;
+
+/* -------------------------------------------------------------------- */
+/*      Process each of the rings.                                      */
+/* -------------------------------------------------------------------- */
+    for( iOpRing = 0; iOpRing < psObject->nParts; iOpRing++ )
+    {
+        int      bInner, iVert, nVertCount, nVertStart, iCheckRing;
+        double   dfSum, dfTestX, dfTestY;
+
+/* -------------------------------------------------------------------- */
+/*      Determine if this ring is an inner ring or an outer ring        */
+/*      relative to all the other rings.  For now we assume the         */
+/*      first ring is outer and all others are inner, but eventually    */
+/*      we need to fix this to handle multiple island polygons and      */
+/*      unordered sets of rings.                                        */
+/*                                                                      */
+/* -------------------------------------------------------------------- */
+
+        /* Use point in the middle of segment to avoid testing
+         * common points of rings.
+         */
+        dfTestX = ( psObject->padfX[psObject->panPartStart[iOpRing]]
+                    + psObject->padfX[psObject->panPartStart[iOpRing] + 1] ) / 2;
+        dfTestY = ( psObject->padfY[psObject->panPartStart[iOpRing]]
+                    + psObject->padfY[psObject->panPartStart[iOpRing] + 1] ) / 2;
+
+        bInner = FALSE;
+        for( iCheckRing = 0; iCheckRing < psObject->nParts; iCheckRing++ )
+        {
+            int iEdge;
+
+            if( iCheckRing == iOpRing )
+                continue;
+            
+            nVertStart = psObject->panPartStart[iCheckRing];
+
+            if( iCheckRing == psObject->nParts-1 )
+                nVertCount = psObject->nVertices 
+                    - psObject->panPartStart[iCheckRing];
+            else
+                nVertCount = psObject->panPartStart[iCheckRing+1] 
+                    - psObject->panPartStart[iCheckRing];
+
+            for( iEdge = 0; iEdge < nVertCount; iEdge++ )
+            {
+                int iNext;
+
+                if( iEdge < nVertCount-1 )
+                    iNext = iEdge+1;
+                else
+                    iNext = 0;
+
+                /* Rule #1:
+                 * Test whether the edge 'straddles' the horizontal ray from the test point (dfTestY,dfTestY)
+                 * The rule #1 also excludes edges collinear with the ray.
+                 */
+                if ( ( psObject->padfY[iEdge+nVertStart] < dfTestY
+                       && dfTestY <= psObject->padfY[iNext+nVertStart] )
+                    || ( psObject->padfY[iNext+nVertStart] < dfTestY
+                         && dfTestY <= psObject->padfY[iEdge+nVertStart] ) )
+                {
+                    /* Rule #2:
+                    * Test if edge-ray intersection is on the right from the test point (dfTestY,dfTestY)
+                    */
+                    double const intersect = 
+                        ( psObject->padfX[iEdge+nVertStart]
+                          + ( dfTestY - psObject->padfY[iEdge+nVertStart] ) 
+                          / ( psObject->padfY[iNext+nVertStart] - psObject->padfY[iEdge+nVertStart] )
+                          * ( psObject->padfX[iNext+nVertStart] - psObject->padfX[iEdge+nVertStart] ) );
+
+                    if (intersect  < dfTestX)
+                    {
+                        bInner = !bInner;
+                    }
+                }    
+            }
+        } /* for iCheckRing */
+
+/* -------------------------------------------------------------------- */
+/*      Determine the current order of this ring so we will know if     */
+/*      it has to be reversed.                                          */
+/* -------------------------------------------------------------------- */
+        nVertStart = psObject->panPartStart[iOpRing];
+
+        if( iOpRing == psObject->nParts-1 )
+            nVertCount = psObject->nVertices - psObject->panPartStart[iOpRing];
+        else
+            nVertCount = psObject->panPartStart[iOpRing+1] 
+                - psObject->panPartStart[iOpRing];
+
+        if (nVertCount < 2)
+            continue;
+
+        dfSum = psObject->padfX[nVertStart] * (psObject->padfY[nVertStart+1] - psObject->padfY[nVertStart+nVertCount-1]);
+        for( iVert = nVertStart + 1; iVert < nVertStart+nVertCount-1; iVert++ )
+        {
+            dfSum += psObject->padfX[iVert] * (psObject->padfY[iVert+1] - psObject->padfY[iVert-1]);
+        }
+
+        dfSum += psObject->padfX[iVert] * (psObject->padfY[nVertStart] - psObject->padfY[iVert-1]);
+
+/* -------------------------------------------------------------------- */
+/*      Reverse if necessary.                                           */
+/* -------------------------------------------------------------------- */
+        if( (dfSum < 0.0 && bInner) || (dfSum > 0.0 && !bInner) )
+        {
+            int   i;
+
+            bAltered++;
+            for( i = 0; i < nVertCount/2; i++ )
+            {
+                double dfSaved;
+
+                /* Swap X */
+                dfSaved = psObject->padfX[nVertStart+i];
+                psObject->padfX[nVertStart+i] = 
+                    psObject->padfX[nVertStart+nVertCount-i-1];
+                psObject->padfX[nVertStart+nVertCount-i-1] = dfSaved;
+
+                /* Swap Y */
+                dfSaved = psObject->padfY[nVertStart+i];
+                psObject->padfY[nVertStart+i] = 
+                    psObject->padfY[nVertStart+nVertCount-i-1];
+                psObject->padfY[nVertStart+nVertCount-i-1] = dfSaved;
+
+                /* Swap Z */
+                if( psObject->padfZ )
+                {
+                    dfSaved = psObject->padfZ[nVertStart+i];
+                    psObject->padfZ[nVertStart+i] = 
+                        psObject->padfZ[nVertStart+nVertCount-i-1];
+                    psObject->padfZ[nVertStart+nVertCount-i-1] = dfSaved;
+                }
+
+                /* Swap M */
+                if( psObject->padfM )
+                {
+                    dfSaved = psObject->padfM[nVertStart+i];
+                    psObject->padfM[nVertStart+i] = 
+                        psObject->padfM[nVertStart+nVertCount-i-1];
+                    psObject->padfM[nVertStart+nVertCount-i-1] = dfSaved;
+                }
+            }
+        }
+    }
+
+    return bAltered;
+}
diff --git a/plugins/list/list.cpp b/plugins/list/list.cpp
new file mode 100755
index 0000000..b6228e5
--- /dev/null
+++ b/plugins/list/list.cpp
@@ -0,0 +1,238 @@
+/*****************************************************************************/
+/*  list.cpp - List selected entities                                        */
+/*                                                                           */
+/*  Copyright (C) 2011 Rallaz, rallazz at gmail.com                             */
+/*                                                                           */
+/*  This library is free software, licensed under the terms of the GNU       */
+/*  General Public License as published by the Free Software Foundation,     */
+/*  either version 2 of the License, or (at your option) any later version.  */
+/*  You should have received a copy of the GNU General Public License        */
+/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
+/*****************************************************************************/
+
+
+#include <QTextEdit>
+#include <QColor>
+#include <QDialogButtonBox>
+#include <QVBoxLayout>
+#include <math.h>
+#include "document_interface.h"
+#include "list.h"
+
+QString LC_List::name() const
+ {
+     return (tr("List entities"));
+ }
+
+PluginCapabilities LC_List::getCapabilities() const
+{
+    PluginCapabilities pluginCapabilities;
+    pluginCapabilities.menuEntryPoints
+            << PluginMenuLocation("Info", tr("List entities"));
+    return pluginCapabilities;
+}
+
+void LC_List::execComm(Document_Interface *doc,
+                             QWidget *parent, QString cmd)
+{
+    Q_UNUSED(parent);
+    QList<Plug_Entity *> obj;
+    bool yes  = doc->getSelect(&obj);
+    if (!yes || obj.isEmpty()) return;
+
+    QString text;
+    for (int i = 0; i < obj.size(); ++i) {
+        QString strdata = getStrData(obj.at(i));
+        text.append(QString("n %1: \n").arg(i+1));
+        text.append(strdata);
+    }
+    lc_Listdlg dlg(parent);
+    dlg.setText(text);
+    dlg.exec();
+
+    while (!obj.isEmpty())
+        delete obj.takeFirst();
+}
+
+QString LC_List::getStrData(Plug_Entity *ent) {
+    QHash<int, QVariant> data;
+    QString str;
+    double numA, numB, numC;
+    QPointF ptA, ptB, ptC;
+    //common entity data
+    if (ent == 0)
+        return QString("Empty Entity\n\n");
+    ent->getData(&data);
+    str = "Layer: " + data.value(DPI::LAYER).toString();
+    QColor color = data.value(DPI::COLOR).value<QColor>();
+    str.append("\n Color: " + color.name());
+    str.append(" Line type: " + data.value(DPI::LTYPE).toString());
+    str.append( "\n Line thickness: " + data.value(DPI::LWIDTH).toString());
+    str.append( QString("\n ID: %1\n").arg(data.value(DPI::EID).toLongLong()));
+    int et = data.value(DPI::ETYPE).toInt();
+
+    //specific entity data
+    switch (et) {
+    case DPI::POINT:
+        str.append( QString("     in point: X=%1 Y=%2\n\n").arg(
+                data.value(DPI::STARTX).toDouble()).arg(
+                data.value(DPI::STARTY).toDouble() ) );
+        return QString("POINT: ").append(str);
+        break;
+    case DPI::LINE:
+        ptA.setX( data.value(DPI::STARTX).toDouble() );
+        ptA.setY( data.value(DPI::STARTY).toDouble() );
+        ptB.setX( data.value(DPI::ENDX).toDouble() );
+        ptB.setY( data.value(DPI::ENDY).toDouble() );
+        str.append( QString("     from point: X=%1 Y=%2\n     to point: X=%3 Y=%4\n").arg(
+                ptA.x()).arg(ptA.y()).arg(ptB.x()).arg(ptB.y()) );
+        ptC = ptB - ptA;
+        numA = sqrt( (ptC.x()*ptC.x())+ (ptC.y()*ptC.y()));
+        str.append( QString("   length: %1,").arg( numA ));
+        numB = asin(ptC.y() / numA);
+        numC = numB*180/M_PI;
+        if (ptC.x() < 0) numC = 180 - numC;
+        if (numC < 0) numC = 360 + numC;
+        str.append( QString("  Angle in XY plane: %1\n").arg(numC) );
+        str.append( QString("  Inc. X = %1,  Inc. Y = %2\n\n").arg(
+                            ptC.x() ).arg(ptC.y()));
+         return QString("LINE: ").append(str);
+       break;
+    case DPI::ARC:
+        str.append( QString("   certer point: X=%1 Y=%2\n").arg(
+                data.value(DPI::STARTX).toDouble()).arg(
+                data.value(DPI::STARTY).toDouble() ) );
+        numA = data.value(DPI::RADIUS).toDouble();
+        numB = data.value(DPI::STARTANGLE).toDouble();
+        numC = data.value(DPI::ENDANGLE).toDouble();
+        str.append( QString("   radius: %1\n").arg(numA) );
+        str.append( QString("   initial angle: %1\n").arg(numB*180/M_PI) );
+        str.append( QString("   final angle: %1\n").arg(numC*180/M_PI) );
+        str.append( QString("   length: %1\n").arg( (numC-numB)*numA) );
+        return QString("ARC: ").append(str);
+        break;
+    case DPI::CIRCLE:
+        str.append( QString("   certer point: X=%1 Y=%2\n").arg(
+                data.value(DPI::STARTX).toDouble()).arg(
+                data.value(DPI::STARTY).toDouble() ) );
+        numA = data.value(DPI::RADIUS).toDouble();
+        str.append( QString("   radius: %1\n").arg(numA) );
+        str.append( QString("   circumference: %1\n").arg(
+                numA*2*M_PI ) );
+        str.append( QString("   area: %1\n\n").arg(
+                numA*numA*M_PI ) );
+        return QString("CIRCLE: ").append(str);
+        break;
+    case DPI::ELLIPSE://toy aqui
+        str.append( QString("   certer point: X=%1 Y=%2\n").arg(
+                data.value(DPI::STARTX).toDouble()).arg(
+                data.value(DPI::STARTY).toDouble() ) );
+        str.append( QString("   major axis: X=%1 Y=%2\n").arg(
+                data.value(DPI::ENDX).toDouble()).arg(
+                data.value(DPI::ENDY).toDouble() ) );
+/*        str.append( QString("   minor axis: X=%1 Y=%2\n").arg(
+                data.value(DPI::ENDX).toDouble()).arg(
+                data.value(DPI::ENDY).toDouble() ) );
+        str.append( QString("   start point: X=%1 Y=%2\n").arg(
+                data.value(DPI::ENDX).toDouble()).arg(
+                data.value(DPI::ENDY).toDouble() ) );
+        str.append( QString("   end point: X=%1 Y=%2\n").arg(
+                data.value(DPI::ENDX).toDouble()).arg(
+                data.value(DPI::ENDY).toDouble() ) );
+        str.append( QString("   initial angle: %1\n").arg(numB*180/M_PI) );
+        str.append( QString("   final angle: %1\n").arg(numC*180/M_PI) );
+        str.append( QString("   radius ratio: %1\n").arg(numC*180/M_PI) );*/
+        return QString("ELLIPSE: ").append(str);
+        break;
+
+    case DPI::CONSTRUCTIONLINE:
+        return QString("CONSTRUCTIONLINE: ").append(str);
+        break;
+    case DPI::OVERLAYBOX:
+        return QString("OVERLAYBOX: ").append(str);
+        break;
+    case DPI::SOLID:
+        return QString("SOLID: ").append(str);
+        break;
+//container entities
+    case DPI::TEXT:
+        return QString("TEXT: ").append(str);
+        break;
+    case DPI::INSERT:
+        return QString("INSERT: ").append(str);
+        break;
+    case DPI::POLYLINE: {
+        if (data.value(DPI::CLOSEPOLY).toInt() == 0 )
+            str.append( QString("     Opened\n") );
+        else
+            str.append( QString("     Closed\n") );
+        str.append( QString("     Vertex:\n"));
+        QList<Plug_VertexData> vl;
+        ent->getPolylineData(&vl);
+        for (int i = 0; i < vl.size(); ++i) {
+            str.append( QString("     in point: X=%1 Y=%2\n").arg(
+                           vl.at(i).point.x()).arg(vl.at(i).point.y()) );
+            if (vl.at(i).bulge != 0)
+            str.append( QString("     curvature: %1\n").arg( vl.at(i).bulge) );
+        }
+        return QString("POLYLINE: ").append(str);
+        break; }
+    case DPI::IMAGE:
+        return QString("IMAGE: ").append(str);
+        break;
+    case DPI::SPLINE:
+        return QString("SPLINE: ").append(str);
+        break;
+    case DPI::HATCH:
+        return QString("HATCH: ").append(str);
+        break;
+    case DPI::DIMLEADER:
+        return QString("DIMLEADER: ").append(str);
+        break;
+    case DPI::DIMALIGNED:
+        return QString("DIMALIGNED: ").append(str);
+        break;
+    case DPI::DIMLINEAR:
+        return QString("DIMLINEAR: ").append(str);
+        break;
+    case DPI::DIMRADIAL:
+        return QString("DIMRADIAL: ").append(str);
+        break;
+    case DPI::DIMDIAMETRIC:
+        return QString("DIMDIAMETRIC: ").append(str);
+        break;
+    case DPI::DIMANGULAR:
+        return QString("DIMANGULAR: ").append(str);
+        break;
+    default:
+        break;
+    }
+        return QString("UNKNOWN: ").append(str);
+}
+
+/*****************************/
+lc_Listdlg::lc_Listdlg(QWidget *parent) :  QDialog(parent)
+{
+    setWindowTitle(tr("List entities"));
+//    QTextEdit *edit= new QTextEdit(this);
+    edit.setReadOnly (true);
+    edit.setAcceptRichText ( false );
+    QDialogButtonBox* bb = new QDialogButtonBox( QDialogButtonBox::Close, Qt::Horizontal, this );
+    QVBoxLayout *mainLayout = new QVBoxLayout;
+    mainLayout->addWidget(&edit);
+    mainLayout->addWidget(bb);
+    this->setLayout(mainLayout);
+    this->resize ( 450, 350 );
+
+    connect(bb, SIGNAL(rejected()), this, SLOT(accept()));
+}
+
+void lc_Listdlg::setText(QString text)
+{
+    edit.setText(text);
+}
+lc_Listdlg::~lc_Listdlg()
+{
+}
+
+Q_EXPORT_PLUGIN2(lc_list, LC_List);
diff --git a/plugins/list/list.h b/plugins/list/list.h
new file mode 100755
index 0000000..b205f2c
--- /dev/null
+++ b/plugins/list/list.h
@@ -0,0 +1,69 @@
+/*****************************************************************************/
+/*  list.h - List selected entities                                          */
+/*                                                                           */
+/*  Copyright (C) 2011 Rallaz, rallazz at gmail.com                             */
+/*                                                                           */
+/*  This library is free software, licensed under the terms of the GNU       */
+/*  General Public License as published by the Free Software Foundation,     */
+/*  either version 2 of the License, or (at your option) any later version.  */
+/*  You should have received a copy of the GNU General Public License        */
+/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
+/*****************************************************************************/
+
+#ifndef LIST_H
+#define LIST_H
+
+#include <QDialog>
+#include "qc_plugininterface.h"
+#include <QTextEdit>
+
+//class QTextEdit;
+class Plug_Entity;
+
+class LC_List : public QObject, QC_PluginInterface
+{
+    Q_OBJECT
+     Q_INTERFACES(QC_PluginInterface)
+
+ public:
+    virtual PluginCapabilities getCapabilities() const;
+    virtual QString name() const;
+    virtual void execComm(Document_Interface *doc,
+                                       QWidget *parent, QString cmd);
+
+private:
+    QString getStrData(Plug_Entity *ent);
+
+};
+
+class lc_Listdlg : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit lc_Listdlg(QWidget *parent = 0);
+    ~lc_Listdlg();
+    void setText(QString text);
+
+public slots:
+//    void procesAction(QStringList *commandList);
+//    void procesAction(Document_Interface *doc);
+//    void checkAccept();
+
+protected:
+//    void closeEvent(QCloseEvent *event);
+
+private:
+//    void readSettings();
+//    void writeSettings();
+//    bool failGUI(QString *msg);
+
+private:
+//    QString errmsg;
+//    QLineEdit *startxedit;
+//    QLineEdit *startyedit;
+//    QLineEdit *endxedit;
+    QTextEdit edit;
+};
+
+#endif // LIST_H
diff --git a/plugins/list/list.pro b/plugins/list/list.pro
new file mode 100644
index 0000000..062d698
--- /dev/null
+++ b/plugins/list/list.pro
@@ -0,0 +1,48 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2011-03-22T19:33:11
+#
+#-------------------------------------------------
+
+QT       += gui
+TEMPLATE = lib
+CONFIG += plugin
+VERSION = 1.0.1
+PLUGIN_NAME=list
+
+SOURCES += list.cpp
+
+HEADERS += list.h
+
+
+# DLLDESTDIR = ../../unix/resources/plugins/
+win32 {
+    Debug {
+        DLLDESTDIR = ../../debug/resources/plugins
+        TARGET = $$PLUGIN_NAME
+
+    } else {
+        DLLDESTDIR = ../../release/resources/plugins
+        TARGET = $$PLUGIN_NAME
+    }
+}
+unix {
+    macx { 
+	TARGET = ../../LibreCAD.app/Contents/Resources/plugins/$$PLUGIN_NAME
+    }
+    else { 
+	TARGET = ../../unix/resources/plugins/$$PLUGIN_NAME
+    }
+}
+INCLUDEPATH    += ../../src/plugins
+
+# Store intermedia stuff somewhere else
+OBJECTS_DIR = ../intermediate/obj
+MOC_DIR = ../intermediate/moc
+RCC_DIR = ../intermediate/rcc
+TS_DIR = ../intermediate/ts
+UI_DIR = ../intermediate/ui
+UI_HERADERS_DIR = ../intermediate/ui
+UI_SOURCES_DIR = ../intermediate/ui
+
+#DEFINES += sample_LIBRARY
diff --git a/plugins/plugins.pro b/plugins/plugins.pro
index 8d2741e..d9c41bc 100644
--- a/plugins/plugins.pro
+++ b/plugins/plugins.pro
@@ -11,6 +11,10 @@ QT += gui
 
 SUBDIRS     = \
         asciifile \
+        align \
+        list \
+        sameprop \
+        importshp \
         sample
 
 
diff --git a/plugins/sameprop/sameprop.cpp b/plugins/sameprop/sameprop.cpp
new file mode 100755
index 0000000..4f85ad2
--- /dev/null
+++ b/plugins/sameprop/sameprop.cpp
@@ -0,0 +1,67 @@
+/*****************************************************************************/
+/*  test.cpp - Change the properties to be the same of first selected        */
+/*                                                                           */
+/*  Copyright (C) 2011 Rallaz, rallazz at gmail.com                             */
+/*                                                                           */
+/*  This library is free software, licensed under the terms of the GNU       */
+/*  General Public License as published by the Free Software Foundation,     */
+/*  either version 2 of the License, or (at your option) any later version.  */
+/*  You should have received a copy of the GNU General Public License        */
+/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
+/*****************************************************************************/
+
+#include <QMessageBox>
+#include <QVariant>
+
+#include "document_interface.h"
+#include "sameprop.h"
+
+QString LC_SameProp::name() const
+ {
+     return (tr("Same properties"));
+ }
+
+PluginCapabilities LC_SameProp::getCapabilities() const
+{
+    PluginCapabilities pluginCapabilities;
+    pluginCapabilities.menuEntryPoints
+            << PluginMenuLocation("Modify", tr("Same properties"));
+    return pluginCapabilities;
+}
+
+void LC_SameProp::execComm(Document_Interface *doc,
+                             QWidget *parent, QString cmd)
+{
+    Q_UNUSED(parent);
+    QHash<int, QVariant> data, moddata;
+    QList<Plug_Entity *> obj;
+    QVariant lay, col, ltype, lwidth;
+    Plug_Entity *ent, *modent;
+    ent =  doc->getEnt("select original entity:");
+    if (!ent) return;
+    bool yes  = doc->getSelect(&obj, "select entities to change");
+    if (!yes || obj.isEmpty()) {
+        delete ent;
+        return;
+    }
+
+    ent->getData(&data);
+    lay = data.value(DPI::LAYER);
+    col = data.value(DPI::COLOR);
+    ltype = data.value(DPI::LTYPE);
+    lwidth = data.value(DPI::LWIDTH);
+    for (int i = 0; i < obj.size(); ++i) {
+        modent = obj.at(i);
+        modent->getData(&moddata);
+        moddata.insert(DPI::LAYER, lay );
+        moddata.insert(DPI::LTYPE, ltype );
+        moddata.insert(DPI::LWIDTH, lwidth );
+        moddata.insert(DPI::COLOR, col );
+        modent->updateData(&moddata);
+    }
+    while (!obj.isEmpty())
+        delete obj.takeFirst();
+}
+
+
+Q_EXPORT_PLUGIN2(lc_sameprop, LC_SameProp);
diff --git a/plugins/sameprop/sameprop.h b/plugins/sameprop/sameprop.h
new file mode 100755
index 0000000..7c9bacf
--- /dev/null
+++ b/plugins/sameprop/sameprop.h
@@ -0,0 +1,30 @@
+/*****************************************************************************/
+/*  test.h - Change the properties to be the same of first selected          */
+/*                                                                           */
+/*  Copyright (C) 2011 Rallaz, rallazz at gmail.com                             */
+/*                                                                           */
+/*  This library is free software, licensed under the terms of the GNU       */
+/*  General Public License as published by the Free Software Foundation,     */
+/*  either version 2 of the License, or (at your option) any later version.  */
+/*  You should have received a copy of the GNU General Public License        */
+/*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
+/*****************************************************************************/
+
+#ifndef SAMEPROP_H
+#define SAMEPROP_H
+
+#include "qc_plugininterface.h"
+
+class LC_SameProp : public QObject, QC_PluginInterface
+{
+    Q_OBJECT
+     Q_INTERFACES(QC_PluginInterface)
+
+ public:
+    virtual PluginCapabilities getCapabilities() const;
+    virtual QString name() const;
+    virtual void execComm(Document_Interface *doc,
+                                       QWidget *parent, QString cmd);
+};
+
+#endif // SAMPLE_H
diff --git a/plugins/sameprop/sameprop.pro b/plugins/sameprop/sameprop.pro
new file mode 100755
index 0000000..517e993
--- /dev/null
+++ b/plugins/sameprop/sameprop.pro
@@ -0,0 +1,48 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2011-03-22T19:33:11
+#
+#-------------------------------------------------
+
+QT       += gui
+TEMPLATE = lib
+CONFIG += plugin
+VERSION = 1.0.1
+PLUGIN_NAME=sameprop
+
+SOURCES += sameprop.cpp
+
+HEADERS += sameprop.h
+
+
+# DLLDESTDIR = ../../unix/resources/plugins/
+win32 {
+    Debug {
+        DLLDESTDIR = ../../debug/resources/plugins
+        TARGET = $$PLUGIN_NAME
+
+    } else {
+        DLLDESTDIR = ../../release/resources/plugins
+        TARGET = $$PLUGIN_NAME
+    }
+}
+unix {
+    macx { 
+	TARGET = ../../LibreCAD.app/Contents/Resources/plugins/$$PLUGIN_NAME
+    }
+    else { 
+	TARGET = ../../unix/resources/plugins/$$PLUGIN_NAME
+    }
+}
+INCLUDEPATH    += ../../src/plugins
+
+# Store intermedia stuff somewhere else
+OBJECTS_DIR = ../intermediate/obj
+MOC_DIR = ../intermediate/moc
+RCC_DIR = ../intermediate/rcc
+TS_DIR = ../intermediate/ts
+UI_DIR = ../intermediate/ui
+UI_HERADERS_DIR = ../intermediate/ui
+UI_SOURCES_DIR = ../intermediate/ui
+
+#DEFINES += sample_LIBRARY
diff --git a/plugins/sample/sample.cpp b/plugins/sample/sample.cpp
index cdba976..74da16b 100755
--- a/plugins/sample/sample.cpp
+++ b/plugins/sample/sample.cpp
@@ -5,7 +5,7 @@
 /*                                                                           */
 /*  This library is free software, licensed under the terms of the GNU       */
 /*  General Public License as published by the Free Software Foundation,     */
-/*  either version 3 of the License, or (at your option) any later version.  */
+/*  either version 2 of the License, or (at your option) any later version.  */
 /*  You should have received a copy of the GNU General Public License        */
 /*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
 /*****************************************************************************/
@@ -26,13 +26,16 @@ QString LC_Sample::name() const
      return (tr("Sample plugin"));
  }
 
-QString LC_Sample::menu() const
- {
-     return ("Help");
- }
+PluginCapabilities LC_Sample::getCapabilities() const
+{
+    PluginCapabilities pluginCapabilities;
+    pluginCapabilities.menuEntryPoints
+            << PluginMenuLocation("Help", tr("Sample plugin"));
+    return pluginCapabilities;
+}
 
 void LC_Sample::execComm(Document_Interface *doc,
-                             QWidget *parent)
+                             QWidget *parent, QString cmd)
 {
     Q_UNUSED(doc);
     lc_Sampledlg pdt(parent);
diff --git a/plugins/sample/sample.h b/plugins/sample/sample.h
index 3f3c730..308f718 100755
--- a/plugins/sample/sample.h
+++ b/plugins/sample/sample.h
@@ -5,7 +5,7 @@
 /*                                                                           */
 /*  This library is free software, licensed under the terms of the GNU       */
 /*  General Public License as published by the Free Software Foundation,     */
-/*  either version 3 of the License, or (at your option) any later version.  */
+/*  either version 2 of the License, or (at your option) any later version.  */
 /*  You should have received a copy of the GNU General Public License        */
 /*  along with this program.  If not, see <http://www.gnu.org/licenses/>.    */
 /*****************************************************************************/
@@ -23,10 +23,10 @@ class LC_Sample : public QObject, QC_PluginInterface
      Q_INTERFACES(QC_PluginInterface)
 
  public:
-    virtual QString menu() const;
+    virtual PluginCapabilities getCapabilities() const;
     virtual QString name() const;
     virtual void execComm(Document_Interface *doc,
-                                       QWidget *parent);
+                                       QWidget *parent, QString cmd);
 };
 
 class lc_Sampledlg : public QDialog
diff --git a/plugins/sample/sample.pro b/plugins/sample/sample.pro
index 44e3ba7..5611dcb 100755
--- a/plugins/sample/sample.pro
+++ b/plugins/sample/sample.pro
@@ -17,11 +17,13 @@ HEADERS += sample.h
 
 # DLLDESTDIR = ../../unix/resources/plugins/
 win32 {
-    debug {
-        TARGET = ../../debug/resources/plugins/$$PLUGIN_NAME
+    Debug {
+        DLLDESTDIR = ../../debug/resources/plugins
+        TARGET = $$PLUGIN_NAME
 
     } else {
-        TARGET = ../../release/resources/plugins/$$PLUGIN_NAME
+        DLLDESTDIR = ../../release/resources/plugins
+        TARGET = $$PLUGIN_NAME
     }
 }
 unix {
diff --git a/res/extui/linesver.png b/res/extui/linesver.png
index 2665276..f4843ee 100644
Binary files a/res/extui/linesver.png and b/res/extui/linesver.png differ
diff --git a/res/extui/snapintersection.png b/res/extui/snapintersection.png
index 30071be..40fa974 100644
Binary files a/res/extui/snapintersection.png and b/res/extui/snapintersection.png differ
diff --git a/scripts/postprocess-osx/LibreCAD.pmdoc/01librecad-contents.xml b/scripts/postprocess-osx/LibreCAD.pmdoc/01librecad-contents.xml
index aca7f84..cba8a90 100644
--- a/scripts/postprocess-osx/LibreCAD.pmdoc/01librecad-contents.xml
+++ b/scripts/postprocess-osx/LibreCAD.pmdoc/01librecad-contents.xml
@@ -1 +1 @@
-<pkg-contents spec="1.12"><f n="LibreCAD.app" o="rvt" g="wheel" p="16877" pt="/Applications/LibreCAD.app" m="true" t="file"><mod>owner</mod></f></pkg-contents>
\ No newline at end of file
+<pkg-contents spec="1.12"><f n="LibreCAD.app" o="rvt" g="wheel" p="16877" pt="/Applications/LibreCAD.app" m="false" t="file"><f n="Contents" o="rvt" g="wheel" p="16877"><f n="Frameworks" o="rvt" g="wheel" p="16877"><f n="libQtCLucene.4.dylib" o="rvt" g="wheel" p="33261"/><f n="Qt3Support.framework" o="rvt" g="wheel" p="16877"><f n="Resources" o="rvt" g="wheel" p="16877"/><f n="Versions" o="rvt" g="wheel" p="16877"><f n="4" o="rvt" g="wheel" p="16877"><f n="Qt3Support" o="rvt" g="wheel" p="33188"/></f></f></f><f n="QtCore.framework" o="rvt" g="wheel" p="16877"><f n="Resources" o="rvt" g="wheel" p="16877"/><f n="Versions" o="rvt" g="wheel" p="16877"><f n="4" o="rvt" g="wheel" p="16877"><f n="QtCore" o="rvt" g="wheel" p="33188"/></f></f></f><f n="QtGui.framework" o="rvt" g="wheel" p="16877"><f n="Resources" o="rvt" g="wheel" p="16877"><f n="qt_menu.nib" o="rvt" g="wheel" p="16877"><f n="classes.nib" o="rvt" g="wheel" p="33204"/><f n="info.nib" o="rvt" g="wheel" p="33204"/><f n="keyedobjects.nib" o="rvt" g="wheel" p="33204"/></f></f><f n="Versions" o="rvt" g="wheel" p="16877"><f n="4" o="rvt" g="wheel" p="16877"><f n="QtGui" o="rvt" g="wheel" p="33188"/></f></f></f><f n="QtHelp.framework" o="rvt" g="wheel" p="16877"><f n="Resources" o="rvt" g="wheel" p="16877"/><f n="Versions" o="rvt" g="wheel" p="16877"><f n="4" o="rvt" g="wheel" p="16877"><f n="QtHelp" o="rvt" g="wheel" p="33188"/></f></f></f><f n="QtNetwork.framework" o="rvt" g="wheel" p="16877"><f n="Resources" o="rvt" g="wheel" p="16877"/><f n="Versions" o="rvt" g="wheel" p="16877"><f n="4" o="rvt" g="wheel" p="16877"><f n="QtNetwork" o="rvt" g="wheel" p="33188"/></f></f></f><f n="QtSql.framework" o="rvt" g="wheel" p="16877"><f n="Resources" o="rvt" g="wheel" p="16877"/><f n="Versions" o="rvt" g="wheel" p="16877"><f n="4" o="rvt" g="wheel" p="16877"><f n="QtSql" o="rvt" g="wheel" p="33188"/></f></f></f><f n="QtXml.framework" o="rvt" g="wheel" p="16877"><f n="Resources" o="rvt" g="wheel" p="16877"/><f n="Versions" o="rvt" g="wheel" p="16877"><f n="4" o="rvt" g="wheel" p="16877"><f n="QtXml" o="rvt" g="wheel" p="33188"/></f></f></f></f><f n="Info.plist" o="rvt" g="wheel" p="33188"/><f n="MacOS" o="rvt" g="wheel" p="16877"><f n="LibreCAD" o="rvt" g="wheel" p="33261"/></f><f n="PkgInfo" o="rvt" g="wheel" p="33188"/><f n="Resources" o="rvt" g="wheel" p="16877"><f n="doc" o="rvt" g="wheel" p="16877"><f n="LibreCADdoc.qch" o="rvt" g="wheel" p="33188"/><f n="LibreCADdoc.qhc" o="rvt" g="wheel" p="33188"/></f><f n="empty.lproj" o="rvt" g="wheel" p="33188"/><f n="fonts" o="rvt" g="wheel" p="16877"><f n="courier.cxf" o="rvt" g="wheel" p="33188"/><f n="cursive.cxf" o="rvt" g="wheel" p="33188"/><f n="cyrillic_ii.cxf" o="rvt" g="wheel" p="33188"/><f n="gothgbt.cxf" o="rvt" g="wheel" p="33188"/><f n="gothgrt.cxf" o="rvt" g="wheel" p="33188"/><f n="gothitt.cxf" o="rvt" g="wheel" p="33188"/><f n="greek_ol.cxf" o="rvt" g="wheel" p="33188"/><f n="greekc.cxf" o="rvt" g="wheel" p="33188"/><f n="greekcs.cxf" o="rvt" g="wheel" p="33188"/><f n="greekp.cxf" o="rvt" g="wheel" p="33188"/><f n="greeks.cxf" o="rvt" g="wheel" p="33188"/><f n="iso8859-11.cxf" o="rvt" g="wheel" p="33188"/><f n="italicc.cxf" o="rvt" g="wheel" p="33188"/><f n="italiccs.cxf" o="rvt" g="wheel" p="33188"/><f n="italict.cxf" o="rvt" g="wheel" p="33188"/><f n="kochigothic.cxf" o="rvt" g="wheel" p="33188"/><f n="kochimincho.cxf" o="rvt" g="wheel" p="33188"/><f n="normal.cxf" o="rvt" g="wheel" p="33188"/><f n="normallatin1.cxf" o="rvt" g="wheel" p="33188"/><f n="normallatin2.cxf" o="rvt" g="wheel" p="33188"/><f n="romanc.cxf" o="rvt" g="wheel" p="33188"/><f n="romancs.cxf" o="rvt" g="wheel" p="33188"/><f n="romand.cxf" o="rvt" g="wheel" p="33188"/><f n="romanp.cxf" o="rvt" g="wheel" p="33188"/><f n="romans.cxf" o="rvt" g="wheel" p="33188"/><f n="romans2.cxf" o="rvt" g="wheel" p="33188"/><f n="romant.cxf" o="rvt" g="wheel" p="33188"/><f n="scriptc.cxf" o="rvt" g="wheel" p="33188"/><f n="scripts.cxf" o="rvt" g="wheel" p="33188"/><f n="standard.cxf" o="rvt" g="wheel" p="33188"/><f n="symbol.cxf" o="rvt" g="wheel" p="33188"/><f n="symbol_astro.cxf" o="rvt" g="wheel" p="33188"/><f n="symbol_misc1.cxf" o="rvt" g="wheel" p="33188"/><f n="symbol_misc2.cxf" o="rvt" g="wheel" p="33188"/><f n="unicode.cxf" o="rvt" g="wheel" p="33188"/></f><f n="library" o="rvt" g="wheel" p="16877"><f n="misc" o="rvt" g="wheel" p="16877"><f n="a3.dxf" o="rvt" g="wheel" p="33188"/><f n="screw.dxf" o="rvt" g="wheel" p="33188"/><f n="t-part.dxf" o="rvt" g="wheel" p="33188"/><f n="tux.dxf" o="rvt" g="wheel" p="33188"/></f><f n="templates" o="rvt" g="wheel" p="16877"><f n="empty.dxf" o="rvt" g="wheel" p="33188"/></f></f><f n="librecad.icns" o="rvt" g="wheel" p="33188"/><f n="patterns" o="rvt" g="wheel" p="16877"><f n="angle.dxf" o="rvt" g="wheel" p="33188"/><f n="ansi31.dxf" o="rvt" g="wheel" p="33188"/><f n="ar-b816.dxf" o="rvt" g="wheel" p="33188"/><f n="ar-b816c.dxf" o="rvt" g="wheel" p="33188"/><f n="ar-b88.dxf" o="rvt" g="wheel" p="33188"/><f n="ar-brelm.dxf" o="rvt" g="wheel" p="33188"/><f n="ar-brstd.dxf" o="rvt" g="wheel" p="33188"/><f n="ar-conc.dxf" o="rvt" g="wheel" p="33188"/><f n="ar-hbone.dxf" o="rvt" g="wheel" p="33188"/><f n="ar-parq1.dxf" o="rvt" g="wheel" p="33188"/><f n="ar-roof.dxf" o="rvt" g="wheel" p="33188"/><f n="ar-rshke.dxf" o="rvt" g="wheel" p="33188"/><f n="arcs.dxf" o="rvt" g="wheel" p="33188"/><f n="arcs_2.dxf" o="rvt" g="wheel" p="33188"/><f n="box.dxf" o="rvt" g="wheel" p="33188"/><f n="brick.dxf" o="rvt" g="wheel" p="33188"/><f n="brstone.dxf" o="rvt" g="wheel" p="33188"/><f n="clay.dxf" o="rvt" g="wheel" p="33188"/><f n="concrete.dxf" o="rvt" g="wheel" p="33188"/><f n="cross.dxf" o="rvt" g="wheel" p="33188"/><f n="daemon.dxf" o="rvt" g="wheel" p="33188"/><f n="dolmit.dxf" o="rvt" g="wheel" p="33188"/><f n="earth.dxf" o="rvt" g="wheel" p="33188"/><f n="escher.dxf" o="rvt" g="wheel" p="33188"/><f n="flex.dxf" o="rvt" g="wheel" p="33188"/><f n="grass.dxf" o="rvt" g="wheel" p="33188"/><f n="grass_b.dxf" o="rvt" g="wheel" p="33188"/><f n="hex.dxf" o="rvt" g="wheel" p="33188"/><f n="hexagon_a.dxf" o="rvt" g="wheel" p="33188"/><f n="hexagon_b.dxf" o="rvt" g="wheel" p="33188"/><f n="honeycomb.dxf" o="rvt" g="wheel" p="33188"/><f n="hound.dxf" o="rvt" g="wheel" p="33188"/><f n="iso03w100.dxf" o="rvt" g="wheel" p="33188"/><f n="iso03w100a.dxf" o="rvt" g="wheel" p="33188"/><f n="kerpele.dxf" o="rvt" g="wheel" p="33188"/><f n="misc01.dxf" o="rvt" g="wheel" p="33188"/><f n="misc02.dxf" o="rvt" g="wheel" p="33188"/><f n="misc03.dxf" o="rvt" g="wheel" p="33188"/><f n="paisley.dxf" o="rvt" g="wheel" p="33188"/><f n="pantagon_a.dxf" o="rvt" g="wheel" p="33188"/><f n="pantagon_b.dxf" o="rvt" g="wheel" p="33188"/><f n="plastic.dxf" o="rvt" g="wheel" p="33188"/><f n="sacncr.dxf" o="rvt" g="wheel" p="33188"/><f n="sand.dxf" o="rvt" g="wheel" p="33188"/><f n="square.dxf" o="rvt" g="wheel" p="33188"/><f n="triangle_a.dxf" o="rvt" g="wheel" p="33188"/><f n="triangle_b.dxf" o="rvt" g="wheel" p="33188"/></f><f n="qm" o="rvt" g="wheel" p="16877"><f n="librecad_cs.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_da.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_de.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_el.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_en.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_en_au.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_ar.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_bo.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_cl.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_co.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_cr.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_do.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_ec.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_gt.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_hn.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_mx.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_ni.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_pa.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_pe.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_pr.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_py.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_sv.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_us.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_uy.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_es_ve.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_et.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_fi.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_fr.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_hu.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_id_ID.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_it.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_ja.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_nl.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_no.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_pa.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_pl.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_pt.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_ru.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_sk.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_tr.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_uk.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_zh_cn.qm" o="rvt" g="wheel" p="33188"/><f n="librecad_zh_tw.qm" o="rvt" g="wheel" p="33188"/></f><f n="qt.conf" o="rvt" g="wheel" p="33188"/></f></f></f></pkg-contents>
\ No newline at end of file
diff --git a/scripts/postprocess-osx/LibreCAD.pmdoc/01librecad.xml b/scripts/postprocess-osx/LibreCAD.pmdoc/01librecad.xml
index 3077147..58849c9 100644
--- a/scripts/postprocess-osx/LibreCAD.pmdoc/01librecad.xml
+++ b/scripts/postprocess-osx/LibreCAD.pmdoc/01librecad.xml
@@ -1 +1 @@
-<pkgref spec="1.12" uuid="DC576F7D-AB06-4C66-8503-12516A940A9F"><config><identifier>org.librecad.LibreCAD.pkg</identifier><version>1.0</version><description></description><post-install type="none"/><requireAuthorization/><installFrom mod="true" includeRoot="true">/Applications/LibreCAD.app</installFrom><installTo relocatable="true">/Applications</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo</mod><mod>locationType</mod><mod>identifier</mod><mod>parent</mod><mod>installFrom.path</mod></config><contents><file-list>01librecad-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents></pkgref>
\ No newline at end of file
+<pkgref spec="1.12" uuid="31EF89AA-EA49-44CC-9C52-3D070CEA9BB7"><config><identifier>org.librecad.LibreCAD.pkg</identifier><version>1.0</version><description></description><post-install type="none"/><requireAuthorization/><installFrom mod="true" includeRoot="true">/Applications/LibreCAD.app</installFrom><installTo mod="true" relocatable="true">/Applications</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo.path</mod><mod>identifier</mod><mod>scripts.scriptsDirectoryPath.path</mod><mod>installFrom.path</mod><mod>installTo</mod><mod>parent</mod></config><contents><file-list>01librecad-contents.xml</file-list><component id="com.yourcompany.LibreCAD" path="/Applications/LibreCAD.app" isRelocatable="true"><locator-info><token title="pkmk-token-19"><search-rule><combo identifier="com.yourcompany.LibreCAD" default-path="/Applications/LibreCAD.app"/></search-rule></token></locator-info></component><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents></pkgref>
\ No newline at end of file
diff --git a/scripts/postprocess-osx/LibreCAD.pmdoc/index.xml b/scripts/postprocess-osx/LibreCAD.pmdoc/index.xml
index a073082..c1b1726 100644
--- a/scripts/postprocess-osx/LibreCAD.pmdoc/index.xml
+++ b/scripts/postprocess-osx/LibreCAD.pmdoc/index.xml
@@ -1,4 +1,4 @@
-<pkmkdoc spec="1.12"><properties><title>LibreCAD Installation Package</title><build>/opt/source/LibreCAD-rvtgit/scripts/postprocess-osx/LibreCAD.pkg</build><organization>org.librecad</organization><userSees ui="easy"/><min-target os="3"/><domain anywhere="true" system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><contents><choice title="LibreCAD" id="choice14" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.librecad.LibreCAD.pkg"/></choice></contents><resources bg-scale="tofit" bg-align="topleft"><locale lang="en"><resource mod="true" type="background">/opt/source/LibreCAD-rvtgit/desktop/graphics_icons_and_splash/Splash Screen LibreCAD/Splash Screen LibreCAD 01 bgw.png</resource><resource relative="true" mod="true" type="license">../../gpl-2.0.txt</resource><resource mime-type="text/rtf" kind="embedded" type="welcome"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
+<pkmkdoc spec="1.12"><properties><title>LibreCAD Installation Package</title><build>/opt/source/LibreCAD-git/scripts/postprocess-osx/LibreCAD-Installer_1.0.0rc1.pkg</build><organization>org.librecad</organization><userSees ui="easy"/><min-target os="3"/><domain anywhere="true" system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><contents><choice title="LibreCAD" id="choice17" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.librecad.LibreCAD.pkg"/></choice></contents><resources bg-scale="tofit" bg-align="topleft"><locale lang="en"><resource mod="true" type="background">/opt/source/LibreCAD-rvtgit/desktop/graphics_icons_and_splash/Splash Screen LibreCAD/Splash Screen LibreCAD 01 bgw.png</resource><resource relative="true" mod="true" type="license">../../gpl-2.0.txt</resource><resource mime-type="text/rtf" kind="embedded" type="welcome"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
 {\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
@@ -18,4 +18,4 @@ For more information about LibreCAD please visit:\
 				http://www.librecad.org\
 \
 \
-}]]></resource></locale></resources><flags/><postinstall><action id="com.apple.packagemaker.actions.openurl"><value>http://www.librecad.org/donate</value></action></postinstall><item type="file">01librecad.xml</item><mod>properties.title</mod><mod>properties.systemDomain</mod><mod>postinstallActions.actions</mod></pkmkdoc>
\ No newline at end of file
+}]]></resource></locale></resources><flags/><postinstall><action id="com.apple.packagemaker.actions.openurl"><value>http://librecad.org/donate.html</value></action></postinstall><item type="file">01librecad.xml</item><mod>properties.title</mod><mod>properties.systemDomain</mod><mod>postinstallActions.actions</mod></pkmkdoc>
\ No newline at end of file
diff --git a/scripts/postprocess-osx/packagebuilding-howto b/scripts/postprocess-osx/packagebuilding-howto
index 8e90cd9..a917675 100644
--- a/scripts/postprocess-osx/packagebuilding-howto
+++ b/scripts/postprocess-osx/packagebuilding-howto
@@ -2,7 +2,7 @@ Steps tp create a OSX package:
 
 1) Build LibreCAD
 2) Test of LibreCAD is working, make sure resources are included like fonts, helpiles and templates
-3) run macdeployqt LibreCAD.pro from the root of source directory, this will insure that all qt needed libraries are included
+3) run macdeployqt LibreCAD.app from the root of source directory, this will insure that all qt needed libraries are included
 4) Move LibreCAD.app to /Applications/LibreCAD.app
 5) Start Package Builder and build the package
 
diff --git a/scripts/postprocess-win.bat b/scripts/postprocess-win.bat
index 0885d83..29ce304 100644
--- a/scripts/postprocess-win.bat
+++ b/scripts/postprocess-win.bat
@@ -1,42 +1,42 @@
- at ECHO OFF
-
-cd > PWD
-set /p PWD= < PWD
-
-set RESOURCEDIR=%PWD%\release\resources
-set TSDIR=%PWD%\ts
-set DOCDIR=%PWD%\support\doc
-
-REM Generate Help Files
-cd %DOCDIR%
-qcollectiongenerator LibreCADdoc.qhcp
-
-cd %PWD%
-
-REM Postprocess for windows
-echo " Copying fonts and patterns"
-mkdir %RESOURCEDIR%\fonts
-mkdir %RESOURCEDIR%\patterns
-mkdir %RESOURCEDIR%\library
-mkdir %RESOURCEDIR%\doc
-mkdir %RESOURCEDIR%\library\misc
-mkdir %RESOURCEDIR%\library\templates
-copy support\patterns\*.dxf %RESOURCEDIR%\patterns
-copy support\fonts\*.cxf %RESOURCEDIR%\fonts
-copy support\doc\*.qhc %RESOURCEDIR%\doc
-copy support\doc\*.qch %RESOURCEDIR%\doc
-copy support\library\misc\*.dxf %RESOURCEDIR%\library\misc
-copy support\library\templates\*.dxf %RESOURCEDIR%\library\templates
-
-
-REM Generate translations
-echo "Generating Translations"
-lrelease librecad.pro
-mkdir %RESOURCEDIR%\qm 
-
-cd %TSDIR%
-for /f %%F in ('dir /b *.qm') do (
-	copy %%F %RESOURCEDIR%\qm\%%F
-)
-
-cd %PWD%
+ at ECHO OFF
+
+cd > PWD
+set /p PWD= < PWD
+
+set RESOURCEDIR=%PWD%\release\resources
+set TSDIR=%PWD%\ts
+set DOCDIR=%PWD%\support\doc
+
+REM Generate Help Files
+cd %DOCDIR%
+qcollectiongenerator LibreCADdoc.qhcp
+
+cd %PWD%
+
+REM Postprocess for windows
+echo " Copying fonts and patterns"
+mkdir %RESOURCEDIR%\fonts
+mkdir %RESOURCEDIR%\patterns
+mkdir %RESOURCEDIR%\library
+mkdir %RESOURCEDIR%\doc
+mkdir %RESOURCEDIR%\library\misc
+mkdir %RESOURCEDIR%\library\templates
+copy support\patterns\*.dxf %RESOURCEDIR%\patterns
+copy support\fonts\*.cxf %RESOURCEDIR%\fonts
+copy support\doc\*.qhc %RESOURCEDIR%\doc
+copy support\doc\*.qch %RESOURCEDIR%\doc
+copy support\library\misc\*.dxf %RESOURCEDIR%\library\misc
+copy support\library\templates\*.dxf %RESOURCEDIR%\library\templates
+
+
+REM Generate translations
+echo "Generating Translations"
+lrelease librecad.pro
+mkdir %RESOURCEDIR%\qm 
+
+cd %TSDIR%
+for /f %%F in ('dir /b *.qm') do (
+	copy %%F %RESOURCEDIR%\qm\%%F
+)
+
+cd %PWD%
diff --git a/scripts/postprocess-windows/nsis-4.7.txt b/scripts/postprocess-windows/nsis-4.7.txt
index 756ea56..0818fdb 100644
--- a/scripts/postprocess-windows/nsis-4.7.txt
+++ b/scripts/postprocess-windows/nsis-4.7.txt
@@ -85,17 +85,25 @@ Section "Install Section" SecInstall
 
   SetOutPath "$INSTDIR"
   File /r "..\..\release\*.*"
+  File "C:\QtSDK\mingw\bin\libgcc_s_dw2-1.dll"
+  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\bin\mingwm10.dll"
   File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\QtCore4.dll"
   File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\Qt3Support4.dll"
   File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\QtCore4.dll"
   File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\QtGui4.dll"
   File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\QtXml4.dll"
-  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\Qthelp4.dll"
+  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\QtHelp4.dll"
   File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\QtSql4.dll"
-  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\QtCLucene4.dll"
+  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\QtClucene4.dll"
   File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\lib\QtNetwork4.dll"
-  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\bin\mingwm10.dll"
-  File "C:\QtSDK\mingw\bin\libgcc_s_dw2-1.dll"
+  SetOutPath "$INSTDIR\sqldrivers"
+  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\sqldrivers\qsqlite4.dll"
+  SetOutPath "$INSTDIR\imageformats"
+  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\imageformats\qgif4.dll"
+  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\imageformats\qjpeg4.dll"
+  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\imageformats\qtiff4.dll"
+  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\imageformats\qmng4.dll"
+  File "C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\imageformats\qsvg4.dll"
 
   ;Store installation folder
   WriteRegStr HKCU "Software\LibreCAD" "" $INSTDIR
@@ -111,6 +119,9 @@ Section "Install Section" SecInstall
   createShortCut "$SMPROGRAMS\LibreCAD\LibreCAD.lnk" "$INSTDIR\LibreCAD.exe"
   createShortCut "$SMPROGRAMS\LibreCAD\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
 
+  ; Open Donate URL
+  Exec "rundll32 url.dll,FileProtocolHandler http://librecad.org/donate.html"
+
 SectionEnd
 
 ;--------------------------------
@@ -135,3 +146,4 @@ Section "Uninstall"
   DeleteRegKey /ifempty HKCU "Software\LibreCAD"
 
 SectionEnd
+
diff --git a/src/actions/rs_actionblocksadd.cpp b/src/actions/rs_actionblocksadd.cpp
index 9feda69..d4bf988 100644
--- a/src/actions/rs_actionblocksadd.cpp
+++ b/src/actions/rs_actionblocksadd.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionblocksadd.h"
 
+#include <QAction>
 #include "rs_graphic.h"
 #include "rs_dialogfactory.h"
 
diff --git a/src/actions/rs_actionblocksattributes.cpp b/src/actions/rs_actionblocksattributes.cpp
index cd43f0e..14bbb33 100644
--- a/src/actions/rs_actionblocksattributes.cpp
+++ b/src/actions/rs_actionblocksattributes.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionblocksattributes.h"
 
+#include <QAction>
 #include "rs_graphic.h"
 #include "rs_dialogfactory.h"
 
@@ -56,7 +57,7 @@ void RS_ActionBlocksAttributes::trigger() {
         RS_Block* block = graphic->getActiveBlock();
         RS_BlockList* blockList = graphic->getBlockList();
         if (blockList!=NULL && block!=NULL) {
-            RS_String oldName = block->getName();
+            QString oldName = block->getName();
 
             RS_BlockData d;
             d = RS_DIALOGFACTORY->requestBlockAttributesDialog(
@@ -64,7 +65,7 @@ void RS_ActionBlocksAttributes::trigger() {
 
             if (d.isValid()) {
 
-                RS_String newName = d.name;
+                QString newName = d.name;
                 blockList->rename(block, newName);
 
                 // update the name of all inserts:
diff --git a/src/actions/rs_actionblockscreate.cpp b/src/actions/rs_actionblockscreate.cpp
index 2218bc9..5af7003 100644
--- a/src/actions/rs_actionblockscreate.cpp
+++ b/src/actions/rs_actionblockscreate.cpp
@@ -26,9 +26,11 @@
 
 #include "rs_actionblockscreate.h"
 
+#include <QAction>
 #include "rs_creation.h"
-#include "rs_insert.h"
-#include "rs_modification.h"
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_graphic.h"
 
 /**
  * Constructor.
@@ -100,7 +102,7 @@ void RS_ActionBlocksCreate::trigger() {
 }
 
 
-void RS_ActionBlocksCreate::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionBlocksCreate::mouseMoveEvent(QMouseEvent* e) {
     snapPoint(e);
 
     switch (getStatus()) {
@@ -124,11 +126,11 @@ void RS_ActionBlocksCreate::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionBlocksCreate::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionBlocksCreate::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     }
 }
diff --git a/src/actions/rs_actionblockscreate.h b/src/actions/rs_actionblockscreate.h
index 5d81796..e900864 100644
--- a/src/actions/rs_actionblockscreate.h
+++ b/src/actions/rs_actionblockscreate.h
@@ -28,7 +28,6 @@
 #define RS_ACTIONBLOCKSCREATE_H
 
 #include "rs_previewactioninterface.h"
-#include "rs_insert.h"
 
 /**
  * This action class can handle user events for creating blocks from 
@@ -62,12 +61,12 @@ public:
 
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
     virtual void coordinateEvent(RS_CoordinateEvent* e);
     //virtual void commandEvent(RS_CommandEvent* e);
-	//virtual RS_StringList getAvailableCommands();
+        //virtual QStringList getAvailableCommands();
 
 	//virtual void showOptions();
 	//virtual void hideOptions();
diff --git a/src/actions/rs_actionblocksedit.cpp b/src/actions/rs_actionblocksedit.cpp
index 9226fb2..fd9372c 100644
--- a/src/actions/rs_actionblocksedit.cpp
+++ b/src/actions/rs_actionblocksedit.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionblocksedit.h"
 
+#include <QAction>
 #include "rs_graphic.h"
 #include "rs_dialogfactory.h"
 
diff --git a/src/actions/rs_actionblocksexplode.cpp b/src/actions/rs_actionblocksexplode.cpp
index 97cacf1..6fe0d18 100644
--- a/src/actions/rs_actionblocksexplode.cpp
+++ b/src/actions/rs_actionblocksexplode.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionblocksexplode.h"
 
+#include <QAction>
 #include "rs_modification.h"
 
 /**
diff --git a/src/actions/rs_actionblocksexplode.h b/src/actions/rs_actionblocksexplode.h
index 77d64be..98b3b5e 100644
--- a/src/actions/rs_actionblocksexplode.h
+++ b/src/actions/rs_actionblocksexplode.h
@@ -28,7 +28,6 @@
 #define RS_ACTIONBLOCKSEXPLODE_H
 
 #include "rs_previewactioninterface.h"
-#include "rs_insert.h"
 
 /**
  * This action class can handle user events for exploding blocks and
diff --git a/src/actions/rs_actionblocksfreezeall.cpp b/src/actions/rs_actionblocksfreezeall.cpp
index 3edeb21..98536e4 100644
--- a/src/actions/rs_actionblocksfreezeall.cpp
+++ b/src/actions/rs_actionblocksfreezeall.cpp
@@ -26,6 +26,8 @@
 
 #include "rs_actionblocksfreezeall.h"
 
+#include <QAction>
+#include "rs_graphicview.h"
 #include "rs_graphic.h"
 
 
diff --git a/src/actions/rs_actionblocksinsert.cpp b/src/actions/rs_actionblocksinsert.cpp
index 3af5b50..4c526f9 100644
--- a/src/actions/rs_actionblocksinsert.cpp
+++ b/src/actions/rs_actionblocksinsert.cpp
@@ -26,10 +26,12 @@
 
 #include "rs_actionblocksinsert.h"
 
+#include <QAction>
+#include "rs_graphic.h"
+#include "rs_graphicview.h"
+#include "rs_dialogfactory.h"
+#include "rs_commandevent.h"
 #include "rs_creation.h"
-#include "rs_commands.h"
-#include "rs_modification.h"
-
 
 /**
  * Constructor.
@@ -100,7 +102,7 @@ void RS_ActionBlocksInsert::trigger() {
 }
 
 
-void RS_ActionBlocksInsert::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionBlocksInsert::mouseMoveEvent(QMouseEvent* e) {
     switch (getStatus()) {
     case SetTargetPoint:
         data.insertionPoint = snapPoint(e);
@@ -124,11 +126,11 @@ void RS_ActionBlocksInsert::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionBlocksInsert::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionBlocksInsert::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     }
 }
@@ -147,7 +149,7 @@ void RS_ActionBlocksInsert::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionBlocksInsert::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -269,8 +271,8 @@ void RS_ActionBlocksInsert::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionBlocksInsert::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionBlocksInsert::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetTargetPoint:
diff --git a/src/actions/rs_actionblocksinsert.h b/src/actions/rs_actionblocksinsert.h
index 19371f3..d090a6e 100644
--- a/src/actions/rs_actionblocksinsert.h
+++ b/src/actions/rs_actionblocksinsert.h
@@ -69,12 +69,12 @@ public:
 
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
     virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
 	virtual void showOptions();
 	virtual void hideOptions();
diff --git a/src/actions/rs_actionblocksremove.cpp b/src/actions/rs_actionblocksremove.cpp
index cea6c20..adf8e10 100644
--- a/src/actions/rs_actionblocksremove.cpp
+++ b/src/actions/rs_actionblocksremove.cpp
@@ -26,11 +26,11 @@
 
 #include "rs_actionblocksremove.h"
 
-#include "rs_block.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_graphic.h"
 #include "rs_insert.h"
-#include "rs_dialogfactory.h"
-
 
 
 RS_ActionBlocksRemove::RS_ActionBlocksRemove(RS_EntityContainer& container,
@@ -54,19 +54,18 @@ void RS_ActionBlocksRemove::trigger() {
             RS_DIALOGFACTORY->requestBlockRemovalDialog(graphic->getBlockList());
 
         // list of containers that might refer to the block via inserts:
-        RS_PtrList<RS_EntityContainer> containerList;
+        QList<RS_EntityContainer*> containerList;
         containerList.append(graphic);
         RS_BlockList* blkLst = graphic->getBlockList();
-        for (uint bi=0; bi<blkLst->count(); bi++) {
+        for (int bi=0; bi<blkLst->count(); bi++) {
             containerList.append(blkLst->at(bi));
         }
         
         if (block!=NULL) {
             
-            for (RS_EntityContainer* cont = containerList.first();
-                cont!=NULL;
-                cont=containerList.next()) {
+            for (int i = 0; i < containerList.size(); ++i) {
         
+                RS_EntityContainer* cont = containerList.at(i);
                 // remove all inserts from the graphic:
                 bool done;
                 do {
diff --git a/src/actions/rs_actionblockstoggleview.cpp b/src/actions/rs_actionblockstoggleview.cpp
index 6bb4c43..e907ae3 100644
--- a/src/actions/rs_actionblockstoggleview.cpp
+++ b/src/actions/rs_actionblockstoggleview.cpp
@@ -26,6 +26,8 @@
 
 #include "rs_actionblockstoggleview.h"
 
+#include <QAction>
+#include "rs_graphicview.h"
 #include "rs_graphic.h"
 
 
diff --git a/src/actions/rs_actiondefault.cpp b/src/actions/rs_actiondefault.cpp
index aaf5c6d..375df51 100644
--- a/src/actions/rs_actiondefault.cpp
+++ b/src/actions/rs_actiondefault.cpp
@@ -26,9 +26,10 @@
 
 #include "rs_actiondefault.h"
 
-#include "rs.h"
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 #include "rs_modification.h"
-#include "rs_snapper.h"
 #include "rs_selection.h"
 #include "rs_overlaybox.h"
 
@@ -80,21 +81,21 @@ void RS_ActionDefault::trigger() {
 
 }
 
-void RS_ActionDefault::keyPressEvent(RS_KeyEvent* e) {
+void RS_ActionDefault::keyPressEvent(QKeyEvent* e) {
 	if (e->key()==Qt::Key_Shift) {
 		restrBak = snapRes;
 		setSnapRestriction(RS2::RestrictOrthogonal);
 	}
 }
 
-void RS_ActionDefault::keyReleaseEvent(RS_KeyEvent* e) {
+void RS_ActionDefault::keyReleaseEvent(QKeyEvent* e) {
 	if (e->key()==Qt::Key_Shift) {
 		setSnapRestriction(restrBak);
 	}
 }
 
 
-void RS_ActionDefault::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDefault::mouseMoveEvent(QMouseEvent* e) {
 
     RS_Vector mouse = graphicView->toGraph(RS_Vector(e->x(), e->y()));
     RS_Vector relMouse = mouse - graphicView->getRelativeZero();
@@ -196,8 +197,8 @@ void RS_ActionDefault::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDefault::mousePressEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDefault::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case Neutral:
             v1 = graphicView->toGraph(e->x(), e->y());
@@ -245,10 +246,10 @@ void RS_ActionDefault::mousePressEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDefault::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionDefault::mouseReleaseEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDefault::mouseReleaseEvent()");
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    if (e->button()==Qt::LeftButton) {
         v2 = graphicView->toGraph(e->x(), e->y());
         switch (getStatus()) {
         case Dragging: {
@@ -299,7 +300,7 @@ void RS_ActionDefault::mouseReleaseEvent(RS_MouseEvent* e) {
             break;
 
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         switch (getStatus()) {
 		case SetCorner2:
 		case Moving:
@@ -321,7 +322,7 @@ void RS_ActionDefault::mouseReleaseEvent(RS_MouseEvent* e) {
 
 
 void RS_ActionDefault::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     // if the current action can't deal with the command,
     //   it might be intended to launch a new command
@@ -337,8 +338,8 @@ void RS_ActionDefault::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDefault::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDefault::getAvailableCommands() {
+    QStringList cmd;
 
     //cmd += "line";
     //cmd += "rectangle";
diff --git a/src/actions/rs_actiondefault.h b/src/actions/rs_actiondefault.h
index b176fab..2931d4e 100644
--- a/src/actions/rs_actiondefault.h
+++ b/src/actions/rs_actiondefault.h
@@ -28,7 +28,6 @@
 #define RS_ACTIONSELECTWINDOW_H
 
 #include "rs_previewactioninterface.h"
-#include "rs_vector.h"
 
 
 /**
@@ -67,15 +66,15 @@ public:
 
     virtual void trigger();
 
-    virtual void keyPressEvent(RS_KeyEvent* e);
-    virtual void keyReleaseEvent(RS_KeyEvent* e);
+    virtual void keyPressEvent(QKeyEvent* e);
+    virtual void keyReleaseEvent(QKeyEvent* e);
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mousePressEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mousePressEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
     virtual void commandEvent(RS_CommandEvent* e);
-    virtual RS_StringList getAvailableCommands();
+    virtual QStringList getAvailableCommands();
 
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
diff --git a/src/actions/rs_actiondimaligned.cpp b/src/actions/rs_actiondimaligned.cpp
index 377eb4d..ccc6f6d 100644
--- a/src/actions/rs_actiondimaligned.cpp
+++ b/src/actions/rs_actiondimaligned.cpp
@@ -26,9 +26,11 @@
 
 #include "rs_actiondimaligned.h"
 
-#include "rs_snapper.h"
-#include "rs_constructionline.h"
+#include <QAction>
 #include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
+#include "rs_constructionline.h"
 
 
 
@@ -114,7 +116,7 @@ void RS_ActionDimAligned::preparePreview() {
 
 
 
-void RS_ActionDimAligned::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDimAligned::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDimAligned::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -158,11 +160,11 @@ void RS_ActionDimAligned::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDimAligned::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDimAligned::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -205,7 +207,7 @@ void RS_ActionDimAligned::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDimAligned::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -238,8 +240,8 @@ void RS_ActionDimAligned::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDimAligned::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDimAligned::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetExtPoint1:
diff --git a/src/actions/rs_actiondimaligned.h b/src/actions/rs_actiondimaligned.h
index 96d8680..3cfe669 100644
--- a/src/actions/rs_actiondimaligned.h
+++ b/src/actions/rs_actiondimaligned.h
@@ -65,12 +65,12 @@ public:
     virtual void trigger();
 	void preparePreview();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondimangular.cpp b/src/actions/rs_actiondimangular.cpp
index c7b8d01..a5f1769 100644
--- a/src/actions/rs_actiondimangular.cpp
+++ b/src/actions/rs_actiondimangular.cpp
@@ -26,10 +26,12 @@
 
 #include "rs_actiondimangular.h"
 
-#include "rs_creation.h"
-#include "rs_information.h"
-#include "rs_snapper.h"
+
+#include <QAction>
 #include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
+#include "rs_information.h"
 
 
 
@@ -98,7 +100,7 @@ void RS_ActionDimAngular::trigger() {
 
 
 
-void RS_ActionDimAngular::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDimAngular::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDimAngular::mouseMoveEvent begin");
 
     RS_Vector mouse(graphicView->toGraphX(e->x()),
@@ -134,9 +136,9 @@ void RS_ActionDimAngular::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDimAngular::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionDimAngular::mouseReleaseEvent(QMouseEvent* e) {
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case SetLine1: {
                 RS_Entity* en = catchEntity(e, RS2::ResolveAll);
@@ -190,7 +192,7 @@ void RS_ActionDimAngular::mouseReleaseEvent(RS_MouseEvent* e) {
             }
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -219,7 +221,7 @@ void RS_ActionDimAngular::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDimAngular::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -246,8 +248,8 @@ void RS_ActionDimAngular::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDimAngular::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDimAngular::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetLine1:
diff --git a/src/actions/rs_actiondimangular.h b/src/actions/rs_actiondimangular.h
index ac2f617..d5cca2b 100644
--- a/src/actions/rs_actiondimangular.h
+++ b/src/actions/rs_actiondimangular.h
@@ -61,12 +61,12 @@ public:
 	
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondimdiametric.cpp b/src/actions/rs_actiondimdiametric.cpp
index d14544d..1390530 100644
--- a/src/actions/rs_actiondimdiametric.cpp
+++ b/src/actions/rs_actiondimdiametric.cpp
@@ -26,10 +26,10 @@
 
 #include "rs_actiondimdiametric.h"
 
-#include "rs_creation.h"
-#include "rs_snapper.h"
+#include <QAction>
 #include "rs_dialogfactory.h"
-
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 RS_ActionDimDiametric::RS_ActionDimDiametric(
@@ -118,7 +118,7 @@ void RS_ActionDimDiametric::preparePreview() {
 
 
 
-void RS_ActionDimDiametric::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDimDiametric::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDimDiametric::mouseMoveEvent begin");
 
     RS_Vector mouse(graphicView->toGraphX(e->x()),
@@ -152,9 +152,9 @@ void RS_ActionDimDiametric::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDimDiametric::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionDimDiametric::mouseReleaseEvent(QMouseEvent* e) {
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case SetEntity: {
                 RS_Entity* en = catchEntity(e, RS2::ResolveAll);
@@ -190,7 +190,7 @@ void RS_ActionDimDiametric::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -220,7 +220,7 @@ void RS_ActionDimDiametric::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDimDiametric::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -263,8 +263,8 @@ void RS_ActionDimDiametric::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDimDiametric::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDimDiametric::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetEntity:
diff --git a/src/actions/rs_actiondimdiametric.h b/src/actions/rs_actiondimdiametric.h
index 1b29c6f..c34e8b7 100644
--- a/src/actions/rs_actiondimdiametric.h
+++ b/src/actions/rs_actiondimdiametric.h
@@ -61,12 +61,12 @@ public:
     virtual void trigger();
 	void preparePreview();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondimension.cpp b/src/actions/rs_actiondimension.cpp
index cfc298b..55cc688 100644
--- a/src/actions/rs_actiondimension.cpp
+++ b/src/actions/rs_actiondimension.cpp
@@ -26,10 +26,8 @@
 
 #include "rs_actiondimaligned.h"
 
-#include "rs_snapper.h"
-#include "rs_constructionline.h"
 #include "rs_dialogfactory.h"
-
+#include "rs_graphicview.h"
 
 
 RS_ActionDimension::RS_ActionDimension(const char* name,
diff --git a/src/actions/rs_actiondimension.h b/src/actions/rs_actiondimension.h
index 21d0d7f..45172a6 100644
--- a/src/actions/rs_actiondimension.h
+++ b/src/actions/rs_actiondimension.h
@@ -53,12 +53,12 @@ public:
     virtual void updateMouseCursor();
     virtual void updateToolBar();
 
-    RS_String getText() {
+    QString getText() {
 		if (!data.text.isEmpty()) {
 			return data.text;
 		}
 	
-        RS_String l = label;
+        QString l = label;
 
         if (l.isEmpty() &&
             (diameter==true || !tol1.isEmpty() || !tol2.isEmpty())) {
@@ -66,37 +66,37 @@ public:
         }
 
         if (diameter==true) {
-            l = RS_Char(0x2205) + l;
+            l = QChar(0x2205) + l;
         }
 
         if (!tol1.isEmpty() || !tol2.isEmpty()) {
-            l += RS_String("\\S%1\\%2;").arg(tol1).arg(tol2);
+            l += QString("\\S%1\\%2;").arg(tol1).arg(tol2);
         }
 
         return l;
     }
 	
-    void setText(const RS_String& t) {
+    void setText(const QString& t) {
         data.text = t;
 	}
 
-	RS_String getLabel() {
+        QString getLabel() {
 		return label;
 	}
-    void setLabel(const RS_String& t) {
+    void setLabel(const QString& t) {
         //data.text = t;
         label = t;
     }
-	RS_String getTol1() {
+        QString getTol1() {
 		return tol1;
 	}
-    void setTol1(const RS_String& t) {
+    void setTol1(const QString& t) {
         tol1 = t;
     }
-	RS_String getTol2() {
+        QString getTol2() {
 		return tol2;
 	}
-    void setTol2(const RS_String& t) {
+    void setTol2(const QString& t) {
         tol2 = t;
     }
 	bool getDiameter() {
@@ -120,9 +120,9 @@ protected:
      */
     RS_DimensionData data;
 
-    RS_String label;
-    RS_String tol1;
-    RS_String tol2;
+    QString label;
+    QString tol1;
+    QString tol2;
     bool diameter;
 
 
@@ -130,8 +130,8 @@ protected:
      * Commands.
      */
     /*
-      RS_String cmdText;
-      RS_String cmdText2;
+      QString cmdText;
+      QString cmdText2;
     */
 };
 
diff --git a/src/actions/rs_actiondimleader.cpp b/src/actions/rs_actiondimleader.cpp
index 208747a..7c36956 100644
--- a/src/actions/rs_actiondimleader.cpp
+++ b/src/actions/rs_actiondimleader.cpp
@@ -25,8 +25,12 @@
 **********************************************************************/
 
 #include "rs_actiondimleader.h"
-#include "rs_snapper.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
+#include "rs_leader.h"
 
 
 RS_ActionDimLeader::RS_ActionDimLeader(RS_EntityContainer& container,
@@ -76,8 +80,8 @@ void RS_ActionDimLeader::trigger() {
         leader->setLayerToActive();
         leader->setPenToActive();
 
-        for (RS_Vector* v=points.first(); v!=NULL; v=points.next()) {
-            leader->addVertex(*v);
+        for (int i = 0; i < points.size(); ++i) {
+            leader->addVertex(points.at(i));
         }
 
         container->addEntity(leader);
@@ -102,26 +106,29 @@ void RS_ActionDimLeader::trigger() {
 
 
 
-void RS_ActionDimLeader::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDimLeader::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDimLeader::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
-    if (getStatus()==SetEndpoint && points.last()!=NULL) {
+    if (getStatus()==SetEndpoint && !points.isEmpty()) {
         deletePreview();
 
         // fill in lines that were already set:
         RS_Vector last(false);
-        for (RS_Vector* v=points.first(); v!=NULL; v=points.next()) {
+        for (int i = 0; i < points.size(); ++i) {
+            RS_Vector v = points.at(i);
             if (last.valid) {
                 preview->addEntity(new RS_Line(preview,
-                                               RS_LineData(last, *v)));
+                                               RS_LineData(last, v)));
             }
-            last = *v;
+            last = v;
         }
 
-        RS_Vector p = *points.last();
-        preview->addEntity(new RS_Line(preview,
+        if ( !points.isEmpty() ) {
+            RS_Vector p = points.last();
+            preview->addEntity(new RS_Line(preview,
                                        RS_LineData(p, mouse)));
+        }
         drawPreview();
     }
 
@@ -130,11 +137,11 @@ void RS_ActionDimLeader::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDimLeader::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDimLeader::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         if (getStatus()==SetEndpoint) {
             trigger();
             reset();
@@ -148,7 +155,7 @@ void RS_ActionDimLeader::mouseReleaseEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDimLeader::keyPressEvent(RS_KeyEvent* e) {
+void RS_ActionDimLeader::keyPressEvent(QKeyEvent* e) {
     if (getStatus()==SetEndpoint && e->key()==Qt::Key_Enter) {
         trigger();
         reset();
@@ -169,7 +176,7 @@ void RS_ActionDimLeader::coordinateEvent(RS_CoordinateEvent* e) {
     case SetStartpoint:
         //data.startpoint = mouse;
         points.clear();
-        points.append(new RS_Vector(mouse));
+        points.append(mouse);
         //start = data.startpoint;
         setStatus(SetEndpoint);
         graphicView->moveRelativeZero(mouse);
@@ -177,7 +184,7 @@ void RS_ActionDimLeader::coordinateEvent(RS_CoordinateEvent* e) {
 
     case SetEndpoint:
         //data.endpoint = mouse;
-        points.append(new RS_Vector(mouse));
+        points.append(mouse);
         //trigger();
         //data.startpoint = data.endpoint;
         graphicView->moveRelativeZero(mouse);
@@ -191,7 +198,7 @@ void RS_ActionDimLeader::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDimLeader::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -212,8 +219,8 @@ void RS_ActionDimLeader::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDimLeader::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDimLeader::getAvailableCommands() {
+    QStringList cmd;
 
     return cmd;
 }
diff --git a/src/actions/rs_actiondimleader.h b/src/actions/rs_actiondimleader.h
index 718e62b..b8a6b93 100644
--- a/src/actions/rs_actiondimleader.h
+++ b/src/actions/rs_actiondimleader.h
@@ -28,7 +28,8 @@
 #define RS_ACTIONDIMLEADER_H
 
 #include "rs_previewactioninterface.h"
-#include "rs_leader.h"
+
+class RS_Leader;
 
 /**
  * This action class can handle user events to draw 
@@ -63,13 +64,13 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
-    virtual void keyPressEvent(RS_KeyEvent*);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
+    virtual void keyPressEvent(QKeyEvent*);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
 	virtual void showOptions();
 	virtual void hideOptions();
@@ -86,7 +87,7 @@ protected:
 	/**
 	 * Points set so far.
 	 */
-	RS_PtrList<RS_Vector> points;
+        QList<RS_Vector> points;
 
 };
 
diff --git a/src/actions/rs_actiondimlinear.cpp b/src/actions/rs_actiondimlinear.cpp
index f51a4c5..b46249f 100644
--- a/src/actions/rs_actiondimlinear.cpp
+++ b/src/actions/rs_actiondimlinear.cpp
@@ -25,9 +25,12 @@
 **********************************************************************/
 
 #include "rs_actiondimlinear.h"
-#include "rs_snapper.h"
-#include "rs_constructionline.h"
+
+#include <QAction>
 #include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
+#include "rs_constructionline.h"
 
 /**
  * Constructor.
@@ -144,7 +147,7 @@ void RS_ActionDimLinear::preparePreview() {
 
 
 
-void RS_ActionDimLinear::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDimLinear::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDimLinear::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -183,11 +186,11 @@ void RS_ActionDimLinear::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDimLinear::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDimLinear::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -230,7 +233,7 @@ void RS_ActionDimLinear::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDimLinear::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -283,8 +286,8 @@ void RS_ActionDimLinear::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDimLinear::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDimLinear::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetExtPoint1:
diff --git a/src/actions/rs_actiondimlinear.h b/src/actions/rs_actiondimlinear.h
index 76b0c73..f184abc 100644
--- a/src/actions/rs_actiondimlinear.h
+++ b/src/actions/rs_actiondimlinear.h
@@ -76,12 +76,12 @@ public:
     virtual void trigger();
 	void preparePreview();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondimradial.cpp b/src/actions/rs_actiondimradial.cpp
index 77c2a57..a617d42 100644
--- a/src/actions/rs_actiondimradial.cpp
+++ b/src/actions/rs_actiondimradial.cpp
@@ -26,10 +26,10 @@
 
 #include "rs_actiondimradial.h"
 
-#include "rs_creation.h"
-#include "rs_snapper.h"
+#include <QAction>
 #include "rs_dialogfactory.h"
-
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 RS_ActionDimRadial::RS_ActionDimRadial(
@@ -114,7 +114,7 @@ void RS_ActionDimRadial::preparePreview() {
 
 
 
-void RS_ActionDimRadial::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDimRadial::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDimRadial::mouseMoveEvent begin");
 
     //RS_Vector mouse(graphicView->toGraphX(e->x()),
@@ -149,9 +149,9 @@ void RS_ActionDimRadial::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDimRadial::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionDimRadial::mouseReleaseEvent(QMouseEvent* e) {
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case SetEntity: {
                 RS_Entity* en = catchEntity(e, RS2::ResolveAll);
@@ -185,7 +185,7 @@ void RS_ActionDimRadial::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -214,7 +214,7 @@ void RS_ActionDimRadial::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDimRadial::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -257,8 +257,8 @@ void RS_ActionDimRadial::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDimRadial::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDimRadial::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetEntity:
diff --git a/src/actions/rs_actiondimradial.h b/src/actions/rs_actiondimradial.h
index f76ecdc..ba1a0f2 100644
--- a/src/actions/rs_actiondimradial.h
+++ b/src/actions/rs_actiondimradial.h
@@ -61,12 +61,12 @@ public:
     virtual void trigger();
 	void preparePreview();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondrawarc.cpp b/src/actions/rs_actiondrawarc.cpp
index 0b764b8..34531fa 100644
--- a/src/actions/rs_actiondrawarc.cpp
+++ b/src/actions/rs_actiondrawarc.cpp
@@ -26,10 +26,11 @@
 
 #include "rs_actiondrawarc.h"
 
-#include "rs_commands.h"
-#include "rs_snapper.h"
+#include <QAction>
 #include "rs_dialogfactory.h"
-
+#include "rs_graphicview.h"
+#include "rs_commands.h"
+#include "rs_commandevent.h"
 
 
 RS_ActionDrawArc::RS_ActionDrawArc(RS_EntityContainer& container,
@@ -107,7 +108,7 @@ void RS_ActionDrawArc::trigger() {
 
 
 
-void RS_ActionDrawArc::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawArc::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawArc::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -178,11 +179,11 @@ void RS_ActionDrawArc::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawArc::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawArc::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -242,7 +243,7 @@ void RS_ActionDrawArc::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawArc::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (RS_COMMANDS->checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -354,8 +355,8 @@ void RS_ActionDrawArc::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawArc::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawArc::getAvailableCommands() {
+    QStringList cmd;
     cmd += RS_COMMANDS->command("reversed");
     return cmd;
 }
diff --git a/src/actions/rs_actiondrawarc.h b/src/actions/rs_actiondrawarc.h
index 7bb577d..ef375f3 100644
--- a/src/actions/rs_actiondrawarc.h
+++ b/src/actions/rs_actiondrawarc.h
@@ -67,12 +67,12 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
@@ -97,9 +97,9 @@ protected:
 	/**
 	 * Commands
 	 */
-	/*RS_String cmdReversed;
-	RS_String cmdReversed2;
-	RS_String cmdReversed3;
+        /*QString cmdReversed;
+        QString cmdReversed2;
+        QString cmdReversed3;
 	*/
 };
 
diff --git a/src/actions/rs_actiondrawarc3p.cpp b/src/actions/rs_actiondrawarc3p.cpp
index 6b1fec1..ac817cc 100644
--- a/src/actions/rs_actiondrawarc3p.cpp
+++ b/src/actions/rs_actiondrawarc3p.cpp
@@ -26,10 +26,12 @@
 
 #include "rs_actiondrawarc3p.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_actiondrawarc.h"
 #include "rs_commands.h"
-#include "rs_snapper.h"
-#include "rs_dialogfactory.h"
+#include "rs_commandevent.h"
 
 
 
@@ -114,7 +116,7 @@ void RS_ActionDrawArc3P::preparePreview() {
 }
 
 
-void RS_ActionDrawArc3P::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawArc3P::mouseMoveEvent(QMouseEvent* e) {
     RS_Vector mouse = snapPoint(e);
 
     switch (getStatus()) {
@@ -152,11 +154,11 @@ void RS_ActionDrawArc3P::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawArc3P::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawArc3P::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -196,7 +198,7 @@ void RS_ActionDrawArc3P::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawArc3P::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -213,8 +215,8 @@ void RS_ActionDrawArc3P::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawArc3P::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawArc3P::getAvailableCommands() {
+    QStringList cmd;
     return cmd;
 }
 
diff --git a/src/actions/rs_actiondrawarc3p.h b/src/actions/rs_actiondrawarc3p.h
index 2efda52..30161c3 100644
--- a/src/actions/rs_actiondrawarc3p.h
+++ b/src/actions/rs_actiondrawarc3p.h
@@ -62,12 +62,12 @@ public:
     virtual void trigger();
 	void preparePreview();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
diff --git a/src/actions/rs_actiondrawarctangential.cpp b/src/actions/rs_actiondrawarctangential.cpp
index 52e2f9f..bcb2050 100644
--- a/src/actions/rs_actiondrawarctangential.cpp
+++ b/src/actions/rs_actiondrawarctangential.cpp
@@ -26,9 +26,10 @@
 
 #include "rs_actiondrawarctangential.h"
 
-#include "rs_commands.h"
-#include "rs_snapper.h"
+#include <QAction>
 #include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 
@@ -122,7 +123,7 @@ void RS_ActionDrawArcTangential::preparePreview() {
 }
 
 
-void RS_ActionDrawArcTangential::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawArcTangential::mouseMoveEvent(QMouseEvent* e) {
     switch (getStatus()) {
     case SetBaseEntity:
         break;
@@ -146,8 +147,8 @@ void RS_ActionDrawArcTangential::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawArcTangential::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawArcTangential::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
 
             // set base entity:
@@ -181,7 +182,7 @@ void RS_ActionDrawArcTangential::mouseReleaseEvent(RS_MouseEvent* e) {
             }
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -212,7 +213,7 @@ void RS_ActionDrawArcTangential::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawArcTangential::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -223,8 +224,8 @@ void RS_ActionDrawArcTangential::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawArcTangential::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawArcTangential::getAvailableCommands() {
+    QStringList cmd;
     return cmd;
 }
 
diff --git a/src/actions/rs_actiondrawarctangential.h b/src/actions/rs_actiondrawarctangential.h
index 606943e..be022a2 100644
--- a/src/actions/rs_actiondrawarctangential.h
+++ b/src/actions/rs_actiondrawarctangential.h
@@ -65,12 +65,12 @@ public:
     virtual void trigger();
 	void preparePreview();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
     
 	virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondrawcircle.cpp b/src/actions/rs_actiondrawcircle.cpp
index e943330..39feafa 100644
--- a/src/actions/rs_actiondrawcircle.cpp
+++ b/src/actions/rs_actiondrawcircle.cpp
@@ -26,7 +26,10 @@
 
 #include "rs_actiondrawcircle.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 
@@ -94,7 +97,7 @@ void RS_ActionDrawCircle::trigger() {
 
 
 
-void RS_ActionDrawCircle::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawCircle::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawCircle::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -119,11 +122,11 @@ void RS_ActionDrawCircle::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawCircle::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawCircle::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -162,7 +165,7 @@ void RS_ActionDrawCircle::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawCircle::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -197,8 +200,8 @@ void RS_ActionDrawCircle::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawCircle::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawCircle::getAvailableCommands() {
+    QStringList cmd;
     return cmd;
 }
 
diff --git a/src/actions/rs_actiondrawcircle.h b/src/actions/rs_actiondrawcircle.h
index 430b3b4..c48fb94 100644
--- a/src/actions/rs_actiondrawcircle.h
+++ b/src/actions/rs_actiondrawcircle.h
@@ -64,12 +64,12 @@ public:
 	
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondrawcircle2p.cpp b/src/actions/rs_actiondrawcircle2p.cpp
index 960e0e7..4cf004b 100644
--- a/src/actions/rs_actiondrawcircle2p.cpp
+++ b/src/actions/rs_actiondrawcircle2p.cpp
@@ -25,7 +25,11 @@
 **********************************************************************/
 
 #include "rs_actiondrawcircle2p.h"
-#include "rs_snapper.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 
@@ -112,7 +116,7 @@ void RS_ActionDrawCircle2P::preparePreview() {
 }
 
 
-void RS_ActionDrawCircle2P::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawCircle2P::mouseMoveEvent(QMouseEvent* e) {
     RS_Vector mouse = snapPoint(e);
     switch (getStatus()) {
     case SetPoint1:
@@ -137,11 +141,11 @@ void RS_ActionDrawCircle2P::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawCircle2P::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawCircle2P::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -177,7 +181,7 @@ void RS_ActionDrawCircle2P::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawCircle2P::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -191,8 +195,8 @@ void RS_ActionDrawCircle2P::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawCircle2P::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawCircle2P::getAvailableCommands() {
+    QStringList cmd;
     return cmd;
 }
 
diff --git a/src/actions/rs_actiondrawcircle2p.h b/src/actions/rs_actiondrawcircle2p.h
index a50b590..3cb66e2 100644
--- a/src/actions/rs_actiondrawcircle2p.h
+++ b/src/actions/rs_actiondrawcircle2p.h
@@ -61,12 +61,12 @@ public:
     virtual void trigger();
 	void preparePreview();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
diff --git a/src/actions/rs_actiondrawcircle3p.cpp b/src/actions/rs_actiondrawcircle3p.cpp
index 5d9792e..f68ee23 100644
--- a/src/actions/rs_actiondrawcircle3p.cpp
+++ b/src/actions/rs_actiondrawcircle3p.cpp
@@ -26,7 +26,10 @@
 
 #include "rs_actiondrawcircle3p.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 
@@ -112,7 +115,7 @@ void RS_ActionDrawCircle3P::preparePreview() {
 
 
 
-void RS_ActionDrawCircle3P::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawCircle3P::mouseMoveEvent(QMouseEvent* e) {
     RS_Vector mouse = snapPoint(e);
 
     switch (getStatus()) {
@@ -140,11 +143,11 @@ void RS_ActionDrawCircle3P::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawCircle3P::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawCircle3P::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -184,7 +187,7 @@ void RS_ActionDrawCircle3P::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawCircle3P::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -195,8 +198,8 @@ void RS_ActionDrawCircle3P::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawCircle3P::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawCircle3P::getAvailableCommands() {
+    QStringList cmd;
     return cmd;
 }
 
diff --git a/src/actions/rs_actiondrawcircle3p.h b/src/actions/rs_actiondrawcircle3p.h
index 0ce4871..57f4fee 100644
--- a/src/actions/rs_actiondrawcircle3p.h
+++ b/src/actions/rs_actiondrawcircle3p.h
@@ -62,12 +62,12 @@ public:
     virtual void trigger();
 	void preparePreview();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
diff --git a/src/actions/rs_actiondrawcirclecr.cpp b/src/actions/rs_actiondrawcirclecr.cpp
index 20ba763..4cb9737 100644
--- a/src/actions/rs_actiondrawcirclecr.cpp
+++ b/src/actions/rs_actiondrawcirclecr.cpp
@@ -25,7 +25,11 @@
 **********************************************************************/
 
 #include "rs_actiondrawcirclecr.h"
-#include "rs_snapper.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 /**
  * Constructor.
@@ -90,7 +94,7 @@ void RS_ActionDrawCircleCR::trigger() {
 
 
 
-void RS_ActionDrawCircleCR::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawCircleCR::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawCircleCR::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -109,11 +113,11 @@ void RS_ActionDrawCircleCR::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawCircleCR::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawCircleCR::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -142,7 +146,7 @@ void RS_ActionDrawCircleCR::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawCircleCR::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -178,8 +182,8 @@ void RS_ActionDrawCircleCR::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawCircleCR::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawCircleCR::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetCenter:
diff --git a/src/actions/rs_actiondrawcirclecr.h b/src/actions/rs_actiondrawcirclecr.h
index 0840ba4..2b96306 100644
--- a/src/actions/rs_actiondrawcirclecr.h
+++ b/src/actions/rs_actiondrawcirclecr.h
@@ -64,12 +64,12 @@ public:
 
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondrawellipseaxis.cpp b/src/actions/rs_actiondrawellipseaxis.cpp
index 4e96031..69c32ea 100644
--- a/src/actions/rs_actiondrawellipseaxis.cpp
+++ b/src/actions/rs_actiondrawellipseaxis.cpp
@@ -25,7 +25,11 @@
 **********************************************************************/
 
 #include "rs_actiondrawellipseaxis.h"
-#include "rs_snapper.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 /**
  * Constructor.
@@ -125,7 +129,7 @@ void RS_ActionDrawEllipseAxis::trigger() {
 
 
 
-void RS_ActionDrawEllipseAxis::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawEllipseAxis::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawEllipseAxis::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -215,15 +219,15 @@ void RS_ActionDrawEllipseAxis::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawEllipseAxis::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionDrawEllipseAxis::mouseReleaseEvent(QMouseEvent* e) {
     // Proceed to next status
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
     }
 
     // Return to last status:
-    else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -289,7 +293,7 @@ void RS_ActionDrawEllipseAxis::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawEllipseAxis::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -353,8 +357,8 @@ void RS_ActionDrawEllipseAxis::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawEllipseAxis::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawEllipseAxis::getAvailableCommands() {
+    QStringList cmd;
     return cmd;
 }
 
diff --git a/src/actions/rs_actiondrawellipseaxis.h b/src/actions/rs_actiondrawellipseaxis.h
index 941f57a..794ec67 100644
--- a/src/actions/rs_actiondrawellipseaxis.h
+++ b/src/actions/rs_actiondrawellipseaxis.h
@@ -62,12 +62,12 @@ public:
 	
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
diff --git a/src/actions/rs_actiondrawhatch.cpp b/src/actions/rs_actiondrawhatch.cpp
index 1c0db26..4f31685 100644
--- a/src/actions/rs_actiondrawhatch.cpp
+++ b/src/actions/rs_actiondrawhatch.cpp
@@ -26,7 +26,8 @@
 
 #include "rs_actiondrawhatch.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
 #include "rs_graphicview.h"
 #include "rs_information.h"
 
@@ -126,11 +127,13 @@ void RS_ActionDrawHatch::trigger() {
         if (e->isSelected()) {
             e->setSelected(false);
 			// entity is part of a complex entity (spline, polyline, ..):
-			if (e->getParent()!=NULL && 
-			    (e->getParent()->rtti()==RS2::EntitySpline ||
-				 e->getParent()->rtti()==RS2::EntityPolyline)) {
-				e->getParent()->setSelected(false);
-			}
+            if (e->getParent()!=NULL &&
+// RVT - Don't de-delect the parent EntityPolyline, this is messing up the getFirst and getNext iterators
+//			    (e->getParent()->rtti()==RS2::EntitySpline ||
+//				 e->getParent()->rtti()==RS2::EntityPolyline)) {
+                (e->getParent()->rtti()==RS2::EntitySpline)) {
+                e->getParent()->setSelected(false);
+            }
             RS_Entity* cp = e->clone();
             cp->setPen(RS_Pen(RS2::FlagInvalid));
             cp->reparent(loop);
@@ -164,7 +167,7 @@ void RS_ActionDrawHatch::trigger() {
 
 
 
-void RS_ActionDrawHatch::mouseMoveEvent(RS_MouseEvent*) {
+void RS_ActionDrawHatch::mouseMoveEvent(QMouseEvent*) {
     RS_DEBUG->print("RS_ActionDrawHatch::mouseMoveEvent begin");
 
     /*if (getStatus()==SetPos) {
@@ -186,8 +189,8 @@ void RS_ActionDrawHatch::mouseMoveEvent(RS_MouseEvent*) {
 
 
 
-void RS_ActionDrawHatch::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawHatch::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_Vector mouse = snapPoint(e);
 
         switch (getStatus()) {
@@ -197,7 +200,7 @@ void RS_ActionDrawHatch::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         //deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actiondrawhatch.h b/src/actions/rs_actiondrawhatch.h
index 672d6fe..34d05ee 100644
--- a/src/actions/rs_actiondrawhatch.h
+++ b/src/actions/rs_actiondrawhatch.h
@@ -55,8 +55,8 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
     virtual void updateToolBar();
diff --git a/src/actions/rs_actiondrawimage.cpp b/src/actions/rs_actiondrawimage.cpp
index f208ef1..bc428db 100644
--- a/src/actions/rs_actiondrawimage.cpp
+++ b/src/actions/rs_actiondrawimage.cpp
@@ -26,9 +26,11 @@
 
 #include "rs_actiondrawimage.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 #include "rs_creation.h"
-#include "rs_commands.h"
-#include "rs_modification.h"
 
 /**
  * Constructor.
@@ -63,7 +65,7 @@ void RS_ActionDrawImage::init(int status) {
 	if (!data.file.isEmpty()) {
     	//std::cout << "file: " << data.file << "\n";
 
-    	img = RS_Img(data.file);
+        img = QImage(data.file);
     	setStatus(SetTargetPoint);
 	}
 	else {
@@ -103,7 +105,7 @@ void RS_ActionDrawImage::trigger() {
 }
 
 
-void RS_ActionDrawImage::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawImage::mouseMoveEvent(QMouseEvent* e) {
     switch (getStatus()) {
     case SetTargetPoint:
         data.insertionPoint = snapPoint(e);
@@ -143,11 +145,11 @@ void RS_ActionDrawImage::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawImage::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawImage::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         //init(getStatus()-1);
 		finish();
     }
@@ -167,7 +169,7 @@ void RS_ActionDrawImage::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawImage::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -221,8 +223,8 @@ void RS_ActionDrawImage::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawImage::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawImage::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetTargetPoint:
diff --git a/src/actions/rs_actiondrawimage.h b/src/actions/rs_actiondrawimage.h
index 1e5e622..eac8435 100644
--- a/src/actions/rs_actiondrawimage.h
+++ b/src/actions/rs_actiondrawimage.h
@@ -70,12 +70,12 @@ public:
 
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
     virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
 	virtual void showOptions();
 	virtual void hideOptions();
@@ -106,7 +106,7 @@ public:
 
 protected:
 	RS_ImageData data;
-	RS_Img img;
+        QImage img;
 	
 	/** Last status before entering option. */
 	Status lastStatus;
diff --git a/src/actions/rs_actiondrawline.cpp b/src/actions/rs_actiondrawline.cpp
index 5fe86ca..1db459d 100644
--- a/src/actions/rs_actiondrawline.cpp
+++ b/src/actions/rs_actiondrawline.cpp
@@ -25,8 +25,13 @@
 **********************************************************************/
 
 #include "rs_actiondrawline.h"
+
+#include <QAction>
 #include "rs_actioneditundo.h"
-#include "rs_snapper.h"
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commands.h"
+#include "rs_commandevent.h"
 
 
 
@@ -37,7 +42,6 @@ RS_ActionDrawLine::RS_ActionDrawLine(RS_EntityContainer& container,
 
 	RS_DEBUG->print("RS_ActionDrawLine::RS_ActionDrawLine");
     reset();
-    history.setAutoDelete(true);
 	RS_DEBUG->print("RS_ActionDrawLine::RS_ActionDrawLine: OK");
 }
 
@@ -99,7 +103,7 @@ void RS_ActionDrawLine::trigger() {
 
 
 
-void RS_ActionDrawLine::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLine::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLine::mouseMoveEvent begin");
 
     RS_DEBUG->print("RS_ActionDrawLine::mouseMoveEvent: snap point");
@@ -119,11 +123,11 @@ void RS_ActionDrawLine::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLine::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawLine::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -144,7 +148,7 @@ void RS_ActionDrawLine::coordinateEvent(RS_CoordinateEvent* e) {
     case SetStartpoint:
         data.startpoint = mouse;
         history.clear();
-        history.append(new RS_Vector(mouse));
+        history.append(mouse);
         start = data.startpoint;
         setStatus(SetEndpoint);
         graphicView->moveRelativeZero(mouse);
@@ -153,7 +157,7 @@ void RS_ActionDrawLine::coordinateEvent(RS_CoordinateEvent* e) {
 
     case SetEndpoint:
         data.endpoint = mouse;
-        history.append(new RS_Vector(mouse));
+        history.append(mouse);
         trigger();
         data.startpoint = data.endpoint;
         updateMouseButtonHints();
@@ -170,7 +174,7 @@ void RS_ActionDrawLine::coordinateEvent(RS_CoordinateEvent* e) {
 
 void RS_ActionDrawLine::commandEvent(RS_CommandEvent* e) {
 	RS_DEBUG->print("RS_ActionDrawLine::commandEvent");
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     switch (getStatus()) {
     case SetStartpoint:
@@ -203,17 +207,17 @@ void RS_ActionDrawLine::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawLine::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawLine::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetStartpoint:
         break;
     case SetEndpoint:
-        if (history.count()>=2) {
+        if (history.size()>=2) {
             cmd += command("undo");
         }
-        if (history.count()>=3) {
+        if (history.size()>=3) {
             cmd += command("close");
         }
         break;
@@ -233,17 +237,17 @@ void RS_ActionDrawLine::updateMouseButtonHints() {
                                             tr("Cancel"));
         break;
     case SetEndpoint: {
-            RS_String msg = "";
+            QString msg = "";
 
-            if (history.count()>=3) {
+            if (history.size()>=3) {
                 msg += RS_COMMANDS->command("close");
                 msg += "/";
             }
-            if (history.count()>=2) {
+            if (history.size()>=2) {
                 msg += RS_COMMANDS->command("undo");
             }
 
-            if (history.count()>=2) {
+            if (history.size()>=2) {
                 RS_DIALOGFACTORY->updateMouseWidget(
                     tr("Specify next point or [%1]").arg(msg),
                     tr("Back"));
@@ -292,7 +296,7 @@ void RS_ActionDrawLine::updateToolBar() {
 }
 
 void RS_ActionDrawLine::close() {
-    if (history.count()>2 && start.valid) {
+    if (history.size()>2 && start.valid) {
         data.endpoint = start;
         trigger();
         setStatus(SetStartpoint);
@@ -305,12 +309,12 @@ void RS_ActionDrawLine::close() {
 }
 
 void RS_ActionDrawLine::undo() {
-    if (history.count()>1) {
+    if (history.size()>1) {
         history.removeLast();
         deletePreview();
         graphicView->setCurrentAction(
             new RS_ActionEditUndo(true, *container, *graphicView));
-        data.startpoint = *history.last();
+        data.startpoint = history.last();
         graphicView->moveRelativeZero(data.startpoint);
     } else {
         RS_DIALOGFACTORY->commandMessage(
diff --git a/src/actions/rs_actiondrawline.h b/src/actions/rs_actiondrawline.h
index 5fe0f19..a520d10 100644
--- a/src/actions/rs_actiondrawline.h
+++ b/src/actions/rs_actiondrawline.h
@@ -28,9 +28,6 @@
 #define RS_ACTIONDRAWLINE_H
 
 #include "rs_previewactioninterface.h"
-#include "rs_line.h"
-
-#include <qaction.h>
 
 
 /**
@@ -66,12 +63,12 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
 	virtual void showOptions();
 	virtual void hideOptions();
@@ -96,7 +93,7 @@ protected:
 	/**
 	 * Point history (for undo)
 	 */
-	RS_PtrList<RS_Vector> history;
+        QList<RS_Vector> history;
 	
 };
 
diff --git a/src/actions/rs_actiondrawlineangle.cpp b/src/actions/rs_actiondrawlineangle.cpp
index 7dfc1e6..fe33c49 100644
--- a/src/actions/rs_actiondrawlineangle.cpp
+++ b/src/actions/rs_actiondrawlineangle.cpp
@@ -25,7 +25,11 @@
 **********************************************************************/
 
 #include "rs_actiondrawlineangle.h"
-#include "rs_snapper.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 
@@ -114,7 +118,7 @@ void RS_ActionDrawLineAngle::trigger() {
 
 
 
-void RS_ActionDrawLineAngle::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineAngle::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLineAngle::mouseMoveEvent begin");
 
     if (getStatus()==SetPos) {
@@ -131,13 +135,13 @@ void RS_ActionDrawLineAngle::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLineAngle::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawLineAngle::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         if (getStatus()==SetPos) {
             RS_CoordinateEvent ce(snapPoint(e));
             coordinateEvent(&ce);
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -184,7 +188,7 @@ void RS_ActionDrawLineAngle::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawLineAngle::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -236,8 +240,8 @@ void RS_ActionDrawLineAngle::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawLineAngle::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawLineAngle::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetPos:
diff --git a/src/actions/rs_actiondrawlineangle.h b/src/actions/rs_actiondrawlineangle.h
index 60ed972..ca01e9b 100644
--- a/src/actions/rs_actiondrawlineangle.h
+++ b/src/actions/rs_actiondrawlineangle.h
@@ -66,13 +66,13 @@ public:
 	
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	void preparePreview();
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondrawlinebisector.cpp b/src/actions/rs_actiondrawlinebisector.cpp
index d749e28..a9a1ffd 100644
--- a/src/actions/rs_actiondrawlinebisector.cpp
+++ b/src/actions/rs_actiondrawlinebisector.cpp
@@ -26,8 +26,11 @@
 
 #include "rs_actiondrawlinebisector.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 #include "rs_creation.h"
-#include "rs_snapper.h"
 
 
 
@@ -97,7 +100,7 @@ void RS_ActionDrawLineBisector::trigger() {
 
 
 
-void RS_ActionDrawLineBisector::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineBisector::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLineBisector::mouseMoveEvent begin");
 
     RS_Vector mouse = RS_Vector(graphicView->toGraphX(e->x()),
@@ -136,9 +139,9 @@ void RS_ActionDrawLineBisector::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLineBisector::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineBisector::mouseReleaseEvent(QMouseEvent* e) {
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     } else {
@@ -169,7 +172,7 @@ void RS_ActionDrawLineBisector::mouseReleaseEvent(RS_MouseEvent* e) {
 
 
 void RS_ActionDrawLineBisector::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -224,8 +227,8 @@ void RS_ActionDrawLineBisector::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawLineBisector::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawLineBisector::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetLine1:
diff --git a/src/actions/rs_actiondrawlinebisector.h b/src/actions/rs_actiondrawlinebisector.h
index be3ded2..984604e 100644
--- a/src/actions/rs_actiondrawlinebisector.h
+++ b/src/actions/rs_actiondrawlinebisector.h
@@ -57,11 +57,11 @@ public:
 	}
 
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondrawlinefree.cpp b/src/actions/rs_actiondrawlinefree.cpp
index 93f2f10..638b59f 100644
--- a/src/actions/rs_actiondrawlinefree.cpp
+++ b/src/actions/rs_actiondrawlinefree.cpp
@@ -25,8 +25,10 @@
 **********************************************************************/
 
 #include "rs_actiondrawlinefree.h"
-#include "rs_snapper.h"
-#include "rs_point.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 
@@ -54,24 +56,31 @@ QAction* RS_ActionDrawLineFree::createGUIAction(RS2::ActionType /*type*/, QObjec
 
 void RS_ActionDrawLineFree::trigger() {
     if (polyline!=NULL) {
-        container->addEntity(polyline);
-
-        if (document) {
-            document->startUndoCycle();
-            document->addUndoable(polyline);
-            document->endUndoCycle();
-        }
-
+            polyline->endPolyline();
+            RS_VectorSolutions sol=polyline->getRefPoints();
+            if(sol.getNumber() > 2 ) {
+                container->addEntity(polyline);
+                if (document) {
+                        document->startUndoCycle();
+                        document->addUndoable(polyline);
+                        document->endUndoCycle();
+                }
 		graphicView->redraw(RS2::RedrawDrawing);
         RS_DEBUG->print("RS_ActionDrawLineFree::trigger():"
                         " polyline added: %d", polyline->getId());
+            } else {
+	    delete polyline;
+	    }
         polyline = NULL;
     }
 }
 
+/*
+ * 11 Aug 2011, Dongxu Li
+ * ToDo, show the line while drawing
+ */
 
-
-void RS_ActionDrawLineFree::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineFree::mouseMoveEvent(QMouseEvent* e) {
     if (vertex.valid && polyline!=NULL) {
         RS_Vector v = snapPoint(e);
         RS_Entity* ent = polyline->addVertex(v);
@@ -90,8 +99,8 @@ void RS_ActionDrawLineFree::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLineFree::mousePressEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawLineFree::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         vertex = snapPoint(e);
         polyline = new RS_Polyline(container,
                                    RS_PolylineData(vertex, vertex, 0));
@@ -104,11 +113,11 @@ void RS_ActionDrawLineFree::mousePressEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLineFree::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawLineFree::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         vertex = RS_Vector(false);
         trigger();
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         if (polyline!=NULL) {
             delete polyline;
             polyline = NULL;
diff --git a/src/actions/rs_actiondrawlinefree.h b/src/actions/rs_actiondrawlinefree.h
index bc1faba..fc8860d 100644
--- a/src/actions/rs_actiondrawlinefree.h
+++ b/src/actions/rs_actiondrawlinefree.h
@@ -45,9 +45,9 @@ public:
 	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
 
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mousePressEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mousePressEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
     virtual void updateToolBar();
diff --git a/src/actions/rs_actiondrawlinehorvert.cpp b/src/actions/rs_actiondrawlinehorvert.cpp
index 53fc6d6..05b3d23 100644
--- a/src/actions/rs_actiondrawlinehorvert.cpp
+++ b/src/actions/rs_actiondrawlinehorvert.cpp
@@ -25,7 +25,10 @@
 **********************************************************************/
 
 #include "rs_actiondrawlinehorvert.h"
-#include "rs_snapper.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 
@@ -92,7 +95,7 @@ void RS_ActionDrawLineHorVert::trigger() {
 
 
 
-void RS_ActionDrawLineHorVert::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineHorVert::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLineHorVert::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -114,8 +117,8 @@ void RS_ActionDrawLineHorVert::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLineHorVert::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawLineHorVert::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_Vector mouse = snapPoint(e);
 
         switch (getStatus()) {
@@ -133,7 +136,7 @@ void RS_ActionDrawLineHorVert::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actiondrawlinehorvert.h b/src/actions/rs_actiondrawlinehorvert.h
index 291960b..3b8e50e 100644
--- a/src/actions/rs_actiondrawlinehorvert.h
+++ b/src/actions/rs_actiondrawlinehorvert.h
@@ -60,8 +60,8 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
     virtual void updateToolBar();
diff --git a/src/actions/rs_actiondrawlineparallel.cpp b/src/actions/rs_actiondrawlineparallel.cpp
index cbd1607..f92e135 100644
--- a/src/actions/rs_actiondrawlineparallel.cpp
+++ b/src/actions/rs_actiondrawlineparallel.cpp
@@ -26,8 +26,12 @@
 
 #include "rs_actiondrawlineparallel.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_creation.h"
-#include "rs_snapper.h"
+#include "rs_commands.h"
+#include "rs_commandevent.h"
 #include "rs_actiondrawlineparallelthrough.h"
 
 
@@ -80,7 +84,7 @@ void RS_ActionDrawLineParallel::trigger() {
 
 
 
-void RS_ActionDrawLineParallel::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineParallel::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLineParallel::mouseMoveEvent begin");
 
     coord = RS_Vector(graphicView->toGraphX(e->x()),
@@ -110,8 +114,8 @@ void RS_ActionDrawLineParallel::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLineParallel::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionDrawLineParallel::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     } else {
         trigger();
@@ -165,7 +169,7 @@ void RS_ActionDrawLineParallel::hideOptions() {
 
 
 void RS_ActionDrawLineParallel::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -235,8 +239,8 @@ void RS_ActionDrawLineParallel::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawLineParallel::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawLineParallel::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetEntity:
diff --git a/src/actions/rs_actiondrawlineparallel.h b/src/actions/rs_actiondrawlineparallel.h
index 58c658f..c1d709e 100644
--- a/src/actions/rs_actiondrawlineparallel.h
+++ b/src/actions/rs_actiondrawlineparallel.h
@@ -59,12 +59,12 @@ public:
 
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
 	
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
@@ -105,13 +105,13 @@ private:
 	 * Commands
 	 */
 	/*
-	RS_String cmdDistance;
-	RS_String cmdDistance2;
-	RS_String cmdDistance3;
+        QString cmdDistance;
+        QString cmdDistance2;
+        QString cmdDistance3;
 	
-	RS_String cmdNumber;
-	RS_String cmdNumber2;
-	RS_String cmdNumber3;
+        QString cmdNumber;
+        QString cmdNumber2;
+        QString cmdNumber3;
 	*/
 };
 
diff --git a/src/actions/rs_actiondrawlineparallelthrough.cpp b/src/actions/rs_actiondrawlineparallelthrough.cpp
index 06b701f..2228c24 100644
--- a/src/actions/rs_actiondrawlineparallelthrough.cpp
+++ b/src/actions/rs_actiondrawlineparallelthrough.cpp
@@ -26,8 +26,11 @@
 
 #include "rs_actiondrawlineparallelthrough.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_creation.h"
-#include "rs_snapper.h"
+#include "rs_commandevent.h"
 
 
 
@@ -70,7 +73,7 @@ void RS_ActionDrawLineParallelThrough::trigger() {
 
 
 
-void RS_ActionDrawLineParallelThrough::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineParallelThrough::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLineParallelThrough::mouseMoveEvent begin");
 
 
@@ -112,8 +115,8 @@ void RS_ActionDrawLineParallelThrough::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLineParallelThrough::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawLineParallelThrough::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case SetEntity:
             entity = catchEntity(e, RS2::ResolveAll);
@@ -131,7 +134,7 @@ void RS_ActionDrawLineParallelThrough::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         if (entity!=NULL) {
             entity->setHighlighted(false);
@@ -205,7 +208,7 @@ void RS_ActionDrawLineParallelThrough::hideOptions() {
 
 
 void RS_ActionDrawLineParallelThrough::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -249,8 +252,8 @@ void RS_ActionDrawLineParallelThrough::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawLineParallelThrough::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawLineParallelThrough::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetEntity:
diff --git a/src/actions/rs_actiondrawlineparallelthrough.h b/src/actions/rs_actiondrawlineparallelthrough.h
index dfa157c..ae09537 100644
--- a/src/actions/rs_actiondrawlineparallelthrough.h
+++ b/src/actions/rs_actiondrawlineparallelthrough.h
@@ -58,13 +58,13 @@ public:
 
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
@@ -97,13 +97,13 @@ private:
 	 * Commands
 	 */
 	/*
-	RS_String cmdDistance;
-	RS_String cmdDistance2;
-	RS_String cmdDistance3;
+        QString cmdDistance;
+        QString cmdDistance2;
+        QString cmdDistance3;
 	
-	RS_String cmdNumber;
-	RS_String cmdNumber2;
-	RS_String cmdNumber3;
+        QString cmdNumber;
+        QString cmdNumber2;
+        QString cmdNumber3;
 	*/
 };
 
diff --git a/src/actions/rs_actiondrawlinepolygon.cpp b/src/actions/rs_actiondrawlinepolygon.cpp
index 4670b2d..3c507c2 100644
--- a/src/actions/rs_actiondrawlinepolygon.cpp
+++ b/src/actions/rs_actiondrawlinepolygon.cpp
@@ -26,8 +26,11 @@
 
 #include "rs_actiondrawlinepolygon.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 #include "rs_creation.h"
-#include "rs_snapper.h"
 
 
 
@@ -67,7 +70,7 @@ void RS_ActionDrawLinePolygon::trigger() {
 
 
 
-void RS_ActionDrawLinePolygon::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLinePolygon::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLinePolygon::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -95,11 +98,11 @@ void RS_ActionDrawLinePolygon::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLinePolygon::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawLinePolygon::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -179,7 +182,7 @@ void RS_ActionDrawLinePolygon::hideOptions() {
 
 
 void RS_ActionDrawLinePolygon::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -230,8 +233,8 @@ void RS_ActionDrawLinePolygon::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawLinePolygon::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawLinePolygon::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetCenter:
diff --git a/src/actions/rs_actiondrawlinepolygon.h b/src/actions/rs_actiondrawlinepolygon.h
index 460cc2f..32de31e 100644
--- a/src/actions/rs_actiondrawlinepolygon.h
+++ b/src/actions/rs_actiondrawlinepolygon.h
@@ -57,13 +57,13 @@ public:
 
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondrawlinepolygon2.cpp b/src/actions/rs_actiondrawlinepolygon2.cpp
index 67ac2f1..7c98185 100644
--- a/src/actions/rs_actiondrawlinepolygon2.cpp
+++ b/src/actions/rs_actiondrawlinepolygon2.cpp
@@ -26,8 +26,11 @@
 
 #include "rs_actiondrawlinepolygon2.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 #include "rs_creation.h"
-#include "rs_snapper.h"
 
 
 
@@ -67,7 +70,7 @@ void RS_ActionDrawLinePolygon2::trigger() {
 
 
 
-void RS_ActionDrawLinePolygon2::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLinePolygon2::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLinePolygon2::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -95,11 +98,11 @@ void RS_ActionDrawLinePolygon2::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLinePolygon2::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawLinePolygon2::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -180,7 +183,7 @@ void RS_ActionDrawLinePolygon2::hideOptions() {
 
 
 void RS_ActionDrawLinePolygon2::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -231,8 +234,8 @@ void RS_ActionDrawLinePolygon2::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawLinePolygon2::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawLinePolygon2::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetCorner1:
diff --git a/src/actions/rs_actiondrawlinepolygon2.h b/src/actions/rs_actiondrawlinepolygon2.h
index 7094c4a..0f2f639 100644
--- a/src/actions/rs_actiondrawlinepolygon2.h
+++ b/src/actions/rs_actiondrawlinepolygon2.h
@@ -57,13 +57,13 @@ public:
 
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondrawlinerectangle.cpp b/src/actions/rs_actiondrawlinerectangle.cpp
index 11e2a4e..c86703a 100644
--- a/src/actions/rs_actiondrawlinerectangle.cpp
+++ b/src/actions/rs_actiondrawlinerectangle.cpp
@@ -25,7 +25,11 @@
 **********************************************************************/
 
 #include "rs_actiondrawlinerectangle.h"
-#include "rs_snapper.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 
@@ -98,7 +102,7 @@ void RS_ActionDrawLineRectangle::trigger() {
 
 
 
-void RS_ActionDrawLineRectangle::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineRectangle::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLineRectangle::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -118,11 +122,11 @@ void RS_ActionDrawLineRectangle::mouseMoveEvent(RS_MouseEvent* e) {
 }
 
 
-void RS_ActionDrawLineRectangle::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawLineRectangle::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -166,7 +170,7 @@ void RS_ActionDrawLineRectangle::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawLineRectangle::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -179,8 +183,8 @@ void RS_ActionDrawLineRectangle::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawLineRectangle::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawLineRectangle::getAvailableCommands() {
+    QStringList cmd;
     return cmd;
 }
 
diff --git a/src/actions/rs_actiondrawlinerectangle.h b/src/actions/rs_actiondrawlinerectangle.h
index cec50c5..cc498f7 100644
--- a/src/actions/rs_actiondrawlinerectangle.h
+++ b/src/actions/rs_actiondrawlinerectangle.h
@@ -58,13 +58,13 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	void preparePreview();
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
diff --git a/src/actions/rs_actiondrawlinerelangle.cpp b/src/actions/rs_actiondrawlinerelangle.cpp
index 7c44036..fcb5788 100644
--- a/src/actions/rs_actiondrawlinerelangle.cpp
+++ b/src/actions/rs_actiondrawlinerelangle.cpp
@@ -26,8 +26,11 @@
 
 #include "rs_actiondrawlinerelangle.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 #include "rs_creation.h"
-#include "rs_snapper.h"
 
 
 
@@ -109,7 +112,7 @@ void RS_ActionDrawLineRelAngle::trigger() {
 
 
 
-void RS_ActionDrawLineRelAngle::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineRelAngle::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLineRelAngle::mouseMoveEvent begin");
 
     RS_Vector mouse(graphicView->toGraphX(e->x()),
@@ -163,9 +166,9 @@ void RS_ActionDrawLineRelAngle::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLineRelAngle::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineRelAngle::mouseReleaseEvent(QMouseEvent* e) {
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case SetEntity: {
                 RS_Entity* en = catchEntity(e, RS2::ResolveAll);
@@ -192,7 +195,7 @@ void RS_ActionDrawLineRelAngle::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         if (entity!=NULL) {
             entity->setHighlighted(false);
@@ -223,7 +226,7 @@ void RS_ActionDrawLineRelAngle::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawLineRelAngle::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -286,8 +289,8 @@ void RS_ActionDrawLineRelAngle::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawLineRelAngle::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawLineRelAngle::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetPos:
diff --git a/src/actions/rs_actiondrawlinerelangle.h b/src/actions/rs_actiondrawlinerelangle.h
index 0fce128..04198fa 100644
--- a/src/actions/rs_actiondrawlinerelangle.h
+++ b/src/actions/rs_actiondrawlinerelangle.h
@@ -61,12 +61,12 @@ public:
 
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actiondrawlinetangent1.cpp b/src/actions/rs_actiondrawlinetangent1.cpp
index 4c3d3ff..5cb09a6 100644
--- a/src/actions/rs_actiondrawlinetangent1.cpp
+++ b/src/actions/rs_actiondrawlinetangent1.cpp
@@ -26,8 +26,10 @@
 
 #include "rs_actiondrawlinetangent1.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_creation.h"
-#include "rs_snapper.h"
 
 
 
@@ -85,7 +87,7 @@ void RS_ActionDrawLineTangent1::trigger() {
 
 
 
-void RS_ActionDrawLineTangent1::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineTangent1::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLineTangent1::mouseMoveEvent begin");
 
     RS_Vector mouse(graphicView->toGraphX(e->x()),
@@ -131,9 +133,9 @@ void RS_ActionDrawLineTangent1::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLineTangent1::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineTangent1::mouseReleaseEvent(QMouseEvent* e) {
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     } else {
diff --git a/src/actions/rs_actiondrawlinetangent1.h b/src/actions/rs_actiondrawlinetangent1.h
index fbc756a..858bddf 100644
--- a/src/actions/rs_actiondrawlinetangent1.h
+++ b/src/actions/rs_actiondrawlinetangent1.h
@@ -53,8 +53,8 @@ public:
 
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
 	
diff --git a/src/actions/rs_actiondrawlinetangent2.cpp b/src/actions/rs_actiondrawlinetangent2.cpp
index 65a9300..1cdb5ed 100644
--- a/src/actions/rs_actiondrawlinetangent2.cpp
+++ b/src/actions/rs_actiondrawlinetangent2.cpp
@@ -26,8 +26,10 @@
 
 #include "rs_actiondrawlinetangent2.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_creation.h"
-#include "rs_snapper.h"
 
 
 
@@ -84,7 +86,7 @@ void RS_ActionDrawLineTangent2::trigger() {
 
 
 
-void RS_ActionDrawLineTangent2::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineTangent2::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLineTangent2::mouseMoveEvent begin");
 
     RS_Vector mouse(graphicView->toGraphX(e->x()),
@@ -134,9 +136,9 @@ void RS_ActionDrawLineTangent2::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawLineTangent2::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionDrawLineTangent2::mouseReleaseEvent(QMouseEvent* e) {
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     } else {
diff --git a/src/actions/rs_actiondrawlinetangent2.h b/src/actions/rs_actiondrawlinetangent2.h
index b73d637..488dfb9 100644
--- a/src/actions/rs_actiondrawlinetangent2.h
+++ b/src/actions/rs_actiondrawlinetangent2.h
@@ -52,8 +52,8 @@ public:
 	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
 
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     //virtual void hideOptions();
     //virtual void showOptions();
diff --git a/src/actions/rs_actiondrawpoint.cpp b/src/actions/rs_actiondrawpoint.cpp
index c1e2287..d358d1c 100644
--- a/src/actions/rs_actiondrawpoint.cpp
+++ b/src/actions/rs_actiondrawpoint.cpp
@@ -25,7 +25,11 @@
 **********************************************************************/
 
 #include "rs_actiondrawpoint.h"
-#include "rs_snapper.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 #include "rs_point.h"
 
 
@@ -64,17 +68,17 @@ void RS_ActionDrawPoint::trigger() {
 
 
 
-void RS_ActionDrawPoint::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawPoint::mouseMoveEvent(QMouseEvent* e) {
     snapPoint(e);
 }
 
 
 
-void RS_ActionDrawPoint::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawPoint::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     }
 }
@@ -95,7 +99,7 @@ void RS_ActionDrawPoint::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawPoint::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -108,8 +112,8 @@ void RS_ActionDrawPoint::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawPoint::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawPoint::getAvailableCommands() {
+    QStringList cmd;
     return cmd;
 }
 
diff --git a/src/actions/rs_actiondrawpoint.h b/src/actions/rs_actiondrawpoint.h
index 0d86d96..c3acc6b 100644
--- a/src/actions/rs_actiondrawpoint.h
+++ b/src/actions/rs_actiondrawpoint.h
@@ -46,12 +46,12 @@ public:
 
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
diff --git a/src/actions/rs_actiondrawpolyline.cpp b/src/actions/rs_actiondrawpolyline.cpp
index f757e95..3fe1d63 100644
--- a/src/actions/rs_actiondrawpolyline.cpp
+++ b/src/actions/rs_actiondrawpolyline.cpp
@@ -25,9 +25,12 @@
 **********************************************************************/
 
 #include "rs_actiondrawpolyline.h"
-#include "rs_actioneditundo.h"
-#include "rs_snapper.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commands.h"
+#include "rs_commandevent.h"
 
 
 RS_ActionDrawPolyline::RS_ActionDrawPolyline(RS_EntityContainer& container,
@@ -36,8 +39,6 @@ RS_ActionDrawPolyline::RS_ActionDrawPolyline(RS_EntityContainer& container,
                            container, graphicView) {
     Reversed=1;
     reset();
-    history.setAutoDelete(true);
-    bHistory.setAutoDelete(true);
 }
 
 
@@ -107,7 +108,7 @@ void RS_ActionDrawPolyline::trigger() {
 
 
 
-void RS_ActionDrawPolyline::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawPolyline::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawLinePolyline::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -132,11 +133,11 @@ void RS_ActionDrawPolyline::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawPolyline::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawPolyline::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
 		if (getStatus()==SetNextPoint) {
 			trigger();
 		}
@@ -245,9 +246,9 @@ void RS_ActionDrawPolyline::coordinateEvent(RS_CoordinateEvent* e) {
         //printf ("SetStartpoint\n");
 	point = mouse;
         history.clear();
-        history.append(new RS_Vector(mouse));
+        history.append(mouse);
         bHistory.clear();
-        bHistory.append(new double(0.0));
+        bHistory.append(0.0);
         start = point;
         setStatus(SetNextPoint);
         graphicView->moveRelativeZero(mouse);
@@ -257,8 +258,8 @@ void RS_ActionDrawPolyline::coordinateEvent(RS_CoordinateEvent* e) {
     case SetNextPoint:
     	graphicView->moveRelativeZero(mouse);
         point = mouse;
-        history.append(new RS_Vector(mouse));
-        bHistory.append(new double(bulge));
+        history.append(mouse);
+        bHistory.append(bulge);
 		if (polyline==NULL) {
 			//printf("polyline==NULL\n");
 			polyline = new RS_Polyline(container, data);
@@ -293,7 +294,7 @@ void RS_ActionDrawPolyline::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawPolyline::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     switch (getStatus()) {
     case SetStartpoint:
@@ -325,17 +326,17 @@ void RS_ActionDrawPolyline::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawPolyline::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawPolyline::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetStartpoint:
         break;
     case SetNextPoint:
-        if (history.count()>=2) {
+        if (history.size()>=2) {
             cmd += command("undo");
         }
-        if (history.count()>=3) {
+        if (history.size()>=3) {
             cmd += command("close");
         }
         break;
@@ -355,17 +356,17 @@ void RS_ActionDrawPolyline::updateMouseButtonHints() {
                                             tr("Cancel"));
         break;
     case SetNextPoint: {
-            RS_String msg = "";
+            QString msg = "";
 
-            if (history.count()>=3) {
+            if (history.size()>=3) {
                 msg += RS_COMMANDS->command("close");
                 msg += "/";
             }
-            if (history.count()>=2) {
+            if (history.size()>=2) {
                 msg += RS_COMMANDS->command("undo");
             }
 
-            if (history.count()>=2) {
+            if (history.size()>=2) {
                 RS_DIALOGFACTORY->updateMouseWidget(
                     tr("Specify next point or [%1]").arg(msg),
                     tr("Back"));
@@ -412,7 +413,7 @@ void RS_ActionDrawPolyline::updateToolBar() {
 }
 
 void RS_ActionDrawPolyline::close() {
-    if (history.count()>2 && start.valid) {
+    if (history.size()>2 && start.valid) {
         //data.endpoint = start;
         //trigger();
 		if (polyline!=NULL) {
@@ -421,6 +422,7 @@ void RS_ActionDrawPolyline::close() {
 			RS_CoordinateEvent e(polyline->getStartpoint());
 			coordinateEvent(&e);
 		}
+        polyline->setClosed(true);
 		trigger();
         setStatus(SetStartpoint);
         graphicView->moveRelativeZero(start);
@@ -432,8 +434,8 @@ void RS_ActionDrawPolyline::close() {
 }
 
 void RS_ActionDrawPolyline::undo() {
-    if (history.count()>1) {
-        if (history.count()>2){
+    if (history.size()>1) {
+        if (history.size()>2){
 	history.removeLast();
         bHistory.removeLast();
         deletePreview();
@@ -441,7 +443,7 @@ void RS_ActionDrawPolyline::undo() {
         //graphicView->setCurrentAction(
         //    new RS_ActionEditUndo(true, *container, *graphicView));
 		//if (history.last()!=NULL) {
-        	point = *history.last();
+                point = history.last();
 		//}
 		if (polyline!=NULL) {
 			polyline->removeLastVertex();
diff --git a/src/actions/rs_actiondrawpolyline.h b/src/actions/rs_actiondrawpolyline.h
index 9f396d2..ecefe82 100644
--- a/src/actions/rs_actiondrawpolyline.h
+++ b/src/actions/rs_actiondrawpolyline.h
@@ -30,8 +30,6 @@
 #include "rs_previewactioninterface.h"
 #include "rs_polyline.h"
 
-#include <qaction.h>
-
 
 /**
  * This action class can handle user events to draw 
@@ -77,12 +75,12 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
 	virtual void showOptions();
 	virtual void hideOptions();
@@ -164,12 +162,12 @@ protected:
 	/**
 	 * Point history (for undo)
 	 */
-	RS_PtrList<RS_Vector> history;
+        QList<RS_Vector> history;
 	
 	/**
 	 * Bulge history (for undo)
 	 */
-	RS_PtrList<double> bHistory;
+        QList<double> bHistory;
 };
 
 #endif
diff --git a/src/actions/rs_actiondrawspline.cpp b/src/actions/rs_actiondrawspline.cpp
index 65f1831..5a98fb8 100644
--- a/src/actions/rs_actiondrawspline.cpp
+++ b/src/actions/rs_actiondrawspline.cpp
@@ -25,9 +25,12 @@
 **********************************************************************/
 
 #include "rs_actiondrawspline.h"
-#include "rs_actioneditundo.h"
-#include "rs_snapper.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commands.h"
+#include "rs_commandevent.h"
 
 
 RS_ActionDrawSpline::RS_ActionDrawSpline(RS_EntityContainer& container,
@@ -36,9 +39,7 @@ RS_ActionDrawSpline::RS_ActionDrawSpline(RS_EntityContainer& container,
                            container, graphicView) {
 
     reset();
-    history.setAutoDelete(true);
     data = RS_SplineData(3, false);
-    //bHistory.setAutoDelete(true);
 }
 
 
@@ -107,7 +108,7 @@ void RS_ActionDrawSpline::trigger() {
 
 
 
-void RS_ActionDrawSpline::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawSpline::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawSpline::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -119,11 +120,10 @@ void RS_ActionDrawSpline::mouseMoveEvent(RS_MouseEvent* e) {
 		tmpSpline->update();
 		preview->addEntity(tmpSpline);
 		
-		RS_ValueList<RS_Vector> cpts = tmpSpline->getControlPoints();
-		RS_ValueList<RS_Vector>::iterator it;
-		for (it=cpts.begin(); it!=cpts.end(); ++it) {
-			preview->addEntity(new RS_Point(preview, RS_PointData(*it)));
-		}
+                QList<RS_Vector> cpts = tmpSpline->getControlPoints();
+                for (int i = 0; i < cpts.size(); ++i) {
+                        preview->addEntity(new RS_Point(preview, RS_PointData(cpts.at(i))));
+                }
         drawPreview();
     }
 
@@ -132,11 +132,11 @@ void RS_ActionDrawSpline::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawSpline::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawSpline::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
 		if (getStatus()==SetNextPoint) {
 			trigger();
 		}
@@ -159,7 +159,7 @@ void RS_ActionDrawSpline::coordinateEvent(RS_CoordinateEvent* e) {
 		//data.startpoint = mouse;
         //point = mouse;
         history.clear();
-        history.append(new RS_Vector(mouse));
+        history.append(mouse);
 		if (spline==NULL) {
 			spline = new RS_Spline(container, data);
 			spline->addControlPoint(mouse);
@@ -175,7 +175,7 @@ void RS_ActionDrawSpline::coordinateEvent(RS_CoordinateEvent* e) {
     case SetNextPoint:
     	graphicView->moveRelativeZero(mouse);
         //point = mouse;
-        history.append(new RS_Vector(mouse));
+        history.append(mouse);
         //bHistory.append(new double(0.0));
 		if (spline!=NULL) {
 			//graphicView->deleteEntity(spline);
@@ -204,7 +204,7 @@ void RS_ActionDrawSpline::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawSpline::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     switch (getStatus()) {
     case SetStartpoint:
@@ -236,17 +236,17 @@ void RS_ActionDrawSpline::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawSpline::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawSpline::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetStartpoint:
         break;
     case SetNextPoint:
-        if (history.count()>=2) {
+        if (history.size()>=2) {
             cmd += command("undo");
         }
-        if (history.count()>=3) {
+        if (history.size()>=3) {
             cmd += command("close");
         }
         break;
@@ -266,17 +266,17 @@ void RS_ActionDrawSpline::updateMouseButtonHints() {
                                             tr("Cancel"));
         break;
     case SetNextPoint: {
-            RS_String msg = "";
+            QString msg = "";
 
-            if (history.count()>=3) {
+            if (history.size()>=3) {
                 msg += RS_COMMANDS->command("close");
                 msg += "/";
             }
-            if (history.count()>=2) {
+            if (history.size()>=2) {
                 msg += RS_COMMANDS->command("undo");
             }
 
-            if (history.count()>=2) {
+            if (history.size()>=2) {
                 RS_DIALOGFACTORY->updateMouseWidget(
                     tr("Specify next control point or [%1]").arg(msg),
                     tr("Back"));
@@ -345,21 +345,21 @@ void RS_ActionDrawSpline::close() {
 */
 
 void RS_ActionDrawSpline::undo() {
-    if (history.count()>1) {
+    if (history.size()>1) {
         history.removeLast();
         //bHistory.removeLast();
         deletePreview();
         //graphicView->setCurrentAction(
         //    new RS_ActionEditUndo(true, *container, *graphicView));
-		if (history.last()!=NULL) {
+                if (!history.isEmpty()) {
         	//point = *history.last();
 		}
 		if (spline!=NULL) {
 			spline->removeLastControlPoint();
-			RS_Vector* v = history.last();
-			if (v!=NULL) {
-	        	graphicView->moveRelativeZero(*v);
-			}
+                        if (!history.isEmpty()) {
+                            RS_Vector v = history.last();
+                            graphicView->moveRelativeZero(v);
+                        }
 			graphicView->redraw(RS2::RedrawDrawing); 
 
 		}
diff --git a/src/actions/rs_actiondrawspline.h b/src/actions/rs_actiondrawspline.h
index 0f48894..414f8bb 100644
--- a/src/actions/rs_actiondrawspline.h
+++ b/src/actions/rs_actiondrawspline.h
@@ -30,8 +30,6 @@
 #include "rs_previewactioninterface.h"
 #include "rs_spline.h"
 
-#include <qaction.h>
-
 
 /**
  * This action class can handle user events to draw splines.
@@ -65,12 +63,12 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
 	virtual void showOptions();
 	virtual void hideOptions();
@@ -110,12 +108,12 @@ protected:
 	/**
 	 * Point history (for undo)
 	 */
-	RS_PtrList<RS_Vector> history;
+        QList<RS_Vector> history;
 	
 	/**
 	 * Bulge history (for undo)
 	 */
-	//RS_PtrList<double> bHistory;
+        //QList<double> bHistory;
 };
 
 #endif
diff --git a/src/actions/rs_actiondrawtext.cpp b/src/actions/rs_actiondrawtext.cpp
index 4e06ad1..892f09e 100644
--- a/src/actions/rs_actiondrawtext.cpp
+++ b/src/actions/rs_actiondrawtext.cpp
@@ -26,8 +26,10 @@
 
 #include "rs_actiondrawtext.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
 #include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 
@@ -140,7 +142,7 @@ void RS_ActionDrawText::preparePreview() {
 }
 
 
-void RS_ActionDrawText::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionDrawText::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionDrawText::mouseMoveEvent begin");
 
     if (getStatus()==SetPos) {
@@ -164,11 +166,11 @@ void RS_ActionDrawText::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionDrawText::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionDrawText::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         //init(getStatus()-1);
         finish();
@@ -201,7 +203,7 @@ void RS_ActionDrawText::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionDrawText::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -237,8 +239,8 @@ void RS_ActionDrawText::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionDrawText::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionDrawText::getAvailableCommands() {
+    QStringList cmd;
     if (getStatus()==SetPos) {
         cmd += command("text");
     }
@@ -308,14 +310,14 @@ void RS_ActionDrawText::updateToolBar() {
 
 
 
-void RS_ActionDrawText::setText(const RS_String& t) {
+void RS_ActionDrawText::setText(const QString& t) {
     data.text = t;
     textChanged = true;
 }
 
 
 
-RS_String RS_ActionDrawText::getText() {
+QString RS_ActionDrawText::getText() {
     return data.text;
 }
 
diff --git a/src/actions/rs_actiondrawtext.h b/src/actions/rs_actiondrawtext.h
index 8cb9f96..da3abb2 100644
--- a/src/actions/rs_actiondrawtext.h
+++ b/src/actions/rs_actiondrawtext.h
@@ -66,12 +66,12 @@ public:
     virtual void trigger();
 	void preparePreview();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
     virtual void hideOptions();
     virtual void showOptions();
@@ -80,8 +80,8 @@ public:
     virtual void updateMouseCursor();
     virtual void updateToolBar();
 
-	void setText(const RS_String& t);
-	RS_String getText();
+        void setText(const QString& t);
+        QString getText();
 
 	void setAngle(double a);
 	double getAngle();
diff --git a/src/actions/rs_actioneditcopy.cpp b/src/actions/rs_actioneditcopy.cpp
index 0c2866d..4c34562 100644
--- a/src/actions/rs_actioneditcopy.cpp
+++ b/src/actions/rs_actioneditcopy.cpp
@@ -25,6 +25,10 @@
 **********************************************************************/
 
 #include "rs_actioneditcopy.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_modification.h"
 
 /**
@@ -96,17 +100,17 @@ void RS_ActionEditCopy::trigger() {
 }
 
 
-void RS_ActionEditCopy::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionEditCopy::mouseMoveEvent(QMouseEvent* e) {
     snapPoint(e);
 }
 
 
 
-void RS_ActionEditCopy::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionEditCopy::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     }
 }
diff --git a/src/actions/rs_actioneditcopy.h b/src/actions/rs_actioneditcopy.h
index bef93e9..9b9cb59 100644
--- a/src/actions/rs_actioneditcopy.h
+++ b/src/actions/rs_actioneditcopy.h
@@ -57,8 +57,8 @@ public:
 
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
 	
diff --git a/src/actions/rs_actioneditpaste.cpp b/src/actions/rs_actioneditpaste.cpp
index 580ad1b..7f8b4b5 100644
--- a/src/actions/rs_actioneditpaste.cpp
+++ b/src/actions/rs_actioneditpaste.cpp
@@ -26,6 +26,9 @@
 
 #include "rs_actioneditpaste.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_clipboard.h"
 #include "rs_modification.h"
 
@@ -79,7 +82,7 @@ void RS_ActionEditPaste::trigger() {
 }
 
 
-void RS_ActionEditPaste::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionEditPaste::mouseMoveEvent(QMouseEvent* e) {
     switch (getStatus()) {
     case SetTargetPoint:
         targetPoint = snapPoint(e);
@@ -104,11 +107,11 @@ void RS_ActionEditPaste::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionEditPaste::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionEditPaste::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     }
 }
diff --git a/src/actions/rs_actioneditpaste.h b/src/actions/rs_actioneditpaste.h
index cce4e55..3119f83 100644
--- a/src/actions/rs_actioneditpaste.h
+++ b/src/actions/rs_actioneditpaste.h
@@ -56,8 +56,8 @@ public:
 
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
     virtual void coordinateEvent(RS_CoordinateEvent* e);
 
diff --git a/src/actions/rs_actioneditundo.cpp b/src/actions/rs_actioneditundo.cpp
index 94f5d5b..19ae203 100644
--- a/src/actions/rs_actioneditundo.cpp
+++ b/src/actions/rs_actioneditundo.cpp
@@ -25,7 +25,10 @@
 **********************************************************************/
 
 #include "rs_actioneditundo.h"
-#include "rs_snapper.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 /**
  * Constructor.
diff --git a/src/actions/rs_actioneditundo.h b/src/actions/rs_actioneditundo.h
index 042a408..94cbc1b 100644
--- a/src/actions/rs_actioneditundo.h
+++ b/src/actions/rs_actioneditundo.h
@@ -28,7 +28,6 @@
 #define RS_ACTIONEDITUNDO_H
 
 #include "rs_actioninterface.h"
-#include "rs_undo.h"
 
 /**
  * This action class can handle user events for undo / redo.
diff --git a/src/actions/rs_actionfilenew.cpp b/src/actions/rs_actionfilenew.cpp
index 0a1178f..5901556 100644
--- a/src/actions/rs_actionfilenew.cpp
+++ b/src/actions/rs_actionfilenew.cpp
@@ -26,8 +26,7 @@
 
 #include "rs_actionfilenew.h"
 
-#include "rs_graphic.h"
-
+#include <QAction>
 
 
 RS_ActionFileNew::RS_ActionFileNew(RS_EntityContainer& container,
@@ -36,7 +35,7 @@ RS_ActionFileNew::RS_ActionFileNew(RS_EntityContainer& container,
 
 
 QAction* RS_ActionFileNew::createGUIAction(RS2::ActionType /*type*/, QObject* parent) {
-	// tr("New Drawing")
+        // tr("New Drawing")
 	QAction* action = new QAction(tr("&New..."), parent);
 #if QT_VERSION >= 0x040600
         action->setIcon(QIcon::fromTheme("document-new", QIcon(":/actions/filenew.png")));
@@ -55,7 +54,7 @@ void RS_ActionFileNew::trigger() {
     // Not supported currently
     RS_DEBUG->print("RS_ActionFileNew::trigger");
 
-    RS_String fileName; //= RS_DIALOGFACTORY->requestFileNewDialog();
+    QString fileName; //= RS_DIALOGFACTORY->requestFileNewDialog();
     if (graphic!=NULL && !fileName.isEmpty()) {
         graphic->open(fileName, );
 }
diff --git a/src/actions/rs_actionfileopen.cpp b/src/actions/rs_actionfileopen.cpp
index ce3b4fb..d1596fa 100644
--- a/src/actions/rs_actionfileopen.cpp
+++ b/src/actions/rs_actionfileopen.cpp
@@ -26,7 +26,7 @@
 
 #include "rs_actionfileopen.h"
 
-#include "rs_graphic.h"
+#include <QAction>
 
 
 
@@ -54,7 +54,7 @@ void RS_ActionFileOpen::trigger() {
     // Not supported currently
     RS_DEBUG->print("RS_ActionFileOpen::trigger");
 
-    RS_String fileName; //= RS_DIALOGFACTORY->requestFileOpenDialog();
+    QString fileName; //= RS_DIALOGFACTORY->requestFileOpenDialog();
     if (graphic!=NULL && !fileName.isEmpty()) {
         graphic->open(fileName, );
 }
diff --git a/src/actions/rs_actionfilesave.cpp b/src/actions/rs_actionfilesave.cpp
index a923a03..b2ae795 100644
--- a/src/actions/rs_actionfilesave.cpp
+++ b/src/actions/rs_actionfilesave.cpp
@@ -26,10 +26,10 @@
 
 #include "rs_actionfilesave.h"
 
+#include <QAction>
 #include "rs_graphic.h"
 
 
-
 RS_ActionFileSave::RS_ActionFileSave(RS_EntityContainer& container,
                                      RS_GraphicView& graphicView)
         :RS_ActionInterface("File Save", container, graphicView) {}
diff --git a/src/actions/rs_actionfilesaveas.cpp b/src/actions/rs_actionfilesaveas.cpp
index c7ffcd9..4e330f6 100644
--- a/src/actions/rs_actionfilesaveas.cpp
+++ b/src/actions/rs_actionfilesaveas.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionfilesaveas.h"
 
+#include <QAction>
 #include "rs_graphic.h"
 
 RS_ActionFileSaveAs::RS_ActionFileSaveAs(RS_EntityContainer& container,
@@ -52,7 +53,7 @@ QAction* RS_ActionFileSaveAs::createGUIAction(RS2::ActionType /*type*/, QObject*
 void RS_ActionFileSaveAs::trigger() {
     RS_DEBUG->print("RS_ActionFileSaveAs::trigger");
 
-    RS_String fileName; // = RS_DIALOGFACTORY->requestFileSaveAsDialog();
+    QString fileName; // = RS_DIALOGFACTORY->requestFileSaveAsDialog();
     if (graphic!=NULL && !fileName.isEmpty()) {
         graphic->saveAs(fileName, RS2::FormatUnknown);
     }
diff --git a/src/actions/rs_actioninfoangle.cpp b/src/actions/rs_actioninfoangle.cpp
index 4e7601d..ec011e0 100644
--- a/src/actions/rs_actioninfoangle.cpp
+++ b/src/actions/rs_actioninfoangle.cpp
@@ -26,9 +26,10 @@
 
 #include "rs_actioninfoangle.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_information.h"
-#include "rs_snapper.h"
-
 
 
 RS_ActionInfoAngle::RS_ActionInfoAngle(RS_EntityContainer& container,
@@ -85,7 +86,7 @@ void RS_ActionInfoAngle::trigger() {
 
 
 
-void RS_ActionInfoAngle::mouseMoveEvent(RS_MouseEvent* /*e*/) {
+void RS_ActionInfoAngle::mouseMoveEvent(QMouseEvent* /*e*/) {
     RS_DEBUG->print("RS_ActionInfoAngle::mouseMoveEvent begin");
 
     switch (getStatus()) {
@@ -104,8 +105,8 @@ void RS_ActionInfoAngle::mouseMoveEvent(RS_MouseEvent* /*e*/) {
 
 
 
-void RS_ActionInfoAngle::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionInfoAngle::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
 
         RS_Vector mouse(graphicView->toGraphX(e->x()),
                         graphicView->toGraphY(e->y()));
@@ -131,7 +132,7 @@ void RS_ActionInfoAngle::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actioninfoangle.h b/src/actions/rs_actioninfoangle.h
index 6c75a5f..cfb570e 100644
--- a/src/actions/rs_actioninfoangle.h
+++ b/src/actions/rs_actioninfoangle.h
@@ -55,8 +55,8 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
     virtual void updateToolBar();
diff --git a/src/actions/rs_actioninfoarea.cpp b/src/actions/rs_actioninfoarea.cpp
index 6195907..33716fb 100644
--- a/src/actions/rs_actioninfoarea.cpp
+++ b/src/actions/rs_actioninfoarea.cpp
@@ -26,7 +26,9 @@
 
 #include "rs_actioninfoarea.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 
@@ -42,6 +44,7 @@ QAction* RS_ActionInfoArea::createGUIAction(RS2::ActionType /*type*/, QObject* /
                                   QKeySequence(), NULL); */
     QAction* action = new QAction(tr("Polygonal Area"), NULL);
     //action->zetStatusTip(tr("Measures the area of a polygon"));
+    action->setIcon(QIcon(":/extui/infoarea.png"));
     return action;
 }
 
@@ -85,7 +88,7 @@ void RS_ActionInfoArea::trigger() {
 
 
 
-void RS_ActionInfoArea::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionInfoArea::mouseMoveEvent(QMouseEvent* e) {
     //RS_DEBUG->print("RS_ActionInfoArea::mouseMoveEvent begin");
 
     if (getStatus()==SetFirstPoint ||
@@ -136,11 +139,11 @@ void RS_ActionInfoArea::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionInfoArea::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionInfoArea::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         //deletePreview();
 
         // close the polygon (preview)
diff --git a/src/actions/rs_actioninfoarea.h b/src/actions/rs_actioninfoarea.h
index 8a73afe..c9027ea 100644
--- a/src/actions/rs_actioninfoarea.h
+++ b/src/actions/rs_actioninfoarea.h
@@ -58,8 +58,8 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
 	
diff --git a/src/actions/rs_actioninfodist.cpp b/src/actions/rs_actioninfodist.cpp
index cb80d9b..bbb78b3 100644
--- a/src/actions/rs_actioninfodist.cpp
+++ b/src/actions/rs_actioninfodist.cpp
@@ -26,8 +26,9 @@
 
 #include "rs_actioninfodist.h"
 
-#include "rs_snapper.h"
-
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 RS_ActionInfoDist::RS_ActionInfoDist(RS_EntityContainer& container,
@@ -66,7 +67,7 @@ void RS_ActionInfoDist::trigger() {
 
 
 
-void RS_ActionInfoDist::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionInfoDist::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionInfoDist::mouseMoveEvent begin");
 
     if (getStatus()==SetPoint1 ||
@@ -101,11 +102,11 @@ void RS_ActionInfoDist::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionInfoDist::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionInfoDist::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actioninfodist.h b/src/actions/rs_actioninfodist.h
index 32184f6..25d99d7 100644
--- a/src/actions/rs_actioninfodist.h
+++ b/src/actions/rs_actioninfodist.h
@@ -57,8 +57,8 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
 	
diff --git a/src/actions/rs_actioninfodist2.cpp b/src/actions/rs_actioninfodist2.cpp
index 77b6838..1168a34 100644
--- a/src/actions/rs_actioninfodist2.cpp
+++ b/src/actions/rs_actioninfodist2.cpp
@@ -26,8 +26,9 @@
 
 #include "rs_actioninfodist2.h"
 
-#include "rs_snapper.h"
-
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 RS_ActionInfoDist2::RS_ActionInfoDist2(RS_EntityContainer& container,
@@ -64,7 +65,7 @@ void RS_ActionInfoDist2::trigger() {
 
 
 
-void RS_ActionInfoDist2::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionInfoDist2::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionInfoDist2::mouseMoveEvent begin");
 
     switch (getStatus()) {
@@ -87,8 +88,8 @@ void RS_ActionInfoDist2::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionInfoDist2::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionInfoDist2::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
 
         switch (getStatus()) {
         case SetEntity:
@@ -107,7 +108,7 @@ void RS_ActionInfoDist2::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actioninfodist2.h b/src/actions/rs_actioninfodist2.h
index fbf733a..07aeaa2 100644
--- a/src/actions/rs_actioninfodist2.h
+++ b/src/actions/rs_actioninfodist2.h
@@ -57,8 +57,8 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
 
     virtual void updateMouseButtonHints();
diff --git a/src/actions/rs_actioninfoinside.cpp b/src/actions/rs_actioninfoinside.cpp
index 606cabe..e81e2f8 100644
--- a/src/actions/rs_actioninfoinside.cpp
+++ b/src/actions/rs_actioninfoinside.cpp
@@ -25,8 +25,11 @@
 **********************************************************************/
 
 #include "rs_actioninfoinside.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_information.h"
-#include "rs_snapper.h"
 
 
 
@@ -73,7 +76,7 @@ void RS_ActionInfoInside::trigger() {
 
 
 
-void RS_ActionInfoInside::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionInfoInside::mouseMoveEvent(QMouseEvent* /*e*/) {
     //RS_Vector mouse = snapPoint(e);
     //bool onContour = false;
     /*if (RS_Information::isPointInsideContour(mouse, contour, &onContour)) {
@@ -83,8 +86,8 @@ void RS_ActionInfoInside::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionInfoInside::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionInfoInside::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     } else {
         pt = snapPoint(e);
diff --git a/src/actions/rs_actioninfoinside.h b/src/actions/rs_actioninfoinside.h
index a421872..c4dac6b 100644
--- a/src/actions/rs_actioninfoinside.h
+++ b/src/actions/rs_actioninfoinside.h
@@ -46,8 +46,8 @@ public:
 	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
 
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
     virtual void updateToolBar();
diff --git a/src/actions/rs_actioninfototallength.cpp b/src/actions/rs_actioninfototallength.cpp
index f7a6afe..30840e9 100644
--- a/src/actions/rs_actioninfototallength.cpp
+++ b/src/actions/rs_actioninfototallength.cpp
@@ -26,11 +26,8 @@
 
 #include "rs_actioninfototallength.h"
 
-#include "rs_actionselectsingle.h"
-#include "rs_modification.h"
-#include "rs_snapper.h"
-#include "rs_point.h"
-
+#include <QAction>
+#include "rs_dialogfactory.h"
 
 
 RS_ActionInfoTotalLength::RS_ActionInfoTotalLength(RS_EntityContainer& container,
diff --git a/src/actions/rs_actionlayersadd.cpp b/src/actions/rs_actionlayersadd.cpp
index 006a823..8ea358c 100644
--- a/src/actions/rs_actionlayersadd.cpp
+++ b/src/actions/rs_actionlayersadd.cpp
@@ -26,6 +26,8 @@
 
 #include "rs_actionlayersadd.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
 #include "rs_graphic.h"
 
 
@@ -38,7 +40,7 @@ RS_ActionLayersAdd::RS_ActionLayersAdd(RS_EntityContainer& container,
 QAction* RS_ActionLayersAdd::createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/) {
     QAction* action = new QAction(tr("Add Layer"), NULL);
     //action->zetStatusTip(tr("Add Layer"));
-	action->setIcon(QIcon(":/ui/layeradd.png"));
+        action->setIcon(QIcon(":/ui/layeradd.png"));
     return action;
 }
 
diff --git a/src/actions/rs_actionlayersedit.cpp b/src/actions/rs_actionlayersedit.cpp
index ece8c06..d89db89 100644
--- a/src/actions/rs_actionlayersedit.cpp
+++ b/src/actions/rs_actionlayersedit.cpp
@@ -26,7 +26,11 @@
 
 #include "rs_actionlayersedit.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_graphic.h"
+#include "rs_layer.h"
 
 
 
diff --git a/src/actions/rs_actionlayersfreezeall.cpp b/src/actions/rs_actionlayersfreezeall.cpp
index e472302..5abdde6 100644
--- a/src/actions/rs_actionlayersfreezeall.cpp
+++ b/src/actions/rs_actionlayersfreezeall.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionlayersfreezeall.h"
 
+#include <QAction>
 #include "rs_graphic.h"
 
 
diff --git a/src/actions/rs_actionlayersremove.cpp b/src/actions/rs_actionlayersremove.cpp
index a9e8641..347e0a1 100644
--- a/src/actions/rs_actionlayersremove.cpp
+++ b/src/actions/rs_actionlayersremove.cpp
@@ -26,6 +26,8 @@
 
 #include "rs_actionlayersremove.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
 #include "rs_graphic.h"
 
 
diff --git a/src/actions/rs_actionlayerstogglelock.cpp b/src/actions/rs_actionlayerstogglelock.cpp
index cf3bc28..10fbe87 100644
--- a/src/actions/rs_actionlayerstogglelock.cpp
+++ b/src/actions/rs_actionlayerstogglelock.cpp
@@ -26,8 +26,11 @@
 
 #include "rs_actionlayerstogglelock.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_graphic.h"
-
+#include "rs_layer.h"
 
 
 RS_ActionLayersToggleLock::RS_ActionLayersToggleLock(
diff --git a/src/actions/rs_actionlayerstoggleview.cpp b/src/actions/rs_actionlayerstoggleview.cpp
index 8bac617..d0cac1a 100644
--- a/src/actions/rs_actionlayerstoggleview.cpp
+++ b/src/actions/rs_actionlayerstoggleview.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionlayerstoggleview.h"
 
+#include <QAction>
 #include "rs_graphic.h"
 
 
diff --git a/src/actions/rs_actionlibraryinsert.cpp b/src/actions/rs_actionlibraryinsert.cpp
index adf3363..5d3997a 100644
--- a/src/actions/rs_actionlibraryinsert.cpp
+++ b/src/actions/rs_actionlibraryinsert.cpp
@@ -26,10 +26,10 @@
 
 #include "rs_actionlibraryinsert.h"
 
-#include "rs_creation.h"
-#include "rs_commands.h"
-#include "rs_modification.h"
-
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 /**
@@ -71,7 +71,7 @@ void RS_ActionLibraryInsert::init(int status) {
 
 
 
-void RS_ActionLibraryInsert::setFile(const RS_String& file) {
+void RS_ActionLibraryInsert::setFile(const QString& file) {
     data.file = file;
 
     if (!prev.open(file, RS2::FormatUnknown)) {
@@ -108,7 +108,7 @@ void RS_ActionLibraryInsert::trigger() {
 }
 
 
-void RS_ActionLibraryInsert::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionLibraryInsert::mouseMoveEvent(QMouseEvent* e) {
     switch (getStatus()) {
     case SetTargetPoint:
         data.insertionPoint = snapPoint(e);
@@ -141,11 +141,11 @@ void RS_ActionLibraryInsert::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionLibraryInsert::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionLibraryInsert::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     }
 }
@@ -164,7 +164,7 @@ void RS_ActionLibraryInsert::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionLibraryInsert::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -218,8 +218,8 @@ void RS_ActionLibraryInsert::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionLibraryInsert::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionLibraryInsert::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetTargetPoint:
diff --git a/src/actions/rs_actionlibraryinsert.h b/src/actions/rs_actionlibraryinsert.h
index 23edf67..48f6782 100644
--- a/src/actions/rs_actionlibraryinsert.h
+++ b/src/actions/rs_actionlibraryinsert.h
@@ -29,8 +29,8 @@
 
 #include "rs_previewactioninterface.h"
 
+#include "rs_graphic.h"
 #include "rs_creation.h"
-#include "rs_insert.h"
 
 /**
  * This action class can handle user events for inserting library items 
@@ -71,12 +71,12 @@ public:
 
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
     virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
 	virtual void showOptions();
 	virtual void hideOptions();
@@ -85,7 +85,7 @@ public:
     virtual void updateMouseCursor();
     virtual void updateToolBar();
 
-	void setFile(const RS_String& file);
+        void setFile(const QString& file);
 
 	double getAngle() {
 		return data.angle;
diff --git a/src/actions/rs_actionlockrelativezero.cpp b/src/actions/rs_actionlockrelativezero.cpp
index 0e1f28a..00c1e00 100644
--- a/src/actions/rs_actionlockrelativezero.cpp
+++ b/src/actions/rs_actionlockrelativezero.cpp
@@ -26,8 +26,8 @@
 
 #include "rs_actionlockrelativezero.h"
 
-#include "rs_snapper.h"
-#include "rs_point.h"
+#include <QAction>
+#include "rs_graphicview.h"
 
 
 
diff --git a/src/actions/rs_actionmodifyattributes.cpp b/src/actions/rs_actionmodifyattributes.cpp
index b50843b..6676d75 100644
--- a/src/actions/rs_actionmodifyattributes.cpp
+++ b/src/actions/rs_actionmodifyattributes.cpp
@@ -26,9 +26,11 @@
 
 #include "rs_actionmodifyattributes.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_graphic.h"
 #include "rs_modification.h"
-#include "rs_snapper.h"
-
 
 
 RS_ActionModifyAttributes::RS_ActionModifyAttributes(
diff --git a/src/actions/rs_actionmodifybevel.cpp b/src/actions/rs_actionmodifybevel.cpp
index ca4db11..c34e4f7 100644
--- a/src/actions/rs_actionmodifybevel.cpp
+++ b/src/actions/rs_actionmodifybevel.cpp
@@ -26,7 +26,10 @@
 
 #include "rs_actionmodifybevel.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 #include "rs_information.h"
 
 
@@ -82,7 +85,7 @@ void RS_ActionModifyBevel::trigger() {
 
 
 
-void RS_ActionModifyBevel::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyBevel::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyBevel::mouseMoveEvent begin");
 
     RS_Vector mouse = graphicView->toGraph(e->x(), e->y());
@@ -110,8 +113,8 @@ void RS_ActionModifyBevel::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionModifyBevel::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionModifyBevel::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case SetEntity1:
             if (entity1!=NULL && entity1->isAtomic()) {
@@ -129,7 +132,7 @@ void RS_ActionModifyBevel::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -138,7 +141,7 @@ void RS_ActionModifyBevel::mouseReleaseEvent(RS_MouseEvent* e) {
 
 
 void RS_ActionModifyBevel::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -213,8 +216,8 @@ void RS_ActionModifyBevel::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionModifyBevel::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionModifyBevel::getAvailableCommands() {
+    QStringList cmd;
     switch (getStatus()) {
     case SetEntity1:
     case SetEntity2:
diff --git a/src/actions/rs_actionmodifybevel.h b/src/actions/rs_actionmodifybevel.h
index 94d8f51..bea80cb 100644
--- a/src/actions/rs_actionmodifybevel.h
+++ b/src/actions/rs_actionmodifybevel.h
@@ -64,11 +64,11 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actionmodifycut.cpp b/src/actions/rs_actionmodifycut.cpp
index 9badafe..5411f15 100644
--- a/src/actions/rs_actionmodifycut.cpp
+++ b/src/actions/rs_actionmodifycut.cpp
@@ -26,7 +26,10 @@
 
 #include "rs_actionmodifycut.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_modification.h"
 
 
 RS_ActionModifyCut::RS_ActionModifyCut(RS_EntityContainer& container,
@@ -76,7 +79,7 @@ void RS_ActionModifyCut::trigger() {
 
 
 
-void RS_ActionModifyCut::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyCut::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyCut::mouseMoveEvent begin");
 
     switch (getStatus()) {
@@ -95,8 +98,8 @@ void RS_ActionModifyCut::mouseMoveEvent(RS_MouseEvent* e) {
 }
 
 
-void RS_ActionModifyCut::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionModifyCut::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case ChooseCutEntity:
             cutEntity = catchEntity(e);
@@ -133,7 +136,7 @@ void RS_ActionModifyCut::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         if (cutEntity!=NULL) {
             cutEntity->setHighlighted(false);
             graphicView->drawEntity(cutEntity);
diff --git a/src/actions/rs_actionmodifycut.h b/src/actions/rs_actionmodifycut.h
index c495593..fd684ff 100644
--- a/src/actions/rs_actionmodifycut.h
+++ b/src/actions/rs_actionmodifycut.h
@@ -28,7 +28,6 @@
 #define RS_ACTIONMODIFYCUT_H
 
 #include "rs_actioninterface.h"
-#include "rs_modification.h"
 
 
 /**
@@ -56,8 +55,8 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
     virtual void updateToolBar();
diff --git a/src/actions/rs_actionmodifydelete.cpp b/src/actions/rs_actionmodifydelete.cpp
index 384b8c6..24900f2 100644
--- a/src/actions/rs_actionmodifydelete.cpp
+++ b/src/actions/rs_actionmodifydelete.cpp
@@ -26,10 +26,10 @@
 
 #include "rs_actionmodifydelete.h"
 
-#include "rs_actionselectsingle.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_modification.h"
-#include "rs_snapper.h"
-#include "rs_point.h"
 
 
 
diff --git a/src/actions/rs_actionmodifydeletefree.cpp b/src/actions/rs_actionmodifydeletefree.cpp
index 3a3bf38..1aeb030 100644
--- a/src/actions/rs_actionmodifydeletefree.cpp
+++ b/src/actions/rs_actionmodifydeletefree.cpp
@@ -26,7 +26,9 @@
 
 #include "rs_actionmodifydeletefree.h"
 
-#include "rs_point.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_polyline.h"
 #include "rs_modification.h"
 
@@ -107,8 +109,8 @@ void RS_ActionModifyDeleteFree::trigger() {
 
 
 
-void RS_ActionModifyDeleteFree::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionModifyDeleteFree::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     } else {
 
diff --git a/src/actions/rs_actionmodifydeletefree.h b/src/actions/rs_actionmodifydeletefree.h
index 3d24228..4f68f8a 100644
--- a/src/actions/rs_actionmodifydeletefree.h
+++ b/src/actions/rs_actionmodifydeletefree.h
@@ -46,7 +46,7 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
 
 private:
diff --git a/src/actions/rs_actionmodifydeletequick.cpp b/src/actions/rs_actionmodifydeletequick.cpp
index 764dc43..59b01e2 100644
--- a/src/actions/rs_actionmodifydeletequick.cpp
+++ b/src/actions/rs_actionmodifydeletequick.cpp
@@ -26,9 +26,9 @@
 
 #include "rs_actionmodifydeletequick.h"
 
-#include "rs_actionselectsingle.h"
-#include "rs_snapper.h"
-#include "rs_point.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 
@@ -83,8 +83,8 @@ void RS_ActionModifyDeleteQuick::trigger() {
 
 
 
-void RS_ActionModifyDeleteQuick::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionModifyDeleteQuick::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     } else {
         en = catchEntity(e);
diff --git a/src/actions/rs_actionmodifydeletequick.h b/src/actions/rs_actionmodifydeletequick.h
index b266893..05ab008 100644
--- a/src/actions/rs_actionmodifydeletequick.h
+++ b/src/actions/rs_actionmodifydeletequick.h
@@ -46,7 +46,7 @@ public:
 	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* parent);
 
     virtual void trigger();
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
 
diff --git a/src/actions/rs_actionmodifyentity.cpp b/src/actions/rs_actionmodifyentity.cpp
index 87474b5..3354ec0 100644
--- a/src/actions/rs_actionmodifyentity.cpp
+++ b/src/actions/rs_actionmodifyentity.cpp
@@ -26,7 +26,9 @@
 
 #include "rs_actionmodifyentity.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 
@@ -79,8 +81,8 @@ void RS_ActionModifyEntity::trigger() {
 
 
 
-void RS_ActionModifyEntity::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionModifyEntity::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     } else {
         en = catchEntity(e);
diff --git a/src/actions/rs_actionmodifyentity.h b/src/actions/rs_actionmodifyentity.h
index f07dbee..0df2c84 100644
--- a/src/actions/rs_actionmodifyentity.h
+++ b/src/actions/rs_actionmodifyentity.h
@@ -45,7 +45,7 @@ public:
 	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
 
     virtual void trigger();
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseCursor();
 
 private:
diff --git a/src/actions/rs_actionmodifyexplodetext.cpp b/src/actions/rs_actionmodifyexplodetext.cpp
index 2d59120..bbdef15 100644
--- a/src/actions/rs_actionmodifyexplodetext.cpp
+++ b/src/actions/rs_actionmodifyexplodetext.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionmodifyexplodetext.h"
 
+#include <QAction>
 #include "rs_modification.h"
 
 /**
diff --git a/src/actions/rs_actionmodifyexplodetext.h b/src/actions/rs_actionmodifyexplodetext.h
index e8e3927..4069bde 100644
--- a/src/actions/rs_actionmodifyexplodetext.h
+++ b/src/actions/rs_actionmodifyexplodetext.h
@@ -28,7 +28,6 @@
 #define RS_ACTIONMODIFYEXPLODETEXT_H
 
 #include "rs_previewactioninterface.h"
-#include "rs_insert.h"
 
 /**
  * This action class can handle user events for exploding blocks and
diff --git a/src/actions/rs_actionmodifymirror.cpp b/src/actions/rs_actionmodifymirror.cpp
index 1158137..8437604 100644
--- a/src/actions/rs_actionmodifymirror.cpp
+++ b/src/actions/rs_actionmodifymirror.cpp
@@ -26,7 +26,9 @@
 
 #include "rs_actionmodifymirror.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 
@@ -64,7 +66,7 @@ void RS_ActionModifyMirror::trigger() {
 
 
 
-void RS_ActionModifyMirror::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyMirror::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyMirror::mouseMoveEvent begin");
 
     if (getStatus()==SetAxisPoint1 ||
@@ -102,12 +104,12 @@ void RS_ActionModifyMirror::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionModifyMirror::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionModifyMirror::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
 
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actionmodifymirror.h b/src/actions/rs_actionmodifymirror.h
index bf4cc7d..62e82bf 100644
--- a/src/actions/rs_actionmodifymirror.h
+++ b/src/actions/rs_actionmodifymirror.h
@@ -58,8 +58,8 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
     virtual void updateToolBar();
diff --git a/src/actions/rs_actionmodifymove.cpp b/src/actions/rs_actionmodifymove.cpp
index 1576036..1ae3021 100644
--- a/src/actions/rs_actionmodifymove.cpp
+++ b/src/actions/rs_actionmodifymove.cpp
@@ -26,7 +26,9 @@
 
 #include "rs_actionmodifymove.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 
@@ -62,7 +64,7 @@ void RS_ActionModifyMove::trigger() {
 
 
 
-void RS_ActionModifyMove::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyMove::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyMove::mouseMoveEvent begin");
 
     if (getStatus()==SetReferencePoint ||
@@ -95,11 +97,11 @@ void RS_ActionModifyMove::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionModifyMove::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionModifyMove::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actionmodifymove.h b/src/actions/rs_actionmodifymove.h
index 97a35b5..56d922a 100644
--- a/src/actions/rs_actionmodifymove.h
+++ b/src/actions/rs_actionmodifymove.h
@@ -59,8 +59,8 @@ public:
 	
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
 
diff --git a/src/actions/rs_actionmodifymoverotate.cpp b/src/actions/rs_actionmodifymoverotate.cpp
index cfede2a..36333e5 100644
--- a/src/actions/rs_actionmodifymoverotate.cpp
+++ b/src/actions/rs_actionmodifymoverotate.cpp
@@ -26,7 +26,10 @@
 
 #include "rs_actionmodifymoverotate.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 
 
 
@@ -65,7 +68,7 @@ void RS_ActionModifyMoveRotate::trigger() {
 
 
 
-void RS_ActionModifyMoveRotate::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyMoveRotate::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyMoveRotate::mouseMoveEvent begin");
 
     if (getStatus()==SetReferencePoint ||
@@ -100,11 +103,11 @@ void RS_ActionModifyMoveRotate::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionModifyMoveRotate::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionModifyMoveRotate::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -143,7 +146,7 @@ void RS_ActionModifyMoveRotate::coordinateEvent(RS_CoordinateEvent* e) {
 
 
 void RS_ActionModifyMoveRotate::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -179,8 +182,8 @@ void RS_ActionModifyMoveRotate::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionModifyMoveRotate::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionModifyMoveRotate::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case SetReferencePoint:
diff --git a/src/actions/rs_actionmodifymoverotate.h b/src/actions/rs_actionmodifymoverotate.h
index b12e775..a795609 100644
--- a/src/actions/rs_actionmodifymoverotate.h
+++ b/src/actions/rs_actionmodifymoverotate.h
@@ -65,12 +65,12 @@ public:
 	
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
     virtual void hideOptions();
     virtual void showOptions();
@@ -95,9 +95,9 @@ private:
 	/**
 	 * Commands
 	 */
-	RS_String cmdAngle;
-	RS_String cmdAngle2;
-	RS_String cmdAngle3;
+        QString cmdAngle;
+        QString cmdAngle2;
+        QString cmdAngle3;
 };
 
 #endif
diff --git a/src/actions/rs_actionmodifyrotate.cpp b/src/actions/rs_actionmodifyrotate.cpp
index 5ee920d..66a5992 100644
--- a/src/actions/rs_actionmodifyrotate.cpp
+++ b/src/actions/rs_actionmodifyrotate.cpp
@@ -26,7 +26,10 @@
 
 #include "rs_actionmodifyrotate.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+//#include "rs_commandevent.h"
 
 
 
@@ -62,7 +65,7 @@ void RS_ActionModifyRotate::trigger() {
 
 
 
-void RS_ActionModifyRotate::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyRotate::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyRotate::mouseMoveEvent begin");
 
     if (getStatus()==SetReferencePoint) {
@@ -82,11 +85,11 @@ void RS_ActionModifyRotate::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionModifyRotate::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionModifyRotate::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actionmodifyrotate.h b/src/actions/rs_actionmodifyrotate.h
index dca5a2d..b48f7c4 100644
--- a/src/actions/rs_actionmodifyrotate.h
+++ b/src/actions/rs_actionmodifyrotate.h
@@ -58,8 +58,8 @@ public:
 	
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
 
diff --git a/src/actions/rs_actionmodifyrotate2.cpp b/src/actions/rs_actionmodifyrotate2.cpp
index 4570e21..3a148db 100644
--- a/src/actions/rs_actionmodifyrotate2.cpp
+++ b/src/actions/rs_actionmodifyrotate2.cpp
@@ -26,7 +26,9 @@
 
 #include "rs_actionmodifyrotate2.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 
@@ -66,7 +68,7 @@ void RS_ActionModifyRotate2::trigger() {
 
 
 
-void RS_ActionModifyRotate2::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyRotate2::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyRotate2::mouseMoveEvent begin");
 
     if (getStatus()==SetReferencePoint1 ||
@@ -102,11 +104,11 @@ void RS_ActionModifyRotate2::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionModifyRotate2::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionModifyRotate2::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -147,8 +149,8 @@ void RS_ActionModifyRotate2::commandEvent(RS_CommandEvent* /*e*/) {
 
 
 
-RS_StringList RS_ActionModifyRotate2::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionModifyRotate2::getAvailableCommands() {
+    QStringList cmd;
     return cmd;
 }
 
diff --git a/src/actions/rs_actionmodifyrotate2.h b/src/actions/rs_actionmodifyrotate2.h
index 7f6f59f..7e5fdab 100644
--- a/src/actions/rs_actionmodifyrotate2.h
+++ b/src/actions/rs_actionmodifyrotate2.h
@@ -58,12 +58,12 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
     //virtual void hideOptions();
     //virtual void showOptions();
diff --git a/src/actions/rs_actionmodifyround.cpp b/src/actions/rs_actionmodifyround.cpp
index 2151a17..a8d8f0e 100644
--- a/src/actions/rs_actionmodifyround.cpp
+++ b/src/actions/rs_actionmodifyround.cpp
@@ -26,8 +26,11 @@
 
 #include "rs_actionmodifyround.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
 #include "rs_information.h"
-#include "rs_snapper.h"
 
 
 RS_ActionModifyRound::RS_ActionModifyRound(RS_EntityContainer& container,
@@ -91,7 +94,7 @@ void RS_ActionModifyRound::trigger() {
 
 
 
-void RS_ActionModifyRound::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyRound::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyRound::mouseMoveEvent begin");
 
     RS_Vector mouse = graphicView->toGraph(e->x(), e->y());
@@ -146,11 +149,11 @@ void RS_ActionModifyRound::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionModifyRound::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionModifyRound::mouseReleaseEvent(QMouseEvent* e) {
     RS_Vector mouse = graphicView->toGraph(e->x(), e->y());
     RS_Entity* se = catchEntity(e, RS2::ResolveAll);
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case SetEntity1:
             entity1 = se;
@@ -174,7 +177,7 @@ void RS_ActionModifyRound::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
@@ -183,7 +186,7 @@ void RS_ActionModifyRound::mouseReleaseEvent(RS_MouseEvent* e) {
 
 
 void RS_ActionModifyRound::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         if (RS_DIALOGFACTORY!=NULL) {
@@ -249,8 +252,8 @@ void RS_ActionModifyRound::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionModifyRound::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionModifyRound::getAvailableCommands() {
+    QStringList cmd;
     switch (getStatus()) {
     case SetEntity1:
     case SetEntity2:
diff --git a/src/actions/rs_actionmodifyround.h b/src/actions/rs_actionmodifyround.h
index 1676d5b..a425e5a 100644
--- a/src/actions/rs_actionmodifyround.h
+++ b/src/actions/rs_actionmodifyround.h
@@ -63,11 +63,11 @@ public:
     virtual void init(int status=0);
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 	
     virtual void hideOptions();
     virtual void showOptions();
diff --git a/src/actions/rs_actionmodifyscale.cpp b/src/actions/rs_actionmodifyscale.cpp
index 4a4dac6..070b818 100644
--- a/src/actions/rs_actionmodifyscale.cpp
+++ b/src/actions/rs_actionmodifyscale.cpp
@@ -26,7 +26,9 @@
 
 #include "rs_actionmodifyscale.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 
@@ -63,7 +65,7 @@ void RS_ActionModifyScale::trigger() {
 
 
 
-void RS_ActionModifyScale::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyScale::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyScale::mouseMoveEvent begin");
 
     if (getStatus()==SetReferencePoint) {
@@ -84,8 +86,8 @@ void RS_ActionModifyScale::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionModifyScale::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionModifyScale::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_Vector mouse = snapPoint(e);
 
         switch (getStatus()) {
@@ -101,7 +103,7 @@ void RS_ActionModifyScale::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actionmodifyscale.h b/src/actions/rs_actionmodifyscale.h
index 02df7aa..ecc6e19 100644
--- a/src/actions/rs_actionmodifyscale.h
+++ b/src/actions/rs_actionmodifyscale.h
@@ -56,8 +56,8 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
     virtual void updateToolBar();
diff --git a/src/actions/rs_actionmodifystretch.cpp b/src/actions/rs_actionmodifystretch.cpp
index 646d2de..eda8052 100644
--- a/src/actions/rs_actionmodifystretch.cpp
+++ b/src/actions/rs_actionmodifystretch.cpp
@@ -26,7 +26,10 @@
 
 #include "rs_actionmodifystretch.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_modification.h"
 
 
 
@@ -73,7 +76,7 @@ void RS_ActionModifyStretch::trigger() {
 
 
 
-void RS_ActionModifyStretch::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyStretch::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyStretch::mouseMoveEvent begin");
 
     RS_Vector mouse = snapPoint(e);
@@ -138,11 +141,11 @@ void RS_ActionModifyStretch::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionModifyStretch::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionModifyStretch::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         RS_CoordinateEvent ce(snapPoint(e));
         coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actionmodifystretch.h b/src/actions/rs_actionmodifystretch.h
index c0ec40e..eaf52af 100644
--- a/src/actions/rs_actionmodifystretch.h
+++ b/src/actions/rs_actionmodifystretch.h
@@ -28,7 +28,6 @@
 #define RS_ACTIONMODIFYSTRETCH_H
 
 #include "rs_previewactioninterface.h"
-#include "rs_modification.h"
 
 
 /**
@@ -60,8 +59,8 @@ public:
     virtual void trigger();
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
diff --git a/src/actions/rs_actionmodifytrim.cpp b/src/actions/rs_actionmodifytrim.cpp
index 87af3ea..2be1b3c 100644
--- a/src/actions/rs_actionmodifytrim.cpp
+++ b/src/actions/rs_actionmodifytrim.cpp
@@ -26,7 +26,10 @@
 
 #include "rs_actionmodifytrim.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_modification.h"
 
 
 /**
@@ -105,7 +108,7 @@ void RS_ActionModifyTrim::trigger() {
 
 
 
-void RS_ActionModifyTrim::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionModifyTrim::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionModifyTrim::mouseMoveEvent begin");
 
     RS_Vector mouse = graphicView->toGraph(e->x(), e->y());
@@ -131,8 +134,8 @@ void RS_ActionModifyTrim::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionModifyTrim::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionModifyTrim::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
 
         RS_Vector mouse = graphicView->toGraph(e->x(), e->y());
         RS_Entity* se = catchEntity(e);
@@ -159,7 +162,7 @@ void RS_ActionModifyTrim::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         if (limitEntity!=NULL) {
             limitEntity->setHighlighted(false);
diff --git a/src/actions/rs_actionmodifytrim.h b/src/actions/rs_actionmodifytrim.h
index 1fd4719..2f22f9a 100644
--- a/src/actions/rs_actionmodifytrim.h
+++ b/src/actions/rs_actionmodifytrim.h
@@ -28,7 +28,6 @@
 #define RS_ACTIONMODIFYTRIM_H
 
 #include "rs_previewactioninterface.h"
-#include "rs_modification.h"
 
 
 /**
@@ -57,8 +56,8 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
     virtual void updateToolBar();
diff --git a/src/actions/rs_actionmodifytrimamount.cpp b/src/actions/rs_actionmodifytrimamount.cpp
index b5663ae..e8d254a 100644
--- a/src/actions/rs_actionmodifytrimamount.cpp
+++ b/src/actions/rs_actionmodifytrimamount.cpp
@@ -26,7 +26,11 @@
 
 #include "rs_actionmodifytrimamount.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commandevent.h"
+#include "rs_modification.h"
 
 
 RS_ActionModifyTrimAmount::RS_ActionModifyTrimAmount(
@@ -76,12 +80,12 @@ void RS_ActionModifyTrimAmount::trigger() {
 
 
 
-void RS_ActionModifyTrimAmount::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionModifyTrimAmount::mouseReleaseEvent(QMouseEvent* e) {
 
     trimCoord = graphicView->toGraph(e->x(), e->y());
     trimEntity = catchEntity(e);
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case ChooseTrimEntity:
             if (trimEntity!=NULL && trimEntity->isAtomic()) {
@@ -105,7 +109,7 @@ void RS_ActionModifyTrimAmount::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     }
 }
@@ -113,7 +117,7 @@ void RS_ActionModifyTrimAmount::mouseReleaseEvent(RS_MouseEvent* e) {
 
 
 void RS_ActionModifyTrimAmount::commandEvent(RS_CommandEvent* e) {
-    RS_String c = e->getCommand().lower();
+    QString c = e->getCommand().toLower();
 
     if (checkCommand("help", c)) {
         RS_DIALOGFACTORY->commandMessage(msgAvailableCommands()
@@ -142,8 +146,8 @@ void RS_ActionModifyTrimAmount::commandEvent(RS_CommandEvent* e) {
 
 
 
-RS_StringList RS_ActionModifyTrimAmount::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionModifyTrimAmount::getAvailableCommands() {
+    QStringList cmd;
 
     switch (getStatus()) {
     case ChooseTrimEntity:
diff --git a/src/actions/rs_actionmodifytrimamount.h b/src/actions/rs_actionmodifytrimamount.h
index 9ad25c9..c0fb38a 100644
--- a/src/actions/rs_actionmodifytrimamount.h
+++ b/src/actions/rs_actionmodifytrimamount.h
@@ -28,7 +28,6 @@
 #define RS_ACTIONMODIFYTRIMAMOUNT_H
 
 #include "rs_previewactioninterface.h"
-#include "rs_modification.h"
 
 
 /**
@@ -62,11 +61,11 @@ public:
 	
     virtual void trigger();
 
-    //virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    //virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
     virtual void hideOptions();
     virtual void showOptions();
@@ -91,9 +90,9 @@ private:
 	 * Commands
 	 */
 	/*
-	RS_String cmdDistance;
-	RS_String cmdDistance2;
-	RS_String cmdDistance3;
+        QString cmdDistance;
+        QString cmdDistance2;
+        QString cmdDistance3;
 	*/
 };
 
diff --git a/src/actions/rs_actionoptionsdrawing.cpp b/src/actions/rs_actionoptionsdrawing.cpp
index 2334968..49caa06 100644
--- a/src/actions/rs_actionoptionsdrawing.cpp
+++ b/src/actions/rs_actionoptionsdrawing.cpp
@@ -26,7 +26,8 @@
 
 #include "rs_actionoptionsdrawing.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
 #include "rs_graphicview.h"
 
 
diff --git a/src/actions/rs_actionparisdebugcreatecontainer.cpp b/src/actions/rs_actionparisdebugcreatecontainer.cpp
index 3da969b..5ed75ad 100644
--- a/src/actions/rs_actionparisdebugcreatecontainer.cpp
+++ b/src/actions/rs_actionparisdebugcreatecontainer.cpp
@@ -28,7 +28,7 @@
 
 #include "rs_actionparisdebugcreatecontainer.h"
 
-#include "rs_ptrlist.h"
+#include "rs_document.h"
 
 /**
  * Constructor.
@@ -47,11 +47,11 @@ RS_ActionPARISDebugCreateContainer::RS_ActionPARISDebugCreateContainer(
 	}
 
     RS_EntityContainer* con = new RS_EntityContainer(theDoc, true);
-    RS_PtrListIterator<RS_Entity> it = theDoc->createIterator();
+    QListIterator<RS_Entity*> it = theDoc->createIterator();
     RS_Entity* e;
 
-    while ( (e = it.current()) != 0) {
-        ++it;
+    while (it.hasNext()) {
+        e = it.next();
         if (e->isSelected()) {
             con->addEntity(e);
             e->setParent(con);
diff --git a/src/actions/rs_actionpolylineadd.cpp b/src/actions/rs_actionpolylineadd.cpp
index 310318c..74f42a0 100644
--- a/src/actions/rs_actionpolylineadd.cpp
+++ b/src/actions/rs_actionpolylineadd.cpp
@@ -26,8 +26,11 @@
 
 #include "rs_actionpolylineadd.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_modification.h"
 #include "rs_polyline.h"
-#include "rs_snapper.h"
 
 
 
@@ -77,7 +80,7 @@ void RS_ActionPolylineAdd::trigger() {
 
 
 
-void RS_ActionPolylineAdd::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionPolylineAdd::mouseMoveEvent(QMouseEvent* e) {
 	RS_DEBUG->print("RS_ActionPolylineAdd::mouseMoveEvent begin");
 
 	switch (getStatus()) {
@@ -95,8 +98,8 @@ void RS_ActionPolylineAdd::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionPolylineAdd::mouseReleaseEvent(RS_MouseEvent* e) {
-	if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionPolylineAdd::mouseReleaseEvent(QMouseEvent* e) {
+        if (e->button()==Qt::LeftButton) {
 		switch (getStatus()) {
 		case ChooseSegment:
 			addEntity = catchEntity(e);
@@ -140,7 +143,7 @@ void RS_ActionPolylineAdd::mouseReleaseEvent(RS_MouseEvent* e) {
 		default:
 			break;
 		}
-	} else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+        } else if (e->button()==Qt::RightButton) {
 		deleteSnapper();
 		if (addEntity!=NULL) {
 			addEntity->setHighlighted(false);
diff --git a/src/actions/rs_actionpolylineadd.h b/src/actions/rs_actionpolylineadd.h
index ae689ee..a19a56b 100644
--- a/src/actions/rs_actionpolylineadd.h
+++ b/src/actions/rs_actionpolylineadd.h
@@ -23,51 +23,50 @@
 ** This copyright notice MUST APPEAR in all copies of the script!  
 **
 **********************************************************************/
-
-#ifndef RS_ACTIONPOLYLINEADD_H
-#define RS_ACTIONPOLYLINEADD_H
-
-#include "rs_previewactioninterface.h"
-#include "rs_modification.h"
-
-/**
- * This action class can handle user events to move entities.
- *
- * @author Andrew Mustun
- */
-class RS_ActionPolylineAdd : public RS_PreviewActionInterface {
-	Q_OBJECT
-public:
-    /**
-     * Action States.
-     */
-    enum Status {
-    	ChooseSegment,		/**< Choosing a segment of existing polyline to add node. */
-        SetAddCoord			/**< Setting the reference point. */
-    };
-
-public:
-    RS_ActionPolylineAdd(RS_EntityContainer& container,
-                        RS_GraphicView& graphicView);
-    ~RS_ActionPolylineAdd() {}
-
-	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
-
-    virtual void init(int status=0);
-	
-    virtual void trigger();
-	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
-	
-    virtual void updateMouseButtonHints();
-    virtual void updateMouseCursor();
-    virtual void updateToolBar();
-
-private:
-    RS_Entity* addEntity;
-    RS_Entity* addSegment;
-	RS_Vector addCoord;
-};
-
-#endif
+
+#ifndef RS_ACTIONPOLYLINEADD_H
+#define RS_ACTIONPOLYLINEADD_H
+
+#include "rs_previewactioninterface.h"
+
+/**
+ * This action class can handle user events to move entities.
+ *
+ * @author Andrew Mustun
+ */
+class RS_ActionPolylineAdd : public RS_PreviewActionInterface {
+	Q_OBJECT
+public:
+    /**
+     * Action States.
+     */
+    enum Status {
+    	ChooseSegment,		/**< Choosing a segment of existing polyline to add node. */
+        SetAddCoord			/**< Setting the reference point. */
+    };
+
+public:
+    RS_ActionPolylineAdd(RS_EntityContainer& container,
+                        RS_GraphicView& graphicView);
+    ~RS_ActionPolylineAdd() {}
+
+	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
+
+    virtual void init(int status=0);
+	
+    virtual void trigger();
+	
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
+	
+    virtual void updateMouseButtonHints();
+    virtual void updateMouseCursor();
+    virtual void updateToolBar();
+
+private:
+    RS_Entity* addEntity;
+    RS_Entity* addSegment;
+	RS_Vector addCoord;
+};
+
+#endif
diff --git a/src/actions/rs_actionpolylineappend.cpp b/src/actions/rs_actionpolylineappend.cpp
index 5ade586..bb8eb5b 100644
--- a/src/actions/rs_actionpolylineappend.cpp
+++ b/src/actions/rs_actionpolylineappend.cpp
@@ -25,8 +25,11 @@
 **********************************************************************/
 
 #include "rs_actionpolylineappend.h"
-#include "rs_snapper.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_commands.h"
 
 
 RS_ActionPolylineAppend::RS_ActionPolylineAppend(RS_EntityContainer& container,
@@ -80,8 +83,8 @@ void RS_ActionPolylineAppend::trigger() {
 }
 
 
-void RS_ActionPolylineAppend::mouseReleaseEvent(RS_MouseEvent* e) {
-	if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionPolylineAppend::mouseReleaseEvent(QMouseEvent* e) {
+        if (e->button()==Qt::LeftButton) {
 		if (getStatus()==SetStartpoint) {
 			originalPolyline = (RS_Polyline*)catchEntity(e);
 			if (originalPolyline==NULL) {
@@ -111,7 +114,7 @@ void RS_ActionPolylineAppend::mouseReleaseEvent(RS_MouseEvent* e) {
 		}
 		RS_CoordinateEvent ce(snapPoint(e));
 		coordinateEvent(&ce);
-	} else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+        } else if (e->button()==Qt::RightButton) {
 		if (getStatus()==SetNextPoint) {
 			trigger();
 		}
@@ -132,9 +135,9 @@ void RS_ActionPolylineAppend::coordinateEvent(RS_CoordinateEvent* e) {
 	switch (getStatus()) {
 	case SetStartpoint:
 		history.clear();
-		history.append(new RS_Vector(point));
+                history.append(point);
 		bHistory.clear();
-		bHistory.append(new double(0.0));
+                bHistory.append(0.0);
 		start = point;
 		setStatus(SetNextPoint);
 		graphicView->moveRelativeZero(point);
@@ -144,9 +147,9 @@ void RS_ActionPolylineAppend::coordinateEvent(RS_CoordinateEvent* e) {
 	case SetNextPoint:
 		graphicView->moveRelativeZero(mouse);
 		point = mouse;
-		history.append(new RS_Vector(mouse));
-		bHistory.append(new double(0.0));
-		if (polyline==NULL) {
+                history.append(mouse);
+                bHistory.append(0.0);
+                if (polyline==NULL) {
 			polyline = new RS_Polyline(container, data);
 			polyline->addVertex(start, 0.0, prepend);
 		}
@@ -182,17 +185,17 @@ void RS_ActionPolylineAppend::updateMouseButtonHints() {
 						tr("Cancel"));
 		break;
 	case SetNextPoint: {
-			RS_String msg = "";
+                        QString msg = "";
 
-			if (history.count()>=3) {
+                        if (history.size()>=3) {
 				msg += RS_COMMANDS->command("close");
 				msg += "/";
 			}
-			if (history.count()>=2) {
+                        if (history.size()>=2) {
 				msg += RS_COMMANDS->command("undo");
 			}
 
-			if (history.count()>=2) {
+                        if (history.size()>=2) {
 				RS_DIALOGFACTORY->updateMouseWidget(
 					tr("Specify next point or [%1]").arg(msg),
 					tr("Back"));
diff --git a/src/actions/rs_actionpolylineappend.h b/src/actions/rs_actionpolylineappend.h
index 34afe67..571978a 100644
--- a/src/actions/rs_actionpolylineappend.h
+++ b/src/actions/rs_actionpolylineappend.h
@@ -23,63 +23,60 @@
 ** This copyright notice MUST APPEAR in all copies of the script!  
 **
 **********************************************************************/
-#ifndef RS_ACTIONPOLYLINEAPPEND_H
-#define RS_ACTIONPOLYLINEAPPEND_H
-
-//#include "rs_previewactioninterface.h"
-//#include "rs_modification.h"
-//#include "rs_polyline.h"
-#include "rs_actiondrawpolyline.h"
-
-/**
- * This action class can handle user events to move entities.
- *
- * @author Andrew Mustun
- */
-class RS_ActionPolylineAppend : public RS_ActionDrawPolyline {//public RS_PreviewActionInterface {
-	Q_OBJECT
-public:
-	/**
-	 * Action States.
-	 */
-//	enum Status {
+#ifndef RS_ACTIONPOLYLINEAPPEND_H
+#define RS_ACTIONPOLYLINEAPPEND_H
+
+#include "rs_actiondrawpolyline.h"
+
+/**
+ * This action class can handle user events to move entities.
+ *
+ * @author Andrew Mustun
+ */
+class RS_ActionPolylineAppend : public RS_ActionDrawPolyline {//public RS_PreviewActionInterface {
+	Q_OBJECT
+public:
+	/**
+	 * Action States.
+	 */
+//	enum Status {
 //		SetStartpoint,   /**< Setting the startpoint.  */
 //		SetNextPoint	  /**< Setting the endpoint. */
-//	};
-
-public:
-	RS_ActionPolylineAppend(RS_EntityContainer& container,
-						RS_GraphicView& graphicView);
-//	~RS_ActionPolylineAppend();
-
+//	};
+
+public:
+	RS_ActionPolylineAppend(RS_EntityContainer& container,
+						RS_GraphicView& graphicView);
+//	~RS_ActionPolylineAppend();
+
 	virtual RS2::ActionType rtti() {
 		return RS2::ActionPolylineAppend;
 	}
-	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
-
-//	void reset();
+	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
+
+//	void reset();
 
-//	virtual void init(int status=0);
-	
-	virtual void trigger();
-	
-//	virtual void mouseMoveEvent(RS_MouseEvent* e);
-	virtual void mouseReleaseEvent(RS_MouseEvent* e);
-	
+//	virtual void init(int status=0);
+	
+	virtual void trigger();
+	
+//	virtual void mouseMoveEvent(QMouseEvent* e);
+        virtual void mouseReleaseEvent(QMouseEvent* e);
+	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
 //  virtual void commandEvent(RS_CommandEvent* e);
-//	virtual RS_StringList getAvailableCommands();
+//	virtual QStringList getAvailableCommands();
 
 //	virtual void showOptions();
 //	virtual void hideOptions();
-
-	virtual void updateMouseButtonHints();
-//  virtual void updateMouseCursor();
-//	virtual void updateToolBar();
+
+	virtual void updateMouseButtonHints();
+//  virtual void updateMouseCursor();
+//	virtual void updateToolBar();
 //	void close();
 //	void undo();
-
-private:
+
+private:
 	/**
 	 * Line data defined so far.
 	 */
@@ -104,13 +101,13 @@ private:
 	/**
 	 * Point history (for undo)
 	 */
-//	RS_PtrList<RS_Vector*> history;
+//	QList<RS_Vector> history;
 	
 	/**
 	 * Bulge history (for undo)
 	 */
-//	RS_PtrList<double*> bHistory;
-
-};
-
-#endif
+//	QList<double> bHistory;
+
+};
+
+#endif
diff --git a/src/actions/rs_actionpolylinedel.cpp b/src/actions/rs_actionpolylinedel.cpp
index 556df10..9697854 100644
--- a/src/actions/rs_actionpolylinedel.cpp
+++ b/src/actions/rs_actionpolylinedel.cpp
@@ -25,9 +25,12 @@
 **********************************************************************/
 
 #include "rs_actionpolylinedel.h"
-#include "rs_polyline.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_modification.h"
+#include "rs_polyline.h"
 
 
 
@@ -76,7 +79,7 @@ void RS_ActionPolylineDel::trigger() {
 
 
 
-void RS_ActionPolylineDel::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionPolylineDel::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionPolylineDel::mouseMoveEvent begin");
 
 
@@ -97,8 +100,8 @@ void RS_ActionPolylineDel::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionPolylineDel::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionPolylineDel::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
 		switch (getStatus()) {
 		case ChooseEntity:
 		    delEntity = catchEntity(e);
@@ -137,7 +140,7 @@ void RS_ActionPolylineDel::mouseReleaseEvent(RS_MouseEvent* e) {
 		default:
 		    break;
 		}
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
 		deleteSnapper();
 		if (delEntity!=NULL) {
 	    	delEntity->setHighlighted(false);
diff --git a/src/actions/rs_actionpolylinedel.h b/src/actions/rs_actionpolylinedel.h
index b45e73e..c0345ce 100644
--- a/src/actions/rs_actionpolylinedel.h
+++ b/src/actions/rs_actionpolylinedel.h
@@ -23,49 +23,48 @@
 ** This copyright notice MUST APPEAR in all copies of the script!  
 **
 **********************************************************************/
-#ifndef RS_ACTIONPOLYLINEDEL_H
-#define RS_ACTIONPOLYLINEDEL_H
-
-#include "rs_previewactioninterface.h"
-#include "rs_modification.h"
-
-/**
- * This action class can handle user events to move entities.
- *
- * @author Andrew Mustun
- */
-class RS_ActionPolylineDel : public RS_PreviewActionInterface {
-	Q_OBJECT
-public:
-    /**
-     * Action States.
-     */
-    enum Status {
-    	ChooseEntity,			/**< Choosing existing polyline to delete its node. */
-        SetDelPoint    /**< Setting the deleting node point. */
-    };
-
-public:
-    RS_ActionPolylineDel(RS_EntityContainer& container,
-                        RS_GraphicView& graphicView);
-    ~RS_ActionPolylineDel() {}
-
-	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
-
-    virtual void init(int status=0);
-	
-    virtual void trigger();
-	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
-	
-    virtual void updateMouseButtonHints();
-    virtual void updateMouseCursor();
-    virtual void updateToolBar();
-
-private:
-    RS_Entity* delEntity;
-    RS_Vector delPoint;
-};
-
-#endif
+#ifndef RS_ACTIONPOLYLINEDEL_H
+#define RS_ACTIONPOLYLINEDEL_H
+
+#include "rs_previewactioninterface.h"
+
+/**
+ * This action class can handle user events to move entities.
+ *
+ * @author Andrew Mustun
+ */
+class RS_ActionPolylineDel : public RS_PreviewActionInterface {
+	Q_OBJECT
+public:
+    /**
+     * Action States.
+     */
+    enum Status {
+    	ChooseEntity,			/**< Choosing existing polyline to delete its node. */
+        SetDelPoint    /**< Setting the deleting node point. */
+    };
+
+public:
+    RS_ActionPolylineDel(RS_EntityContainer& container,
+                        RS_GraphicView& graphicView);
+    ~RS_ActionPolylineDel() {}
+
+	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
+
+    virtual void init(int status=0);
+	
+    virtual void trigger();
+	
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
+	
+    virtual void updateMouseButtonHints();
+    virtual void updateMouseCursor();
+    virtual void updateToolBar();
+
+private:
+    RS_Entity* delEntity;
+    RS_Vector delPoint;
+};
+
+#endif
diff --git a/src/actions/rs_actionpolylinedelbetween.cpp b/src/actions/rs_actionpolylinedelbetween.cpp
index 83997a6..af13812 100644
--- a/src/actions/rs_actionpolylinedelbetween.cpp
+++ b/src/actions/rs_actionpolylinedelbetween.cpp
@@ -25,9 +25,12 @@
 **********************************************************************/
 
 #include "rs_actionpolylinedelbetween.h"
-#include "rs_polyline.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_modification.h"
+#include "rs_polyline.h"
 
 
 
@@ -77,7 +80,7 @@ void RS_ActionPolylineDelBetween::trigger() {
 
 
 
-void RS_ActionPolylineDelBetween::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionPolylineDelBetween::mouseMoveEvent(QMouseEvent* e) {
 	RS_DEBUG->print("RS_ActionPolylineDelBetween::mouseMoveEvent begin");
 
 	switch (getStatus()) {
@@ -100,8 +103,8 @@ void RS_ActionPolylineDelBetween::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionPolylineDelBetween::mouseReleaseEvent(RS_MouseEvent* e) {
-	if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionPolylineDelBetween::mouseReleaseEvent(QMouseEvent* e) {
+        if (e->button()==Qt::LeftButton) {
 		switch (getStatus()) {
 		case ChooseSegment:
 			delEntity = catchEntity(e);
@@ -159,7 +162,7 @@ void RS_ActionPolylineDelBetween::mouseReleaseEvent(RS_MouseEvent* e) {
 		default:
 			break;
 		}
-	} else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+        } else if (e->button()==Qt::RightButton) {
 		deleteSnapper();
 		if (delEntity!=NULL) {
 			delEntity->setHighlighted(false);
diff --git a/src/actions/rs_actionpolylinedelbetween.h b/src/actions/rs_actionpolylinedelbetween.h
index bde01e5..6c4d874 100644
--- a/src/actions/rs_actionpolylinedelbetween.h
+++ b/src/actions/rs_actionpolylinedelbetween.h
@@ -23,52 +23,51 @@
 ** This copyright notice MUST APPEAR in all copies of the script!  
 **
 **********************************************************************/
-#ifndef RS_ACTIONPOLYLINEDELBETWEEN_H
-#define RS_ACTIONPOLYLINEDELBETWEEN_H
-
-#include "rs_previewactioninterface.h"
-#include "rs_modification.h"
-
-/**
- * This action class can handle user events to move entities.
- *
- * @author Andrew Mustun
- */
-class RS_ActionPolylineDelBetween : public RS_PreviewActionInterface {
-	Q_OBJECT
-public:
-    /**
-     * Action States.
-     */
-    enum Status {
-    	ChooseSegment,		/**< Choosing segment of existing polyline to delete between two nodes. */
-        SetNodePoint1,    /**< Setting the node's point1. */
-        SetNodePoint2       /**< Setting the node's point2. */
-    };
-
-public:
-    RS_ActionPolylineDelBetween(RS_EntityContainer& container,
-                        RS_GraphicView& graphicView);
-    ~RS_ActionPolylineDelBetween() {}
-
-	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
-
-    virtual void init(int status=0);
-	
-    virtual void trigger();
-	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
-	
-    virtual void updateMouseButtonHints();
-    virtual void updateMouseCursor();
-    virtual void updateToolBar();
-
-private:
-    RS_Entity* delEntity;
-	RS_AtomicEntity* delSegment;
-    RS_Vector nodePoint1;
-    RS_Vector nodePoint2;
-};
-
-#endif
+#ifndef RS_ACTIONPOLYLINEDELBETWEEN_H
+#define RS_ACTIONPOLYLINEDELBETWEEN_H
+
+#include "rs_previewactioninterface.h"
+
+/**
+ * This action class can handle user events to move entities.
+ *
+ * @author Andrew Mustun
+ */
+class RS_ActionPolylineDelBetween : public RS_PreviewActionInterface {
+	Q_OBJECT
+public:
+    /**
+     * Action States.
+     */
+    enum Status {
+    	ChooseSegment,		/**< Choosing segment of existing polyline to delete between two nodes. */
+        SetNodePoint1,    /**< Setting the node's point1. */
+        SetNodePoint2       /**< Setting the node's point2. */
+    };
+
+public:
+    RS_ActionPolylineDelBetween(RS_EntityContainer& container,
+                        RS_GraphicView& graphicView);
+    ~RS_ActionPolylineDelBetween() {}
+
+	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
+
+    virtual void init(int status=0);
+	
+    virtual void trigger();
+	
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
+	
+    virtual void updateMouseButtonHints();
+    virtual void updateMouseCursor();
+    virtual void updateToolBar();
+
+private:
+    RS_Entity* delEntity;
+	RS_AtomicEntity* delSegment;
+    RS_Vector nodePoint1;
+    RS_Vector nodePoint2;
+};
+
+#endif
diff --git a/src/actions/rs_actionpolylineequidistant.cpp b/src/actions/rs_actionpolylineequidistant.cpp
index 5cd034b..82291ff 100644
--- a/src/actions/rs_actionpolylineequidistant.cpp
+++ b/src/actions/rs_actionpolylineequidistant.cpp
@@ -23,253 +23,255 @@
 ** This copyright notice MUST APPEAR in all copies of the script!  
 **
 **********************************************************************/
-
-#include "rs_actionpolylineequidistant.h"
-#include "rs_polyline.h"
-#include "rs_snapper.h"
-#include "rs_information.h"
-
-
-RS_ActionPolylineEquidistant::RS_ActionPolylineEquidistant(RS_EntityContainer& container,
-		RS_GraphicView& graphicView)
-		:RS_PreviewActionInterface("Create Equidistant Polylines",
-						   container, graphicView) {
-	dist = 1.0;
-}
-
-
-QAction* RS_ActionPolylineEquidistant::createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/) {
-	QAction* action = new QAction(tr("Create &Equidistant Polylines"), NULL);
-	action->setShortcut(QKeySequence());
-	action->setStatusTip(tr("Create Equidistant Polylines"));
-	return action;
-}
-
-void RS_ActionPolylineEquidistant::init(int status) {
-	RS_ActionInterface::init(status);
-	originalEntity = NULL;
-	targetPoint = RS_Vector(false);
-	bRightSide = false;
-}
-
-bool RS_ActionPolylineEquidistant::makeContour() {
-	if (container==NULL) {
-		RS_DEBUG->print("RS_ActionPolylineEquidistant::makeContour: no valid container",
-						RS_Debug::D_WARNING);
-		return false;
-	}
-
-	RS_Vector offset(false);
-	RS_PtrList<RS_Entity*> addList;
-
-	if (document!=NULL) {
-		document->startUndoCycle();
-	}
-	double neg = 1.0;
-	if(bRightSide)
-		neg = -1.0;
-	// Create new entites
-	RS_Line line1(NULL, RS_LineData(RS_Vector(true), RS_Vector(true)));
-	RS_Line line2(NULL, RS_LineData(RS_Vector(true), RS_Vector(true)));
-	for (int num=1;
-			num<=number || (number==0 && num<=1);
-			num++) {
-		RS_Polyline* newPolyline = new RS_Polyline(container);
-		newPolyline->setClosed(((RS_Polyline*)originalEntity)->isClosed());
-//		newPolyline->setSelected((RS_Polyline*)originalEntity)->isSelected());
-		newPolyline->setLayer(((RS_Polyline*)originalEntity)->getLayer());
-		newPolyline->setPen(((RS_Polyline*)originalEntity)->getPen());
-
-		bool first = true;
-		RS_Entity* lastEntity = ((RS_Polyline*)originalEntity)->lastEntity();
-		for (RS_Entity* en=((RS_Polyline*)originalEntity)->firstEntity(); en!=NULL; en=((RS_Polyline*)originalEntity)->nextEntity()) {
-			double bulge = 0.0;
-			if (en->rtti()==RS2::EntityArc) {
-				double r0 = ((RS_Arc*)en)->getRadius();
-				double r = r0 - dist*neg;
-				if(r < 0)
-					break;
-				((RS_Arc*)en)->setRadius(r);
-				bulge = ((RS_Arc*)en)->getBulge();
-				((RS_Arc*)en)->setRadius(r0);
-			} else {
-				bulge = 0.0;
-			}
-			RS_Vector v1 = ((RS_AtomicEntity*)en)->getStartpoint();
-			RS_Vector v2 = ((RS_AtomicEntity*)en)->getEndpoint();
-			offset.set(dist * cos(v1.angleTo(v2)+M_PI*0.5*neg), dist * sin(v1.angleTo(v2)+M_PI*0.5*neg));
-			v1.move(offset*num);
-			v2.move(offset*num);
-			if (first) {
-				line1.setStartpoint(v1);
-				line1.setEndpoint(v2);
-				if(newPolyline->isClosed()){
-					RS_Vector v01 = ((RS_AtomicEntity*)lastEntity)->getStartpoint();
-					RS_Vector v02 = ((RS_AtomicEntity*)en)->getStartpoint();
-					offset.set(dist * cos(v01.angleTo(v02)+M_PI*0.5*neg), dist * sin(v01.angleTo(v02)+M_PI*0.5*neg));
-					v01.move(offset*num);
-					v02.move(offset*num);
-					line2.setStartpoint(v01);
-					line2.setEndpoint(v02);
-					RS_VectorSolutions vsol = RS_Information::getIntersection(&line1, &line2, false);
-					v1 = vsol.get(0);
-				}
-				newPolyline->setStartpoint(v1);
-				newPolyline->addVertex(v1, bulge);
-				first = false;
-			}else{
-				line2.setStartpoint(v1);
-				line2.setEndpoint(v2);
-				RS_VectorSolutions vsol = RS_Information::getIntersection(&line1, &line2, false);
-				RS_Vector v = vsol.get(0);
-				newPolyline->addVertex(v, bulge);
-				newPolyline->setEndpoint(v);
-				line1.setStartpoint(v1);
-				line1.setEndpoint(v2);
-				if (en==lastEntity/* && newPolyline->isClosed()==false*/){
-					newPolyline->addVertex(v2, bulge);
-				}
-			}
-		}
-		double bulge = lastEntity->rtti() == RS2::EntityArc? ((RS_Arc*)lastEntity)->getBulge():0.0;
-//		newPolyline->setNextBulge(bulge);
-		newPolyline->endPolyline();
-		container->addEntity(newPolyline);
-		document->addUndoable(newPolyline);
-	}
-	if (document!=NULL) {
-		document->endUndoCycle();
-	}
-
-	if (graphicView!=NULL) {
-		graphicView->redraw();
-	}
-
-	return true;
-}
-
-void RS_ActionPolylineEquidistant::trigger() {
-
-	RS_DEBUG->print("RS_ActionPolylineEquidistant::trigger()");
-
-	if (originalEntity!=NULL && targetPoint.valid ) {
-
-		originalEntity->setHighlighted(false);
-		graphicView->drawEntity(originalEntity);
-
-		makeContour();
-
-		originalEntity = NULL;
-		targetPoint = RS_Vector(false);
-		bRightSide = false;
-		setStatus(ChooseEntity);
-
-		RS_DIALOGFACTORY->updateSelectionWidget(container->countSelected());
-	}
-////////////////////////////////////////2006/06/15
-		graphicView->redraw();
-////////////////////////////////////////
-}
-
-
-
-void RS_ActionPolylineEquidistant::mouseMoveEvent(RS_MouseEvent* e) {
-	RS_DEBUG->print("RS_ActionPolylineEquidistant::mouseMoveEvent begin");
-
-	switch (getStatus()) {
-	case ChooseEntity:
-		snapPoint(e);
-		break;
-	default:
-		break;
-	}
-
-	RS_DEBUG->print("RS_ActionPolylineEquidistant::mouseMoveEvent end");
-}
-
-
-
-void RS_ActionPolylineEquidistant::mouseReleaseEvent(RS_MouseEvent* e) {
-	if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
-		switch (getStatus()) {
-		case ChooseEntity:
-			originalEntity = catchEntity(e);
-			if (originalEntity==NULL) {
-				RS_DIALOGFACTORY->commandMessage(tr("No Entity found."));
-			} else if (originalEntity->rtti()!=RS2::EntityPolyline) {
-
-				RS_DIALOGFACTORY->commandMessage(
-					tr("Entity must be a polyline."));
-			} else {
-				targetPoint = snapPoint(e);
-				originalEntity->setHighlighted(true);
-				graphicView->drawEntity(originalEntity);
-				double d = graphicView->toGraphDX(snapRange)*0.9;
-				RS_Entity* Segment =  ((RS_Polyline*)originalEntity)->getNearestEntity( targetPoint, &d, RS2::ResolveNone);
-				double ang = ((RS_Line*)Segment)->getAngle1();
-				double ang1 = ((RS_Line*)Segment)->getStartpoint().angleTo(RS_Vector(targetPoint));
-				if( ang > ang1 || ang + M_PI < ang1 )
-					bRightSide = true;
-////////////////////////////////////////2006/06/15
-		graphicView->redraw();
-////////////////////////////////////////
-				trigger();
-			}
-			break;
-		default:
-			break;
-		}
-	} else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
-		deleteSnapper();
-		if (originalEntity!=NULL) {
-			originalEntity->setHighlighted(false);
-			graphicView->drawEntity(originalEntity);
-////////////////////////////////////////2006/06/15
-		graphicView->redraw();
-////////////////////////////////////////
-		}
-		init(getStatus()-1);
-	}
-}
-
-void RS_ActionPolylineEquidistant::showOptions() {
-	RS_ActionInterface::showOptions();
-
-	RS_DIALOGFACTORY->requestOptions(this, true);
-}
-
-
-
-void RS_ActionPolylineEquidistant::hideOptions() {
-	RS_ActionInterface::hideOptions();
-
-	RS_DIALOGFACTORY->requestOptions(this, false);
-}
-
-void RS_ActionPolylineEquidistant::updateMouseCursor() {
-	graphicView->setMouseCursor(RS2::CadCursor);
-}
-
-void RS_ActionPolylineEquidistant::updateMouseButtonHints() {
-	switch (getStatus()) {
-	case ChooseEntity:
-		RS_DIALOGFACTORY->updateMouseWidget(tr("Choose the original polyline"),
-											tr("Cancel"));
-		break;
-	default:
-		RS_DIALOGFACTORY->updateMouseWidget("", "");
-		break;
-	}
-}
-
-void RS_ActionPolylineEquidistant::updateToolBar() {
-	switch (getStatus()) {
-	case ChooseEntity:
-		RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
-		break;
-	default:
-		RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarPolylines);
-		break;
-	}
-}
-// EOF
+
+#include "rs_actionpolylineequidistant.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_polyline.h"
+#include "rs_information.h"
+
+RS_ActionPolylineEquidistant::RS_ActionPolylineEquidistant(RS_EntityContainer& container,
+		RS_GraphicView& graphicView)
+		:RS_PreviewActionInterface("Create Equidistant Polylines",
+						   container, graphicView) {
+	dist = 1.0;
+}
+
+
+QAction* RS_ActionPolylineEquidistant::createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/) {
+	QAction* action = new QAction(tr("Create &Equidistant Polylines"), NULL);
+	action->setShortcut(QKeySequence());
+	action->setStatusTip(tr("Create Equidistant Polylines"));
+	return action;
+}
+
+void RS_ActionPolylineEquidistant::init(int status) {
+	RS_ActionInterface::init(status);
+	originalEntity = NULL;
+	targetPoint = RS_Vector(false);
+	bRightSide = false;
+}
+
+bool RS_ActionPolylineEquidistant::makeContour() {
+	if (container==NULL) {
+		RS_DEBUG->print("RS_ActionPolylineEquidistant::makeContour: no valid container",
+						RS_Debug::D_WARNING);
+		return false;
+	}
+
+	RS_Vector offset(false);
+        QList<RS_Entity*> addList;
+
+	if (document!=NULL) {
+		document->startUndoCycle();
+	}
+	double neg = 1.0;
+	if(bRightSide)
+		neg = -1.0;
+	// Create new entites
+	RS_Line line1(NULL, RS_LineData(RS_Vector(true), RS_Vector(true)));
+	RS_Line line2(NULL, RS_LineData(RS_Vector(true), RS_Vector(true)));
+	for (int num=1;
+			num<=number || (number==0 && num<=1);
+			num++) {
+		RS_Polyline* newPolyline = new RS_Polyline(container);
+		newPolyline->setClosed(((RS_Polyline*)originalEntity)->isClosed());
+//		newPolyline->setSelected((RS_Polyline*)originalEntity)->isSelected());
+		newPolyline->setLayer(((RS_Polyline*)originalEntity)->getLayer());
+		newPolyline->setPen(((RS_Polyline*)originalEntity)->getPen());
+
+		bool first = true;
+		RS_Entity* lastEntity = ((RS_Polyline*)originalEntity)->lastEntity();
+		for (RS_Entity* en=((RS_Polyline*)originalEntity)->firstEntity(); en!=NULL; en=((RS_Polyline*)originalEntity)->nextEntity()) {
+			double bulge = 0.0;
+			if (en->rtti()==RS2::EntityArc) {
+				double r0 = ((RS_Arc*)en)->getRadius();
+				double r = r0 - dist*neg;
+				if(r < 0)
+					break;
+				((RS_Arc*)en)->setRadius(r);
+				bulge = ((RS_Arc*)en)->getBulge();
+				((RS_Arc*)en)->setRadius(r0);
+			} else {
+				bulge = 0.0;
+			}
+			RS_Vector v1 = ((RS_AtomicEntity*)en)->getStartpoint();
+			RS_Vector v2 = ((RS_AtomicEntity*)en)->getEndpoint();
+			offset.set(dist * cos(v1.angleTo(v2)+M_PI*0.5*neg), dist * sin(v1.angleTo(v2)+M_PI*0.5*neg));
+			v1.move(offset*num);
+			v2.move(offset*num);
+			if (first) {
+				line1.setStartpoint(v1);
+				line1.setEndpoint(v2);
+				if(newPolyline->isClosed()){
+					RS_Vector v01 = ((RS_AtomicEntity*)lastEntity)->getStartpoint();
+					RS_Vector v02 = ((RS_AtomicEntity*)en)->getStartpoint();
+					offset.set(dist * cos(v01.angleTo(v02)+M_PI*0.5*neg), dist * sin(v01.angleTo(v02)+M_PI*0.5*neg));
+					v01.move(offset*num);
+					v02.move(offset*num);
+					line2.setStartpoint(v01);
+					line2.setEndpoint(v02);
+					RS_VectorSolutions vsol = RS_Information::getIntersection(&line1, &line2, false);
+					v1 = vsol.get(0);
+				}
+				newPolyline->setStartpoint(v1);
+				newPolyline->addVertex(v1, bulge);
+				first = false;
+			}else{
+				line2.setStartpoint(v1);
+				line2.setEndpoint(v2);
+				RS_VectorSolutions vsol = RS_Information::getIntersection(&line1, &line2, false);
+				RS_Vector v = vsol.get(0);
+				newPolyline->addVertex(v, bulge);
+				newPolyline->setEndpoint(v);
+				line1.setStartpoint(v1);
+				line1.setEndpoint(v2);
+				if (en==lastEntity/* && newPolyline->isClosed()==false*/){
+					newPolyline->addVertex(v2, bulge);
+				}
+			}
+		}
+		double bulge = lastEntity->rtti() == RS2::EntityArc? ((RS_Arc*)lastEntity)->getBulge():0.0;
+//		newPolyline->setNextBulge(bulge);
+		newPolyline->endPolyline();
+		container->addEntity(newPolyline);
+		document->addUndoable(newPolyline);
+	}
+	if (document!=NULL) {
+		document->endUndoCycle();
+	}
+
+	if (graphicView!=NULL) {
+		graphicView->redraw();
+	}
+
+	return true;
+}
+
+void RS_ActionPolylineEquidistant::trigger() {
+
+	RS_DEBUG->print("RS_ActionPolylineEquidistant::trigger()");
+
+	if (originalEntity!=NULL && targetPoint.valid ) {
+
+		originalEntity->setHighlighted(false);
+		graphicView->drawEntity(originalEntity);
+
+		makeContour();
+
+		originalEntity = NULL;
+		targetPoint = RS_Vector(false);
+		bRightSide = false;
+		setStatus(ChooseEntity);
+
+		RS_DIALOGFACTORY->updateSelectionWidget(container->countSelected());
+	}
+////////////////////////////////////////2006/06/15
+		graphicView->redraw();
+////////////////////////////////////////
+}
+
+
+
+void RS_ActionPolylineEquidistant::mouseMoveEvent(QMouseEvent* e) {
+	RS_DEBUG->print("RS_ActionPolylineEquidistant::mouseMoveEvent begin");
+
+	switch (getStatus()) {
+	case ChooseEntity:
+		snapPoint(e);
+		break;
+	default:
+		break;
+	}
+
+	RS_DEBUG->print("RS_ActionPolylineEquidistant::mouseMoveEvent end");
+}
+
+
+
+void RS_ActionPolylineEquidistant::mouseReleaseEvent(QMouseEvent* e) {
+        if (e->button()==Qt::LeftButton) {
+		switch (getStatus()) {
+		case ChooseEntity:
+			originalEntity = catchEntity(e);
+			if (originalEntity==NULL) {
+				RS_DIALOGFACTORY->commandMessage(tr("No Entity found."));
+			} else if (originalEntity->rtti()!=RS2::EntityPolyline) {
+
+				RS_DIALOGFACTORY->commandMessage(
+					tr("Entity must be a polyline."));
+			} else {
+				targetPoint = snapPoint(e);
+				originalEntity->setHighlighted(true);
+				graphicView->drawEntity(originalEntity);
+				double d = graphicView->toGraphDX(snapRange)*0.9;
+				RS_Entity* Segment =  ((RS_Polyline*)originalEntity)->getNearestEntity( targetPoint, &d, RS2::ResolveNone);
+				double ang = ((RS_Line*)Segment)->getAngle1();
+				double ang1 = ((RS_Line*)Segment)->getStartpoint().angleTo(RS_Vector(targetPoint));
+				if( ang > ang1 || ang + M_PI < ang1 )
+					bRightSide = true;
+////////////////////////////////////////2006/06/15
+		graphicView->redraw();
+////////////////////////////////////////
+				trigger();
+			}
+			break;
+		default:
+			break;
+		}
+        } else if (e->button()==Qt::RightButton) {
+		deleteSnapper();
+		if (originalEntity!=NULL) {
+			originalEntity->setHighlighted(false);
+			graphicView->drawEntity(originalEntity);
+////////////////////////////////////////2006/06/15
+		graphicView->redraw();
+////////////////////////////////////////
+		}
+		init(getStatus()-1);
+	}
+}
+
+void RS_ActionPolylineEquidistant::showOptions() {
+	RS_ActionInterface::showOptions();
+
+	RS_DIALOGFACTORY->requestOptions(this, true);
+}
+
+
+
+void RS_ActionPolylineEquidistant::hideOptions() {
+	RS_ActionInterface::hideOptions();
+
+	RS_DIALOGFACTORY->requestOptions(this, false);
+}
+
+void RS_ActionPolylineEquidistant::updateMouseCursor() {
+	graphicView->setMouseCursor(RS2::CadCursor);
+}
+
+void RS_ActionPolylineEquidistant::updateMouseButtonHints() {
+	switch (getStatus()) {
+	case ChooseEntity:
+		RS_DIALOGFACTORY->updateMouseWidget(tr("Choose the original polyline"),
+											tr("Cancel"));
+		break;
+	default:
+		RS_DIALOGFACTORY->updateMouseWidget("", "");
+		break;
+	}
+}
+
+void RS_ActionPolylineEquidistant::updateToolBar() {
+	switch (getStatus()) {
+	case ChooseEntity:
+		RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
+		break;
+	default:
+		RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarPolylines);
+		break;
+	}
+}
+// EOF
diff --git a/src/actions/rs_actionpolylineequidistant.h b/src/actions/rs_actionpolylineequidistant.h
index 93f5302..6985c4f 100644
--- a/src/actions/rs_actionpolylineequidistant.h
+++ b/src/actions/rs_actionpolylineequidistant.h
@@ -23,74 +23,73 @@
 ** This copyright notice MUST APPEAR in all copies of the script!  
 **
 **********************************************************************/
-#ifndef RS_ACTIONPOLYLINEEQUIDISTANT_H
-#define RS_ACTIONPOLYLINEEQUIDISTANT_H
-
-#include "rs_previewactioninterface.h"
-#include "rs_modification.h"
-
-/**
- * This action class can handle user events to move entities.
- *
- * @author Andrew Mustun
- */
-class RS_ActionPolylineEquidistant : public RS_PreviewActionInterface {
-	Q_OBJECT
-public:
-	/**
-	 * Action States.
-	 */
-	enum Status {
-		ChooseEntity			/**< Choosing the original polyline. */
-	};
-
-public:
-	RS_ActionPolylineEquidistant(RS_EntityContainer& container,
-						RS_GraphicView& graphicView);
-	~RS_ActionPolylineEquidistant() {}
+#ifndef RS_ACTIONPOLYLINEEQUIDISTANT_H
+#define RS_ACTIONPOLYLINEEQUIDISTANT_H
+
+#include "rs_previewactioninterface.h"
+
+/**
+ * This action class can handle user events to move entities.
+ *
+ * @author Andrew Mustun
+ */
+class RS_ActionPolylineEquidistant : public RS_PreviewActionInterface {
+	Q_OBJECT
+public:
+	/**
+	 * Action States.
+	 */
+	enum Status {
+		ChooseEntity			/**< Choosing the original polyline. */
+	};
+
+public:
+	RS_ActionPolylineEquidistant(RS_EntityContainer& container,
+						RS_GraphicView& graphicView);
+	~RS_ActionPolylineEquidistant() {}
 	virtual RS2::ActionType rtti() {
 		return RS2::ActionPolylineEquidistant;
-	}
+	}
 
-	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
-
-	virtual void init(int status=0);
-	
-	virtual void trigger();
-
-	virtual void mouseMoveEvent(RS_MouseEvent* e);
-	virtual void mouseReleaseEvent(RS_MouseEvent* e);
-	
-	virtual void updateMouseButtonHints();
-	virtual void updateMouseCursor();
-	virtual void updateToolBar();
+	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
+
+	virtual void init(int status=0);
+	
+	virtual void trigger();
+
+        virtual void mouseMoveEvent(QMouseEvent* e);
+        virtual void mouseReleaseEvent(QMouseEvent* e);
+	
+	virtual void updateMouseButtonHints();
+	virtual void updateMouseCursor();
+	virtual void updateToolBar();
 	virtual void showOptions();
 	virtual void hideOptions();
-
-	void setDist(double d) {
-		dist = d;
-	}
-
-	double getDist() {
-		return dist;
-	}
-
-	void setNumber(int n) {
-		number = n;
-	}
-
-	int getNumber() {
-		return number;
-	}
-
-	bool makeContour();
-
-private:
-	RS_Entity* originalEntity;
-	RS_Vector targetPoint;
-	double dist;
-	int number;
-	bool bRightSide;
-};
-
-#endif
+
+	void setDist(double d) {
+		dist = d;
+	}
+
+	double getDist() {
+		return dist;
+	}
+
+	void setNumber(int n) {
+		number = n;
+	}
+
+	int getNumber() {
+		return number;
+	}
+
+	bool makeContour();
+
+private:
+	RS_Entity* originalEntity;
+	RS_Vector targetPoint;
+	double dist;
+	int number;
+	bool bRightSide;
+};
+
+#endif
diff --git a/src/actions/rs_actionpolylinesegment.cpp b/src/actions/rs_actionpolylinesegment.cpp
index ed1856b..af9f100 100644
--- a/src/actions/rs_actionpolylinesegment.cpp
+++ b/src/actions/rs_actionpolylinesegment.cpp
@@ -23,299 +23,302 @@
 ** This copyright notice MUST APPEAR in all copies of the script!  
 **
 **********************************************************************/
-
-#include "rs_actionpolylinesegment.h"
-#include "rs_polyline.h"
-#include "rs_snapper.h"
-
-
-
-RS_ActionPolylineSegment::RS_ActionPolylineSegment(RS_EntityContainer& container,
-        RS_GraphicView& graphicView)
-        :RS_PreviewActionInterface("Create Polyline Existing from Segments",
-                           container, graphicView) {}
-
-
-QAction* RS_ActionPolylineSegment::createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/) {
-    QAction* action = new QAction(tr("Create Polyline from Existing &Segments"), NULL);
-	action->setShortcut(QKeySequence());
-    action->setStatusTip(tr("Create Polyline from Existing Segments"));
-    return action;
-}
-
-void RS_ActionPolylineSegment::init(int status) {
-    RS_ActionInterface::init(status);
-    targetEntity = NULL;
-}
-
-/**
- * Rearranges the atomic entities in this container in a way that connected
- * entities are stored in the right order and direction.
- * Non-recoursive. Only affects atomic entities in this container.
- * 
- * @retval true all contours were closed
- * @retval false at least one contour is not closed
- */
-bool RS_ActionPolylineSegment::convertPolyline(RS_Entity* selectedEntity) {
-
-	RS_DEBUG->print("RS_ActionPolylineSegment::convertPolyline");
-
-	RS_Vector current(false);
-	RS_Vector start(false);
-	RS_Vector end(false);
-	RS_EntityContainer tmp;
-
-	bool closed = true;
-
-	int pos = container->findEntity(selectedEntity);
-	RS_Entity* e1=container->entityAt(pos);
-
-	if (document!=NULL) {
-		document->startUndoCycle();
-	}
-	if (document!=NULL) {
-		if (e1!=NULL && e1->isEdge() && !e1->isContainer() &&
-					!e1->isProcessed()) {
-
-			RS_AtomicEntity* ce = (RS_AtomicEntity*)e1;
-
-///////////////////////////////////////////////////
-			ce->setUndoState(true);
-			document->addUndoable(ce);
-///////////////////////////////////////////////////
-
-			// next contour start:
-			ce->setProcessed(true);
-			tmp.addEntity(ce->clone());
-			current = ce->getStartpoint();
-			end = ce->getEndpoint();
-
-			// find first connected entities:
-			for (int ei=pos-1; ei>=0; --ei) {
-				RS_Entity* e2=container->entityAt(ei);
-
-				if (e2!=NULL && e2->isEdge() && !e2->isContainer() &&
-						!e2->isProcessed()) {
-
-					RS_AtomicEntity* e = (RS_AtomicEntity*)e2;
-///////////////////////////////////////////////////
-					e->setUndoState(true);
-					document->addUndoable(e);
-///////////////////////////////////////////////////
-					if (e->getEndpoint().distanceTo(current) <
-							1.0e-4) {
-						e->setProcessed(true);
-						tmp.insertEntity(0,e->clone());
-						current = e->getStartpoint();
-					} else if (e->getStartpoint().distanceTo(current) <
-							   1.0e-4) {
-						e->setProcessed(true);
-						RS_AtomicEntity* cl = (RS_AtomicEntity*)e->clone();
-						cl->reverse();
-						tmp.insertEntity(0,cl);
-						current = cl->getStartpoint();
-					}else
-						break;
-				}
-			}
-
-			if (current.distanceTo(end)>1.0e-4) {
-				closed = false;
-			}
-
-			current = ce->getEndpoint();
-			start = ce->getStartpoint();
-			// find last connected entities:
-			for (uint ei=pos+1; ei<container->count(); ++ei) {
-				RS_Entity* e2=container->entityAt(ei);
-///////////////////////////////////////////////////
-				e2->setUndoState(true);
-				document->addUndoable(e2);
-///////////////////////////////////////////////////
-				if (e2!=NULL && e2->isEdge() && !e2->isContainer() &&
-						!e2->isProcessed()) {
-					RS_AtomicEntity* e = (RS_AtomicEntity*)e2;
-					if (e->getStartpoint().distanceTo(current) <
-							1.0e-4) {
-						e->setProcessed(true);
-						tmp.addEntity(e->clone());
-						current = e->getEndpoint();
-					} else if (e->getEndpoint().distanceTo(current) <
-							   1.0e-4) {
-						e->setProcessed(true);
-						RS_AtomicEntity* cl = (RS_AtomicEntity*)e->clone();
-						cl->reverse();
-						tmp.addEntity(cl);
-						current = cl->getEndpoint();
-					}else
-						break;
-				}
-			}
-			if (current.distanceTo(start)>1.0e-4) {
-				closed = false;
-			}
-		}
-	}
-	if (document!=NULL) {
-		document->endUndoCycle();
-	}
-
-	RS_Polyline* newPolyline = new RS_Polyline(container, RS_PolylineData(RS_Vector(false), RS_Vector(false), closed));
-	newPolyline->setLayerToActive();
-	newPolyline->setPenToActive();
-	// add new polyline:
-	bool first = true;
-	RS_Entity* lastEntity = tmp.lastEntity();
-	for (RS_Entity* en=tmp.firstEntity(); en!=NULL; en=tmp.nextEntity()) {
-		en->setProcessed(false);
-		double bulge = 0.0;
-		if (en->rtti()==RS2::EntityArc) {
-			bulge = ((RS_Arc*)en)->getBulge();
-		} else {
-			bulge = 0.0;
-		}
-		if (first) {
-			newPolyline->setNextBulge(bulge);
-			newPolyline->addVertex(((RS_AtomicEntity*)en)->getStartpoint());
-			first = false;
-		}
-		if (en!=lastEntity || closed==false){
-			newPolyline->setNextBulge(bulge);
-			newPolyline->addVertex(((RS_AtomicEntity*)en)->getEndpoint());
-		}
-	}
-	double bulge = lastEntity->rtti() == RS2::EntityArc? ((RS_Arc*)lastEntity)->getBulge():0.0;
-	newPolyline->setNextBulge(bulge);
-	newPolyline->endPolyline();
-	container->addEntity(newPolyline);
-
-	if (graphicView!=NULL) {
-		graphicView->drawEntity(newPolyline);
-	}
-
-	if (document!=NULL) {
-		document->startUndoCycle();
-		document->addUndoable(newPolyline);
-		document->endUndoCycle();
-	}
-	RS_DEBUG->print("RS_ActionPolylineSegment::convertPolyline: OK");
-	return closed;
-}
-
-void RS_ActionPolylineSegment::trigger() {
-
-    RS_DEBUG->print("RS_ActionPolylineSegment::trigger()");
-
-	if (targetEntity!=NULL /*&& selectedSegment!=NULL && targetPoint.valid */) {
-        targetEntity->setHighlighted(false);
-        graphicView->drawEntity(targetEntity);
-		container->optimizeContours();
-		convertPolyline(targetEntity);
-
-        targetEntity = NULL;
-        setStatus(ChooseEntity);
-
-        RS_DIALOGFACTORY->updateSelectionWidget(container->countSelected());
-    }
-////////////////////////////////////////2006/06/15
-		graphicView->redraw();
-////////////////////////////////////////
-}
-
-
-
-void RS_ActionPolylineSegment::mouseMoveEvent(RS_MouseEvent* e) {
-    RS_DEBUG->print("RS_ActionPolylineSegment::mouseMoveEvent begin");
-
-    switch (getStatus()) {
-    case ChooseEntity:
-        snapPoint(e);
-        break;
-    default:
-        break;
-    }
-
-
-    RS_DEBUG->print("RS_ActionPolylineSegment::mouseMoveEvent end");
-}
-
-
-
-void RS_ActionPolylineSegment::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
-        switch (getStatus()) {
-        case ChooseEntity:
-            targetEntity = catchEntity(e);
-            if (targetEntity==NULL) {
-                RS_DIALOGFACTORY->commandMessage(tr("No Entity found."));
-            } else if (targetEntity->rtti()!=RS2::EntityLine && targetEntity->rtti()!=RS2::EntityArc) {
-                RS_DIALOGFACTORY->commandMessage(
-                    tr("Entity must be a line or arc."));
-            } else {
-                targetEntity->setHighlighted(true);
-                graphicView->drawEntity(targetEntity);
-//                setStatus(SetReferencePoint);
-////////////////////////////////////////2006/06/15
-				graphicView->redraw();
-////////////////////////////////////////
-            	trigger();
-            }
-            break;
-        default:
-            break;
-        }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
-        deleteSnapper();
-        if (targetEntity!=NULL) {
-            targetEntity->setHighlighted(false);
-            graphicView->drawEntity(targetEntity);
-////////////////////////////////////////2006/06/15
-		graphicView->redraw();
-////////////////////////////////////////
-        }
-        init(getStatus()-1);
-    }
-/*    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
-        RS_CoordinateEvent ce(snapPoint(e));
-        coordinateEvent(&ce);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
-        deletePreview();
-        deleteSnapper
-        init(getStatus()-1);
-    }
-*/
-}
-
-void RS_ActionPolylineSegment::updateMouseButtonHints() {
-    switch (getStatus()) {
-    case ChooseEntity:
-        RS_DIALOGFACTORY->updateMouseWidget(tr("Choose one of the segments on the original polyline"),
-                                            tr("Cancel"));
-        break;
-    default:
-        RS_DIALOGFACTORY->updateMouseWidget("", "");
-        break;
-    }
-}
-
-
-
-void RS_ActionPolylineSegment::updateMouseCursor() {
-    graphicView->setMouseCursor(RS2::CadCursor);
-}
-
-
-
-void RS_ActionPolylineSegment::updateToolBar() {
-    switch (getStatus()) {
-    case ChooseEntity:
-        RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
-        break;
-    default:
-        RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarPolylines);
-        break;
-    }
-}
-
-
-// EOF
+
+#include "rs_actionpolylinesegment.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_polyline.h"
+
+
+
+RS_ActionPolylineSegment::RS_ActionPolylineSegment(RS_EntityContainer& container,
+        RS_GraphicView& graphicView)
+        :RS_PreviewActionInterface("Create Polyline Existing from Segments",
+                           container, graphicView) {}
+
+
+QAction* RS_ActionPolylineSegment::createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/) {
+    QAction* action = new QAction(tr("Create Polyline from Existing &Segments"), NULL);
+	action->setShortcut(QKeySequence());
+    action->setStatusTip(tr("Create Polyline from Existing Segments"));
+    return action;
+}
+
+void RS_ActionPolylineSegment::init(int status) {
+    RS_ActionInterface::init(status);
+    targetEntity = NULL;
+}
+
+/**
+ * Rearranges the atomic entities in this container in a way that connected
+ * entities are stored in the right order and direction.
+ * Non-recoursive. Only affects atomic entities in this container.
+ * 
+ * @retval true all contours were closed
+ * @retval false at least one contour is not closed
+ */
+bool RS_ActionPolylineSegment::convertPolyline(RS_Entity* selectedEntity) {
+
+	RS_DEBUG->print("RS_ActionPolylineSegment::convertPolyline");
+
+	RS_Vector current(false);
+	RS_Vector start(false);
+	RS_Vector end(false);
+	RS_EntityContainer tmp;
+
+	bool closed = true;
+
+	int pos = container->findEntity(selectedEntity);
+	RS_Entity* e1=container->entityAt(pos);
+
+	if (document!=NULL) {
+		document->startUndoCycle();
+	}
+	if (document!=NULL) {
+		if (e1!=NULL && e1->isEdge() && !e1->isContainer() &&
+					!e1->isProcessed()) {
+
+			RS_AtomicEntity* ce = (RS_AtomicEntity*)e1;
+
+///////////////////////////////////////////////////
+			ce->setUndoState(true);
+			document->addUndoable(ce);
+///////////////////////////////////////////////////
+
+			// next contour start:
+			ce->setProcessed(true);
+			tmp.addEntity(ce->clone());
+			current = ce->getStartpoint();
+			end = ce->getEndpoint();
+
+			// find first connected entities:
+			for (int ei=pos-1; ei>=0; --ei) {
+				RS_Entity* e2=container->entityAt(ei);
+
+				if (e2!=NULL && e2->isEdge() && !e2->isContainer() &&
+						!e2->isProcessed()) {
+
+					RS_AtomicEntity* e = (RS_AtomicEntity*)e2;
+///////////////////////////////////////////////////
+					e->setUndoState(true);
+					document->addUndoable(e);
+///////////////////////////////////////////////////
+					if (e->getEndpoint().distanceTo(current) <
+							1.0e-4) {
+						e->setProcessed(true);
+						tmp.insertEntity(0,e->clone());
+						current = e->getStartpoint();
+					} else if (e->getStartpoint().distanceTo(current) <
+							   1.0e-4) {
+						e->setProcessed(true);
+						RS_AtomicEntity* cl = (RS_AtomicEntity*)e->clone();
+						cl->reverse();
+						tmp.insertEntity(0,cl);
+						current = cl->getStartpoint();
+					}else
+						break;
+				}
+			}
+
+			if (current.distanceTo(end)>1.0e-4) {
+				closed = false;
+			}
+
+			current = ce->getEndpoint();
+			start = ce->getStartpoint();
+			// find last connected entities:
+			for (uint ei=pos+1; ei<container->count(); ++ei) {
+				RS_Entity* e2=container->entityAt(ei);
+///////////////////////////////////////////////////
+				e2->setUndoState(true);
+				document->addUndoable(e2);
+///////////////////////////////////////////////////
+				if (e2!=NULL && e2->isEdge() && !e2->isContainer() &&
+						!e2->isProcessed()) {
+					RS_AtomicEntity* e = (RS_AtomicEntity*)e2;
+					if (e->getStartpoint().distanceTo(current) <
+							1.0e-4) {
+						e->setProcessed(true);
+						tmp.addEntity(e->clone());
+						current = e->getEndpoint();
+					} else if (e->getEndpoint().distanceTo(current) <
+							   1.0e-4) {
+						e->setProcessed(true);
+						RS_AtomicEntity* cl = (RS_AtomicEntity*)e->clone();
+						cl->reverse();
+						tmp.addEntity(cl);
+						current = cl->getEndpoint();
+					}else
+						break;
+				}
+			}
+			if (current.distanceTo(start)>1.0e-4) {
+				closed = false;
+			}
+		}
+	}
+	if (document!=NULL) {
+		document->endUndoCycle();
+	}
+
+	RS_Polyline* newPolyline = new RS_Polyline(container, RS_PolylineData(RS_Vector(false), RS_Vector(false), closed));
+	newPolyline->setLayerToActive();
+	newPolyline->setPenToActive();
+	// add new polyline:
+	bool first = true;
+	RS_Entity* lastEntity = tmp.lastEntity();
+	for (RS_Entity* en=tmp.firstEntity(); en!=NULL; en=tmp.nextEntity()) {
+		en->setProcessed(false);
+		double bulge = 0.0;
+		if (en->rtti()==RS2::EntityArc) {
+			bulge = ((RS_Arc*)en)->getBulge();
+		} else {
+			bulge = 0.0;
+		}
+		if (first) {
+			newPolyline->setNextBulge(bulge);
+			newPolyline->addVertex(((RS_AtomicEntity*)en)->getStartpoint());
+			first = false;
+		}
+		if (en!=lastEntity || closed==false){
+			newPolyline->setNextBulge(bulge);
+			newPolyline->addVertex(((RS_AtomicEntity*)en)->getEndpoint());
+		}
+	}
+	double bulge = lastEntity->rtti() == RS2::EntityArc? ((RS_Arc*)lastEntity)->getBulge():0.0;
+	newPolyline->setNextBulge(bulge);
+	newPolyline->endPolyline();
+	container->addEntity(newPolyline);
+
+	if (graphicView!=NULL) {
+		graphicView->drawEntity(newPolyline);
+	}
+
+	if (document!=NULL) {
+		document->startUndoCycle();
+		document->addUndoable(newPolyline);
+		document->endUndoCycle();
+	}
+	RS_DEBUG->print("RS_ActionPolylineSegment::convertPolyline: OK");
+	return closed;
+}
+
+void RS_ActionPolylineSegment::trigger() {
+
+    RS_DEBUG->print("RS_ActionPolylineSegment::trigger()");
+
+	if (targetEntity!=NULL /*&& selectedSegment!=NULL && targetPoint.valid */) {
+        targetEntity->setHighlighted(false);
+        graphicView->drawEntity(targetEntity);
+		container->optimizeContours();
+		convertPolyline(targetEntity);
+
+        targetEntity = NULL;
+        setStatus(ChooseEntity);
+
+        RS_DIALOGFACTORY->updateSelectionWidget(container->countSelected());
+    }
+////////////////////////////////////////2006/06/15
+		graphicView->redraw();
+////////////////////////////////////////
+}
+
+
+
+void RS_ActionPolylineSegment::mouseMoveEvent(QMouseEvent* e) {
+    RS_DEBUG->print("RS_ActionPolylineSegment::mouseMoveEvent begin");
+
+    switch (getStatus()) {
+    case ChooseEntity:
+        snapPoint(e);
+        break;
+    default:
+        break;
+    }
+
+
+    RS_DEBUG->print("RS_ActionPolylineSegment::mouseMoveEvent end");
+}
+
+
+
+void RS_ActionPolylineSegment::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
+        switch (getStatus()) {
+        case ChooseEntity:
+            targetEntity = catchEntity(e);
+            if (targetEntity==NULL) {
+                RS_DIALOGFACTORY->commandMessage(tr("No Entity found."));
+            } else if (targetEntity->rtti()!=RS2::EntityLine && targetEntity->rtti()!=RS2::EntityArc) {
+                RS_DIALOGFACTORY->commandMessage(
+                    tr("Entity must be a line or arc."));
+            } else {
+                targetEntity->setHighlighted(true);
+                graphicView->drawEntity(targetEntity);
+//                setStatus(SetReferencePoint);
+////////////////////////////////////////2006/06/15
+				graphicView->redraw();
+////////////////////////////////////////
+            	trigger();
+            }
+            break;
+        default:
+            break;
+        }
+    } else if (e->button()==Qt::RightButton) {
+        deleteSnapper();
+        if (targetEntity!=NULL) {
+            targetEntity->setHighlighted(false);
+            graphicView->drawEntity(targetEntity);
+////////////////////////////////////////2006/06/15
+		graphicView->redraw();
+////////////////////////////////////////
+        }
+        init(getStatus()-1);
+    }
+/*    if (e->button())==Qt::LeftButton) {
+        RS_CoordinateEvent ce(snapPoint(e));
+        coordinateEvent(&ce);
+    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+        deletePreview();
+        deleteSnapper
+        init(getStatus()-1);
+    }
+*/
+}
+
+void RS_ActionPolylineSegment::updateMouseButtonHints() {
+    switch (getStatus()) {
+    case ChooseEntity:
+        RS_DIALOGFACTORY->updateMouseWidget(tr("Choose one of the segments on the original polyline"),
+                                            tr("Cancel"));
+        break;
+    default:
+        RS_DIALOGFACTORY->updateMouseWidget("", "");
+        break;
+    }
+}
+
+
+
+void RS_ActionPolylineSegment::updateMouseCursor() {
+    graphicView->setMouseCursor(RS2::CadCursor);
+}
+
+
+
+void RS_ActionPolylineSegment::updateToolBar() {
+    switch (getStatus()) {
+    case ChooseEntity:
+        RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
+        break;
+    default:
+        RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarPolylines);
+        break;
+    }
+}
+
+
+// EOF
diff --git a/src/actions/rs_actionpolylinesegment.h b/src/actions/rs_actionpolylinesegment.h
index 37f68f9..4d58333 100644
--- a/src/actions/rs_actionpolylinesegment.h
+++ b/src/actions/rs_actionpolylinesegment.h
@@ -23,48 +23,47 @@
 ** This copyright notice MUST APPEAR in all copies of the script!  
 **
 **********************************************************************/
-#ifndef RS_ACTIONPOLYLINESEGMENT_H
-#define RS_ACTIONPOLYLINESEGMENT_H
-
-#include "rs_previewactioninterface.h"
-#include "rs_modification.h"
-
-/**
- * This action class can handle user events to move entities.
- *
- * @author Andrew Mustun
- */
-class RS_ActionPolylineSegment : public RS_PreviewActionInterface {
-	Q_OBJECT
-public:
-    /**
-     * Action States.
-     */
-    enum Status {
-    	ChooseEntity	/**< Choosing one of the polyline segments. */
-    };
-
-public:
-    RS_ActionPolylineSegment(RS_EntityContainer& container,
-                        RS_GraphicView& graphicView);
-    ~RS_ActionPolylineSegment() {}
-
-	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
-
-    virtual void init(int status=0);
-	
-    virtual void trigger();
-	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
-	
-    virtual void updateMouseButtonHints();
-    virtual void updateMouseCursor();
-    virtual void updateToolBar();
-	virtual bool convertPolyline(RS_Entity* selectedEntity);
-
-private:
-    RS_Entity* targetEntity;
-};
-
-#endif
+#ifndef RS_ACTIONPOLYLINESEGMENT_H
+#define RS_ACTIONPOLYLINESEGMENT_H
+
+#include "rs_previewactioninterface.h"
+
+/**
+ * This action class can handle user events to move entities.
+ *
+ * @author Andrew Mustun
+ */
+class RS_ActionPolylineSegment : public RS_PreviewActionInterface {
+	Q_OBJECT
+public:
+    /**
+     * Action States.
+     */
+    enum Status {
+    	ChooseEntity	/**< Choosing one of the polyline segments. */
+    };
+
+public:
+    RS_ActionPolylineSegment(RS_EntityContainer& container,
+                        RS_GraphicView& graphicView);
+    ~RS_ActionPolylineSegment() {}
+
+	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
+
+    virtual void init(int status=0);
+	
+    virtual void trigger();
+	
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
+	
+    virtual void updateMouseButtonHints();
+    virtual void updateMouseCursor();
+    virtual void updateToolBar();
+	virtual bool convertPolyline(RS_Entity* selectedEntity);
+
+private:
+    RS_Entity* targetEntity;
+};
+
+#endif
diff --git a/src/actions/rs_actionpolylinetrim.cpp b/src/actions/rs_actionpolylinetrim.cpp
index 532bafe..dd06000 100644
--- a/src/actions/rs_actionpolylinetrim.cpp
+++ b/src/actions/rs_actionpolylinetrim.cpp
@@ -25,8 +25,12 @@
 **********************************************************************/
 
 #include "rs_actionpolylinetrim.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_modification.h"
 #include "rs_polyline.h"
-#include "rs_snapper.h"
 
 
 
@@ -75,7 +79,7 @@ void RS_ActionPolylineTrim::trigger() {
 
 
 
-void RS_ActionPolylineTrim::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionPolylineTrim::mouseMoveEvent(QMouseEvent* e) {
 	RS_DEBUG->print("RS_ActionPolylineTrim::mouseMoveEvent begin");
 
 	switch (getStatus()) {
@@ -96,8 +100,8 @@ void RS_ActionPolylineTrim::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionPolylineTrim::mouseReleaseEvent(RS_MouseEvent* e) {
-	if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionPolylineTrim::mouseReleaseEvent(QMouseEvent* e) {
+        if (e->button()==Qt::LeftButton) {
 		RS_Vector cPoint;
 		switch (getStatus()) {
 		case ChooseEntity:
@@ -160,7 +164,7 @@ void RS_ActionPolylineTrim::mouseReleaseEvent(RS_MouseEvent* e) {
 		default:
 			break;
 		}
-	} else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+        } else if (e->button()==Qt::RightButton) {
 		deleteSnapper();
 		if (delEntity!=NULL) {
 			delEntity->setHighlighted(false);
diff --git a/src/actions/rs_actionpolylinetrim.h b/src/actions/rs_actionpolylinetrim.h
index d8ecb90..f54defb 100644
--- a/src/actions/rs_actionpolylinetrim.h
+++ b/src/actions/rs_actionpolylinetrim.h
@@ -23,51 +23,50 @@
 ** This copyright notice MUST APPEAR in all copies of the script!  
 **
 **********************************************************************/
-#ifndef RS_ACTIONPOLYLINETRIM_H
-#define RS_ACTIONPOLYLINETRIM_H
-
-#include "rs_previewactioninterface.h"
-#include "rs_modification.h"
-
-/**
- * This action class can handle user events to move entities.
- *
- * @author Andrew Mustun
- */
-class RS_ActionPolylineTrim : public RS_PreviewActionInterface {
-	Q_OBJECT
-public:
-    /**
-     * Action States.
-     */
-    enum Status {
-    	ChooseEntity,			/**< Choosing existing polyline to trim. */
-        SetSegment1,    /**< Setting first segment. */
-        SetSegment2       /**< Setting second segment. */
-    };
-
-public:
-    RS_ActionPolylineTrim(RS_EntityContainer& container,
-                        RS_GraphicView& graphicView);
-    ~RS_ActionPolylineTrim() {}
-
-	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
-
-    virtual void init(int status=0);
-	
-    virtual void trigger();
-	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
-	
-    virtual void updateMouseButtonHints();
-    virtual void updateMouseCursor();
-    virtual void updateToolBar();
-
-private:
-    RS_Entity* delEntity;
-	RS_AtomicEntity* Segment1;
-	RS_AtomicEntity* Segment2;
-};
-
-#endif
+#ifndef RS_ACTIONPOLYLINETRIM_H
+#define RS_ACTIONPOLYLINETRIM_H
+
+#include "rs_previewactioninterface.h"
+
+/**
+ * This action class can handle user events to move entities.
+ *
+ * @author Andrew Mustun
+ */
+class RS_ActionPolylineTrim : public RS_PreviewActionInterface {
+	Q_OBJECT
+public:
+    /**
+     * Action States.
+     */
+    enum Status {
+    	ChooseEntity,			/**< Choosing existing polyline to trim. */
+        SetSegment1,    /**< Setting first segment. */
+        SetSegment2       /**< Setting second segment. */
+    };
+
+public:
+    RS_ActionPolylineTrim(RS_EntityContainer& container,
+                        RS_GraphicView& graphicView);
+    ~RS_ActionPolylineTrim() {}
+
+	static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
+
+    virtual void init(int status=0);
+	
+    virtual void trigger();
+	
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
+	
+    virtual void updateMouseButtonHints();
+    virtual void updateMouseCursor();
+    virtual void updateToolBar();
+
+private:
+    RS_Entity* delEntity;
+	RS_AtomicEntity* Segment1;
+	RS_AtomicEntity* Segment2;
+};
+
+#endif
diff --git a/src/actions/rs_actionprintpreview.cpp b/src/actions/rs_actionprintpreview.cpp
index feebd05..83c288d 100644
--- a/src/actions/rs_actionprintpreview.cpp
+++ b/src/actions/rs_actionprintpreview.cpp
@@ -26,6 +26,11 @@
 
 #include "rs_actionprintpreview.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_graphic.h"
+
 /**
  * Constructor.
  */
@@ -67,7 +72,7 @@ void RS_ActionPrintPreview::trigger() {}
 
 
 
-void RS_ActionPrintPreview::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionPrintPreview::mouseMoveEvent(QMouseEvent* e) {
 	switch (getStatus()) {
 	case Moving:
 		v2 = graphicView->toGraph(e->x(), e->y());
@@ -89,8 +94,8 @@ void RS_ActionPrintPreview::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionPrintPreview::mousePressEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionPrintPreview::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case Neutral:
             v1 = graphicView->toGraph(e->x(), e->y());
@@ -104,7 +109,7 @@ void RS_ActionPrintPreview::mousePressEvent(RS_MouseEvent* e) {
 }
 
 
-void RS_ActionPrintPreview::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionPrintPreview::mouseReleaseEvent(QMouseEvent* e) {
 	switch (getStatus()) {
 	case Moving:
 		setStatus(Neutral);
@@ -127,8 +132,8 @@ void RS_ActionPrintPreview::commandEvent(RS_CommandEvent* ) {}
 
 
 
-RS_StringList RS_ActionPrintPreview::getAvailableCommands() {
-    RS_StringList cmd;
+QStringList RS_ActionPrintPreview::getAvailableCommands() {
+    QStringList cmd;
     return cmd;
 }
 
diff --git a/src/actions/rs_actionprintpreview.h b/src/actions/rs_actionprintpreview.h
index a33c203..1428422 100644
--- a/src/actions/rs_actionprintpreview.h
+++ b/src/actions/rs_actionprintpreview.h
@@ -60,13 +60,13 @@ public:
 
     virtual void trigger();
 
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mousePressEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mousePressEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 
     virtual void coordinateEvent(RS_CoordinateEvent* e);
     virtual void commandEvent(RS_CommandEvent* e);
-	virtual RS_StringList getAvailableCommands();
+        virtual QStringList getAvailableCommands();
 
 	virtual void showOptions();
 	virtual void hideOptions();
diff --git a/src/actions/rs_actionselect.cpp b/src/actions/rs_actionselect.cpp
index fdb9ea2..433c8f4 100644
--- a/src/actions/rs_actionselect.cpp
+++ b/src/actions/rs_actionselect.cpp
@@ -26,7 +26,8 @@
 
 #include "rs_actionselect.h"
 
-#include "rs_snapper.h"
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_actionselectsingle.h"
 
 
@@ -48,8 +49,8 @@ void RS_ActionSelect::init(int status) {
 
 
 
-void RS_ActionSelect::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionSelect::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     }
 }
diff --git a/src/actions/rs_actionselect.h b/src/actions/rs_actionselect.h
index 6f35b1c..93cb005 100644
--- a/src/actions/rs_actionselect.h
+++ b/src/actions/rs_actionselect.h
@@ -44,8 +44,8 @@ public:
     ~RS_ActionSelect() {}
 
     void init(int status);
-    //virtual void keyPressEvent(RS_KeyEvent* e);
-    void mouseReleaseEvent(RS_MouseEvent* e);
+    //virtual void keyPressEvent(QKeyEvent* e);
+    void mouseReleaseEvent(QMouseEvent* e);
     void updateToolBar();
 
 private:
diff --git a/src/actions/rs_actionselectall.cpp b/src/actions/rs_actionselectall.cpp
index b7b090a..8d1f85e 100644
--- a/src/actions/rs_actionselectall.cpp
+++ b/src/actions/rs_actionselectall.cpp
@@ -25,6 +25,9 @@
 **********************************************************************/
 
 #include "rs_actionselectall.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
 #include "rs_selection.h"
 
 RS_ActionSelectAll::RS_ActionSelectAll(RS_EntityContainer& container,
diff --git a/src/actions/rs_actionselectbase.cpp b/src/actions/rs_actionselectbase.cpp
index 460e3f2..0ae6480 100644
--- a/src/actions/rs_actionselectbase.cpp
+++ b/src/actions/rs_actionselectbase.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionselectbase.h"
 
+#include "rs_graphicview.h"
 
 
 RS_ActionSelectBase::RS_ActionSelectBase(const char* name,
@@ -40,7 +41,7 @@ RS_ActionSelectBase::RS_ActionSelectBase(const char* name,
  * Default behaviour of this method is triggering the predecesing
  * action and finishing this one when the enter key is pressed.
  */
-void RS_ActionSelectBase::keyReleaseEvent(RS_KeyEvent* e) {
+void RS_ActionSelectBase::keyReleaseEvent(QKeyEvent* e) {
     if (e->key()==Qt::Key_Return && predecessor!=NULL) {
         finish();
     }
diff --git a/src/actions/rs_actionselectbase.h b/src/actions/rs_actionselectbase.h
index f1de359..559b893 100644
--- a/src/actions/rs_actionselectbase.h
+++ b/src/actions/rs_actionselectbase.h
@@ -43,7 +43,7 @@ public:
                         RS_GraphicView& graphicView);
     ~RS_ActionSelectBase() {}
 
-    virtual void keyReleaseEvent(RS_KeyEvent* e);
+    virtual void keyReleaseEvent(QKeyEvent* e);
     virtual void updateMouseCursor();
 };
 
diff --git a/src/actions/rs_actionselectcontour.cpp b/src/actions/rs_actionselectcontour.cpp
index 6ec3552..61233f1 100644
--- a/src/actions/rs_actionselectcontour.cpp
+++ b/src/actions/rs_actionselectcontour.cpp
@@ -26,8 +26,11 @@
 
 #include "rs_actionselectcontour.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_selection.h"
 #include "rs_selection.h"
-#include "rs_snapper.h"
 
 
 
@@ -69,8 +72,8 @@ void RS_ActionSelectContour::trigger() {
 
 
 
-void RS_ActionSelectContour::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionSelectContour::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     } else {
         en = catchEntity(e);
diff --git a/src/actions/rs_actionselectcontour.h b/src/actions/rs_actionselectcontour.h
index 6bd9124..6aef4e7 100644
--- a/src/actions/rs_actionselectcontour.h
+++ b/src/actions/rs_actionselectcontour.h
@@ -49,7 +49,7 @@ public:
 	}
 
     virtual void trigger();
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseCursor();
 
 private:
diff --git a/src/actions/rs_actionselectintersected.cpp b/src/actions/rs_actionselectintersected.cpp
index 037c226..e62bca2 100644
--- a/src/actions/rs_actionselectintersected.cpp
+++ b/src/actions/rs_actionselectintersected.cpp
@@ -26,8 +26,9 @@
 
 #include "rs_actionselectintersected.h"
 
-#include "rs.h"
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_selection.h"
 
 
@@ -93,7 +94,7 @@ void RS_ActionSelectIntersected::trigger() {
 
 
 
-void RS_ActionSelectIntersected::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionSelectIntersected::mouseMoveEvent(QMouseEvent* e) {
     if (getStatus()==SetPoint2 && v1.valid) {
         v2 = snapPoint(e);
         deletePreview();
@@ -106,8 +107,8 @@ void RS_ActionSelectIntersected::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionSelectIntersected::mousePressEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionSelectIntersected::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case SetPoint1:
             v1 = snapPoint(e);
@@ -125,14 +126,14 @@ void RS_ActionSelectIntersected::mousePressEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionSelectIntersected::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionSelectIntersected::mouseReleaseEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionSelectIntersected::mouseReleaseEvent()");
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    if (e->button()==Qt::RightButton) {
         if (getStatus()==SetPoint2) {
             deletePreview();
         }
         init(getStatus()-1);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    } else if (e->button()==Qt::LeftButton) {
         if (getStatus()==SetPoint2) {
             v2 = snapPoint(e);
             trigger();
diff --git a/src/actions/rs_actionselectintersected.h b/src/actions/rs_actionselectintersected.h
index 0ffdcd9..5e6098a 100644
--- a/src/actions/rs_actionselectintersected.h
+++ b/src/actions/rs_actionselectintersected.h
@@ -63,9 +63,9 @@ public:
 	
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mousePressEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mousePressEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
diff --git a/src/actions/rs_actionselectinvert.cpp b/src/actions/rs_actionselectinvert.cpp
index 230704d..93fb42a 100644
--- a/src/actions/rs_actionselectinvert.cpp
+++ b/src/actions/rs_actionselectinvert.cpp
@@ -25,6 +25,9 @@
 **********************************************************************/
 
 #include "rs_actionselectinvert.h"
+
+#include <QAction>
+#include "rs_dialogfactory.h"
 #include "rs_selection.h"
 
 RS_ActionSelectInvert::RS_ActionSelectInvert(RS_EntityContainer& container,
diff --git a/src/actions/rs_actionselectlayer.cpp b/src/actions/rs_actionselectlayer.cpp
index 3255502..56cc3bc 100644
--- a/src/actions/rs_actionselectlayer.cpp
+++ b/src/actions/rs_actionselectlayer.cpp
@@ -26,6 +26,8 @@
 
 #include "rs_actionselectlayer.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
 #include "rs_selection.h"
 
 
@@ -60,8 +62,8 @@ void RS_ActionSelectLayer::trigger() {
 
 
 
-void RS_ActionSelectLayer::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionSelectLayer::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     } else {
         en = catchEntity(e);
diff --git a/src/actions/rs_actionselectlayer.h b/src/actions/rs_actionselectlayer.h
index 99db828..61733a3 100644
--- a/src/actions/rs_actionselectlayer.h
+++ b/src/actions/rs_actionselectlayer.h
@@ -49,7 +49,7 @@ public:
 	}
 
     virtual void trigger();
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseCursor();
 
 private:
diff --git a/src/actions/rs_actionselectsingle.cpp b/src/actions/rs_actionselectsingle.cpp
index a857499..594ff3e 100644
--- a/src/actions/rs_actionselectsingle.cpp
+++ b/src/actions/rs_actionselectsingle.cpp
@@ -26,7 +26,8 @@
 
 #include "rs_actionselectsingle.h"
 
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
 #include "rs_selection.h"
 
 
@@ -59,15 +60,15 @@ void RS_ActionSelectSingle::trigger() {
 }
 
 
-void RS_ActionSelectSingle::keyPressEvent(RS_KeyEvent* e) {
+void RS_ActionSelectSingle::keyPressEvent(QKeyEvent* e) {
     if (e->key()==Qt::Key_Enter) {
         finish();
     }
 }
 
 
-void RS_ActionSelectSingle::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionSelectSingle::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     } else {
         en = catchEntity(e);
diff --git a/src/actions/rs_actionselectsingle.h b/src/actions/rs_actionselectsingle.h
index ecc9bf6..3ee65ba 100644
--- a/src/actions/rs_actionselectsingle.h
+++ b/src/actions/rs_actionselectsingle.h
@@ -49,8 +49,8 @@ public:
 	}
 
     virtual void trigger();
-    virtual void keyPressEvent(RS_KeyEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void keyPressEvent(QKeyEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseCursor();
 
 private:
diff --git a/src/actions/rs_actionselectwindow.cpp b/src/actions/rs_actionselectwindow.cpp
index ed5997f..1849276 100644
--- a/src/actions/rs_actionselectwindow.cpp
+++ b/src/actions/rs_actionselectwindow.cpp
@@ -26,8 +26,9 @@
 
 #include "rs_actionselectwindow.h"
 
-#include "rs.h"
-#include "rs_snapper.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_selection.h"
 #include "rs_overlaybox.h"
 
@@ -92,7 +93,7 @@ void RS_ActionSelectWindow::trigger() {
 
 
 
-void RS_ActionSelectWindow::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionSelectWindow::mouseMoveEvent(QMouseEvent* e) {
     if (getStatus()==SetCorner2 && v1.valid) {
         v2 = snapPoint(e);
         deletePreview();
@@ -126,8 +127,8 @@ void RS_ActionSelectWindow::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionSelectWindow::mousePressEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionSelectWindow::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case SetCorner1:
             v1 = snapPoint(e);
@@ -145,15 +146,15 @@ void RS_ActionSelectWindow::mousePressEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionSelectWindow::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionSelectWindow::mouseReleaseEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionSelectWindow::mouseReleaseEvent()");
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    if (e->button()==Qt::LeftButton) {
         if (getStatus()==SetCorner2) {
             v2 = snapPoint(e);
             trigger();
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         if (getStatus()==SetCorner2) {
             deletePreview();
         }
diff --git a/src/actions/rs_actionselectwindow.h b/src/actions/rs_actionselectwindow.h
index e4c41ae..8f3e591 100644
--- a/src/actions/rs_actionselectwindow.h
+++ b/src/actions/rs_actionselectwindow.h
@@ -28,7 +28,6 @@
 #define RS_ACTIONSELECTWINDOW_H
 
 #include "rs_previewactioninterface.h"
-#include "rs_vector.h"
 
 
 /**
@@ -63,9 +62,9 @@ public:
 	
     virtual void trigger();
 	
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mousePressEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mousePressEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
diff --git a/src/actions/rs_actionsetrelativezero.cpp b/src/actions/rs_actionsetrelativezero.cpp
index 38e27e0..b5c3fd1 100644
--- a/src/actions/rs_actionsetrelativezero.cpp
+++ b/src/actions/rs_actionsetrelativezero.cpp
@@ -26,8 +26,9 @@
 
 #include "rs_actionsetrelativezero.h"
 
-#include "rs_snapper.h"
-#include "rs_point.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 
@@ -59,14 +60,14 @@ void RS_ActionSetRelativeZero::trigger() {
 
 
 
-void RS_ActionSetRelativeZero::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionSetRelativeZero::mouseMoveEvent(QMouseEvent* e) {
     snapPoint(e);
 }
 
 
 
-void RS_ActionSetRelativeZero::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionSetRelativeZero::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
     } else {
         RS_CoordinateEvent ce(snapPoint(e));
@@ -83,6 +84,7 @@ void RS_ActionSetRelativeZero::coordinateEvent(RS_CoordinateEvent* e) {
 
     pt = e->getCoordinate();
     trigger();
+    updateMouseButtonHints();
 }
 
 
@@ -93,7 +95,7 @@ void RS_ActionSetRelativeZero::updateMouseButtonHints() {
         RS_DIALOGFACTORY->updateMouseWidget(tr("Set relative Zero"), tr("Cancel"));
         break;
     default:
-        RS_DIALOGFACTORY->updateMouseWidget("", "");
+        RS_DIALOGFACTORY->updateMouseWidget();
         break;
     }
 }
diff --git a/src/actions/rs_actionsetrelativezero.h b/src/actions/rs_actionsetrelativezero.h
index 1568feb..ab11d21 100644
--- a/src/actions/rs_actionsetrelativezero.h
+++ b/src/actions/rs_actionsetrelativezero.h
@@ -51,8 +51,8 @@ public:
 	}
 
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
 	
 	virtual void coordinateEvent(RS_CoordinateEvent* e);
 
diff --git a/src/actions/rs_actionsetsnapmode.cpp b/src/actions/rs_actionsetsnapmode.cpp
index 49e3ea5..d28bf63 100644
--- a/src/actions/rs_actionsetsnapmode.cpp
+++ b/src/actions/rs_actionsetsnapmode.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionsetsnapmode.h"
 
+#include "rs_graphicview.h"
 
 
 /**
diff --git a/src/actions/rs_actionsetsnaprestriction.cpp b/src/actions/rs_actionsetsnaprestriction.cpp
index 1caa7ec..c010c7a 100644
--- a/src/actions/rs_actionsetsnaprestriction.cpp
+++ b/src/actions/rs_actionsetsnaprestriction.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionsetsnaprestriction.h"
 
+#include "rs_graphicview.h"
 
 
 /**
diff --git a/src/actions/rs_actionsnapintersectionmanual.cpp b/src/actions/rs_actionsnapintersectionmanual.cpp
index b62d948..c0fc7cb 100644
--- a/src/actions/rs_actionsnapintersectionmanual.cpp
+++ b/src/actions/rs_actionsnapintersectionmanual.cpp
@@ -26,8 +26,10 @@
 
 #include "rs_actionsnapintersectionmanual.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_information.h"
-#include "rs_snapper.h"
 
 
 /**
@@ -89,7 +91,7 @@ void RS_ActionSnapIntersectionManual::trigger() {
 
 
 
-void RS_ActionSnapIntersectionManual::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionSnapIntersectionManual::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionSnapIntersectionManual::mouseMoveEvent begin");
 
     RS_Entity* se = catchEntity(e);
@@ -139,8 +141,8 @@ void RS_ActionSnapIntersectionManual::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionSnapIntersectionManual::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionSnapIntersectionManual::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
 
         RS_Vector mouse = graphicView->toGraph(e->x(), e->y());
         RS_Entity* se = catchEntity(e);
@@ -164,7 +166,7 @@ void RS_ActionSnapIntersectionManual::mouseReleaseEvent(RS_MouseEvent* e) {
         default:
             break;
         }
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    } else if (e->button()==Qt::RightButton) {
         deletePreview();
         init(getStatus()-1);
     }
diff --git a/src/actions/rs_actionsnapintersectionmanual.h b/src/actions/rs_actionsnapintersectionmanual.h
index ca18cea..c73f116 100644
--- a/src/actions/rs_actionsnapintersectionmanual.h
+++ b/src/actions/rs_actionsnapintersectionmanual.h
@@ -55,8 +55,8 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
     virtual void updateToolBar();
diff --git a/src/actions/rs_actiontoolregeneratedimensions.cpp b/src/actions/rs_actiontoolregeneratedimensions.cpp
index 9eaaf5f..101266e 100644
--- a/src/actions/rs_actiontoolregeneratedimensions.cpp
+++ b/src/actions/rs_actiontoolregeneratedimensions.cpp
@@ -26,6 +26,9 @@
 
 #include "rs_actiontoolregeneratedimensions.h"
 
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 #include "rs_information.h"
 #include "rs_dimension.h"
 
diff --git a/src/actions/rs_actionzoomauto.cpp b/src/actions/rs_actionzoomauto.cpp
index b79e56d..6100fbd 100644
--- a/src/actions/rs_actionzoomauto.cpp
+++ b/src/actions/rs_actionzoomauto.cpp
@@ -26,6 +26,8 @@
 
 #include "rs_actionzoomauto.h"
 
+#include <QAction>
+#include "rs_graphicview.h"
 
 /**
  * Constructor.
diff --git a/src/actions/rs_actionzoomautoy.cpp b/src/actions/rs_actionzoomautoy.cpp
index ba690ce..0fd6619 100644
--- a/src/actions/rs_actionzoomautoy.cpp
+++ b/src/actions/rs_actionzoomautoy.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionzoomautoy.h"
 
+#include "rs_graphicview.h"
 
 
 RS_ActionZoomAutoY::RS_ActionZoomAutoY(RS_EntityContainer& container,
diff --git a/src/actions/rs_actionzoomin.cpp b/src/actions/rs_actionzoomin.cpp
index cc3e417..e75b1c7 100644
--- a/src/actions/rs_actionzoomin.cpp
+++ b/src/actions/rs_actionzoomin.cpp
@@ -26,6 +26,9 @@
 
 #include "rs_actionzoomin.h"
 
+#include <QAction>
+#include "rs_graphicview.h"
+
 
 /**
  * Default constructor.
diff --git a/src/actions/rs_actionzoompan.cpp b/src/actions/rs_actionzoompan.cpp
index 6c374b9..17ec51c 100644
--- a/src/actions/rs_actionzoompan.cpp
+++ b/src/actions/rs_actionzoompan.cpp
@@ -25,8 +25,9 @@
 **********************************************************************/
 
 #include "rs_actionzoompan.h"
-#include "rs_snapper.h"
-#include "rs_point.h"
+
+#include <QAction>
+#include "rs_graphicview.h"
 
 
 RS_ActionZoomPan::RS_ActionZoomPan(RS_EntityContainer& container,
@@ -67,7 +68,7 @@ void RS_ActionZoomPan::trigger() {
 
 
 
-void RS_ActionZoomPan::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionZoomPan::mouseMoveEvent(QMouseEvent* e) {
     //v2 = snapPoint(e);
     x2 = e->x();
     y2 = e->y();
@@ -79,9 +80,13 @@ void RS_ActionZoomPan::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionZoomPan::mousePressEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::MidButton ||
-            RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionZoomPan::mousePressEvent(QMouseEvent* e) {
+#if QT_VERSION < 0x040700
+    if (e->button()==Qt::MidButton ||
+#else
+    if (e->button()==Qt::MiddleButton ||
+#endif
+            e->button()==Qt::LeftButton) {
         //v1 = snapPoint(e);
         x1 = e->x();
         y1 = e->y();
@@ -91,10 +96,14 @@ void RS_ActionZoomPan::mousePressEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionZoomPan::mouseReleaseEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+void RS_ActionZoomPan::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
         init(getStatus()-1);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::MidButton) {
+#if QT_VERSION < 0x040700
+    } else if (e->button()==Qt::MidButton) {
+#else
+    } else if (e->button()==Qt::MiddleButton) {
+#endif
         init(-1);
     } else {
         setStatus(0);
diff --git a/src/actions/rs_actionzoompan.h b/src/actions/rs_actionzoompan.h
index 1e6e4f7..07df162 100644
--- a/src/actions/rs_actionzoompan.h
+++ b/src/actions/rs_actionzoompan.h
@@ -46,9 +46,9 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mousePressEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mousePressEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseCursor();
 
 protected:
diff --git a/src/actions/rs_actionzoomprevious.cpp b/src/actions/rs_actionzoomprevious.cpp
index 365be52..2f6c2fe 100644
--- a/src/actions/rs_actionzoomprevious.cpp
+++ b/src/actions/rs_actionzoomprevious.cpp
@@ -26,6 +26,9 @@
 
 #include "rs_actionzoomprevious.h"
 
+#include <QAction>
+#include "rs_graphicview.h"
+
 
 /**
  * Constructor.
diff --git a/src/actions/rs_actionzoomredraw.cpp b/src/actions/rs_actionzoomredraw.cpp
index 8e511ed..08e01e7 100644
--- a/src/actions/rs_actionzoomredraw.cpp
+++ b/src/actions/rs_actionzoomredraw.cpp
@@ -26,6 +26,9 @@
 
 #include "rs_actionzoomredraw.h"
 
+#include <QAction>
+#include "rs_graphicview.h"
+
 
 /**
  * Constructor.
diff --git a/src/actions/rs_actionzoomscroll.cpp b/src/actions/rs_actionzoomscroll.cpp
index 9f47eeb..68f89d4 100644
--- a/src/actions/rs_actionzoomscroll.cpp
+++ b/src/actions/rs_actionzoomscroll.cpp
@@ -26,6 +26,7 @@
 
 #include "rs_actionzoomscroll.h"
 
+#include "rs_graphicview.h"
 
 
 RS_ActionZoomScroll::RS_ActionZoomScroll(RS2::Direction direction,
diff --git a/src/actions/rs_actionzoomwindow.cpp b/src/actions/rs_actionzoomwindow.cpp
index 9bb701b..1092ac3 100644
--- a/src/actions/rs_actionzoomwindow.cpp
+++ b/src/actions/rs_actionzoomwindow.cpp
@@ -26,9 +26,9 @@
 
 #include "rs_actionzoomwindow.h"
 
-#include "rs.h"
-#include "rs_snapper.h"
-#include "rs_point.h"
+#include <QAction>
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
 
 
 /**
@@ -88,7 +88,7 @@ void RS_ActionZoomWindow::trigger() {
 
 
 
-void RS_ActionZoomWindow::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_ActionZoomWindow::mouseMoveEvent(QMouseEvent* e) {
     if (getStatus()==1 && v1.valid) {
         v2 = snapPoint(e);
         deletePreview();
@@ -110,8 +110,8 @@ void RS_ActionZoomWindow::mouseMoveEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionZoomWindow::mousePressEvent(RS_MouseEvent* e) {
-    if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+void RS_ActionZoomWindow::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
         switch (getStatus()) {
         case 0:
             v1 = snapPoint(e);
@@ -129,15 +129,15 @@ void RS_ActionZoomWindow::mousePressEvent(RS_MouseEvent* e) {
 
 
 
-void RS_ActionZoomWindow::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_ActionZoomWindow::mouseReleaseEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_ActionZoomWindow::mouseReleaseEvent()");
 
-    if (RS2::qtToRsButtonState(e->button())==RS2::RightButton) {
+    if (e->button()==Qt::RightButton) {
         if (getStatus()==1) {
             deletePreview();
         }
         init(getStatus()-1);
-    } else if (RS2::qtToRsButtonState(e->button())==RS2::LeftButton) {
+    } else if (e->button()==Qt::LeftButton) {
         if (getStatus()==1) {
             v2 = snapPoint(e);
             trigger();
diff --git a/src/actions/rs_actionzoomwindow.h b/src/actions/rs_actionzoomwindow.h
index e0f98ec..3288ff7 100644
--- a/src/actions/rs_actionzoomwindow.h
+++ b/src/actions/rs_actionzoomwindow.h
@@ -47,9 +47,9 @@ public:
 
     virtual void init(int status=0);
     virtual void trigger();
-    virtual void mouseMoveEvent(RS_MouseEvent* e);
-    virtual void mousePressEvent(RS_MouseEvent* e);
-    virtual void mouseReleaseEvent(RS_MouseEvent* e);
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mousePressEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
     virtual void updateMouseButtonHints();
     virtual void updateMouseCursor();
 
diff --git a/src/cmd/rs_commands.cpp b/src/cmd/rs_commands.cpp
index e5b2368..a475143 100644
--- a/src/cmd/rs_commands.cpp
+++ b/src/cmd/rs_commands.cpp
@@ -26,9 +26,6 @@
 
 #include "rs_commands.h"
 
-#include <iostream>
-
-#include "rs_translator.h"
 #include "rs_dialogfactory.h"
 
 RS_Commands* RS_Commands::uniqueInstance = NULL;
@@ -38,148 +35,145 @@ RS_Commands* RS_Commands::uniqueInstance = NULL;
  * Constructor. Initiates main command dictionary.
  */
 RS_Commands::RS_Commands() {
-	mainCommands.setAutoDelete(true);
-	shortCommands.setAutoDelete(true);
-
 	// draw:
-	mainCommands.insert(tr("point"), new RS2::ActionType(RS2::ActionDrawPoint));
-	shortCommands.insert(tr("po"), new RS2::ActionType(RS2::ActionDrawPoint));
+        mainCommands.insert(tr("point"), RS2::ActionDrawPoint);
+        shortCommands.insert(tr("po"), RS2::ActionDrawPoint);
 	
-        mainCommands.insert(tr("line"), new RS2::ActionType(RS2::ActionDrawLine));
-	shortCommands.insert(tr("ln"), new RS2::ActionType(RS2::ActionDrawLine));
-	shortCommands.insert(tr("l"), new RS2::ActionType(RS2::ActionDrawLine));
+        mainCommands.insert(tr("line"), RS2::ActionDrawLine);
+        shortCommands.insert(tr("ln"), RS2::ActionDrawLine);
+        shortCommands.insert(tr("l"), RS2::ActionDrawLine);
 	
-	mainCommands.insert(tr("polyline"), new RS2::ActionType(RS2::ActionDrawPolyline));
+        mainCommands.insert(tr("polyline"), RS2::ActionDrawPolyline);
 
-    mainCommands.insert(tr("offset"), new RS2::ActionType(RS2::ActionDrawLineParallel));
-	shortCommands.insert(tr("o", "offset"), new RS2::ActionType(RS2::ActionDrawLineParallel));
-    mainCommands.insert(tr("parallel"), new RS2::ActionType(RS2::ActionDrawLineParallel));
-	shortCommands.insert(tr("par", "parallel"), new RS2::ActionType(RS2::ActionDrawLineParallel));
+    mainCommands.insert(tr("offset"), RS2::ActionDrawLineParallel);
+        shortCommands.insert(tr("o", "offset"), RS2::ActionDrawLineParallel);
+    mainCommands.insert(tr("parallel"), RS2::ActionDrawLineParallel);
+        shortCommands.insert(tr("par", "parallel"), RS2::ActionDrawLineParallel);
 
-	mainCommands.insert(tr("arc"), new RS2::ActionType(RS2::ActionDrawArc3P));
-	shortCommands.insert(tr("a"), new RS2::ActionType(RS2::ActionDrawArc3P));
+        mainCommands.insert(tr("arc"), RS2::ActionDrawArc3P);
+        shortCommands.insert(tr("a"), RS2::ActionDrawArc3P);
 	
-	mainCommands.insert(tr("circle"), new RS2::ActionType(RS2::ActionDrawCircle));
-	shortCommands.insert(tr("ci"), new RS2::ActionType(RS2::ActionDrawCircle));
+        mainCommands.insert(tr("circle"), RS2::ActionDrawCircle);
+        shortCommands.insert(tr("ci"), RS2::ActionDrawCircle);
 	
-	mainCommands.insert(tr("rectangle"), new RS2::ActionType(RS2::ActionDrawLineRectangle));
-	shortCommands.insert(tr("rec"), new RS2::ActionType(RS2::ActionDrawLineRectangle));
-	shortCommands.insert(tr("rectang"), new RS2::ActionType(RS2::ActionDrawLineRectangle));
+        mainCommands.insert(tr("rectangle"), RS2::ActionDrawLineRectangle);
+        shortCommands.insert(tr("rec"), RS2::ActionDrawLineRectangle);
+        shortCommands.insert(tr("rectang"), RS2::ActionDrawLineRectangle);
 	
-	mainCommands.insert(tr("polyline"), new RS2::ActionType(RS2::ActionDrawPolyline));
+        mainCommands.insert(tr("polyline"), RS2::ActionDrawPolyline);
 	
-	mainCommands.insert(tr("text"), new RS2::ActionType(RS2::ActionDrawText));
+        mainCommands.insert(tr("text"), RS2::ActionDrawText);
 
 	// zoom:
-	mainCommands.insert(tr("regen"), new RS2::ActionType(RS2::ActionZoomRedraw));
-	shortCommands.insert(tr("rg", "zoom - redraw"), new RS2::ActionType(RS2::ActionZoomRedraw));
-	shortCommands.insert(tr("zr", "zoom - redraw"), new RS2::ActionType(RS2::ActionZoomRedraw));
+        mainCommands.insert(tr("regen"), RS2::ActionZoomRedraw);
+        shortCommands.insert(tr("rg", "zoom - redraw"), RS2::ActionZoomRedraw);
+        shortCommands.insert(tr("zr", "zoom - redraw"), RS2::ActionZoomRedraw);
 	
-	mainCommands.insert(tr("zw", "zoom - window"), new RS2::ActionType(RS2::ActionZoomWindow));
+        mainCommands.insert(tr("zw", "zoom - window"), RS2::ActionZoomWindow);
 	
-	mainCommands.insert(tr("za", "zoom - auto"), new RS2::ActionType(RS2::ActionZoomAuto));
+        mainCommands.insert(tr("za", "zoom - auto"), RS2::ActionZoomAuto);
 	
-	mainCommands.insert(tr("zp", "zoom - pan"), new RS2::ActionType(RS2::ActionZoomPan));
+        mainCommands.insert(tr("zp", "zoom - pan"), RS2::ActionZoomPan);
 	
-	mainCommands.insert(tr("zv", "zoom - previous"), new RS2::ActionType(RS2::ActionZoomPrevious));
+        mainCommands.insert(tr("zv", "zoom - previous"), RS2::ActionZoomPrevious);
 
 	// edit:
-        mainCommands.insert(tr("kill"), new RS2::ActionType(RS2::ActionEditKillAllActions));
-        shortCommands.insert(tr("k"), new RS2::ActionType(RS2::ActionEditKillAllActions));
+        mainCommands.insert(tr("kill"), RS2::ActionEditKillAllActions);
+        shortCommands.insert(tr("k"), RS2::ActionEditKillAllActions);
 
-        mainCommands.insert(tr("undo"), new RS2::ActionType(RS2::ActionEditUndo));
-	shortCommands.insert(tr("u", "undo"), new RS2::ActionType(RS2::ActionEditUndo));
+        mainCommands.insert(tr("undo"), RS2::ActionEditUndo);
+        shortCommands.insert(tr("u", "undo"), RS2::ActionEditUndo);
 	
-        mainCommands.insert(tr("redo"), new RS2::ActionType(RS2::ActionEditRedo));
-        shortCommands.insert(tr("r"), new RS2::ActionType(RS2::ActionEditRedo));
+        mainCommands.insert(tr("redo"), RS2::ActionEditRedo);
+        shortCommands.insert(tr("r"), RS2::ActionEditRedo);
 
     // dimensions:
-    mainCommands.insert(tr("da", "dimension - aligned"), new RS2::ActionType(RS2::ActionDimAligned));
-    shortCommands.insert(tr("da"), new RS2::ActionType(RS2::ActionDimAligned));
+    mainCommands.insert(tr("da", "dimension - aligned"), RS2::ActionDimAligned);
+    shortCommands.insert(tr("da"), RS2::ActionDimAligned);
     
-    mainCommands.insert(tr("dh", "dimension - horizontal"), new RS2::ActionType(RS2::ActionDimLinearHor));
-    shortCommands.insert(tr("dh"), new RS2::ActionType(RS2::ActionDimLinearHor));
+    mainCommands.insert(tr("dh", "dimension - horizontal"), RS2::ActionDimLinearHor);
+    shortCommands.insert(tr("dh"), RS2::ActionDimLinearHor);
     
-    mainCommands.insert(tr("dr", "dimension - linear"), new RS2::ActionType(RS2::ActionDimLinear));
-    shortCommands.insert(tr("dr"), new RS2::ActionType(RS2::ActionDimLinear));
+    mainCommands.insert(tr("dr", "dimension - linear"), RS2::ActionDimLinear);
+    shortCommands.insert(tr("dr"), RS2::ActionDimLinear);
 
-    mainCommands.insert(tr("dv", "dimension - vertical"), new RS2::ActionType(RS2::ActionDimLinearVer));
-    shortCommands.insert(tr("dv"), new RS2::ActionType(RS2::ActionDimLinearVer));
+    mainCommands.insert(tr("dv", "dimension - vertical"), RS2::ActionDimLinearVer);
+    shortCommands.insert(tr("dv"), RS2::ActionDimLinearVer);
 
-    mainCommands.insert(tr("ld", "dimension - leader"), new RS2::ActionType(RS2::ActionDimLeader));
-    shortCommands.insert(tr("ld"), new RS2::ActionType(RS2::ActionDimLeader));
+    mainCommands.insert(tr("ld", "dimension - leader"), RS2::ActionDimLeader);
+    shortCommands.insert(tr("ld"), RS2::ActionDimLeader);
 
 	// tools:
-	mainCommands.insert(tr("dimregen"), new RS2::ActionType(RS2::ActionToolRegenerateDimensions));
+        mainCommands.insert(tr("dimregen"), RS2::ActionToolRegenerateDimensions);
 
     // modify:
-    mainCommands.insert(tr("tm", "modify - multi trim (extend)"), new RS2::ActionType(RS2::ActionModifyTrim2));
-    shortCommands.insert(tr("tm"), new RS2::ActionType(RS2::ActionModifyTrim2));
+    mainCommands.insert(tr("tm", "modify - multi trim (extend)"), RS2::ActionModifyTrim2);
+    shortCommands.insert(tr("tm"), RS2::ActionModifyTrim2);
 
-    mainCommands.insert(tr("xt", "modify - trim (extend)"), new RS2::ActionType(RS2::ActionModifyTrim));
-    shortCommands.insert(tr("xt"), new RS2::ActionType(RS2::ActionModifyTrim));
+    mainCommands.insert(tr("xt", "modify - trim (extend)"), RS2::ActionModifyTrim);
+    shortCommands.insert(tr("xt"), RS2::ActionModifyTrim);
 
-    mainCommands.insert(tr("rm", "modify - trim"), new RS2::ActionType(RS2::ActionModifyTrim));
-    shortCommands.insert(tr("rm"), new RS2::ActionType(RS2::ActionModifyTrim));
+    mainCommands.insert(tr("rm", "modify - trim"), RS2::ActionModifyTrim);
+    shortCommands.insert(tr("rm"), RS2::ActionModifyTrim);
 
-    mainCommands.insert(tr("mv", "modify - move"), new RS2::ActionType(RS2::ActionModifyMove));
-    shortCommands.insert(tr("mv"), new RS2::ActionType(RS2::ActionModifyMove));
+    mainCommands.insert(tr("mv", "modify - move"), RS2::ActionModifyMove);
+    shortCommands.insert(tr("mv"), RS2::ActionModifyMove);
 
-    mainCommands.insert(tr("ch", "modify - bevel (chamfer)"), new RS2::ActionType(RS2::ActionModifyBevel));
-    shortCommands.insert(tr("ch"), new RS2::ActionType(RS2::ActionModifyBevel));
+    mainCommands.insert(tr("ch", "modify - bevel (chamfer)"), RS2::ActionModifyBevel);
+    shortCommands.insert(tr("ch"), RS2::ActionModifyBevel);
 
-    mainCommands.insert(tr("mi", "modify - mirror"), new RS2::ActionType(RS2::ActionModifyMirror));
-    shortCommands.insert(tr("mi"), new RS2::ActionType(RS2::ActionModifyMirror));
+    mainCommands.insert(tr("mi", "modify - mirror"), RS2::ActionModifyMirror);
+    shortCommands.insert(tr("mi"), RS2::ActionModifyMirror);
 
-    mainCommands.insert(tr("ro", "modify - rotate"), new RS2::ActionType(RS2::ActionModifyRotate));
-    shortCommands.insert(tr("ro"), new RS2::ActionType(RS2::ActionModifyRotate));
+    mainCommands.insert(tr("ro", "modify - rotate"), RS2::ActionModifyRotate);
+    shortCommands.insert(tr("ro"), RS2::ActionModifyRotate);
 
-    mainCommands.insert(tr("sz", "modify - scale"), new RS2::ActionType(RS2::ActionModifyMove));
-    shortCommands.insert(tr("sz"), new RS2::ActionType(RS2::ActionModifyMove));
+    mainCommands.insert(tr("sz", "modify - scale"), RS2::ActionModifyMove);
+    shortCommands.insert(tr("sz"), RS2::ActionModifyMove);
 
-    mainCommands.insert(tr("ss", "modify - stretch"), new RS2::ActionType(RS2::ActionModifyStretch));
-    shortCommands.insert(tr("ss"), new RS2::ActionType(RS2::ActionModifyStretch));
+    mainCommands.insert(tr("ss", "modify - stretch"), RS2::ActionModifyStretch);
+    shortCommands.insert(tr("ss"), RS2::ActionModifyStretch);
 
-    mainCommands.insert(tr("er", "modify - delete (erase)"), new RS2::ActionType(RS2::ActionModifyDelete));
-    shortCommands.insert(tr("er"), new RS2::ActionType(RS2::ActionModifyDelete));
+    mainCommands.insert(tr("er", "modify - delete (erase)"), RS2::ActionModifyDelete);
+    shortCommands.insert(tr("er"), RS2::ActionModifyDelete);
 
-    mainCommands.insert(tr("oo", "modify - undo (oops)"), new RS2::ActionType(RS2::ActionEditUndo));
-    shortCommands.insert(tr("oo"), new RS2::ActionType(RS2::ActionEditUndo));
+    mainCommands.insert(tr("oo", "modify - undo (oops)"), RS2::ActionEditUndo);
+    shortCommands.insert(tr("oo"), RS2::ActionEditUndo);
 
-    mainCommands.insert(tr("uu", "modify - redo"), new RS2::ActionType(RS2::ActionEditRedo));
-    shortCommands.insert(tr("uu"), new RS2::ActionType(RS2::ActionEditRedo));
+    mainCommands.insert(tr("uu", "modify - redo"), RS2::ActionEditRedo);
+    shortCommands.insert(tr("uu"), RS2::ActionEditRedo);
 
-    mainCommands.insert(tr("xp", "modify - explode"), new RS2::ActionType(RS2::ActionBlocksExplode));
-    shortCommands.insert(tr("xp"), new RS2::ActionType(RS2::ActionBlocksExplode));
+    mainCommands.insert(tr("xp", "modify - explode"), RS2::ActionBlocksExplode);
+    shortCommands.insert(tr("xp"), RS2::ActionBlocksExplode);
 
     // snap:
-    mainCommands.insert(tr("os", "snap - none"), new RS2::ActionType(RS2::ActionSnapFree));
-    shortCommands.insert(tr("os"), new RS2::ActionType(RS2::ActionSnapFree));
+    mainCommands.insert(tr("os", "snap - none"), RS2::ActionSnapFree);
+    shortCommands.insert(tr("os"), RS2::ActionSnapFree);
 
-    mainCommands.insert(tr("sg", "snap - grid"), new RS2::ActionType(RS2::ActionSnapGrid));
-    shortCommands.insert(tr("sg"), new RS2::ActionType(RS2::ActionSnapGrid));
+    mainCommands.insert(tr("sg", "snap - grid"), RS2::ActionSnapGrid);
+    shortCommands.insert(tr("sg"), RS2::ActionSnapGrid);
 
-    mainCommands.insert(tr("se", "snap - end"), new RS2::ActionType(RS2::ActionSnapEndpoint));
-    shortCommands.insert(tr("se"), new RS2::ActionType(RS2::ActionSnapEndpoint));
+    mainCommands.insert(tr("se", "snap - end"), RS2::ActionSnapEndpoint);
+    shortCommands.insert(tr("se"), RS2::ActionSnapEndpoint);
 
-    mainCommands.insert(tr("si", "snap - intersection"), new RS2::ActionType(RS2::ActionSnapIntersection));
-    shortCommands.insert(tr("si"), new RS2::ActionType(RS2::ActionSnapIntersection));
+    mainCommands.insert(tr("si", "snap - intersection"), RS2::ActionSnapIntersection);
+    shortCommands.insert(tr("si"), RS2::ActionSnapIntersection);
 
-    mainCommands.insert(tr("sn", "snap - center"), new RS2::ActionType(RS2::ActionSnapCenter));
-    shortCommands.insert(tr("sn"), new RS2::ActionType(RS2::ActionSnapCenter));
+    mainCommands.insert(tr("sn", "snap - center"), RS2::ActionSnapCenter);
+    shortCommands.insert(tr("sn"), RS2::ActionSnapCenter);
 
-    mainCommands.insert(tr("sm", "snap - middle"), new RS2::ActionType(RS2::ActionSnapMiddle));
-    shortCommands.insert(tr("sm"), new RS2::ActionType(RS2::ActionSnapMiddle));
+    mainCommands.insert(tr("sm", "snap - middle"), RS2::ActionSnapMiddle);
+    shortCommands.insert(tr("sm"), RS2::ActionSnapMiddle);
 
-    mainCommands.insert(tr("sn", "snap - nearest"), new RS2::ActionType(RS2::ActionSnapMiddle));
-    shortCommands.insert(tr("sn"), new RS2::ActionType(RS2::ActionSnapMiddle));
+    mainCommands.insert(tr("sn", "snap - nearest"), RS2::ActionSnapMiddle);
+    shortCommands.insert(tr("sn"), RS2::ActionSnapMiddle);
 
-    mainCommands.insert(tr("np", "snap - nearest point"), new RS2::ActionType(RS2::ActionSnapOnEntity));
-    shortCommands.insert(tr("np"), new RS2::ActionType(RS2::ActionSnapOnEntity));
+    mainCommands.insert(tr("np", "snap - nearest point"), RS2::ActionSnapOnEntity);
+    shortCommands.insert(tr("np"), RS2::ActionSnapOnEntity);
 
     // selection:
-    mainCommands.insert(tr("tn", "Deselect all"), new RS2::ActionType(RS2::ActionDeselectAll));
-    shortCommands.insert(tr("tn"), new RS2::ActionType(RS2::ActionDeselectAll));
+    mainCommands.insert(tr("tn", "Deselect all"), RS2::ActionDeselectAll);
+    shortCommands.insert(tr("tn"), RS2::ActionDeselectAll);
 }
 
 	
@@ -187,15 +181,15 @@ RS_Commands::RS_Commands() {
 /**
  * Tries to complete the given command (e.g. when tab is pressed).
  */
-RS_StringList RS_Commands::complete(const RS_String& cmd) {
-	RS_DictIterator<RS2::ActionType> it(mainCommands);
-	RS_StringList ret;
-    for (; it.current(); ++it) {
-        //cout << it.currentKey() << ": " << it.current()->text() << endl;
-		if (it.currentKey().startsWith(cmd)) {
-			ret << it.currentKey();
-		}
-	}
+QStringList RS_Commands::complete(const QString& cmd) {
+    QStringList ret;
+    QHash<QString, RS2::ActionType>::const_iterator it = mainCommands.constBegin();
+    while (it != mainCommands.constEnd()) {
+        if (it.key().startsWith(cmd)) {
+            ret << it.key();
+        }
+        ++it;
+    }
 	ret.sort();
 
 	return ret;
@@ -213,27 +207,25 @@ RS_StringList RS_Commands::complete(const RS_String& cmd) {
  *
  * @return The translated command.
  */
-RS2::ActionType RS_Commands::cmdToAction(const RS_String& cmd) {
-    RS_String c = cmd.lower();
-    RS_String full = cmd;          // full command defaults to given command
+RS2::ActionType RS_Commands::cmdToAction(const QString& cmd) {
+    QString c = cmd.toLower();
+    QString full = cmd;          // full command defaults to given command
     RS2::ActionType ret = RS2::ActionNone;
 
-	// find command:
-	RS2::ActionType* retPtr = mainCommands[cmd];
-	if (retPtr!=NULL) {
-		ret = *retPtr;
-	}
-	else {
-		retPtr = shortCommands[cmd];
-		if (retPtr!=NULL) {
-			ret = *retPtr;
-		}
+        // find command:
+//	RS2::ActionType* retPtr = mainCommands.value(cmd);
+        if ( mainCommands.contains(cmd) ) {
+                ret = mainCommands.value(cmd);
+        } else
+        if ( shortCommands.contains(cmd) ) {
+                ret = shortCommands.value(cmd);
 	}
 
-	// find full command to confirm to user:
-	RS_DictIterator<RS2::ActionType> it(mainCommands);
-    for (; it.current(); ++it) {
-		if (*it.current()==ret) {
+        // find full command to confirm to user:
+
+        QHash<QString, RS2::ActionType>::const_iterator it = mainCommands.constBegin();
+        while (it != mainCommands.constEnd()) {
+                if (it.value()==ret) {
 			if (RS_DialogFactory::instance()!=NULL) {
 				//if (RS_DIALOGFACTORY!=NULL) {
 					RS_DEBUG->print("RS_Commands::cmdToAction: "
@@ -250,10 +242,11 @@ RS2::ActionType RS_Commands::cmdToAction(const RS_String& cmd) {
 				RS_DEBUG->print("RS_Commands::cmdToAction: dialog "
 				  "factory instance is NULL");
 			}
-			break;
-		}
-	}
-	
+                        break;
+                }
+            ++it;
+        }
+
 	return ret;
 }
 
@@ -263,8 +256,8 @@ RS2::ActionType RS_Commands::cmdToAction(const RS_String& cmd) {
  * Gets the action for the given keycode. A keycode is a sequence
  * of key-strokes that is entered like hotkeys.
  */
-RS2::ActionType RS_Commands::keycodeToAction(const RS_String& code) {
-    RS_String c = code.lower();
+RS2::ActionType RS_Commands::keycodeToAction(const QString& code) {
+    QString c = code.toLower();
     RS2::ActionType ret = RS2::ActionNone;
 
     // draw:
@@ -392,7 +385,7 @@ RS2::ActionType RS_Commands::keycodeToAction(const RS_String& code) {
 /**
  * @return translated command for the given English command.
  */
-RS_String RS_Commands::command(const RS_String& cmd) {
+QString RS_Commands::command(const QString& cmd) {
     if (cmd=="angle") {
         return tr("angle");
     } else if (cmd=="close") {
@@ -432,7 +425,7 @@ RS_String RS_Commands::command(const RS_String& cmd) {
     }
 
     RS_DEBUG->print(RS_Debug::D_WARNING,
-		"RS_Commands::command: command '%s' unknown", cmd.latin1());
+                "RS_Commands::command: command '%s' unknown", cmd.toLatin1().data());
     return "";
 }
 
@@ -446,10 +439,10 @@ RS_String RS_Commands::command(const RS_String& cmd) {
  * @param action The action which wants to know.
  * @param str The string typically entered by the user.
  */
-bool RS_Commands::checkCommand(const RS_String& cmd, const RS_String& str,
+bool RS_Commands::checkCommand(const QString& cmd, const QString& str,
                                RS2::ActionType /*action*/) {
 
-    RS_String strl = str.lower();
+    QString strl = str.toLower();
 
     if (cmd=="angle") {
         if (strl==tr("angle") || strl==tr("ang", "angle") ||
@@ -564,7 +557,7 @@ bool RS_Commands::checkCommand(const RS_String& cmd, const RS_String& str,
 /**
  * @return the local translation for "Commands available:".
  */
-RS_String RS_Commands::msgAvailableCommands() {
+QString RS_Commands::msgAvailableCommands() {
     return tr("Available commands:");
 }
 
diff --git a/src/cmd/rs_commands.h b/src/cmd/rs_commands.h
index 1fad500..18f137e 100644
--- a/src/cmd/rs_commands.h
+++ b/src/cmd/rs_commands.h
@@ -28,12 +28,9 @@
 #ifndef RS_COMMANDS_H
 #define RS_COMMANDS_H
 
-#include <qobject.h>
+#include <QMultiHash>
 
 #include "rs.h"
-#include "rs_dict.h"
-#include "rs_string.h"
-#include "rs_stringlist.h"
 
 #define RS_COMMANDS RS_Commands::instance()
 
@@ -59,24 +56,24 @@ public:
         return uniqueInstance;
     }
 
-	RS_StringList complete(const RS_String& cmd);
-    RS2::ActionType cmdToAction(const RS_String& cmd);
-    RS2::ActionType keycodeToAction(const RS_String& code);
+        QStringList complete(const QString& cmd);
+    RS2::ActionType cmdToAction(const QString& cmd);
+    RS2::ActionType keycodeToAction(const QString& code);
 
-    static RS_String command(const RS_String& cmd);
+    static QString command(const QString& cmd);
 
-    static bool checkCommand(const RS_String& cmd, const RS_String& str,
+    static bool checkCommand(const QString& cmd, const QString& str,
                              RS2::ActionType action=RS2::ActionNone);
 
-	static RS_String msgAvailableCommands();
+        static QString msgAvailableCommands();
 
 protected:
     static RS_Commands* uniqueInstance;
 
 private:
 	RS_Commands();
-	RS_Dict<RS2::ActionType> mainCommands;
-	RS_Dict<RS2::ActionType> shortCommands;
+        QMultiHash<QString, RS2::ActionType> mainCommands;
+        QMultiHash<QString, RS2::ActionType> shortCommands;
 };
 
 #endif
diff --git a/src/lib/actions/rs_actioninterface.cpp b/src/lib/actions/rs_actioninterface.cpp
index 8fcb79c..d9d6bb8 100644
--- a/src/lib/actions/rs_actioninterface.cpp
+++ b/src/lib/actions/rs_actioninterface.cpp
@@ -27,6 +27,9 @@
 
 #include "rs_actioninterface.h"
 
+#include "rs_graphicview.h"
+#include "rs_commands.h"
+
 /**
  * Constructor.
  *
@@ -90,7 +93,7 @@ RS2::ActionType RS_ActionInterface::rtti()  {
 /**
  * @return name of this action
  */
-RS_String RS_ActionInterface::getName() {
+QString RS_ActionInterface::getName() {
     return name;
 }
 
@@ -120,7 +123,7 @@ void RS_ActionInterface::init(int status) {
  * This function can be overwritten by the implementing action.
  * The default implementation keeps track of the mouse position.
  */
-void RS_ActionInterface::mouseMoveEvent(RS_MouseEvent*) {}
+void RS_ActionInterface::mouseMoveEvent(QMouseEvent*) {}
 
 /**
  * Called when the left mouse button is pressed and this is the 
@@ -128,7 +131,7 @@ void RS_ActionInterface::mouseMoveEvent(RS_MouseEvent*) {}
  * This function can be overwritten by the implementing action.
  * The default implementation does nothing.
  */
-void RS_ActionInterface::mousePressEvent(RS_MouseEvent*) {}
+void RS_ActionInterface::mousePressEvent(QMouseEvent*) {}
 
 /**
  * Called when the left mouse button is released and this is 
@@ -136,14 +139,14 @@ void RS_ActionInterface::mousePressEvent(RS_MouseEvent*) {}
  * This function can be overwritten by the implementing action.
  * The default implementation does nothing.
  */
-void RS_ActionInterface::mouseReleaseEvent(RS_MouseEvent*) {}
+void RS_ActionInterface::mouseReleaseEvent(QMouseEvent*) {}
 
 /**
  * Called when a key is pressed and this is the current action.
  * This function can be overwritten by the implementing action.
  * The default implementation does nothing.
  */
-void RS_ActionInterface::keyPressEvent(RS_KeyEvent* e) {
+void RS_ActionInterface::keyPressEvent(QKeyEvent* e) {
     e->ignore();
 }
 
@@ -152,7 +155,7 @@ void RS_ActionInterface::keyPressEvent(RS_KeyEvent* e) {
  * This function can be overwritten by the implementing action.
  * The default implementation does nothing.
  */
-void RS_ActionInterface::keyReleaseEvent(RS_KeyEvent* e) {
+void RS_ActionInterface::keyReleaseEvent(QKeyEvent* e) {
     e->ignore();
 }
 
@@ -176,8 +179,8 @@ void RS_ActionInterface::commandEvent(RS_CommandEvent*) {
  * Must be implemented to return the currently available commands
  *  for the command line.
  */
-RS_StringList RS_ActionInterface::getAvailableCommands() {
-    RS_StringList l;
+QStringList RS_ActionInterface::getAvailableCommands() {
+    QStringList l;
     return l;
 }
 
@@ -306,7 +309,7 @@ void RS_ActionInterface::showOptions() {
 /**
  * Calls checkCommand() from the RS_COMMANDS module.
  */
-bool RS_ActionInterface::checkCommand(const RS_String& cmd, const RS_String& str,
+bool RS_ActionInterface::checkCommand(const QString& cmd, const QString& str,
                                       RS2::ActionType action) {
     return RS_COMMANDS->checkCommand(cmd, str, action);
 }
@@ -314,14 +317,14 @@ bool RS_ActionInterface::checkCommand(const RS_String& cmd, const RS_String& str
 /**
  * Calls command() from the RS_COMMANDS module.
  */
-RS_String RS_ActionInterface::command(const RS_String& cmd) {
+QString RS_ActionInterface::command(const QString& cmd) {
     return RS_COMMANDS->command(cmd);
 }
 
 /**
  * Calls msgAvailableCommands() from the RS_COMMANDS module.
  */
-RS_String RS_ActionInterface::msgAvailableCommands() {
+QString RS_ActionInterface::msgAvailableCommands() {
     return RS_COMMANDS->msgAvailableCommands();
 }
 
diff --git a/src/lib/actions/rs_actioninterface.h b/src/lib/actions/rs_actioninterface.h
index 0c7bb4a..23deb91 100644
--- a/src/lib/actions/rs_actioninterface.h
+++ b/src/lib/actions/rs_actioninterface.h
@@ -28,22 +28,11 @@
 #ifndef RS_ACTIONINTERFACE_H
 #define RS_ACTIONINTERFACE_H
 
-#include <qobject.h>
-#include <qaction.h>
-
-#include "rs_entitycontainer.h"
-#include "rs_commandevent.h"
-#include "rs_event.h"
-#include "rs_graphic.h"
-#include "rs_graphicview.h"
-#include "rs_mouseevent.h"
+#include <QKeyEvent>
+
 #include "rs_snapper.h"
-#include "rs_string.h"
-#include "rs_preview.h"
-#include "rs_dialogfactory.h"
-#include "rs_stringlist.h"
 
-#include "rs_commands.h"
+class RS_CommandEvent;
 
 //template<class T> T* instantiate(RS_EntityContainer& container, RS_GraphicView& graphicView) {
 //	return new T(container, graphicView);
@@ -70,18 +59,18 @@ public:
 	
     virtual RS2::ActionType rtti();
 
-    RS_String getName();
+    QString getName();
 
     virtual void init(int status=0);
-    virtual void mouseMoveEvent(RS_MouseEvent*);
-    virtual void mousePressEvent(RS_MouseEvent*);
+    virtual void mouseMoveEvent(QMouseEvent*);
+    virtual void mousePressEvent(QMouseEvent*);
 
-    virtual void mouseReleaseEvent(RS_MouseEvent*);
-    virtual void keyPressEvent(RS_KeyEvent* e);
-    virtual void keyReleaseEvent(RS_KeyEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent*);
+    virtual void keyPressEvent(QKeyEvent* e);
+    virtual void keyReleaseEvent(QKeyEvent* e);
     virtual void coordinateEvent(RS_CoordinateEvent*);
     virtual void commandEvent(RS_CommandEvent*);
-    virtual RS_StringList getAvailableCommands();
+    virtual QStringList getAvailableCommands();
     virtual void setStatus(int status);
     virtual int getStatus();
     virtual void trigger();
@@ -96,10 +85,10 @@ public:
     virtual void resume();
     virtual void hideOptions();
     virtual void showOptions();
-    bool checkCommand(const RS_String& cmd, const RS_String& str,
+    bool checkCommand(const QString& cmd, const QString& str,
                              RS2::ActionType action=RS2::ActionNone);
-	RS_String command(const RS_String& cmd);
-	RS_String msgAvailableCommands();
+        QString command(const QString& cmd);
+        QString msgAvailableCommands();
 
 private:
     /**
@@ -115,7 +104,7 @@ private:
 
 protected:
     /** Action name. Used internally for debugging */
-    RS_String name;
+    QString name;
 
     /**
      * This flag is set when the action has terminated and 
@@ -147,24 +136,24 @@ protected:
     /**
      * String prepended to the help text for currently available commands.
      */
-    //static RS_String msgAvailableCommands;
+    //static QString msgAvailableCommands;
 
     /**
      * Command used for showing help for every action.
      */
-    //static RS_String cmdHelp;
+    //static QString cmdHelp;
 	
     /**
      * Command for answering yes to a question.
      */
-    //static RS_String cmdYes;
-    //static RS_String cmdYes2;
+    //static QString cmdYes;
+    //static QString cmdYes2;
 	
      /**
      * Command for answering no to a question.
      */
-    //static RS_String cmdNo;
-    //static RS_String cmdNo2;
+    //static QString cmdNo;
+    //static QString cmdNo2;
 };
 
 
diff --git a/src/lib/actions/rs_preview.cpp b/src/lib/actions/rs_preview.cpp
index c0761cf..3deadba 100644
--- a/src/lib/actions/rs_preview.cpp
+++ b/src/lib/actions/rs_preview.cpp
@@ -30,7 +30,6 @@
 #include "rs_entitycontainer.h"
 #include "rs_graphicview.h"
 #include "rs_information.h"
-#include "rs_mouseevent.h"
 #include "rs_settings.h"
 
 
diff --git a/src/lib/actions/rs_preview.h b/src/lib/actions/rs_preview.h
index fda272b..5f1b942 100644
--- a/src/lib/actions/rs_preview.h
+++ b/src/lib/actions/rs_preview.h
@@ -31,9 +31,8 @@
 #include "rs_entitycontainer.h"
 
 class RS_Entity;
-class RS_GraphicView;
 class RS_Vector;
-class RS_MouseEvent;
+
 
 /**
  * This class supports previewing. The RS_Snapper class uses
diff --git a/src/lib/actions/rs_previewactioninterface.cpp b/src/lib/actions/rs_previewactioninterface.cpp
index e21fa6e..9752dad 100644
--- a/src/lib/actions/rs_previewactioninterface.cpp
+++ b/src/lib/actions/rs_previewactioninterface.cpp
@@ -27,6 +27,7 @@
 
 #include "rs_previewactioninterface.h"
 
+#include "rs_graphicview.h"
 
 /**
  * Constructor.
diff --git a/src/lib/actions/rs_snapper.cpp b/src/lib/actions/rs_snapper.cpp
index 13bc515..62122ae 100644
--- a/src/lib/actions/rs_snapper.cpp
+++ b/src/lib/actions/rs_snapper.cpp
@@ -28,13 +28,8 @@
 #include "rs_snapper.h"
 
 #include "rs_dialogfactory.h"
-#include "rs_entitycontainer.h"
-#include "rs_graphic.h"
 #include "rs_graphicview.h"
 #include "rs_grid.h"
-#include "rs_information.h"
-#include "rs_mouseevent.h"
-#include "rs_painter.h"
 #include "rs_settings.h"
 #include "rs_overlayline.h"
 
@@ -91,7 +86,7 @@ void RS_Snapper::finish() {
  * @param e A mouse event.
  * @return The coordinates of the point or an invalid vector.
  */
-RS_Vector RS_Snapper::snapPoint(RS_MouseEvent* e) {
+RS_Vector RS_Snapper::snapPoint(QMouseEvent* e) {
 	RS_DEBUG->print("RS_Snapper::snapPoint");
 
     snapSpot = RS_Vector(false);
@@ -422,7 +417,7 @@ RS_Entity* RS_Snapper::catchEntity(const RS_Vector& pos,
  *        container
  * @return Pointer to the entity or NULL.
  */
-RS_Entity* RS_Snapper::catchEntity(RS_MouseEvent* e,
+RS_Entity* RS_Snapper::catchEntity(QMouseEvent* e,
                                    RS2::ResolveLevel level) {
 
     return catchEntity(
diff --git a/src/lib/actions/rs_snapper.h b/src/lib/actions/rs_snapper.h
index 545ae42..721618b 100644
--- a/src/lib/actions/rs_snapper.h
+++ b/src/lib/actions/rs_snapper.h
@@ -31,13 +31,13 @@
 #include "rs_entitycontainer.h"
 
 #include "rs.h"
-#include "rs_mouseevent.h"
 #include "rs_coordinateevent.h"
 
 class RS_Entity;
 class RS_GraphicView;
 class RS_Vector;
 class RS_Preview;
+class QMouseEvent;
 
 /**
  * This class is used for snapping functions in a graphic view. 
@@ -86,7 +86,7 @@ public:
 		snapRange = r;
 	}
 
-    RS_Vector snapPoint(RS_MouseEvent* e);
+    RS_Vector snapPoint(QMouseEvent* e);
 
     RS_Vector snapFree(RS_Vector coord);
     RS_Vector snapEndpoint(RS_Vector coord);
@@ -103,10 +103,10 @@ public:
     RS_Vector restrictVertical(RS_Vector coord);
 
     //RS_Entity* catchLeafEntity(const RS_Vector& pos);
-    //RS_Entity* catchLeafEntity(RS_MouseEvent* e);
+    //RS_Entity* catchLeafEntity(QMouseEvent* e);
     RS_Entity* catchEntity(const RS_Vector& pos,
                            RS2::ResolveLevel level=RS2::ResolveNone);
-    RS_Entity* catchEntity(RS_MouseEvent* e,
+    RS_Entity* catchEntity(QMouseEvent* e,
                            RS2::ResolveLevel level=RS2::ResolveNone);
 
     /**
diff --git a/src/lib/creation/rs_creation.cpp b/src/lib/creation/rs_creation.cpp
index 3b8d79b..9e937d3 100644
--- a/src/lib/creation/rs_creation.cpp
+++ b/src/lib/creation/rs_creation.cpp
@@ -25,10 +25,10 @@
 **********************************************************************/
 
 
+#include <QFileInfo>
 #include "rs_creation.h"
 
 #include "rs_information.h"
-#include "rs_fileinfo.h"
 #include "rs_graphic.h"
 #include "rs_constructionline.h"
 #include "rs_graphicview.h"
@@ -1237,8 +1237,8 @@ RS_Insert* RS_Creation::createLibraryInsert(RS_LibraryInsertData& data) {
     //g.scale(RS_Vector(data.factor, data.factor));
     //g.rotate(data.angle);
 
-    RS_String s;
-    s = RS_FileInfo(data.file).baseName(true);
+    QString s;
+    s = QFileInfo(data.file).completeBaseName();
 
     RS_Modification m(*container, graphicView);
     m.paste(
diff --git a/src/lib/creation/rs_creation.h b/src/lib/creation/rs_creation.h
index 1a3758a..ef46ee2 100644
--- a/src/lib/creation/rs_creation.h
+++ b/src/lib/creation/rs_creation.h
@@ -33,13 +33,14 @@
 #include "rs_polyline.h"
 #include "rs_insert.h"
 #include "rs_image.h"
+#include "rs_block.h"
 
 
 /**
  * Data needed to insert library items.
  */
 struct RS_LibraryInsertData {
-	RS_String file;
+        QString file;
 	RS_Vector insertionPoint;
 	double factor;
 	double angle;
diff --git a/src/lib/debug/rs_debug.cpp b/src/lib/debug/rs_debug.cpp
index 0240449..dcb6cfb 100644
--- a/src/lib/debug/rs_debug.cpp
+++ b/src/lib/debug/rs_debug.cpp
@@ -30,9 +30,7 @@
 #include <stdio.h>
 #include <stdarg.h>
 
-#include "rs_datetime.h"
-#include "rs_string.h"
-#include "rs_system.h"
+#include <QDateTime>
 
 RS_Debug* RS_Debug::uniqueInstance = NULL;
 
@@ -46,14 +44,14 @@ RS_Debug* RS_Debug::uniqueInstance = NULL;
  */
 RS_Debug* RS_Debug::instance() {
     if(uniqueInstance==NULL) {
-        RS_DateTime now = RS_DateTime::currentDateTime();
-        RS_String nowStr;
+        QDateTime now = QDateTime::currentDateTime();
+        QString nowStr;
 		nowStr = now.toString("yyyyMMdd_hhmmss");
 
-		//RS_String fName = RS_String("%1/debug_%2.log")
+                //QString fName = QString("%1/debug_%2.log")
 		//	.arg(RS_SYSTEM->getHomeDir())
 		//	.arg(nowStr);
-		RS_String fName = RS_String("debug_%1.log")
+                QString fName = QString("debug_%1.log")
 			.arg(nowStr);
 
         uniqueInstance = new RS_Debug;
@@ -143,8 +141,8 @@ void RS_Debug::print(RS_DebugLevel level, const char* format ...) {
  * Prints a time stamp in the format yyyyMMdd_hhmmss.
  */
 void RS_Debug::timestamp() {
-    RS_DateTime now = RS_DateTime::currentDateTime();
-    RS_String nowStr;
+    QDateTime now = QDateTime::currentDateTime();
+    QString nowStr;
 
 		nowStr = now.toString("yyyyMMdd_hh:mm:ss:zzz ");
     fprintf(stream, "%s", nowStr.toLatin1().data());
@@ -156,9 +154,9 @@ void RS_Debug::timestamp() {
 /**
  * Prints the unicode for every character in the given string.
  */
-void RS_Debug::printUnicode(const RS_String& text) {
+void RS_Debug::printUnicode(const QString& text) {
     for (int i=0; i<(int)text.length(); i++) {
-        print("[%X] %c", text.at(i).unicode(), text.at(i).latin1());
+        print("[%X] %c", text.at(i).unicode(), text.at(i).toLatin1());
     }
 }
 
diff --git a/src/lib/debug/rs_debug.h b/src/lib/debug/rs_debug.h
index c4657d4..b09f184 100644
--- a/src/lib/debug/rs_debug.h
+++ b/src/lib/debug/rs_debug.h
@@ -32,10 +32,7 @@
 #include <sys/_size_t.h>
 #endif
 
-#include <iostream>
-#include <stdio.h>
-
-#include "rs_string.h"
+#include <QString>
 
 #define RS_DEBUG RS_Debug::instance()
 
@@ -79,7 +76,7 @@ public:
     RS_DebugLevel getLevel();
     void print(RS_DebugLevel level, const char* format ...);
     void print(const char* format ...);
-    void printUnicode(const RS_String& text);
+    void printUnicode(const QString& text);
     void timestamp();
     void setStream(FILE* s) {
         stream = s;
diff --git a/src/lib/engine/rs.h b/src/lib/engine/rs.h
index 5fb1be4..98ff120 100644
--- a/src/lib/engine/rs.h
+++ b/src/lib/engine/rs.h
@@ -108,7 +108,8 @@ public:
         FormatDXF,           /**< DXF format. 2000. */
         FormatDXF12,         /**< DXF format. R12. */
         FormatCXF,           /**< CAM Expert Font format. */
-		FormatCAM            /**< CAM Expert CAM format (NC, CNC, D, ..) */
+        FormatJWW,           /**< JWW Format type */
+        FormatJWC            /**< JWC Format type */
     };
 
     /**
@@ -351,10 +352,6 @@ public:
 		ActionPARISDebugCreateContainer,
 #endif
 
-#ifdef RVT_CAM
-		ActionCamMakeProfile,
-#endif
-
         /** Needed to loop through all actions */
         ActionLast
     };
@@ -595,37 +592,6 @@ public:
     };
 
     /**
-     * Mouse button and keyboard state for mouse events.
-     */
-    enum ButtonState {
-        NoButton        = Qt::NoButton,
-        LeftButton      = Qt::LeftButton,
-        RightButton     = Qt::RightButton,
-        MidButton       = Qt::MidButton,
-        MouseButtonMask = Qt::MouseButtonMask,
-        ShiftButton     = Qt::ShiftModifier,
-        ControlButton   = Qt::ControlModifier,
-        AltButton       = Qt::AltModifier,
-        MetaButton      = Qt::MetaModifier,
-        KeyButtonMask   = Qt::KeyboardModifierMask,
-        Keypad          = Qt::KeypadModifier
-    };
-
-    /**
-     * Wrapper for Qt
-     */
-    static Qt::ButtonState rsToQtButtonState(RS2::ButtonState t) {
-        return (Qt::ButtonState)t;
-    }
-
-    /**
-     * Wrapper for Qt
-     */
-    static RS2::ButtonState qtToRsButtonState(Qt::ButtonState t) {
-        return (RS2::ButtonState)t;
-    }
-
-    /**
      * Enum of line styles:
      */
     enum LineType {
@@ -1054,7 +1020,7 @@ public:
 		case Executive:
 			ret = QPrinter::Executive;
 			break;
-        case A0:
+                case A0:
 			ret = QPrinter::A0;
 			break;
 		case A1:
diff --git a/src/lib/engine/rs_application.h b/src/lib/engine/rs_application.h
deleted file mode 100644
index b99f1e7..0000000
--- a/src/lib/engine/rs_application.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_APPLICATION_H
-#define RS_APPLICATION_H
-
-#include <qapplication.h>
-
-#define RS_Application QApplication
-#define RS_APP qApp
-
-#endif
diff --git a/src/lib/engine/rs_block.cpp b/src/lib/engine/rs_block.cpp
index 6eb3be4..8534ddb 100644
--- a/src/lib/engine/rs_block.cpp
+++ b/src/lib/engine/rs_block.cpp
@@ -49,7 +49,7 @@ RS_Block::~RS_Block() {}
 
 RS_Entity* RS_Block::clone() {
     RS_Block* blk = new RS_Block(*this);
-	blk->entities.setAutoDelete(entities.autoDelete());
+    blk->setOwner(isOwner());
     blk->detach();
     blk->initId();
     return blk;
@@ -88,7 +88,7 @@ bool RS_Block::save(bool isAutoSave) {
 }
 
 
-bool RS_Block::saveAs(const RS_String& filename, RS2::FormatType type) {
+bool RS_Block::saveAs(const QString& filename, RS2::FormatType type) {
     RS_Graphic* g = getGraphic();
     if (g!=NULL) {
         return g->saveAs(filename, type);
diff --git a/src/lib/engine/rs_block.h b/src/lib/engine/rs_block.h
index 8cf02af..17e96df 100644
--- a/src/lib/engine/rs_block.h
+++ b/src/lib/engine/rs_block.h
@@ -28,7 +28,6 @@
 #ifndef RS_BLOCK_H
 #define RS_BLOCK_H
 
-//#include "rs_blocklist.h"
 #include "rs_document.h"
 
 /**
@@ -38,7 +37,7 @@ class RS_BlockData {
 public:
     RS_BlockData() {}
 
-    RS_BlockData(const RS_String& name,
+    RS_BlockData(const QString& name,
 	           const RS_Vector& basePoint,
 			   bool frozen) {
 
@@ -55,7 +54,7 @@ public:
     /**
      * Block name. Acts as an id.
      */
-	RS_String name;
+        QString name;
 	/*
      * Base point of the Block. Usually 0/0 since blocks can be moved around 
      * using the insertion point of Insert entities.
@@ -104,7 +103,7 @@ public:
     /**
      * @return Name of this block (the name is an Id for this block).
      */
-    RS_String getName() const {
+    QString getName() const {
         return data.name;
     }
 
@@ -133,18 +132,18 @@ public:
     /**
      * Reimplementation from RS_Document. Does nothing.
      */
-    virtual bool saveAs(const RS_String& filename, RS2::FormatType type);
+    virtual bool saveAs(const QString& filename, RS2::FormatType type);
 
     /**
      * Reimplementation from RS_Document. Does nothing.
      */
-    virtual bool open(const RS_String& , RS2::FormatType) {
+    virtual bool open(const QString& , RS2::FormatType) {
         // do nothing
         return false;
     }
 
     friend std::ostream& operator << (std::ostream& os, const RS_Block& b) {
-        os << " name: " << b.getName().latin1() << "\n";
+        os << " name: " << b.getName().toLatin1().data() << "\n";
         os << " entities: " << (RS_EntityContainer&)b << "\n";
         return os;
     }
@@ -153,7 +152,7 @@ public:
 	 * sets a new name for the block. Only called by blocklist to
 	 * assure that block names stay unique.
 	 */
-    void setName(const RS_String& n) {
+    void setName(const QString& n) {
         data.name = n;
     }
     
@@ -194,7 +193,7 @@ protected:
     /**
      * Block name. Acts as an id.
      */
-    //RS_String name;
+    //QString name;
 	//! Block data
 	RS_BlockData data;
 };
diff --git a/src/lib/engine/rs_blocklist.cpp b/src/lib/engine/rs_blocklist.cpp
index 56af23a..4c879ee 100644
--- a/src/lib/engine/rs_blocklist.cpp
+++ b/src/lib/engine/rs_blocklist.cpp
@@ -25,8 +25,10 @@
 **********************************************************************/
 
 
+#include "rs_debug.h"
 #include "rs_blocklist.h"
-
+#include "rs_block.h"
+#include "rs_blocklistlistener.h"
 
 /**
  * Constructor.
@@ -38,8 +40,6 @@
 RS_BlockList::RS_BlockList(bool owner) {
     this->owner = owner;
     //blocks.setAutoDelete(owner);
-    blocks.setAutoDelete(false);
-    blockListListeners.setAutoDelete(false);
     activeBlock = NULL;
 	setModified(false);
 }
@@ -58,7 +58,7 @@ void RS_BlockList::clear() {
  * Activates the given block.
  * Listeners are notified.
  */
-void RS_BlockList::activate(const RS_String& name) {
+void RS_BlockList::activate(const QString& name) {
     RS_DEBUG->print("RS_BlockList::activateBlock");
 
     activate(find(name));
@@ -128,7 +128,7 @@ bool RS_BlockList::add(RS_Block* block, bool notify) {
  * to force an update of GUI blocklists.
  */
 void RS_BlockList::addNotification() {
-    for (uint i=0; i<blockListListeners.count(); ++i) {
+    for (int i=0; i<blockListListeners.size(); ++i) {
         RS_BlockListListener* l = blockListListeners.at(i);
         l->blockAdded(NULL);
     }
@@ -145,9 +145,9 @@ void RS_BlockList::remove(RS_Block* block) {
     RS_DEBUG->print("RS_BlockList::removeBlock()");
 
     // here the block is removed from the list but not deleted
-    blocks.remove(block);
+    blocks.removeOne(block);
 
-    for (uint i=0; i<blockListListeners.count(); ++i) {
+    for (int i=0; i<blockListListeners.size(); ++i) {
         RS_BlockListListener* l = blockListListeners.at(i);
         l->blockRemoved(block);
     }
@@ -177,7 +177,7 @@ void RS_BlockList::remove(RS_Block* block) {
  * @retval true block was successfully renamed.
  * @retval false block couldn't be renamed.
  */
-bool RS_BlockList::rename(RS_Block* block, const RS_String& name) {
+bool RS_BlockList::rename(RS_Block* block, const QString& name) {
 	if (block!=NULL) {
 		if (find(name)==NULL) {
 			block->setName(name);
@@ -213,11 +213,11 @@ void RS_BlockList::editBlock(RS_Block* block, const RS_Block& source) {
  * @return Pointer to the block with the given name or
  * \p NULL if no such block was found.
  */
-RS_Block* RS_BlockList::find(const RS_String& name) {
+RS_Block* RS_BlockList::find(const QString& name) {
     //RS_DEBUG->print("RS_BlockList::find");
 	RS_Block* ret = NULL;
 
-    for (uint i=0; i<count(); ++i) {
+    for (int i=0; i<count(); ++i) {
         RS_Block* b = at(i);
         if (b->getName()==name) {
             ret=b;
@@ -235,10 +235,10 @@ RS_Block* RS_BlockList::find(const RS_String& name) {
  *
  * @param suggestion Suggested name the new name will be based on.
  */
-RS_String RS_BlockList::newName(const RS_String& suggestion) {
-    RS_String name;
+QString RS_BlockList::newName(const QString& suggestion) {
+    QString name;
     for (int i=0; i<1e5; ++i) {
-        name = RS_String("%1-%2").arg(suggestion).arg(i);
+        name = QString("%1-%2").arg(suggestion).arg(i);
         if (find(name)==NULL) {
             return name;
         }
@@ -253,7 +253,7 @@ RS_String RS_BlockList::newName(const RS_String& suggestion) {
  * Switches on / off the given block. 
  * Listeners are notified.
  */
-void RS_BlockList::toggle(const RS_String& name) {
+void RS_BlockList::toggle(const QString& name) {
     toggle(find(name));
 }
 
@@ -271,7 +271,7 @@ void RS_BlockList::toggle(RS_Block* block) {
     block->toggle();
 
     // Notify listeners:
-    for (uint i=0; i<blockListListeners.count(); ++i) {
+    for (int i=0; i<blockListListeners.size(); ++i) {
         RS_BlockListListener* l = blockListListeners.at(i);
 
         l->blockToggled(block);
@@ -287,11 +287,11 @@ void RS_BlockList::toggle(RS_Block* block) {
  */
 void RS_BlockList::freezeAll(bool freeze) {
 
-    for (uint l=0; l<count(); l++) {
+    for (int l=0; l<count(); l++) {
         at(l)->freeze(freeze);
     }
 
-    for (uint i=0; i<blockListListeners.count(); ++i) {
+    for (int i=0; i<blockListListeners.size(); ++i) {
         RS_BlockListListener* l = blockListListeners.at(i);
         l->blockToggled(NULL);
     }
@@ -304,7 +304,7 @@ void RS_BlockList::freezeAll(bool freeze) {
  * Listeners are notified.
  */
 /*
-void RS_BlockList::toggleBlock(const RS_String& name) {
+void RS_BlockList::toggleBlock(const QString& name) {
 	RS_Block* block = findBlock(name);
 	block->toggle();
 	
@@ -332,7 +332,7 @@ void RS_BlockList::addListener(RS_BlockListListener* listener) {
  * removes a BlockListListener from the list of listeners. 
  */
 void RS_BlockList::removeListener(RS_BlockListListener* listener) {
-    blockListListeners.remove(listener);
+    blockListListeners.removeOne(listener);
 }
 
 
@@ -343,7 +343,7 @@ void RS_BlockList::removeListener(RS_BlockListListener* listener) {
 std::ostream& operator << (std::ostream& os, RS_BlockList& b) {
 
     os << "Blocklist: \n";
-    for (uint i=0; i<b.count(); ++i) {
+    for (int i=0; i<b.count(); ++i) {
         RS_Block* blk = b.at(i);
 
         os << *blk << "\n";
diff --git a/src/lib/engine/rs_blocklist.h b/src/lib/engine/rs_blocklist.h
index 4bb73c5..af84bda 100644
--- a/src/lib/engine/rs_blocklist.h
+++ b/src/lib/engine/rs_blocklist.h
@@ -29,10 +29,11 @@
 #define RS_BLOCKLIST_H
 
 
-#include "rs_block.h"
-#include "rs_blocklistlistener.h"
-#include "rs_entity.h"
-#include "rs_ptrlist.h"
+#include <QList>
+#include <QString>
+
+class RS_Block;
+class RS_BlockListListener;
 
 /**
  * List of blocks.
@@ -50,18 +51,18 @@ public:
     /**
      * @return Number of blocks available.
      */
-    uint count() {
+    int count() {
         return blocks.count();
     }
 
     /**
      * @return Block at given position or NULL if i is out of range.
      */
-    RS_Block* at(uint i) {
+    RS_Block* at(int i) {
         return blocks.at(i);
     }
 
-    void activate(const RS_String& name);
+    void activate(const QString& name);
     void activate(RS_Block* block);
     //! @return The active block of NULL if no block is activated.
     RS_Block* getActive() {
@@ -71,11 +72,11 @@ public:
     virtual bool add(RS_Block* block, bool notify=true);
     virtual void addNotification();
     virtual void remove(RS_Block* block);
-    virtual bool rename(RS_Block* block, const RS_String& name);
+    virtual bool rename(RS_Block* block, const QString& name);
     //virtual void editBlock(RS_Block* block, const RS_Block& source);
-    RS_Block* find(const RS_String& name);
-    RS_String newName(const RS_String& suggestion = "");
-    void toggle(const RS_String& name);
+    RS_Block* find(const QString& name);
+    QString newName(const QString& suggestion = "");
+    void toggle(const QString& name);
     void toggle(RS_Block* block);
     void freezeAll(bool freeze);
 
@@ -118,9 +119,9 @@ private:
     //! Is the list owning the blocks?
     bool owner;
     //! Blocks in the graphic
-    RS_PtrList<RS_Block> blocks;
+    QList<RS_Block*> blocks;
     //! List of registered BlockListListeners
-    RS_PtrList<RS_BlockListListener> blockListListeners;
+    QList<RS_BlockListListener*> blockListListeners;
     //! Currently active block
     RS_Block* activeBlock;
     /** Flag set if the layer list was modified and not yet saved. */
diff --git a/src/lib/engine/rs_circle.cpp b/src/lib/engine/rs_circle.cpp
index 6245639..0364686 100644
--- a/src/lib/engine/rs_circle.cpp
+++ b/src/lib/engine/rs_circle.cpp
@@ -33,6 +33,7 @@
 #include "rs_information.h"
 #include "rs_graphicview.h"
 #include "rs_painter.h"
+#include "rs_linetypepattern.h"
 
 
 
diff --git a/src/lib/engine/rs_clipboard.cpp b/src/lib/engine/rs_clipboard.cpp
index d680455..ec5ef96 100644
--- a/src/lib/engine/rs_clipboard.cpp
+++ b/src/lib/engine/rs_clipboard.cpp
@@ -52,7 +52,7 @@ void RS_Clipboard::addBlock(RS_Block* b) {
 }
 
 
-bool RS_Clipboard::hasBlock(const RS_String& name) {
+bool RS_Clipboard::hasBlock(const QString& name) {
 	return (graphic.findBlock(name)!=NULL);
 }
 
@@ -66,7 +66,7 @@ void RS_Clipboard::addLayer(RS_Layer* l) {
 
 
 
-bool RS_Clipboard::hasLayer(const RS_String& name) {
+bool RS_Clipboard::hasLayer(const QString& name) {
 	return (graphic.findLayer(name)!=NULL);
 }
 
diff --git a/src/lib/engine/rs_clipboard.h b/src/lib/engine/rs_clipboard.h
index 887009c..61ce002 100644
--- a/src/lib/engine/rs_clipboard.h
+++ b/src/lib/engine/rs_clipboard.h
@@ -63,7 +63,7 @@ public:
 	void clear();
 
 	void addBlock(RS_Block* b);
-	bool hasBlock(const RS_String& name);
+        bool hasBlock(const QString& name);
 	int  countBlocks() {
 		return graphic.countBlocks();
 	}
@@ -72,7 +72,7 @@ public:
 	}
 	
 	void addLayer(RS_Layer* l);
-	bool hasLayer(const RS_String& name);
+        bool hasLayer(const QString& name);
 	int  countLayers() {
 		return graphic.countLayers();
 	}
diff --git a/src/lib/engine/rs_color.h b/src/lib/engine/rs_color.h
index ab8d9ab..20363ea 100644
--- a/src/lib/engine/rs_color.h
+++ b/src/lib/engine/rs_color.h
@@ -28,11 +28,10 @@
 #ifndef RS_COLOR_H
 #define RS_COLOR_H
 
-#include <qcolor.h>
+#include <QColor>
 
 #include "rs_flags.h"
 
-
 //! Color defined by layer not entity
 //#define C_BY_LAYER     0x00000001
 //! Color defined by block not entity
@@ -85,7 +84,7 @@ public:
     }
 
     friend std::ostream& operator << (std::ostream& os, const RS_Color& c) {
-        os << " color: " << c.name().latin1()
+        os << " color: " << c.name().toLatin1().data()
         << " flags: " << (c.getFlag(RS2::FlagByLayer) ? "RS2::FlagByLayer " : "")
         << (c.getFlag(RS2::FlagByBlock) ? "RS2::FlagByBlock " : "");
         return os;
diff --git a/src/lib/engine/rs_datetime.h b/src/lib/engine/rs_datetime.h
deleted file mode 100644
index 85e3b93..0000000
--- a/src/lib/engine/rs_datetime.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_DATETIME_H
-#define RS_DATETIME_H
-
-#include <qdatetime.h>
-
-#define RS_DateTime QDateTime
-
-#endif
diff --git a/src/lib/engine/rs_dict.h b/src/lib/engine/rs_dict.h
deleted file mode 100644
index 0348f36..0000000
--- a/src/lib/engine/rs_dict.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_DICT_H
-#define RS_DICT_H
-
-#include <q3dict.h>
-
-#define RS_Dict Q3Dict
-#define RS_DictIterator Q3DictIterator
-
-#endif
diff --git a/src/lib/engine/rs_dimaligned.cpp b/src/lib/engine/rs_dimaligned.cpp
index e620086..ae3a21f 100644
--- a/src/lib/engine/rs_dimaligned.cpp
+++ b/src/lib/engine/rs_dimaligned.cpp
@@ -53,7 +53,7 @@ RS_DimAligned::RS_DimAligned(RS_EntityContainer* parent,
  * Sets a new text. The entities representing the 
  * text are updated.
  */
-//void RS_DimAligned::setText(const RS_String& t) {
+//void RS_DimAligned::setText(const QString& t) {
 //    data.text = t;
 //    update();
 //}
@@ -71,18 +71,18 @@ RS_VectorSolutions RS_DimAligned::getRefPoints() {
  * @return Automatically creted label for the default 
  * measurement of this dimension.
  */
-RS_String RS_DimAligned::getMeasuredLabel() {
+QString RS_DimAligned::getMeasuredLabel() {
     double dist = edata.extensionPoint1.distanceTo(edata.extensionPoint2);
 
 	RS_Graphic* graphic = getGraphic();
 
-    RS_String ret;
+    QString ret;
 	if (graphic!=NULL) {
 		ret = RS_Units::formatLinear(dist, graphic->getUnit(), 
 			graphic->getLinearFormat(), graphic->getLinearPrecision());
 	}
 	else {
-    	ret = RS_String("%1").arg(dist);
+        ret = QString("%1").arg(dist);
 	}
     return ret;
 }
diff --git a/src/lib/engine/rs_dimaligned.h b/src/lib/engine/rs_dimaligned.h
index 5c4195a..b713ff7 100644
--- a/src/lib/engine/rs_dimaligned.h
+++ b/src/lib/engine/rs_dimaligned.h
@@ -86,7 +86,7 @@ public:
 
     virtual RS_Entity* clone() {
         RS_DimAligned* d = new RS_DimAligned(*this);
-		d->entities.setAutoDelete(entities.autoDelete());
+        d->setOwner(isOwner());
         d->initId();
         d->detach();
         return d;
@@ -107,7 +107,7 @@ public:
 
     virtual RS_VectorSolutions getRefPoints();
 
-    virtual RS_String getMeasuredLabel();
+    virtual QString getMeasuredLabel();
 
     virtual void update(bool autoText=false);
 
diff --git a/src/lib/engine/rs_dimangular.cpp b/src/lib/engine/rs_dimangular.cpp
index 98028ee..be20da9 100644
--- a/src/lib/engine/rs_dimangular.cpp
+++ b/src/lib/engine/rs_dimangular.cpp
@@ -56,8 +56,8 @@ RS_DimAngular::RS_DimAngular(RS_EntityContainer* parent,
  * @return Automatically created label for the default 
  * measurement of this dimension.
  */
-RS_String RS_DimAngular::getMeasuredLabel() {
-    RS_String ret;
+QString RS_DimAngular::getMeasuredLabel() {
+    QString ret;
 
 	int dimaunit = getGraphicVariableInt("$DIMAUNIT", 0);
 	int dimadec = getGraphicVariableInt("$DIMADEC", 0);
@@ -67,9 +67,9 @@ RS_String RS_DimAngular::getMeasuredLabel() {
 		dimadec);
 	
     /*
-	ret = RS_String("%1%2")
+        ret = QString("%1%2")
           .arg(RS_Math::rad2deg(getAngle()))
-          .arg(RS_Char(0xB0));
+          .arg(QChar(0xB0));
 	*/
     return ret;
 }
diff --git a/src/lib/engine/rs_dimangular.h b/src/lib/engine/rs_dimangular.h
index 7220722..30aeaf2 100644
--- a/src/lib/engine/rs_dimangular.h
+++ b/src/lib/engine/rs_dimangular.h
@@ -90,7 +90,7 @@ public:
 
     virtual RS_Entity* clone() {
         RS_DimAngular* d = new RS_DimAngular(*this);
-		d->entities.setAutoDelete(entities.autoDelete());
+        d->setOwner(isOwner());
         d->initId();
         d->detach();
         return d;
@@ -109,7 +109,7 @@ public:
         return edata;
     }
 
-    virtual RS_String getMeasuredLabel();
+    virtual QString getMeasuredLabel();
     double getAngle();
     RS_Vector getCenter();
 	bool getAngles(double& ang1, double& ang2, bool& reversed,
diff --git a/src/lib/engine/rs_dimdiametric.cpp b/src/lib/engine/rs_dimdiametric.cpp
index 1866245..7a157b0 100644
--- a/src/lib/engine/rs_dimdiametric.cpp
+++ b/src/lib/engine/rs_dimdiametric.cpp
@@ -53,20 +53,20 @@ RS_DimDiametric::RS_DimDiametric(RS_EntityContainer* parent,
  * @return Automatically created label for the default 
  * measurement of this dimension.
  */
-RS_String RS_DimDiametric::getMeasuredLabel() {
+QString RS_DimDiametric::getMeasuredLabel() {
 
     // Definitive dimension line:
     double dist = data.definitionPoint.distanceTo(edata.definitionPoint);
 
 	RS_Graphic* graphic = getGraphic();
 
-    RS_String ret;
+    QString ret;
 	if (graphic!=NULL) {
 		ret = RS_Units::formatLinear(dist, graphic->getUnit(), 
 			graphic->getLinearFormat(), graphic->getLinearPrecision());
 	}
 	else {
-    	ret = RS_String("%1").arg(dist);
+        ret = QString("%1").arg(dist);
 	}
 
     return ret;
diff --git a/src/lib/engine/rs_dimdiametric.h b/src/lib/engine/rs_dimdiametric.h
index 7abb6fe..885d482 100644
--- a/src/lib/engine/rs_dimdiametric.h
+++ b/src/lib/engine/rs_dimdiametric.h
@@ -84,7 +84,7 @@ public:
 
     virtual RS_Entity* clone() {
         RS_DimDiametric* d = new RS_DimDiametric(*this);
-		d->entities.setAutoDelete(entities.autoDelete());
+        d->setOwner(isOwner());
         d->initId();
         d->detach();
         return d;
@@ -105,7 +105,7 @@ public:
     
 	virtual RS_VectorSolutions getRefPoints();
 
-    virtual RS_String getMeasuredLabel();
+    virtual QString getMeasuredLabel();
 
     virtual void update(bool autoText=false);
 
diff --git a/src/lib/engine/rs_dimension.cpp b/src/lib/engine/rs_dimension.cpp
index b9c21ed..1db2855 100644
--- a/src/lib/engine/rs_dimension.cpp
+++ b/src/lib/engine/rs_dimension.cpp
@@ -63,12 +63,12 @@ RS_Vector RS_Dimension::getNearestSelectedRef(const RS_Vector& coord,
  *      label if appropriate.
  * @see getMeasuredLabel
  */
-RS_String RS_Dimension::getLabel(bool resolve) {
+QString RS_Dimension::getLabel(bool resolve) {
 	if (!resolve) {
 		return data.text;
 	}
 
-    RS_String ret="";
+    QString ret="";
 
     // One space suppresses the text:
     if (data.text==" ") {
@@ -83,7 +83,7 @@ RS_String RS_Dimension::getLabel(bool resolve) {
     // Others print the text (<> is replaced by the measurement)
     else {
         ret = data.text;
-        ret = ret.replace(RS_String("<>"), getMeasuredLabel());
+        ret = ret.replace(QString("<>"), getMeasuredLabel());
     }
 
     return ret;
@@ -93,7 +93,7 @@ RS_String RS_Dimension::getLabel(bool resolve) {
 /**
  * Sets a new text for the label.
  */
-void RS_Dimension::setLabel(const RS_String& l) {
+void RS_Dimension::setLabel(const QString& l) {
 	data.text = l;
 }
 
@@ -276,7 +276,7 @@ double RS_Dimension::getTextHeight() {
  * If the variable is not found it is added with the given default
  * value converted to the local unit.
  */
-double RS_Dimension::getGraphicVariable(const RS_String& key, double defMM,
+double RS_Dimension::getGraphicVariable(const QString& key, double defMM,
                                         int code) {
 
     double v = getGraphicVariableDouble(key, RS_MINDOUBLE);
diff --git a/src/lib/engine/rs_dimension.h b/src/lib/engine/rs_dimension.h
index b858dbb..acd98f7 100644
--- a/src/lib/engine/rs_dimension.h
+++ b/src/lib/engine/rs_dimension.h
@@ -62,8 +62,8 @@ public:
                      RS2::HAlign halign,
                      RS2::TextLineSpacingStyle lineSpacingStyle,
                      double lineSpacingFactor,
-                     RS_String text,
-                     RS_String style,
+                     QString text,
+                     QString style,
                      double angle) {
         this->definitionPoint = definitionPoint;
         this->middleOfText = middleOfText;
@@ -107,9 +107,9 @@ public:
     * or "<>" for the actual measurement or " " (one blank space) 
     * for supressing the text. 
     */
-    RS_String text;
+    QString text;
     /** Dimension style name */
-    RS_String style;
+    QString style;
     /** Rotation angle of dimension text away from default orientation */
     double angle;
 };
@@ -135,14 +135,14 @@ public:
 	RS_Vector getNearestRef(const RS_Vector& coord, double* dist);
 	RS_Vector getNearestSelectedRef(const RS_Vector& coord, double* dist);
 
-    RS_String getLabel(bool resolve=true);
-	void setLabel(const RS_String& l);
+    QString getLabel(bool resolve=true);
+        void setLabel(const QString& l);
 
     /**
      * Needs to be implemented by the dimension class to return the
      * measurement of the dimension (e.g. 10.5 or 15'14").
      */
-    virtual RS_String getMeasuredLabel() = 0;
+    virtual QString getMeasuredLabel() = 0;
 
     /**
      * Must be overwritten by implementing dimension entity class
@@ -177,11 +177,11 @@ public:
         return data.lineSpacingFactor;
     }
 
-    RS_String getText() {
+    QString getText() {
         return data.text;
     }
 
-    RS_String getStyle() {
+    QString getStyle() {
         return data.style;
     }
 
@@ -195,7 +195,7 @@ public:
     double getDimensionLineGap();
     double getTextHeight();
 	
-	double getGraphicVariable(const RS_String& key, double defMM, int code);
+        double getGraphicVariable(const QString& key, double defMM, int code);
 
 	virtual double getLength() {
 		return -1.0;
diff --git a/src/lib/engine/rs_dimlinear.cpp b/src/lib/engine/rs_dimlinear.cpp
index 4d0d9d4..def5f31 100644
--- a/src/lib/engine/rs_dimlinear.cpp
+++ b/src/lib/engine/rs_dimlinear.cpp
@@ -60,7 +60,7 @@ RS_VectorSolutions RS_DimLinear::getRefPoints() {
  * @return Automatically created label for the default 
  * measurement of this dimension.
  */
-RS_String RS_DimLinear::getMeasuredLabel() {
+QString RS_DimLinear::getMeasuredLabel() {
     // direction of dimension line
     RS_Vector dirDim;
     dirDim.setPolar(100.0, edata.angle);
@@ -78,13 +78,13 @@ RS_String RS_DimLinear::getMeasuredLabel() {
 
 	RS_Graphic* graphic = getGraphic();
 
-    RS_String ret;
+    QString ret;
 	if (graphic!=NULL) {
 		ret = RS_Units::formatLinear(dist, graphic->getUnit(), 
 			graphic->getLinearFormat(), graphic->getLinearPrecision());
 	}
 	else {
-    	ret = RS_String("%1").arg(dist);
+        ret = QString("%1").arg(dist);
 	}
 
     return ret;
diff --git a/src/lib/engine/rs_dimlinear.h b/src/lib/engine/rs_dimlinear.h
index 24c9b90..fe10143 100644
--- a/src/lib/engine/rs_dimlinear.h
+++ b/src/lib/engine/rs_dimlinear.h
@@ -93,7 +93,7 @@ public:
 
     virtual RS_Entity* clone() {
         RS_DimLinear* d = new RS_DimLinear(*this);
-		d->entities.setAutoDelete(entities.autoDelete());
+        d->setOwner(isOwner());
         d->initId();
         d->detach();
         return d;
@@ -114,7 +114,7 @@ public:
 	
     virtual RS_VectorSolutions getRefPoints();
 
-    virtual RS_String getMeasuredLabel();
+    virtual QString getMeasuredLabel();
 
     virtual void update(bool autoText=false);
 
diff --git a/src/lib/engine/rs_dimradial.cpp b/src/lib/engine/rs_dimradial.cpp
index aebd5ff..2086b4e 100644
--- a/src/lib/engine/rs_dimradial.cpp
+++ b/src/lib/engine/rs_dimradial.cpp
@@ -50,19 +50,19 @@ RS_DimRadial::RS_DimRadial(RS_EntityContainer* parent,
  * @return Automatically created label for the default 
  * measurement of this dimension.
  */
-RS_String RS_DimRadial::getMeasuredLabel() {
+QString RS_DimRadial::getMeasuredLabel() {
 
     // Definitive dimension line:
     double dist = data.definitionPoint.distanceTo(edata.definitionPoint);
 
     RS_Graphic* graphic = getGraphic();
 
-    RS_String ret;
+    QString ret;
     if (graphic!=NULL) {
         ret = RS_Units::formatLinear(dist, graphic->getUnit(),
                                      graphic->getLinearFormat(), graphic->getLinearPrecision());
     } else {
-        ret = RS_String("%1").arg(dist);
+        ret = QString("%1").arg(dist);
     }
 
     return ret;
diff --git a/src/lib/engine/rs_dimradial.h b/src/lib/engine/rs_dimradial.h
index bda75e7..28c6b8a 100644
--- a/src/lib/engine/rs_dimradial.h
+++ b/src/lib/engine/rs_dimradial.h
@@ -84,7 +84,7 @@ public:
 
     virtual RS_Entity* clone() {
         RS_DimRadial* d = new RS_DimRadial(*this);
-		d->entities.setAutoDelete(entities.autoDelete());
+        d->setOwner(isOwner());
         d->initId();
         d->detach();
         return d;
@@ -105,7 +105,7 @@ public:
 	
     virtual RS_VectorSolutions getRefPoints();
 
-    virtual RS_String getMeasuredLabel();
+    virtual QString getMeasuredLabel();
 
     virtual void update(bool autoText=false);
 
diff --git a/src/lib/engine/rs_dir.h b/src/lib/engine/rs_dir.h
deleted file mode 100644
index c7bf813..0000000
--- a/src/lib/engine/rs_dir.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_DIR_H
-#define RS_DIR_H
-
-#include <qdir.h>
-
-#define RS_Dir QDir
-
-#endif
diff --git a/src/lib/engine/rs_document.h b/src/lib/engine/rs_document.h
index b4e098e..ee14e4d 100644
--- a/src/lib/engine/rs_document.h
+++ b/src/lib/engine/rs_document.h
@@ -31,7 +31,6 @@
 #include "rs_layerlist.h"
 #include "rs_entitycontainer.h"
 #include "rs_undo.h"
-#include "rs_string.h"
 
 class RS_BlockList;
 
@@ -54,8 +53,8 @@ public:
 
     virtual void newDoc() = 0;
     virtual bool save(bool isAutoSave = false) = 0;
-    virtual bool saveAs(const RS_String &filename, RS2::FormatType type) = 0;
-    virtual bool open(const RS_String &filename, RS2::FormatType type) = 0;
+    virtual bool saveAs(const QString &filename, RS2::FormatType type) = 0;
+    virtual bool open(const QString &filename, RS2::FormatType type) = 0;
 	
 
     /**
@@ -93,21 +92,21 @@ public:
      * @return File name of the document currently loaded.
      * Note, that the default file name is empty.
      */
-    RS_String getFilename() const {
+    QString getFilename() const {
         return filename;
     }
 	
     /**
      * @return Auto-save file name of the document currently loaded.
      */
-    RS_String getAutoSaveFilename() const {
+    QString getAutoSaveFilename() const {
         return autosaveFilename;
     }
 	
     /**
      * Sets file name for the document currently loaded.
      */
-    void setFilename(const RS_String& fn) {
+    void setFilename(const QString& fn) {
         filename = fn;
     }
 
@@ -142,9 +141,9 @@ protected:
     /** Active pen. */
     RS_Pen activePen;
     /** File name of the document or empty for a new document. */
-    RS_String filename;
+    QString filename;
 	/** Auto-save file name of document. */
-	RS_String autosaveFilename;
+        QString autosaveFilename;
 	/** Format type */
 	RS2::FormatType formatType;
 };
diff --git a/src/lib/engine/rs_ellipse.cpp b/src/lib/engine/rs_ellipse.cpp
index 64652dd..452de0a 100644
--- a/src/lib/engine/rs_ellipse.cpp
+++ b/src/lib/engine/rs_ellipse.cpp
@@ -7,7 +7,7 @@
 **
 **
 ** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
+** it under the terms of the GNU General Public License as published by
 ** the Free Software Foundation; either version 2 of the License, or
 ** (at your option) any later version.
 **
@@ -15,12 +15,12 @@
 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ** GNU General Public License for more details.
-** 
+**
 ** You should have received a copy of the GNU General Public License
 ** along with this program; if not, write to the Free Software
 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 **
-** This copyright notice MUST APPEAR in all copies of the script!  
+** This copyright notice MUST APPEAR in all copies of the script!
 **
 **********************************************************************/
 
@@ -31,13 +31,14 @@
 #include "rs_graphicview.h"
 #include "rs_painter.h"
 #include "rs_information.h"
+#include "rs_linetypepattern.h"
 
 /**
  * Constructor.
  */
 RS_Ellipse::RS_Ellipse(RS_EntityContainer* parent,
                        const RS_EllipseData& d)
-        :RS_AtomicEntity(parent), data(d) {
+    :RS_AtomicEntity(parent), data(d) {
 
     //calculateEndpoints();
     calculateBorders();
@@ -47,64 +48,104 @@ RS_Ellipse::RS_Ellipse(RS_EntityContainer* parent,
 /**
  * Recalculates the endpoints using the angles and the radius.
  */
- /*
+/*
 void RS_Ellipse::calculateEndpoints() {
-    double angle = data.majorP.angle();
-    double radius1 = getMajorRadius();
-    double radius2 = getMinorRadius();
-
-    startpoint.set(data.center.x + cos(data.angle1) * radius1,
-                   data.center.y + sin(data.angle1) * radius2);
-    startpoint.rotate(data.center, angle);
-    endpoint.set(data.center.x + cos(data.angle2) * radius1,
-                 data.center.y + sin(data.angle2) * radius2);
-    endpoint.rotate(data.center, angle);
+   double angle = data.majorP.angle();
+   double radius1 = getMajorRadius();
+   double radius2 = getMinorRadius();
+
+   startpoint.set(data.center.x + cos(data.angle1) * radius1,
+                  data.center.y + sin(data.angle1) * radius2);
+   startpoint.rotate(data.center, angle);
+   endpoint.set(data.center.x + cos(data.angle2) * radius1,
+                data.center.y + sin(data.angle2) * radius2);
+   endpoint.rotate(data.center, angle);
 }
 */
 
 
 /**
  * Calculates the boundary box of this ellipse.
- *
- * @todo Fix that - the algorithm used is really bad / slow.
  */
 void RS_Ellipse::calculateBorders() {
-	RS_DEBUG->print("RS_Ellipse::calculateBorders");
+    RS_DEBUG->print("RS_Ellipse::calculateBorders");
 
     double radius1 = getMajorRadius();
     double radius2 = getMinorRadius();
     double angle = getAngle();
-    double a1 = ((!isReversed()) ? data.angle1 : data.angle2);
-    double a2 = ((!isReversed()) ? data.angle2 : data.angle1);
-	RS_Vector startpoint = getStartpoint();
-	RS_Vector endpoint = getEndpoint();
+    //double a1 = ((!isReversed()) ? data.angle1 : data.angle2);
+    //double a2 = ((!isReversed()) ? data.angle2 : data.angle1);
+    RS_Vector startpoint = getStartpoint();
+    RS_Vector endpoint = getEndpoint();
 
     double minX = std::min(startpoint.x, endpoint.x);
     double minY = std::min(startpoint.y, endpoint.y);
     double maxX = std::max(startpoint.x, endpoint.x);
     double maxY = std::max(startpoint.y, endpoint.y);
 
-    // kind of a brute force. TODO: exact calculation
     RS_Vector vp;
-	double a = a1;
-	do {
-        vp.set(data.center.x + radius1 * cos(a),
-               data.center.y + radius2 * sin(a));
-        vp.rotate(data.center, angle);
-
-        minX = std::min(minX, vp.x);
-        minY = std::min(minY, vp.y);
-        maxX = std::max(maxX, vp.x);
-        maxY = std::max(maxY, vp.y);
-
-		a += 0.03;
-    } while (RS_Math::isAngleBetween(RS_Math::correctAngle(a), a1, a2, false) && 
-			a<4*M_PI);
-
+    // kind of a brute force. TODO: exact calculation
+//    double a = a1;
+
+//    do {
+//        vp.set(data.center.x + radius1 * cos(a),
+//               data.center.y + radius2 * sin(a));
+//        vp.rotate(data.center, angle);
+//
+//        minX = std::min(minX, vp.x);
+//        minY = std::min(minY, vp.y);
+//        maxX = std::max(maxX, vp.x);
+//        maxY = std::max(maxY, vp.y);
+//
+//        a += 0.03;
+//    } while (RS_Math::isAngleBetween(RS_Math::correctAngle(a), a1, a2, false) &&
+//             a<4*M_PI);
+//    std::cout<<"a1="<<a1<<"\ta2="<<a2<<std::endl<<"Old algorithm:\nminX="<<minX<<"\tmaxX="<<maxX<<"\nminY="<<minY<<"\tmaxY="<<maxY<<std::endl;
+
+    // Exact algorithm, based on rotation:
+    // ( r1*cos(a), r2*sin(a)) rotated by angle to
+    // (r1*cos(a)*cos(angle)-r2*sin(a)*sin(angle),r1*cos(a)*sin(angle)+r2*sin(a)*cos(angle))
+    // both coordinates can be further reorganized to the form rr*cos(a+ theta),
+    // with rr and theta angle defined by the coordinates given above
+    double amin,amax;
+//      x range
+    vp.set(radius1*cos(angle),radius2*sin(angle));
+
+    amin=RS_Math::correctAngle(getAngle1()+vp.angle()); // to the range of 0 to 2*M_PI
+    amax=RS_Math::correctAngle(getAngle2()+vp.angle()); // to the range of 0 to 2*M_PI
+    if( RS_Math::isAngleBetween(M_PI,amin,amax,isReversed()) || fabs(amax-amin) < RS_TOLERANCE) {
+        //if( (amin<=M_PI && delta_a >= M_PI - amin) || (amin > M_PI && delta_a >= 3*M_PI - amin)) {
+        minX= data.center.x-vp.magnitude();
+    }
+//    else
+//       minX=data.center.x +vp.magnitude()*std::min(cos(amin),cos(amin+delta_a));
+    if( RS_Math::isAngleBetween(2.*M_PI,amin,amax,isReversed()) || fabs(amax-amin) < RS_TOLERANCE) {
+        //if( delta_a >= 2*M_PI - amin ) {
+        maxX= data.center.x+vp.magnitude();
+    }
+//    else
+//       maxX= data.center.x+vp.magnitude()*std::max(cos(amin),cos(amin+delta_a));
+//      y range
+    vp.set(radius1*sin(angle),-1*radius2*cos(angle));
+    amin=RS_Math::correctAngle(getAngle1()+vp.angle()); // to the range of 0 to 2*M_PI
+    amax=RS_Math::correctAngle(getAngle2()+vp.angle()); // to the range of 0 to 2*M_PI
+    if( RS_Math::isAngleBetween(M_PI,amin,amax,isReversed()) || fabs(amax-amin) < RS_TOLERANCE) {
+        //if( (amin<=M_PI &&delta_a >= M_PI - amin) || (amin > M_PI && delta_a >= 3*M_PI - amin)) {
+        minY= data.center.y-vp.magnitude();
+    }
+//    else
+//        minY=data.center.y +vp.magnitude()*std::min(cos(amin),cos(amin+delta_a));
+    if( RS_Math::isAngleBetween(2.*M_PI,amin,amax,isReversed()) || fabs(amax-amin) < RS_TOLERANCE) {
+        //if( delta_a >= 2*M_PI - amin ) {
+        maxY= data.center.y+vp.magnitude();
+    }
+//    else
+//        maxY= data.center.y+vp.magnitude()*std::max(cos(amin),cos(amin+delta_a));
+//std::cout<<"New algorithm:\nminX="<<minX<<"\tmaxX="<<maxX<<"\nminY="<<minY<<"\tmaxY="<<maxY<<std::endl;
 
     minV.set(minX, minY);
     maxV.set(maxX, maxY);
-	RS_DEBUG->print("RS_Ellipse::calculateBorders: OK");
+    RS_DEBUG->print("RS_Ellipse::calculateBorders: OK");
 }
 
 
@@ -119,8 +160,8 @@ RS_VectorSolutions RS_Ellipse::getRefPoints() {
 RS_Vector RS_Ellipse::getNearestEndpoint(const RS_Vector& coord, double* dist) {
     double dist1, dist2;
     RS_Vector nearerPoint;
-	RS_Vector startpoint = getStartpoint();
-	RS_Vector endpoint = getEndpoint();
+    RS_Vector startpoint = getStartpoint();
+    RS_Vector endpoint = getEndpoint();
 
     dist1 = startpoint.distanceTo(coord);
     dist2 = endpoint.distanceTo(coord);
@@ -140,136 +181,241 @@ RS_Vector RS_Ellipse::getNearestEndpoint(const RS_Vector& coord, double* dist) {
     return nearerPoint;
 }
 
+bool RS_Ellipse::switchMajorMinor(void)
+//switch naming of major/minor, return true if success
+{
+    if (fabs(data.ratio) < RS_TOLERANCE) return false;
+    RS_Vector vp_start=getStartpoint();
+    RS_Vector vp_end=getStartpoint();
+    RS_Vector vp=getMajorP();
+    double a=getMinorRadius()/vp.magnitude();
+    setMajorP(RS_Vector(- a*vp.y, a*vp.x)); //direction pi/2 relative to old MajorP;
+    setRatio(1./data.ratio);
+    setAngle1(getEllipseAngle(vp_start));
+    setAngle2(getEllipseAngle(vp_end));
+    return true;
+}
 
-
+//implemented using an analytical aglorithm
 RS_Vector RS_Ellipse::getNearestPointOnEntity(const RS_Vector& coord,
-        bool onEntity, double* dist, RS_Entity** entity) {
-	
+        bool onEntity, double* dist, RS_Entity** entity)
+{
+
     RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity");
-    
     RS_Vector ret(false);
-    
+
+    if( ! coord.valid ) {
+        if ( dist != NULL ) *dist=RS_MAXDOUBLE;
+        return ret;
+
+    }
+
     if (entity!=NULL) {
         *entity = this;
     }
-    double ang = getAngle();
-
-    RS_Vector normalized = (coord - data.center).rotate(-ang);
-
-    double dU = normalized.x;
-    double dV = normalized.y;
-    double dA = getMajorRadius();
-    double dB = getMinorRadius();
-    double dEpsilon = 1.0e-8;
-    int iMax = 32;
-    int riIFinal = 0;
-    double rdX = 0.0;
-    double rdY = 0.0;
-    double dDistance; 
-    bool swap = false;
-    bool majorSwap = false;
-
-    if (dA<dB) {
-        double dum = dA;
-        dA = dB;
-        dB = dum;
-        dum = dU;
-        dU = dV;
-        dV = dum;
-        majorSwap = true;
+    ret=coord;
+    ret.move(-getCenter());
+    ret.rotate(-getAngle());
+    double x=ret.x,y=ret.y;
+    double a=getMajorRadius();
+    double b=getMinorRadius();
+    //std::cout<<"(a= "<<a<<" b= "<<b<<" x= "<<x<<" y= "<<y<<" )\n";
+    //std::cout<<"finding minimum for ("<<x<<"-"<<a<<"*cos(t))^2+("<<y<<"-"<<b<<"*sin(t))^2\n";
+    double twoa2b2=2*(a*a-b*b);
+    double twoax=2*a*x;
+    double twoby=2*b*y;
+    double a0=twoa2b2*twoa2b2;
+    double ce[4];
+    double roots[4];
+    unsigned int counts=0;
+    //need to handle a=b
+    if(a0 > RS_TOLERANCE*RS_TOLERANCE ) { // a != b , ellipse
+        ce[0]=-2.*twoax/twoa2b2;
+        ce[1]= (twoax*twoax+twoby*twoby)/a0-1.;
+        ce[2]= - ce[0];
+        ce[3]= -twoax*twoax/a0;
+        //std::cout<<"1::find cosine, variable c, solve(c^4 +("<<ce[0]<<")*c^3+("<<ce[1]<<")*c^2+("<<ce[2]<<")*c+("<<ce[3]<<")=0,c)\n";
+        counts=RS_Math::quarticSolver(ce,roots);
+    } else {//a=b, quadratic equation for circle
+        counts=2;
+        a0=twoby/twoax;
+        roots[0]=sqrt(1./(1.+a0*a0));
+        roots[1]=-roots[0];
+    }
+    if(!counts) {
+        //this should not happen
+        std::cout<<"(a= "<<a<<" b= "<<b<<" x= "<<x<<" y= "<<y<<" )\n";
+        std::cout<<"finding minimum for ("<<x<<"-"<<a<<"*cos(t))^2+("<<y<<"-"<<b<<"*sin(t))^2\n";
+        std::cout<<"2::find cosine, variable c, solve(c^4 +("<<ce[0]<<")*c^3+("<<ce[1]<<")*c^2+("<<ce[2]<<")*c+("<<ce[3]<<")=0,c)\n";
+        std::cout<<ce[0]<<' '<<ce[1]<<' '<<ce[2]<<' '<<ce[3]<<std::endl;
+        std::cerr<<"RS_Math::RS_Ellipse::getNearestPointOnEntity() finds no root from quartic, this should not happen\n";
+        return RS_Vector(false);
     }
 
-    if (dV<0.0) {
-        dV*=-1.0;
-        swap = true;
+    RS_Vector vp2(false);
+    double d,d2,s,dDistance(RS_MAXDOUBLE);
+    //double ea;
+    for(unsigned int i=0; i<counts; i++) {
+        //I don't understand the reason yet, but I can do without checking whether sine/cosine are valid
+        //if ( fabs(roots[i])>1.) continue;
+        s=twoby*roots[i]/(twoax-twoa2b2*roots[i]); //sine
+        //if (fabs(s) > 1. ) continue;
+        d2=twoa2b2+(twoax-2.*roots[i]*twoa2b2)*roots[i]+twoby*s;
+        if (d2<0) continue; // fartherest
+        RS_Vector vp3;
+        vp3.set(a*roots[i],b*s);
+        d=vp3.distanceTo(ret);
+//        std::cout<<i<<" Checking: cos= "<<roots[i]<<" sin= "<<s<<" angle= "<<atan2(roots[i],s)<<" ds2= "<<d<<" d="<<d2<<std::endl;
+        if( vp2.valid && d>dDistance) continue;
+        vp2=vp3;
+        dDistance=d;
+//			ea=atan2(roots[i],s);
     }
-    
-    // initial guess 
-    double dT = dB*(dV - dB); 
-    
-    // Newton s method
-    int i; 
-    for (i = 0; i < iMax; i++) { 
-        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: i: %d", i);
-        double dTpASqr = dT + dA*dA; 
-        double dTpBSqr = dT + dB*dB; 
-        double dInvTpASqr = 1.0/dTpASqr; 
-        double dInvTpBSqr = 1.0/dTpBSqr; 
-        double dXDivA = dA*dU*dInvTpASqr; 
-        double dYDivB = dB*dV*dInvTpBSqr; 
-        double dXDivASqr = dXDivA*dXDivA; 
-        double dYDivBSqr = dYDivB*dYDivB; 
-        double dF = dXDivASqr + dYDivBSqr - 1.0; 
-        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: dF: %f", dF);
-        if ( fabs(dF) < dEpsilon ) { 
-            // F(t0) is close enough to zero, terminate the iteration:
-            rdX = dXDivA*dA;
-            rdY = dYDivB*dB; 
-            riIFinal = i; 
-            RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: rdX,rdY 1: %f,%f", rdX, rdY);
-            break; 
-        } 
-        double dFDer = 2.0*(dXDivASqr*dInvTpASqr + dYDivBSqr*dInvTpBSqr); 
-        double dRatio = dF/dFDer; 
-        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: dRatio: %f", dRatio);
-        if ( fabs(dRatio) < dEpsilon ) { 
-            // t1-t0 is close enough to zero, terminate the iteration:
-            rdX = dXDivA*dA; 
-            rdY = dYDivB*dB; 
-            riIFinal = i; 
-            RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: rdX,rdY 2: %f,%f", rdX, rdY);
-            break; 
-        } 
-        dT += dRatio; 
-    } 
-    if ( i == iMax ) { 
-        // failed to converge:
-        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: failed");
-        dDistance = RS_MAXDOUBLE;
-    } 
-    else {
-        double dDelta0 = rdX - dU;
-        double dDelta1 = rdY - dV; 
-        dDistance = sqrt(dDelta0*dDelta0 + dDelta1*dDelta1); 
-        ret = RS_Vector(rdX, rdY);
-        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: rdX,rdY 2: %f,%f", rdX, rdY);
-        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: ret: %f,%f", ret.x, ret.y);
+    if( ! vp2.valid ) {
+        //this should not happen
+        std::cout<<ce[0]<<' '<<ce[1]<<' '<<ce[2]<<' '<<ce[3]<<std::endl;
+        std::cout<<"(x,y)=( "<<x<<" , "<<y<<" ) a= "<<a<<" b= "<<b<<" sine= "<<s<<" d2= "<<d2<<" dist= "<<d<<std::endl;
+        std::cout<<"RS_Ellipse::getNearestPointOnEntity() finds no minimum, this should not happen\n";
     }
-    
     if (dist!=NULL) {
-        if (ret.valid) {
-            *dist = dDistance;
-        } else {
-            *dist = RS_MAXDOUBLE;
-        }
+        *dist = dDistance;
     }
-   
-    if (ret.valid) {
-        if (swap) {
-            ret.y*=-1.0;
-        }
-        if (majorSwap) {
-            double dum = ret.x;
-            ret.x = ret.y;
-            ret.y = dum;
-        }
-        ret = (ret.rotate(ang) + data.center);
-        
-        if (onEntity) {
-            double a1 = data.center.angleTo(getStartpoint());
-            double a2 = data.center.angleTo(getEndpoint());
-            double a = data.center.angleTo(ret);
-            if (!RS_Math::isAngleBetween(a, a1, a2, data.reversed)) {
-                ret = RS_Vector(false);
-            }
+    vp2.rotate(getAngle());
+    vp2.move(getCenter());
+    ret=vp2;
+    if (onEntity) {
+        if (!RS_Math::isAngleBetween(getEllipseAngle(ret), getAngle1(), getAngle2(), data.reversed)) {
+            ret = RS_Vector(false);
         }
     }
-    
+
+//std::cout<<"New algorithm\nMinimum dist="<<dmin<<std::endl;
+//std::cout<<"Nearest point: "<<vp2<<std::endl;
+
+
+//
+//
+//    double ang = getAngle();
+//
+//    RS_Vector normalized = (coord - data.center).rotate(-ang);
+//
+//    double dU = normalized.x;
+//    double dV = normalized.y;
+//    double dA = getMajorRadius();
+//    double dB = getMinorRadius();
+//    double dEpsilon = 1.0e-8;
+//    int iMax = 32;
+//    int riIFinal = 0;
+//    double rdX = 0.0;
+//    double rdY = 0.0;
+//    double dDistance;
+//    bool swap = false;
+//    bool majorSwap = false;
+//
+//    if (dA<dB) {
+//        double dum = dA;
+//        dA = dB;
+//        dB = dum;
+//        dum = dU;
+//        dU = dV;
+//        dV = dum;
+//        majorSwap = true;
+//    }
+//
+//    if (dV<0.0) {
+//        dV*=-1.0;
+//        swap = true;
+//    }
+//
+//    // initial guess
+//    double dT = dB*(dV - dB);
+//
+//    // Newton s method
+//    int i;
+//    for (i = 0; i < iMax; i++) {
+//        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: i: %d", i);
+//        double dTpASqr = dT + dA*dA;
+//        double dTpBSqr = dT + dB*dB;
+//        double dInvTpASqr = 1.0/dTpASqr;
+//        double dInvTpBSqr = 1.0/dTpBSqr;
+//        double dXDivA = dA*dU*dInvTpASqr;
+//        double dYDivB = dB*dV*dInvTpBSqr;
+//        double dXDivASqr = dXDivA*dXDivA;
+//        double dYDivBSqr = dYDivB*dYDivB;
+//        double dF = dXDivASqr + dYDivBSqr - 1.0;
+//        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: dF: %f", dF);
+//        if ( fabs(dF) < dEpsilon ) {
+//            // F(t0) is close enough to zero, terminate the iteration:
+//            rdX = dXDivA*dA;
+//            rdY = dYDivB*dB;
+//            riIFinal = i;
+//            RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: rdX,rdY 1: %f,%f", rdX, rdY);
+//            break;
+//        }
+//        double dFDer = 2.0*(dXDivASqr*dInvTpASqr + dYDivBSqr*dInvTpBSqr);
+//        double dRatio = dF/dFDer;
+//        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: dRatio: %f", dRatio);
+//        if ( fabs(dRatio) < dEpsilon ) {
+//            // t1-t0 is close enough to zero, terminate the iteration:
+//            rdX = dXDivA*dA;
+//            rdY = dYDivB*dB;
+//            riIFinal = i;
+//            RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: rdX,rdY 2: %f,%f", rdX, rdY);
+//            break;
+//        }
+//        dT += dRatio;
+//    }
+//    if ( i == iMax ) {
+//        // failed to converge:
+//        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: failed");
+//        dDistance = RS_MAXDOUBLE;
+//    }
+//    else {
+//        double dDelta0 = rdX - dU;
+//        double dDelta1 = rdY - dV;
+//        dDistance = sqrt(dDelta0*dDelta0 + dDelta1*dDelta1);
+//        ret = RS_Vector(rdX, rdY);
+//        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: rdX,rdY 2: %f,%f", rdX, rdY);
+//        RS_DEBUG->print("RS_Ellipse::getNearestPointOnEntity: ret: %f,%f", ret.x, ret.y);
+//    }
+//    std::cout<<"Old algorithm: dist="<<dDistance<<" "<<ret<<std::endl;
+//    if (dist!=NULL) {
+//        if (ret.valid) {
+//            *dist = dDistance;
+//        } else {
+//            *dist = RS_MAXDOUBLE;
+//        }
+//    }
+//
+//    if (ret.valid) {
+//        if (swap) {
+//            ret.y*=-1.0;
+//        }
+//        if (majorSwap) {
+//            double dum = ret.x;
+//            ret.x = ret.y;
+//            ret.y = dum;
+//        }
+//        ret = (ret.rotate(ang) + data.center);
+//
+//        if (onEntity) {
+//            double a1 = data.center.angleTo(getStartpoint());
+//            double a2 = data.center.angleTo(getEndpoint());
+//            double a = data.center.angleTo(ret);
+//            if (!RS_Math::isAngleBetween(a, a1, a2, data.reversed)) {
+//                ret = RS_Vector(false);
+//            }
+//        }
+//    }
+//    std::cout<<"Old algorithm\ndist="<<dDistance<<std::endl;
+//    if(ret.valid) std::cout<<"coord="<<ret<<std::endl;
+
     return ret;
 }
 
 
 
+
 /**
  * @param tolerance Tolerance.
  *
@@ -277,7 +423,7 @@ RS_Vector RS_Ellipse::getNearestPointOnEntity(const RS_Vector& coord,
  * @retval false otherwise
  */
 bool RS_Ellipse::isPointOnEntity(const RS_Vector& coord,
-                                double tolerance) {
+                                 double tolerance) {
     double dist = getDistanceToPoint(coord, NULL, RS2::ResolveNone);
     return (dist<=tolerance);
 }
@@ -295,14 +441,36 @@ RS_Vector RS_Ellipse::getNearestCenter(const RS_Vector& coord,
 
 
 /**
- * @todo Implement this.
+ * a naive implementation of middle point
+ * to accurately locate the middle point from arc length is possible by using elliptic integral to find the total arc length, then, using elliptic function to find the half length point
  */
-RS_Vector RS_Ellipse::getNearestMiddle(const RS_Vector& /*coord*/,
+RS_Vector RS_Ellipse::getNearestMiddle(const RS_Vector& coord,
                                        double* dist) {
+    if ( RS_Math::isSameDirection(data.angle1,data.angle2, RS_TOLERANCE_ANGLE) ) { // no middle point for whole ellipse
+        if (dist!=NULL) {
+            *dist = RS_MAXDOUBLE;
+        }
+        return RS_Vector(false);
+
+    }
+    double amin,amax;
+    RS_Vector vp;
+    vp.setPolar(1.0,data.angle1);
+    vp.scale(RS_Vector(1.0,data.ratio));
+    amin=vp.angle();
+    vp.setPolar(1.0,data.angle2);
+    vp.scale(RS_Vector(1.0,data.ratio));
+    amax=vp.angle();
+    amin=0.5*(amin+amax);
+    if (data.reversed ^ (amin > amax ) ) amin += M_PI; // condition to adjust one end by 2*M_PI, therefore, the middle point by M_PI
+    vp.set(getMajorRadius()*cos(amin),getMinorRadius()*sin(amin));
+    vp.rotate(getAngle());
+    vp.move(data.center);
     if (dist!=NULL) {
-        *dist = RS_MAXDOUBLE;
+        *dist = coord.distanceTo(vp);
     }
-    return RS_Vector(false);
+    RS_DEBUG->print("RS_Ellipse::getNearestMiddle: angle1=%g, angle2=%g, middle=%g\n",data.angle1,data.angle2,amin);
+    return vp;
 }
 
 
@@ -352,55 +520,140 @@ void RS_Ellipse::rotate(RS_Vector center, double angle) {
     calculateBorders();
 }
 
+void RS_Ellipse::rotate( double angle) {
+    data.center.rotate(angle);
+    data.majorP.rotate(angle);
+    //calculateEndpoints();
+    calculateBorders();
+}
 
 
 void RS_Ellipse::moveStartpoint(const RS_Vector& pos) {
-	data.angle1 = getEllipseAngle(pos);
-	//data.angle1 = data.center.angleTo(pos);
-	//calculateEndpoints();
-	calculateBorders();
+    data.angle1 = getEllipseAngle(pos);
+    //data.angle1 = data.center.angleTo(pos);
+    //calculateEndpoints();
+    calculateBorders();
 }
 
 
 
 void RS_Ellipse::moveEndpoint(const RS_Vector& pos) {
-	data.angle2 = getEllipseAngle(pos);
-	//data.angle2 = data.center.angleTo(pos);
-	//calculateEndpoints();
-	calculateBorders();
+    data.angle2 = getEllipseAngle(pos);
+    //data.angle2 = data.center.angleTo(pos);
+    //calculateEndpoints();
+    calculateBorders();
+}
+
+
+RS2::Ending RS_Ellipse::getTrimPoint(const RS_Vector& trimCoord,
+                                     const RS_Vector& trimPoint) {
+
+    //double angEl = getEllipseAngle(trimPoint);
+    double angM = getEllipseAngle(trimCoord);
+    if (RS_Math::getAngleDifference(angM, data.angle1) > RS_Math::getAngleDifference(data.angle2,angM)) {
+        return RS2::EndingStart;
+    } else {
+        return RS2::EndingEnd;
+    }
 }
 
+RS_Vector RS_Ellipse::prepareTrim(const RS_Vector& trimCoord,
+                                  const RS_VectorSolutions& trimSol) {
+//special trimming for ellipse arc
+    if( ! trimSol.hasValid() ) return (RS_Vector(false));
+    if( trimSol.getNumber() == 1 ) return (trimSol.get(0));
+    double am=getEllipseAngle(trimCoord);
+    double ias[trimSol.getNumber()];
+    double ia,ia2;
+    RS_Vector is,is2;
+    for(int ii=0; ii<trimSol.getNumber(); ii++) { //find closest according ellipse angle
+        ias[ii]=getEllipseAngle(trimSol.get(ii));
+        if( !ii ||  fabs( remainder( ias[ii] - am, 2*M_PI)) < fabs( remainder( ia -am, 2*M_PI)) ) {
+            ia = ias[ii];
+            is = trimSol.get(ii);
+        }
+    }
+    std::sort(ias,ias+trimSol.getNumber());
+    for(int ii=0; ii<trimSol.getNumber(); ii++) { //find segment to enclude trimCoord
+        if ( ! RS_Math::isSameDirection(ia,ias[ii],RS_TOLERANCE)) continue;
+        if( RS_Math::isAngleBetween(am,ias[(ii+trimSol.getNumber()-1)% trimSol.getNumber()],ia,false))  {
+            ia2=ias[(ii+trimSol.getNumber()-1)% trimSol.getNumber()];
+        } else {
+            ia2=ias[(ii+1)% trimSol.getNumber()];
+        }
+        break;
+    }
+    for(int ii=0; ii<trimSol.getNumber(); ii++) { //find segment to enclude trimCoord
+        if ( ! RS_Math::isSameDirection(ia2,getEllipseAngle(trimSol.get(ii)),RS_TOLERANCE)) continue;
+        is2=trimSol.get(ii);
+        break;
+    }
+    if(RS_Math::isSameDirection(getAngle1(),getAngle2(),RS_TOLERANCE_ANGLE)
+            ||  RS_Math::isSameDirection(ia2,ia,RS_TOLERANCE) ) {
+        //whole ellipse
+        if( !RS_Math::isAngleBetween(am,ia,ia2,isReversed())) {
+            RS_Math::swap(ia,ia2);
+            RS_Math::swap(is,is2);
+        }
+        setAngle1(ia);
+        setAngle2(ia2);
+        double da1=fabs(remainder(getAngle1()-am,2*M_PI));
+        double da2=fabs(remainder(getAngle2()-am,2*M_PI));
+        if(da2<da1) {
+            RS_Math::swap(is,is2);
+        }
 
-RS2::Ending RS_Ellipse::getTrimPoint(const RS_Vector& coord, 
-		const RS_Vector& trimPoint) {
-	
-	double angEl = getEllipseAngle(trimPoint);
-	double angM = getEllipseAngle(coord);
-
-	if (RS_Math::getAngleDifference(angM, angEl)>M_PI) {
-		//if (data.reversed) {
-		//	return RS2::EndingEnd;
-		//}
-		//else {
-			return RS2::EndingStart;
-		//}
-	}
-	else {
-		//if (data.reversed) {
-		//	return RS2::EndingStart;
-		//}
-		//else {
-			return RS2::EndingEnd;
-		//}
-	}
+    } else {
+        double dia=fabs(remainder(ia-am,2*M_PI));
+        double dia2=fabs(remainder(ia2-am,2*M_PI));
+        double ai_min=std::min(dia,dia2);
+        double da1=fabs(remainder(getAngle1()-am,2*M_PI));
+        double da2=fabs(remainder(getAngle2()-am,2*M_PI));
+        double da_min=std::min(da1,da2);
+        if( da_min < ai_min ) {
+            //trimming one end of arc
+            bool irev= RS_Math::isAngleBetween(am,ia2,ia, isReversed()) ;
+            if ( RS_Math::isAngleBetween(ia,getAngle1(),getAngle2(), isReversed()) &&
+                    RS_Math::isAngleBetween(ia2,getAngle1(),getAngle2(), isReversed()) ) { //
+                if(irev) {
+                    setAngle2(ia);
+                    setAngle1(ia2);
+                } else {
+                    setAngle1(ia);
+                    setAngle2(ia2);
+                }
+                da1=fabs(remainder(getAngle1()-am,2*M_PI));
+                da2=fabs(remainder(getAngle2()-am,2*M_PI));
+            }
+            if( ((da1 < da2) && (RS_Math::isAngleBetween(ia2,ia,getAngle1(),isReversed()))) ||
+                    ((da1 > da2) && (RS_Math::isAngleBetween(ia2,getAngle2(),ia,isReversed())))
+              ) {
+                RS_Math::swap(is,is2);
+                //std::cout<<"reset: angle1="<<getAngle1()<<" angle2="<<getAngle2()<<" am="<< am<<" is="<<getEllipseAngle(is)<<" ia2="<<ia2<<std::endl;
+            }
+        } else {
+            //choose intersection as new end
+            if( dia > dia2) {
+                RS_Math::swap(is,is2);
+                RS_Math::swap(ia,ia2);
+            }
+            if(RS_Math::isAngleBetween(ia,getAngle1(),getAngle2(),isReversed())) {
+                if(RS_Math::isAngleBetween(am,getAngle1(),ia,isReversed())) {
+                    setAngle2(ia);
+                } else {
+                    setAngle1(ia);
+                }
+            }
+        }
+    }
+    return is;
 }
 
 double RS_Ellipse::getEllipseAngle(const RS_Vector& pos) {
-	RS_Vector m = pos;
-	m.rotate(data.center, -data.majorP.angle());
-	RS_Vector v = m-data.center;
-	v.scale(RS_Vector(1.0, 1.0/data.ratio));
-	return v.angle(); 
+    RS_Vector m = pos-data.center;
+    m.rotate(-data.majorP.angle());
+    m.scale(RS_Vector(data.ratio, 1.0));
+    return m.angle();
 }
 
 
@@ -444,9 +697,9 @@ void RS_Ellipse::mirror(RS_Vector axisPoint1, RS_Vector axisPoint2) {
 
 
 void RS_Ellipse::moveRef(const RS_Vector& ref, const RS_Vector& offset) {
-	RS_Vector startpoint = getStartpoint();
-	RS_Vector endpoint = getEndpoint();
-	
+    RS_Vector startpoint = getStartpoint();
+    RS_Vector endpoint = getEndpoint();
+
     if (ref.distanceTo(startpoint)<1.0e-4) {
         moveStartpoint(startpoint+offset);
     }
@@ -464,7 +717,7 @@ void RS_Ellipse::draw(RS_Painter* painter, RS_GraphicView* view, double /*patter
 
 
     if (getPen().getLineType()==RS2::SolidLine ||
-            isSelected() ||
+            ! isSelected() ||
             view->getDrawingMode()==RS2::ModePreview) {
 
         painter->drawEllipse(view->toGui(getCenter()),
@@ -474,17 +727,17 @@ void RS_Ellipse::draw(RS_Painter* painter, RS_GraphicView* view, double /*patter
                              getAngle1(), getAngle2(),
                              isReversed());
     } else {
-    	double styleFactor = getStyleFactor(view);
-		if (styleFactor<0.0) {
-        	painter->drawEllipse(view->toGui(getCenter()),
-                             getMajorRadius() * view->getFactor().x,
-                             getMinorRadius() * view->getFactor().x,
-                             getAngle(),
-                             getAngle1(), getAngle2(),
-                             isReversed());
-			return;
-		}
-		
+        double styleFactor = getStyleFactor(view);
+        if (styleFactor<0.0) {
+            painter->drawEllipse(view->toGui(getCenter()),
+                                 getMajorRadius() * view->getFactor().x,
+                                 getMinorRadius() * view->getFactor().x,
+                                 getAngle(),
+                                 getAngle1(), getAngle2(),
+                                 isReversed());
+            return;
+        }
+
         // Pattern:
         RS_LineTypePattern* pat;
         if (isSelected()) {
diff --git a/src/lib/engine/rs_ellipse.h b/src/lib/engine/rs_ellipse.h
index 67ff536..7914f18 100644
--- a/src/lib/engine/rs_ellipse.h
+++ b/src/lib/engine/rs_ellipse.h
@@ -7,7 +7,7 @@
 **
 **
 ** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
+** it under the terms of the GNU General Public License as published by
 ** the Free Software Foundation; either version 2 of the License, or
 ** (at your option) any later version.
 **
@@ -15,12 +15,12 @@
 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ** GNU General Public License for more details.
-** 
+**
 ** You should have received a copy of the GNU General Public License
 ** along with this program; if not, write to the Free Software
 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 **
-** This copyright notice MUST APPEAR in all copies of the script!  
+** This copyright notice MUST APPEAR in all copies of the script!
 **
 **********************************************************************/
 
@@ -46,18 +46,18 @@ public:
         this->ratio = ratio;
         this->angle1 = angle1;
         this->angle2 = angle2;
-		this->reversed = reversed;
+        this->reversed = reversed;
     }
 
     friend class RS_Ellipse;
 
     friend std::ostream& operator << (std::ostream& os, const RS_EllipseData& ed) {
         os << "(" << ed.center <<
-        "/" << ed.majorP <<
-        " " << ed.ratio <<
-        " " << ed.angle1 <<
-        "," << ed.angle2 <<
-        ")";
+           "/" << ed.majorP <<
+           " " << ed.ratio <<
+           " " << ed.angle1 <<
+           "," << ed.angle2 <<
+           ")";
         return os;
     }
 
@@ -72,8 +72,8 @@ private:
     double angle1;
     //! End angle
     double angle2;
-	//! Reversed (cw) flag
-	bool reversed;
+    //! Reversed (cw) flag
+    bool reversed;
 };
 
 
@@ -102,53 +102,56 @@ public:
     }
 
 
-    /** 
-	 * @return Start point of the entity. 
-	 */
+    /**
+     * @return Start point of the entity.
+     */
     virtual RS_Vector getStartpoint() const {
-		RS_Vector p;
-    	p.set(data.center.x + cos(data.angle1) * getMajorRadius(),
+        RS_Vector p;
+        p.set(data.center.x + cos(data.angle1) * getMajorRadius(),
               data.center.y + sin(data.angle1) * getMinorRadius());
-    	p.rotate(data.center, getAngle());
+        p.rotate(data.center, getAngle());
         return p;
     }
-    /** 
-	 * @return End point of the entity. 
-	 */
+    /**
+     * @return End point of the entity.
+     */
     virtual RS_Vector getEndpoint() const {
-		RS_Vector p;
-    	p.set(data.center.x + cos(data.angle2) * getMajorRadius(),
+        RS_Vector p;
+        p.set(data.center.x + cos(data.angle2) * getMajorRadius(),
               data.center.y + sin(data.angle2) * getMinorRadius());
-    	p.rotate(data.center, getAngle());
+        p.rotate(data.center, getAngle());
         return p;
     }
-	
-	virtual void moveStartpoint(const RS_Vector& pos);
-	virtual void moveEndpoint(const RS_Vector& pos);
 
-	virtual RS2::Ending getTrimPoint(const RS_Vector& coord, 
-	          const RS_Vector& trimPoint);
+    virtual void moveStartpoint(const RS_Vector& pos);
+    virtual void moveEndpoint(const RS_Vector& pos);
+
+    virtual RS2::Ending getTrimPoint(const RS_Vector& trimCoord,
+                                     const RS_Vector& trimPoint);
+
+    virtual RS_Vector prepareTrim(const RS_Vector& trimCoord,
+                                  const RS_VectorSolutions& trimSol);
 
-	double getEllipseAngle(const RS_Vector& pos);
+    double getEllipseAngle(const RS_Vector& pos);
 
     /** @return Copy of data that defines the ellipse. **/
     RS_EllipseData getData() {
         return data;
     }
-	
-	virtual RS_VectorSolutions getRefPoints();
+
+    virtual RS_VectorSolutions getRefPoints();
 
     /**
-     * @retval true if the arc is reversed (clockwise), 
-     * @retval false otherwise 
+     * @retval true if the arc is reversed (clockwise),
+     * @retval false otherwise
      */
     bool isReversed() const {
         return data.reversed;
     }
-	/** sets the reversed status. */
-	void setReversed(bool r) {
-		data.reversed = r;
-	}
+    /** sets the reversed status. */
+    void setReversed(bool r) {
+        data.reversed = r;
+    }
 
     /** @return The rotation angle of this ellipse */
     double getAngle() const {
@@ -160,17 +163,17 @@ public:
         return data.angle1;
     }
     /** Sets new start angle. */
-	void setAngle1(double a1) {
-		data.angle1 = a1;
-	}
+    void setAngle1(double a1) {
+        data.angle1 = a1;
+    }
     /** @return The end angle of this arc */
     double getAngle2() {
         return data.angle2;
     }
     /** Sets new end angle. */
-	void setAngle2(double a2) {
-		data.angle2 = a2;
-	}
+    void setAngle2(double a2) {
+        data.angle2 = a2;
+    }
 
 
     /** @return The center point (x) of this arc */
@@ -178,27 +181,27 @@ public:
         return data.center;
     }
     /** Sets new center. */
-	void setCenter(const RS_Vector& c) {
-		data.center = c;
-	}
+    void setCenter(const RS_Vector& c) {
+        data.center = c;
+    }
 
     /** @return The endpoint of the major axis (relative to center). */
     RS_Vector getMajorP() {
         return data.majorP;
     }
     /** Sets new major point (relative to center). */
-	void setMajorP(const RS_Vector& p) {
-		data.majorP = p;
-	}
+    void setMajorP(const RS_Vector& p) {
+        data.majorP = p;
+    }
 
     /** @return The ratio of minor to major axis */
     double getRatio() {
         return data.ratio;
     }
     /** Sets new ratio. */
-	void setRatio(double r) {
-		data.ratio = r;
-	}
+    void setRatio(double r) {
+        data.ratio = r;
+    }
 
 
     /**
@@ -236,15 +239,17 @@ public:
     virtual double getDistanceToPoint(const RS_Vector& coord,
                                       RS_Entity** entity=NULL,
                                       RS2::ResolveLevel level=RS2::ResolveNone,
-									  double solidDist = RS_MAXDOUBLE);
+                                      double solidDist = RS_MAXDOUBLE);
+    bool switchMajorMinor(void); //switch major minor axes to keep major the longer ellipse radius
     virtual bool isPointOnEntity(const RS_Vector& coord,
                                  double tolerance=RS_TOLERANCE);
 
     virtual void move(RS_Vector offset);
+    virtual void rotate(double angle);
     virtual void rotate(RS_Vector center, double angle);
     virtual void scale(RS_Vector center, RS_Vector factor);
     virtual void mirror(RS_Vector axisPoint1, RS_Vector axisPoint2);
-	virtual void moveRef(const RS_Vector& ref, const RS_Vector& offset);
+    virtual void moveRef(const RS_Vector& ref, const RS_Vector& offset);
 
     virtual void draw(RS_Painter* painter, RS_GraphicView* view, double patternOffset=0.0);
 
diff --git a/src/lib/engine/rs_entity.cpp b/src/lib/engine/rs_entity.cpp
index d109f44..a6368e6 100644
--- a/src/lib/engine/rs_entity.cpp
+++ b/src/lib/engine/rs_entity.cpp
@@ -31,20 +31,15 @@
 
 #include "rs_arc.h"
 #include "rs_circle.h"
-#include "rs_debug.h"
-#include "rs_document.h"
 #include "rs_ellipse.h"
 #include "rs_graphic.h"
 #include "rs_graphicview.h"
 #include "rs_insert.h"
 #include "rs_layer.h"
 #include "rs_line.h"
-#include "rs_painter.h"
 #include "rs_point.h"
 #include "rs_polyline.h"
 #include "rs_text.h"
-#include "rs_stringlist.h"
-
 
 /**
  * Default constructor.
@@ -466,7 +461,7 @@ RS_Document* RS_Entity::getDocument() {
  * @param key Variable name (e.g. "$DIMASZ")
  * @param val Default value
  */
-void RS_Entity::addGraphicVariable(const RS_String& key, double val, int code) {
+void RS_Entity::addGraphicVariable(const QString& key, double val, int code) {
     RS_Graphic* graphic = getGraphic();
     if (graphic!=NULL) {
         graphic->addVariable(key, val, code);
@@ -481,7 +476,7 @@ void RS_Entity::addGraphicVariable(const RS_String& key, double val, int code) {
  * @param key Variable name (e.g. "$DIMASZ")
  * @param val Default value
  */
-void RS_Entity::addGraphicVariable(const RS_String& key, int val, int code) {
+void RS_Entity::addGraphicVariable(const QString& key, int val, int code) {
     RS_Graphic* graphic = getGraphic();
     if (graphic!=NULL) {
         graphic->addVariable(key, val, code);
@@ -496,8 +491,8 @@ void RS_Entity::addGraphicVariable(const RS_String& key, int val, int code) {
  * @param key Variable name (e.g. "$DIMASZ")
  * @param val Default value
  */
-void RS_Entity::addGraphicVariable(const RS_String& key,
-                                   const RS_String& val, int code) {
+void RS_Entity::addGraphicVariable(const QString& key,
+                                   const QString& val, int code) {
     RS_Graphic* graphic = getGraphic();
     if (graphic!=NULL) {
         graphic->addVariable(key, val, code);
@@ -515,7 +510,7 @@ void RS_Entity::addGraphicVariable(const RS_String& key,
  * @return value of variable or default value if the given variable
  *    doesn't exist.
  */
-double RS_Entity::getGraphicVariableDouble(const RS_String& key, double def) {
+double RS_Entity::getGraphicVariableDouble(const QString& key, double def) {
     RS_Graphic* graphic = getGraphic();
     double ret=def;
     if (graphic!=NULL) {
@@ -535,7 +530,7 @@ double RS_Entity::getGraphicVariableDouble(const RS_String& key, double def) {
  * @return value of variable or default value if the given variable
  *    doesn't exist.
  */
-int RS_Entity::getGraphicVariableInt(const RS_String& key, int def) {
+int RS_Entity::getGraphicVariableInt(const QString& key, int def) {
     RS_Graphic* graphic = getGraphic();
     int ret=def;
     if (graphic!=NULL) {
@@ -555,10 +550,10 @@ int RS_Entity::getGraphicVariableInt(const RS_String& key, int def) {
  * @return value of variable or default value if the given variable
  *    doesn't exist.
  */
-RS_String RS_Entity::getGraphicVariableString(const RS_String& key,
-        const RS_String&  def) {
+QString RS_Entity::getGraphicVariableString(const QString& key,
+        const QString&  def) {
     RS_Graphic* graphic = getGraphic();
-    RS_String ret=def;
+    QString ret=def;
     if (graphic!=NULL) {
         ret = graphic->getVariableString(key, def);
     }
@@ -616,7 +611,7 @@ RS_Layer* RS_Entity::getLayer(bool resolve) const {
 /**
  * Sets the layer of this entity to the layer with the given name 
  */
-void RS_Entity::setLayer(const RS_String& name) {
+void RS_Entity::setLayer(const QString& name) {
     RS_Graphic* graphic = getGraphic();
     if (graphic!=NULL) {
         layer = graphic->findLayer(name);
@@ -800,18 +795,18 @@ double RS_Entity::getStyleFactor(RS_GraphicView* view) {
 
 
 /**
- * @return User defined variable connected to this entity.
+ * @return User defined variable connected to this entity or NULL if not found.
  */
-RS_String* RS_Entity::getUserDefVar(RS_String key) {
-    return (this->varList.find(key));
+QString RS_Entity::getUserDefVar(QString key) {
+    return varList.value(key, NULL);
 }
 
 
 /**
  * Add a user defined variable to this entity.
  */
-void RS_Entity::setUserDefVar(RS_String key, RS_String val) {
-    varList.insert(key, new RS_String(val));
+void RS_Entity::setUserDefVar(QString key, QString val) {
+    varList.insert(key, val);
 }
 
 
@@ -819,7 +814,7 @@ void RS_Entity::setUserDefVar(RS_String key, RS_String val) {
 /**
  * Deletes the given user defined variable.
  */
-void RS_Entity::delUserDefVar(RS_String key) {
+void RS_Entity::delUserDefVar(QString key) {
     varList.remove(key);
 }
 
@@ -828,13 +823,8 @@ void RS_Entity::delUserDefVar(RS_String key) {
 /**
  * @return A list of all keys connected to this entity.
  */
-RS_StringList RS_Entity::getAllKeys() {
-    RS_StringList keys;
-    RS_DictIterator<RS_String> it(varList);
-    for( ; it.current(); ++it )
-        keys.append(it.currentKey());
-
-    return keys;
+QList<QString> RS_Entity::getAllKeys() {
+    return varList.keys();
 }
 
 
@@ -860,18 +850,17 @@ std::ostream& operator << (std::ostream& os, RS_Entity& e) {
     if (e.layer==NULL) {
         os << " layer: NULL ";
     } else {
-        os << " layer: " << e.layer->getName().latin1() << " ";
+        os << " layer: " << e.layer->getName().toLatin1().data() << " ";
         os << " layer address: " << e.layer << " ";
     }
 
     os << e.pen << "\n";
 
 	os << "variable list:\n";
-    Q3DictIterator<QString> it(e.varList); // See Q3DictIterator
-    for( ; it.current(); ++it ) {
-		// RVT_PORT added .ascii() becase of the error :  error: ambiguous overload for 'operator<<' in 'os << Q3DictIterator<type>::currentKey() const [with type = QString]()'
-        // os << it.currentKey() << ": " << *it.current() << ", ";
-        os << it.currentKey().ascii() << ": " << *it.current()->ascii() << ", ";
+    QHash<QString, QString>::const_iterator it = e.varList.constBegin();
+    while (it != e.varList.constEnd() ) {
+        os << it.key().toLatin1().data() << ": " << it.value().toLatin1().data() << ", ";
+        ++it;
     }
 
     // There should be a better way then this...
diff --git a/src/lib/engine/rs_entity.h b/src/lib/engine/rs_entity.h
index f3e9b62..9d5c1d9 100644
--- a/src/lib/engine/rs_entity.h
+++ b/src/lib/engine/rs_entity.h
@@ -28,16 +28,10 @@
 #ifndef RS_ENTITY_H
 #define RS_ENTITY_H
 
-//#include <values.h>
+#include <QMultiHash>
 
-#include "rs_dict.h"
-
-#include "rs.h"
-#include "rs_layer.h"
 #include "rs_math.h"
 #include "rs_pen.h"
-#include "rs_string.h"
-#include "rs_stringlist.h"
 #include "rs_undoable.h"
 #include "rs_vector.h"
 
@@ -54,6 +48,7 @@ class RS_Painter;
 class RS_Point;
 class RS_Polyline;
 class RS_Text;
+class RS_Layer;
 
 
 
@@ -102,15 +97,6 @@ public:
     unsigned long int getId() const {
         return id;
     }
-
-    /**
-     *  * @return Unique String that identifies this entity
-     */
-#ifdef RVT_CAM
-    virtual RS_String getCamId() {
-        return 0;
-    }
-#endif
 	
     /**
      * This method must be overwritten in subclasses and return the 
@@ -153,7 +139,7 @@ public:
     RS_Entity* getBlockOrInsert();
     RS_Document* getDocument();
 
-    void setLayer(const RS_String& name);
+    void setLayer(const QString& name);
     void setLayer(RS_Layer* l);
     void setLayerToActive();
     RS_Layer* getLayer(bool resolve = true) const;
@@ -266,14 +252,14 @@ public:
         return maxV-minV;
     }
 
-    void addGraphicVariable(const RS_String& key, double val, int code);
-    void addGraphicVariable(const RS_String& key, int val, int code);
-    void addGraphicVariable(const RS_String& key, const RS_String& val, int code);
+    void addGraphicVariable(const QString& key, double val, int code);
+    void addGraphicVariable(const QString& key, int val, int code);
+    void addGraphicVariable(const QString& key, const QString& val, int code);
 	
-    double getGraphicVariableDouble(const RS_String& key, double def);
-    int getGraphicVariableInt(const RS_String& key, int def);
-    RS_String getGraphicVariableString(const RS_String& key,
-                                       const RS_String& def);
+    double getGraphicVariableDouble(const QString& key, double def);
+    int getGraphicVariableInt(const QString& key, int def);
+    QString getGraphicVariableString(const QString& key,
+                                       const QString& def);
 
 	RS2::Unit getGraphicUnit();
 
@@ -499,10 +485,10 @@ public:
 
 	double getStyleFactor(RS_GraphicView* view);
 	
-	RS_String* getUserDefVar(RS_String key);
-	RS_StringList getAllKeys();
-	void setUserDefVar(RS_String key, RS_String val);
-	void delUserDefVar(RS_String key);
+        QString getUserDefVar(QString key);
+        QList<QString> getAllKeys();
+        void setUserDefVar(QString key, QString val);
+        void delUserDefVar(QString key);
 
     friend std::ostream& operator << (std::ostream& os, RS_Entity& e);
 
@@ -530,7 +516,7 @@ protected:
 	bool updateEnabled;
 
 private:
-	RS_Dict<RS_String> varList;
+        QMultiHash<QString, QString> varList;
 };
 
 #endif
diff --git a/src/lib/engine/rs_entitycontainer.cpp b/src/lib/engine/rs_entitycontainer.cpp
index 191df06..fa442e2 100644
--- a/src/lib/engine/rs_entitycontainer.cpp
+++ b/src/lib/engine/rs_entitycontainer.cpp
@@ -27,15 +27,10 @@
 
 #include "rs_entitycontainer.h"
 
-//#include <values.h>
-
 #include "rs_debug.h"
 #include "rs_dimension.h"
-#include "rs_math.h"
 #include "rs_layer.h"
 #include "rs_line.h"
-#include "rs_polyline.h"
-#include "rs_text.h"
 #include "rs_insert.h"
 #include "rs_spline.h"
 #include "rs_information.h"
@@ -52,11 +47,12 @@ RS_EntityContainer::RS_EntityContainer(RS_EntityContainer* parent,
                                        bool owner)
         : RS_Entity(parent) {
 
-    entities.setAutoDelete(owner);
-	RS_DEBUG->print("RS_EntityContainer::RS_EntityContainer: "
+    autoDelete=owner;
+        RS_DEBUG->print("RS_EntityContainer::RS_EntityContainer: "
 		"owner: %d", (int)owner);
     subContainer = NULL;
     //autoUpdateBorders = true;
+    entIdx = -1;
 }
 
 
@@ -83,13 +79,13 @@ RS_EntityContainer::~RS_EntityContainer() {
 
 RS_Entity* RS_EntityContainer::clone() {
 	RS_DEBUG->print("RS_EntityContainer::clone: ori autoDel: %d", 
-		entities.autoDelete());
+                autoDelete);
 
     RS_EntityContainer* ec = new RS_EntityContainer(*this);
-	ec->entities.setAutoDelete(entities.autoDelete());
+        ec->setOwner(autoDelete);
 	
 	RS_DEBUG->print("RS_EntityContainer::clone: clone autoDel: %d", 
-		ec->entities.autoDelete());
+                ec->isOwner());
 
     ec->detach();
     ec->initId();
@@ -104,11 +100,11 @@ RS_Entity* RS_EntityContainer::clone() {
  * This is called after cloning entity containers.
  */
 void RS_EntityContainer::detach() {
-    RS_PtrList<RS_Entity> tmp;
-    bool autoDel = entities.autoDelete();
+    QList<RS_Entity*> tmp;
+    bool autoDel = isOwner();
 	RS_DEBUG->print("RS_EntityContainer::detach: autoDel: %d", 
 		(int)autoDel);
-    entities.setAutoDelete(false);
+    setOwner(false);
 
     // make deep copies of all entities:
     for (RS_Entity* e=firstEntity();
@@ -121,13 +117,11 @@ void RS_EntityContainer::detach() {
 
     // clear shared pointers:
     entities.clear();
-    entities.setAutoDelete(autoDel);
+    setOwner(autoDel);
 
     // point to new deep copies:
-    for (RS_Entity* e=tmp.first();
-            e!=NULL;
-            e=tmp.next()) {
-
+    for (int i = 0; i < tmp.size(); ++i) {
+        RS_Entity* e = tmp.at(i);
         entities.append(e);
         e->reparent(this);
     }
@@ -372,7 +366,10 @@ void RS_EntityContainer::insertEntity(int index, RS_Entity* entity) {
  * Replaces the entity at the given index with the given entity
  * and updates the borders of this entity-container if autoUpdateBorders is true.
  */
+/*RLZ unused function
 void RS_EntityContainer::replaceEntity(int index, RS_Entity* entity) {
+//RLZ TODO: is needed to delete the old entity? not documented in Q3PtrList
+//    investigate in qt3support code if reactivate this function.
     if (entity==NULL) {
         return;
     }
@@ -382,7 +379,7 @@ void RS_EntityContainer::replaceEntity(int index, RS_Entity* entity) {
     if (autoUpdateBorders) {
         adjustBorders(entity);
     }
-}
+}RLZ*/
 
 
 
@@ -391,7 +388,13 @@ void RS_EntityContainer::replaceEntity(int index, RS_Entity* entity) {
  * this entity-container if autoUpdateBorders is true.
  */
 bool RS_EntityContainer::removeEntity(RS_Entity* entity) {
-    bool ret = entities.remove(entity);
+//RLZ TODO: in Q3PtrList if 'entity' is NULL remove the current item-> at.(entIdx)
+//    and sets 'entIdx' in next() or last() if 'entity' is the last item in the list.
+//    in LibreCAD is never called with NULL
+    bool ret = entities.removeOne(entity);
+    if (autoDelete && ret) {
+        delete entity;
+    }
     if (autoUpdateBorders) {
         calculateBorders();
     }
@@ -404,7 +407,11 @@ bool RS_EntityContainer::removeEntity(RS_Entity* entity) {
  * Erases all entities in this container and resets the borders..
  */
 void RS_EntityContainer::clear() {
-    entities.clear();
+    if (autoDelete) {
+        while (!entities.isEmpty())
+            delete entities.takeFirst();
+    } else
+        entities.clear();
     resetBorders();
 }
 
@@ -413,7 +420,7 @@ void RS_EntityContainer::clear() {
  * Counts all entities (branches of the tree). 
  */
 unsigned long int RS_EntityContainer::count() {
-    return entities.count();
+    return entities.size();
 }
 
 
@@ -573,10 +580,12 @@ void RS_EntityContainer::forcedCalculateBorders() {
 
 
 /**
- * Updates all Dimension entities in this container and 
+ * Updates all Dimension entities in this container and / or
  * reposition their labels.
+ *
+ * @param autoText Automatically reposition the text label bool autoText=true
  */
-void RS_EntityContainer::updateDimensions() {
+void RS_EntityContainer::updateDimensions(bool autoText) {
 
     RS_DEBUG->print("RS_EntityContainer::updateDimensions()");
 
@@ -584,15 +593,14 @@ void RS_EntityContainer::updateDimensions() {
     //        e!=NULL;
     //        e=nextEntity(RS2::ResolveNone)) {
 
-    RS_PtrListIterator<RS_Entity> it = createIterator();
     RS_Entity* e;
-    while ( (e = it.current()) != NULL ) {
-        ++it;
+    for (int i = 0; i < entities.size(); ++i) {
+        e = entities.at(i);
         if (RS_Information::isDimension(e->rtti())) {
             // update and reposition label:
-            ((RS_Dimension*)e)->update(true);
+            ((RS_Dimension*)e)->update(autoText);
         } else if (e->isContainer()) {
-            ((RS_EntityContainer*)e)->updateDimensions();
+            ((RS_EntityContainer*)e)->updateDimensions(autoText);
         }
     }
 
@@ -611,10 +619,9 @@ void RS_EntityContainer::updateInserts() {
     //for (RS_Entity* e=firstEntity(RS2::ResolveNone);
     //        e!=NULL;
     //        e=nextEntity(RS2::ResolveNone)) {
-    RS_PtrListIterator<RS_Entity> it = createIterator();
     RS_Entity* e;
-    while ( (e = it.current()) != NULL ) {
-        ++it;
+    for (int i = 0; i < entities.size(); ++i) {
+        e = entities.at(i);
         //// Only update our own inserts and not inserts of inserts
         if (e->rtti()==RS2::EntityInsert  /*&& e->getParent()==this*/) {
             ((RS_Insert*)e)->update();
@@ -632,19 +639,17 @@ void RS_EntityContainer::updateInserts() {
  * Renames all inserts with name 'oldName' to 'newName'. This is
  *   called after a block was rename to update the inserts.
  */
-void RS_EntityContainer::renameInserts(const RS_String& oldName,
-                                       const RS_String& newName) {
+void RS_EntityContainer::renameInserts(const QString& oldName,
+                                       const QString& newName) {
     RS_DEBUG->print("RS_EntityContainer::renameInserts()");
 
     //for (RS_Entity* e=firstEntity(RS2::ResolveNone);
     //        e!=NULL;
     //        e=nextEntity(RS2::ResolveNone)) {
 
-    RS_PtrListIterator<RS_Entity> it = createIterator();
     RS_Entity* e;
-    while ( (e = it.current()) != NULL ) {
-        ++it;
-
+    for (int j = 0; j < entities.size(); ++j) {
+        e = entities.at(j);
         if (e->rtti()==RS2::EntityInsert) {
             RS_Insert* i = ((RS_Insert*)e);
             if (i->getName()==oldName) {
@@ -671,10 +676,9 @@ void RS_EntityContainer::updateSplines() {
     //for (RS_Entity* e=firstEntity(RS2::ResolveNone);
     //        e!=NULL;
     //        e=nextEntity(RS2::ResolveNone)) {
-    RS_PtrListIterator<RS_Entity> it = createIterator();
     RS_Entity* e;
-    while ( (e = it.current()) != NULL ) {
-        ++it;
+    for (int i = 0; i < entities.size(); ++i) {
+        e = entities.at(i);
         //// Only update our own inserts and not inserts of inserts
         if (e->rtti()==RS2::EntitySpline  /*&& e->getParent()==this*/) {
             ((RS_Spline*)e)->update();
@@ -694,11 +698,8 @@ void RS_EntityContainer::update() {
     //for (RS_Entity* e=firstEntity(RS2::ResolveNone);
     //        e!=NULL;
     //        e=nextEntity(RS2::ResolveNone)) {
-    RS_PtrListIterator<RS_Entity> it = createIterator();
-    RS_Entity* e;
-    while ( (e = it.current()) != NULL ) {
-        ++it;
-        e->update();
+    for (int i = 0; i < entities.size(); ++i) {
+        entities.at(i)->update();
     }
 }
 
@@ -709,14 +710,22 @@ void RS_EntityContainer::update() {
  * @param level 
  */
 RS_Entity* RS_EntityContainer::firstEntity(RS2::ResolveLevel level) {
+    RS_Entity* e = NULL;
+    entIdx = -1;
     switch (level) {
     case RS2::ResolveNone:
-        return entities.first();
+        if (!entities.isEmpty()) {
+            entIdx = 0;
+            return entities.first();
+        }
         break;
 
     case RS2::ResolveAllButInserts: {
             subContainer=NULL;
-            RS_Entity* e = entities.first();
+            if (!entities.isEmpty()) {
+                entIdx = 0;
+                e = entities.first();
+            }
             if (e!=NULL && e->isContainer() && e->rtti()!=RS2::EntityInsert) {
                 subContainer = (RS_EntityContainer*)e;
                 e = ((RS_EntityContainer*)e)->firstEntity(level);
@@ -732,7 +741,10 @@ RS_Entity* RS_EntityContainer::firstEntity(RS2::ResolveLevel level) {
 
     case RS2::ResolveAll: {
             subContainer=NULL;
-            RS_Entity* e = entities.first();
+            if (!entities.isEmpty()) {
+                entIdx = 0;
+                e = entities.first();
+            }
             if (e!=NULL && e->isContainer()) {
                 subContainer = (RS_EntityContainer*)e;
                 e = ((RS_EntityContainer*)e)->firstEntity(level);
@@ -760,13 +772,17 @@ RS_Entity* RS_EntityContainer::firstEntity(RS2::ResolveLevel level) {
  *              \li \p 2 all Entity Containers are resolved
  */
 RS_Entity* RS_EntityContainer::lastEntity(RS2::ResolveLevel level) {
+    RS_Entity* e = NULL;
+    entIdx = entities.size()-1;
     switch (level) {
     case RS2::ResolveNone:
-        return entities.last();
+        if (!entities.isEmpty())
+            return entities.last();
         break;
 
     case RS2::ResolveAllButInserts: {
-            RS_Entity* e = entities.last();
+            if (!entities.isEmpty())
+                e = entities.last();
             subContainer = NULL;
             if (e!=NULL && e->isContainer() && e->rtti()!=RS2::EntityInsert) {
                 subContainer = (RS_EntityContainer*)e;
@@ -777,7 +793,8 @@ RS_Entity* RS_EntityContainer::lastEntity(RS2::ResolveLevel level) {
         break;
 
     case RS2::ResolveAll: {
-            RS_Entity* e = entities.last();
+            if (!entities.isEmpty())
+                e = entities.last();
             subContainer = NULL;
             if (e!=NULL && e->isContainer()) {
                 subContainer = (RS_EntityContainer*)e;
@@ -792,15 +809,18 @@ RS_Entity* RS_EntityContainer::lastEntity(RS2::ResolveLevel level) {
 }
 
 
-
 /**
  * Returns the next entity or container or \p NULL if the last entity 
  * returned by \p next() was the last entity in the container.
  */
 RS_Entity* RS_EntityContainer::nextEntity(RS2::ResolveLevel level) {
+
+//set entIdx pointing in next entity and check if is out of range
+    ++entIdx;
     switch (level) {
     case RS2::ResolveNone:
-        return entities.next();
+        if ( entIdx < entities.size() )
+            return entities.at(entIdx);
         break;
 
     case RS2::ResolveAllButInserts: {
@@ -810,10 +830,12 @@ RS_Entity* RS_EntityContainer::nextEntity(RS2::ResolveLevel level) {
                 if (e!=NULL) {
                     return e;
                 } else {
-                    e = entities.next();
+                    if ( entIdx < entities.size() )
+                        e = entities.at(entIdx);
                 }
             } else {
-                e = entities.next();
+                if ( entIdx < entities.size() )
+                    e = entities.at(entIdx);
             }
             if (e!=NULL && e->isContainer() && e->rtti()!=RS2::EntityInsert) {
                 subContainer = (RS_EntityContainer*)e;
@@ -833,12 +855,15 @@ RS_Entity* RS_EntityContainer::nextEntity(RS2::ResolveLevel level) {
             if (subContainer!=NULL) {
                 e = subContainer->nextEntity(level);
                 if (e!=NULL) {
+                    --entIdx; //return a sub-entity, index not advanced
                     return e;
                 } else {
-                    e = entities.next();
+                    if ( entIdx < entities.size() )
+                        e = entities.at(entIdx);
                 }
             } else {
-                e = entities.next();
+                if ( entIdx < entities.size() )
+                    e = entities.at(entIdx);
             }
             if (e!=NULL && e->isContainer()) {
                 subContainer = (RS_EntityContainer*)e;
@@ -863,10 +888,13 @@ RS_Entity* RS_EntityContainer::nextEntity(RS2::ResolveLevel level) {
  * returned by \p prev() was the first entity in the container.
  */
 RS_Entity* RS_EntityContainer::prevEntity(RS2::ResolveLevel level) {
+//set entIdx pointing in prev entity and check if is out of range
+    --entIdx;
     switch (level) {
 
     case RS2::ResolveNone:
-        return entities.prev();
+        if (entIdx >= 0)
+            return entities.at(entIdx);
         break;
     
 	case RS2::ResolveAllButInserts: {
@@ -876,10 +904,12 @@ RS_Entity* RS_EntityContainer::prevEntity(RS2::ResolveLevel level) {
                 if (e!=NULL) {
                     return e;
                 } else {
-                    e = entities.prev();
+                    if (entIdx >= 0)
+                        e = entities.at(entIdx);
                 }
             } else {
-                e = entities.prev();
+                if (entIdx >= 0)
+                    e = entities.at(entIdx);
             }
             if (e!=NULL && e->isContainer() && e->rtti()!=RS2::EntityInsert) {
                 subContainer = (RS_EntityContainer*)e;
@@ -898,12 +928,15 @@ RS_Entity* RS_EntityContainer::prevEntity(RS2::ResolveLevel level) {
             if (subContainer!=NULL) {
                 e = subContainer->prevEntity(level);
                 if (e!=NULL) {
+                    ++entIdx; //return a sub-entity, index not advanced
                     return e;
                 } else {
-                    e = entities.prev();
+                    if (entIdx >= 0)
+                        e = entities.at(entIdx);
                 }
             } else {
-                e = entities.prev();
+                if (entIdx >= 0)
+                    e = entities.at(entIdx);
             }
             if (e!=NULL && e->isContainer()) {
                 subContainer = (RS_EntityContainer*)e;
@@ -925,8 +958,11 @@ RS_Entity* RS_EntityContainer::prevEntity(RS2::ResolveLevel level) {
 /**
  * @return Entity at the given index or NULL if the index is out of range.
  */
-RS_Entity* RS_EntityContainer::entityAt(uint index) {
-    return entities.at(index);
+RS_Entity* RS_EntityContainer::entityAt(int index) {
+    if (entities.size() > index && index >= 0)
+        return entities.at(index);
+    else
+        return NULL;
 }
 
 
@@ -934,33 +970,27 @@ RS_Entity* RS_EntityContainer::entityAt(uint index) {
 /**
  * @return Current index.
  */
+/*RLZ unused
 int RS_EntityContainer::entityAt() {
-    return entities.at();
-}
+    return entIdx;
+} RLZ unused*/
 
 
 /**
  * Finds the given entity and makes it the current entity if found.
  */
 int RS_EntityContainer::findEntity(RS_Entity* entity) {
-    return entities.find(entity);
+    entIdx = entities.indexOf(entity);
+    return entIdx;
 }
 
 
 
 /**
- * @return The current entity.
- */
-RS_Entity* RS_EntityContainer::currentEntity() {
-    return entities.current();
-}
-
-
-/**
  * Returns the copy to a new iterator for traversing the entities.
  */
-RS_PtrListIterator<RS_Entity> RS_EntityContainer::createIterator() {
-    return RS_PtrListIterator<RS_Entity>(entities);
+QListIterator<RS_Entity*> RS_EntityContainer::createIterator() {
+    return QListIterator<RS_Entity*>(entities);
 }
 
 
@@ -977,7 +1007,7 @@ RS_Vector RS_EntityContainer::getNearestEndpoint(const RS_Vector& coord,
     RS_Vector closestPoint(false);  // closest found endpoint
     RS_Vector point;                // endpoint found
 
-    //RS_PtrListIterator<RS_Entity> it = createIterator();
+    //QListIterator<RS_Entity> it = createIterator();
     //RS_Entity* en;
     //while ( (en = it.current()) != NULL ) {
     //    ++it;
@@ -1536,7 +1566,7 @@ std::ostream& operator << (std::ostream& os, RS_EntityContainer& ec) {
     //<< RS_Units::unit2string (ec.unit) << "\n";
     if (ec.getLayer()!=NULL) {
         os << tab << "Layer[" << id << "]: "
-        << ec.getLayer()->getName().latin1() << "\n";
+        << ec.getLayer()->getName().toLatin1().data() << "\n";
     } else {
         os << tab << "Layer[" << id << "]: <NULL>\n";
     }
diff --git a/src/lib/engine/rs_entitycontainer.h b/src/lib/engine/rs_entitycontainer.h
index 710b154..36a5f87 100644
--- a/src/lib/engine/rs_entitycontainer.h
+++ b/src/lib/engine/rs_entitycontainer.h
@@ -34,7 +34,6 @@
 #include "rs_entity.h"
 #include "rs_line.h"
 #include "rs_point.h"
-#include "rs_ptrlist.h"
 
 /**
  * Class representing a tree of entities.
@@ -89,19 +88,18 @@ public:
 
     virtual void addEntity(RS_Entity* entity);
     virtual void insertEntity(int index, RS_Entity* entity);
-    virtual void replaceEntity(int index, RS_Entity* entity);
+//RLZ unused    virtual void replaceEntity(int index, RS_Entity* entity);
     virtual bool removeEntity(RS_Entity* entity);
     virtual RS_Entity* firstEntity(RS2::ResolveLevel level=RS2::ResolveNone);
     virtual RS_Entity* lastEntity(RS2::ResolveLevel level=RS2::ResolveNone);
     virtual RS_Entity* nextEntity(RS2::ResolveLevel level=RS2::ResolveNone);
     virtual RS_Entity* prevEntity(RS2::ResolveLevel level=RS2::ResolveNone);
-	virtual RS_Entity* entityAt(uint index);
-	virtual RS_Entity* currentEntity();
-	virtual int entityAt();
+    virtual RS_Entity* entityAt(int index);
+//RLZ unused	virtual int entityAt();
 	virtual int findEntity(RS_Entity* entity);
     virtual void clear();
 
-	RS_PtrListIterator<RS_Entity> createIterator();
+    QListIterator<RS_Entity*> createIterator();
 
     //virtual unsigned long int count() {
 	//	return count(false);
@@ -124,12 +122,12 @@ public:
     virtual void adjustBorders(RS_Entity* entity);
     virtual void calculateBorders();
     virtual void forcedCalculateBorders();
-    virtual void updateDimensions();
+    virtual void updateDimensions( bool autoText=true);
     virtual void updateInserts();
     virtual void updateSplines();
     virtual void update();
-	virtual void renameInserts(const RS_String& oldName, 
-		const RS_String& newName);
+        virtual void renameInserts(const QString& oldName,
+                const QString& newName);
 
 
     virtual RS_Vector getNearestEndpoint(const RS_Vector& coord,
@@ -182,12 +180,12 @@ public:
 
     friend std::ostream& operator << (std::ostream& os, RS_EntityContainer& ec);
 
-	bool isOwner() {return entities.autoDelete();}
-	void setOwner(bool owner) {return entities.setAutoDelete(owner);}
+    bool isOwner() {return autoDelete;}
+    void setOwner(bool owner) {autoDelete=owner;}
 protected:
 
     /** entities in the container */
-    RS_PtrList<RS_Entity> entities;
+    QList<RS_Entity *> entities;
 
     /** sub container used only temporarly for iteration. */
     RS_EntityContainer* subContainer;
@@ -197,8 +195,10 @@ protected:
      * are added or removed. 
      */
     static bool autoUpdateBorders;
-}
-;
 
+private:
+    int entIdx;
+    bool autoDelete;
+};
 
 #endif
diff --git a/src/lib/engine/rs_file.h b/src/lib/engine/rs_file.h
deleted file mode 100644
index 4c0fbd6..0000000
--- a/src/lib/engine/rs_file.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_FILE_H
-#define RS_FILE_H
-
-#include <qfile.h>
-
-#define RS_File QFile
-
-#endif
diff --git a/src/lib/engine/rs_fileinfo.h b/src/lib/engine/rs_fileinfo.h
deleted file mode 100644
index 7bf1708..0000000
--- a/src/lib/engine/rs_fileinfo.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_FILEINFO_H
-#define RS_FILEINFO_H
-
-#include <qfileinfo.h>
-
-#define RS_FileInfo QFileInfo
-
-#endif
diff --git a/src/lib/engine/rs_font.cpp b/src/lib/engine/rs_font.cpp
index c5bc2d5..01a2ccb 100644
--- a/src/lib/engine/rs_font.cpp
+++ b/src/lib/engine/rs_font.cpp
@@ -28,18 +28,11 @@
 #include "rs_font.h"
 
 #include <iostream>
-//#include <values.h>
+#include <QTextStream>
+#include <QTextCodec>
 
-#include "rs_color.h"
-#include "rs_file.h"
-#include "rs_fileinfo.h"
 #include "rs_fontchar.h"
-#include "rs_math.h"
-#include "rs_regexp.h"
-#include "rs_string.h"
 #include "rs_system.h"
-#include "rs_textstream.h"
-
 
 /**
  * Constructor.
@@ -47,7 +40,7 @@
  * @param owner true if the font owns the letters (blocks). Otherwise 
  *              the letters will be deleted when the font is deleted.
  */
-RS_Font::RS_Font(const RS_String& fileName, bool owner)
+RS_Font::RS_Font(const QString& fileName, bool owner)
         :	letterList(owner) {
     this->fileName = fileName;
 	encoding = "";
@@ -72,17 +65,17 @@ bool RS_Font::loadFont() {
         return true;
     }
 
-    RS_String path;
+    QString path;
 
     // Search for the appropriate font if we have only the name of the font:
-    if (!fileName.lower().contains(".cxf")) {
-        RS_StringList fonts = RS_SYSTEM->getFontList();
-        RS_FileInfo file;
-        for (RS_StringList::Iterator it = fonts.begin();
+    if (!fileName.toLower().contains(".cxf")) {
+        QStringList fonts = RS_SYSTEM->getFontList();
+        QFileInfo file;
+        for (QStringList::Iterator it = fonts.begin();
                 it!=fonts.end();
                 it++) {
 
-            if (RS_FileInfo(*it).baseName().lower()==fileName.lower()) {
+            if (QFileInfo(*it).baseName().toLower()==fileName.toLower()) {
                 path = *it;
                 break;
             }
@@ -102,20 +95,20 @@ bool RS_Font::loadFont() {
     }
 
     // Open cxf file:
-    RS_File f(path);
+    QFile f(path);
     if (!f.open(QIODevice::ReadOnly)) {
         RS_DEBUG->print(RS_Debug::D_WARNING,
 			"RS_Font::loadFont: Cannot open font file: %s", 
-			path.latin1());
+                        path.toLatin1().data());
         return false;
     } else {
         RS_DEBUG->print("RS_Font::loadFont: "
 			"Successfully opened font file: %s", 
-			path.latin1());
+                        path.toLatin1().data());
     }
 
-    RS_TextStream ts(&f);
-    RS_String line;
+    QTextStream ts(&f);
+    QString line;
 
     // Read line by line until we find a new letter:
     while (!ts.atEnd()) {
@@ -126,30 +119,30 @@ bool RS_Font::loadFont() {
 
         // Read font settings:
         if (line.at(0)=='#') {
-            RS_StringList lst =
-                RS_StringList::split(':', line.right(line.length()-1));
-            RS_StringList::Iterator it3 = lst.begin();
+            QStringList lst =
+                ( line.right(line.length()-1) ).split(':', QString::SkipEmptyParts);
+            QStringList::Iterator it3 = lst.begin();
 
 			// RVT_PORT sometimes it happens that the size is < 2
 			if (lst.size()<2) 
 				continue;
 			
-            RS_String identifier = (*it3).stripWhiteSpace();
+            QString identifier = (*it3).trimmed();
             it3++;
-            RS_String value = (*it3).stripWhiteSpace();
+            QString value = (*it3).trimmed();
 
-            if (identifier.lower()=="letterspacing") {
+            if (identifier.toLower()=="letterspacing") {
                 letterSpacing = value.toDouble();
-            } else if (identifier.lower()=="wordspacing") {
+            } else if (identifier.toLower()=="wordspacing") {
                 wordSpacing = value.toDouble();
-            } else if (identifier.lower()=="linespacingfactor") {
+            } else if (identifier.toLower()=="linespacingfactor") {
                 lineSpacingFactor = value.toDouble();
-            } else if (identifier.lower()=="author") {
+            } else if (identifier.toLower()=="author") {
                 authors.append(value);
-            } else if (identifier.lower()=="name") {
+            } else if (identifier.toLower()=="name") {
                	names.append(value);
-            } else if (identifier.lower()=="encoding") {
-				ts.setCodec(RS_TextCodec::codecForName(value));
+            } else if (identifier.toLower()=="encoding") {
+                                ts.setCodec(QTextCodec::codecForName(value.toLatin1()));
 				encoding = value;
             }
         }
@@ -158,22 +151,22 @@ bool RS_Font::loadFont() {
         else if (line.at(0)=='[') {
 
             // uniode character:
-            RS_Char ch;
+            QChar ch;
 
             // read unicode:
-            RS_RegExp regexp("[0-9A-Fa-f]{4,4}");
-            regexp.search(line);
-            RS_String cap = regexp.cap();
+            QRegExp regexp("[0-9A-Fa-f]{4,4}");
+            regexp.indexIn(line);
+            QString cap = regexp.cap();
             if (!cap.isNull()) {
                 int uCode = cap.toInt(NULL, 16);
-                ch = RS_Char(uCode);
+                ch = QChar(uCode);
             }
 
             // read UTF8 (LibreCAD 1 compatibility)
-            else if (line.find(']')>=3) {
-                int i = line.find(']');
-                RS_String mid = line.mid(1, i-1);
-                ch = RS_String::fromUtf8(mid.latin1()).at(0);
+            else if (line.indexOf(']')>=3) {
+                int i = line.indexOf(']');
+                QString mid = line.mid(1, i-1);
+                ch = QString::fromUtf8(mid.toLatin1()).at(0);
             }
 
             // read normal ascii character:
@@ -186,9 +179,9 @@ bool RS_Font::loadFont() {
                 new RS_FontChar(NULL, ch, RS_Vector(0.0, 0.0));
 				
             // Read entities of this letter:
-            RS_String coordsStr;
-            RS_StringList coords;
-            RS_StringList::Iterator it2;
+            QString coordsStr;
+            QStringList coords;
+            QStringList::Iterator it2;
             do {
                 line = ts.readLine();
 
@@ -197,7 +190,8 @@ bool RS_Font::loadFont() {
 				}
 				
                 coordsStr = line.right(line.length()-2);
-                coords = RS_StringList::split(',', coordsStr);
+//                coords = QStringList::split(',', coordsStr);
+                coords = coordsStr.split(',', QString::SkipEmptyParts);
                 it2 = coords.begin();
 
                 // Line:
@@ -250,7 +244,7 @@ bool RS_Font::loadFont() {
  * Dumps the fonts data to stdout.
  */
 std::ostream& operator << (std::ostream& os, const RS_Font& f) {
-    os << " Font file name: " << f.getFileName().latin1() << "\n";
+    os << " Font file name: " << f.getFileName().toLatin1().data() << "\n";
     //<< (RS_BlockList&)f << "\n";
     return os;
 }
diff --git a/src/lib/engine/rs_font.h b/src/lib/engine/rs_font.h
index 0ebc94d..7394fd0 100644
--- a/src/lib/engine/rs_font.h
+++ b/src/lib/engine/rs_font.h
@@ -29,11 +29,8 @@
 #define RS_FONT_H
 
 #include <iostream>
-
+#include <QStringList>
 #include "rs_blocklist.h"
-#include "rs_string.h"
-#include "rs_stringlist.h"
-
 
 /**
  * Class for representing a font. This is implemented as a RS_Graphic
@@ -44,26 +41,26 @@
  */
 class RS_Font {
 public:
-    RS_Font(const RS_String& name, bool owner=true);
+    RS_Font(const QString& name, bool owner=true);
     //RS_Font(const char* name);
 
     /** @return the fileName of this font. */
-    RS_String getFileName() const {
+    QString getFileName() const {
         return fileName;
     }
 	
     /** @return the encoding of this font. */
-    RS_String getEncoding() const {
+    QString getEncoding() const {
         return encoding;
     }
 	
     /** @return the alternative names of this font. */
-    const RS_StringList& getNames() const {
+    const QStringList& getNames() const {
         return names;
     }
 	
     /** @return the author(s) of this font. */
-    const RS_StringList& getAuthors() const {
+    const QStringList& getAuthors() const {
         return authors;
     }
 
@@ -88,7 +85,7 @@ public:
 	RS_BlockList* getLetterList() {
 		return &letterList;
 	}
-    RS_Block* findLetter(const RS_String& name) {
+    RS_Block* findLetter(const QString& name) {
 		return letterList.find(name);
 	}
     uint countLetters() {
@@ -107,16 +104,16 @@ private:
 	RS_BlockList letterList;
 
     //! Font file name
-    RS_String fileName;
+    QString fileName;
 	
     //! Font encoding (see docu for QTextCodec)
-    RS_String encoding;
+    QString encoding;
 
 	//! Font names
-	RS_StringList names;
+        QStringList names;
 	
 	//! Authors
-	RS_StringList authors;
+        QStringList authors;
 
     //! Is this font currently loaded into memory?
     bool loaded;
diff --git a/src/lib/engine/rs_fontchar.h b/src/lib/engine/rs_fontchar.h
index e65aa3b..b7c5820 100644
--- a/src/lib/engine/rs_fontchar.h
+++ b/src/lib/engine/rs_fontchar.h
@@ -45,7 +45,7 @@ public:
      * @param basePoint Base point (offset) of the letter (usually 0/0).
      */
     RS_FontChar(RS_EntityContainer* parent,
-                const RS_String& name,
+                const QString& name,
                 RS_Vector basePoint)
             : RS_Block(parent, RS_BlockData(name, basePoint, false)) {}
 
diff --git a/src/lib/engine/rs_fontlist.cpp b/src/lib/engine/rs_fontlist.cpp
index 8827520..4896c2c 100644
--- a/src/lib/engine/rs_fontlist.cpp
+++ b/src/lib/engine/rs_fontlist.cpp
@@ -25,12 +25,11 @@
 **********************************************************************/
 
 
+#include <QHash>
 #include "rs_fontlist.h"
-
-#include "rs_fileinfo.h"
-#include "rs_stringlist.h"
+#include "rs_debug.h"
+#include "rs_font.h"
 #include "rs_system.h"
-#include "rs_dict.h"
 
 RS_FontList* RS_FontList::uniqueInstance = NULL;
 
@@ -40,8 +39,6 @@ RS_FontList* RS_FontList::uniqueInstance = NULL;
  * Default constructor.
  */
 RS_FontList::RS_FontList() {
-    fonts.setAutoDelete(true);
-    //fontListListeners.setAutoDelete(false);
 }
 
 
@@ -53,22 +50,21 @@ RS_FontList::RS_FontList() {
 void RS_FontList::init() {
     RS_DEBUG->print("RS_FontList::initFonts");
 
-    RS_StringList list = RS_SYSTEM->getFontList();
-    RS_Dict<char> added; //used to remeber added fonts (avoid duplication)
+    QStringList list = RS_SYSTEM->getFontList();
+    QHash<QString, int> added; //used to remember added fonts (avoid duplication)
     RS_Font* font;
 
-    for ( RS_StringList::Iterator it = list.begin();
-            it != list.end(); ++it ) {
-        RS_DEBUG->print("font: %s:", (*it).latin1());
+    for (int i = 0; i < list.size(); ++i) {
+        RS_DEBUG->print("font: %s:", list.at(i).toLatin1().data());
 
-        RS_FileInfo fi(*it);
-        if (!added[fi.baseName()]) {
+        QFileInfo fi( list.at(i) );
+        if ( !added.contains(fi.baseName()) ) {
             font = new RS_Font(fi.baseName());
             fonts.append(font);
-            added.insert(fi.baseName(), (char*)1);
+            added.insert(fi.baseName(), 1);
         }
 
-        RS_DEBUG->print("base: %s", fi.baseName().latin1());
+        RS_DEBUG->print("base: %s", fi.baseName().toLatin1().data());
     }
 }
 
@@ -78,21 +74,22 @@ void RS_FontList::init() {
  * Removes all fonts in the fontlist.
  */
 void RS_FontList::clearFonts() {
-    fonts.clear();
+    while (!fonts.isEmpty())
+        delete fonts.takeFirst();
 }
 
 
 
 /**
  * Removes a font from the list.
- * Listeners are notified after the font was removed from 
- * the list but before it gets deleted.
+ * The font was removed from the list and is deleted.
  */
 void RS_FontList::removeFont(RS_Font* font) {
     RS_DEBUG->print("RS_FontList::removeFont()");
 
-    // here the font is removed from the list but not deleted
-    fonts.remove(font);
+    int i = fonts.indexOf(font);
+    if (i != -1)
+        delete fonts.takeAt(i);
 
     //for (uint i=0; i<fontListListeners.count(); ++i) {
     //    RS_FontListListener* l = fontListListeners.at(i);
@@ -107,25 +104,24 @@ void RS_FontList::removeFont(RS_Font* font) {
  * \p NULL if no such font was found. The font will be loaded into
  * memory if it's not already.
  */
-RS_Font* RS_FontList::requestFont(const RS_String& name) {
-    RS_DEBUG->print("RS_FontList::requestFont %s",  name.latin1());
+RS_Font* RS_FontList::requestFont(const QString& name) {
+    RS_DEBUG->print("RS_FontList::requestFont %s",  name.toLatin1().data());
 
-    RS_String name2 = name.lower();
+    QString name2 = name.toLower();
     RS_Font* foundFont = NULL;
 
-    // LibreCAD 1 compatibility:
+    // QCAD 1 compatibility:
     if (name2.contains('#') && name2.contains('_')) {
-        name2 = name2.left(name2.find('_'));
+        name2 = name2.left(name2.indexOf('_'));
     } else if (name2.contains('#')) {
-        name2 = name2.left(name2.find('#'));
+        name2 = name2.left(name2.indexOf('#'));
     }
 
-    RS_DEBUG->print("name2: %s", name2.latin1());
+    RS_DEBUG->print("name2: %s", name2.toLatin1().data());
 
     // Search our list of available fonts:
-    for (RS_Font* f=fonts.first();
-            f!=NULL;
-            f=fonts.next()) {
+    for (int i = 0; i < fonts.size(); ++i) {
+        RS_Font* f = fonts.at(i);
 
         if (f->getFileName()==name2) {
             // Make sure this font is loaded into memory:
@@ -150,9 +146,8 @@ RS_Font* RS_FontList::requestFont(const RS_String& name) {
 std::ostream& operator << (std::ostream& os, RS_FontList& l) {
 
     os << "Fontlist: \n";
-    for (RS_Font* f=l.firstFont();
-            f!=NULL;
-            f=l.nextFont()) {
+    for (int i = 0; i < l.fonts.size(); ++i) {
+        RS_Font* f = l.fonts.at(i);
 
         os << *f << "\n";
     }
diff --git a/src/lib/engine/rs_fontlist.h b/src/lib/engine/rs_fontlist.h
index 3cfd1b0..b3aa066 100644
--- a/src/lib/engine/rs_fontlist.h
+++ b/src/lib/engine/rs_fontlist.h
@@ -29,9 +29,8 @@
 #define RS_FONTLIST_H
 
 
-#include "rs_font.h"
-#include "rs_entity.h"
-#include "rs_ptrlist.h"
+#include <QList>
+class RS_Font;
 
 #define RS_FONTLIST RS_FontList::instance()
 
@@ -65,17 +64,11 @@ public:
         return fonts.count();
     }
     virtual void removeFont(RS_Font* font);
-    RS_Font* requestFont(const RS_String& name);
-    //! @return First font of the list.
-    RS_Font* firstFont() {
-        return fonts.first();
-    }
-    /** 
-	 * @return Next font from the list after
-     * calling firstFont() or nextFont().
-     */
-    RS_Font* nextFont() {
-        return fonts.next();
+    RS_Font* requestFont(const QString& name);
+
+    //! @return a const iterator for the font list.
+    QListIterator<RS_Font *> getIteretor(){
+        return QListIterator<RS_Font *>(fonts);
     }
 
     friend std::ostream& operator << (std::ostream& os, RS_FontList& l);
@@ -85,8 +78,7 @@ protected:
 
 private:
     //! fonts in the graphic
-    RS_PtrList<RS_Font> fonts;
-}
-;
+    QList<RS_Font *> fonts;
+};
 
 #endif
diff --git a/src/lib/engine/rs_graphic.cpp b/src/lib/engine/rs_graphic.cpp
index b03b69c..fb28f27 100644
--- a/src/lib/engine/rs_graphic.cpp
+++ b/src/lib/engine/rs_graphic.cpp
@@ -34,6 +34,8 @@
 #include "rs_math.h"
 #include "rs_units.h"
 #include "rs_settings.h"
+#include "rs_layer.h"
+#include "rs_block.h"
 
 
 /**
@@ -43,9 +45,6 @@ RS_Graphic::RS_Graphic(RS_EntityContainer* parent)
         : RS_Document(parent),
         layerList(),
 blockList(true)
-#ifdef RS_CAM
-, camData()
-#endif
 {
 
     RS_SETTINGS->beginGroup("/Defaults");
@@ -132,7 +131,7 @@ void RS_Graphic::removeLayer(RS_Layer* layer) {
         endUndoCycle();
 
         // remove all entities in blocks that are on that layer:
-        for (uint bi=0; bi<blockList.count(); bi++) {
+        for (int bi=0; bi<blockList.count(); bi++) {
             RS_Block* blk = blockList.at(bi);
 
             if (blk!=NULL) {
@@ -177,86 +176,300 @@ void RS_Graphic::newDoc() {
 
 
 
-/**
- * Saves this graphic with the current filename and settings.
+/*
+ * Description:	Create/update the drawing backup file, if necessary.
+ * Author(s):		Claude Sylvain
+ * Created:			13 July 2011
+ * Last modified:
+ *
+ * Parameters:		const QString &filename:
+ * 						Name of the drawing file to backup.
+ *
+ * Returns:			bool:
+ * 						false	: Operation failed.
+ * 						true	: Operation successfull.
  */
-bool RS_Graphic::save(bool isAutoSave) {
 
-	bool ret = false;
+bool RS_Graphic::BackupDrawingFile(const QString &filename)
+{
+	static const char	*msg_err	=
+	  	"RS_Graphic::BackupDrawingFile: Can't create object!";
+
+	bool	ret	= false;		/*	Operation failed, by default. */
+
+
+	/*	- Create backup only if drawing file name exist.
+	 *	- Remark: Not really necessary to check if the drawing file
+	 *	  name have been defined.
+	 *	----------------------------------------------------------- */
+	if (filename.length() > 0)
+	{
+		/*	Built Backup File Name.
+		 *	*/
+		QString	*qs_backup_fn	= new QString(filename + '~');
+
+		/*	Create "Drawing File" object.
+		 *	*/
+		QFile	*qf_df = new QFile(filename);
+
+		/*	If able to create the objects, process...
+		 *	----------------------------------------- */
+		if ((qs_backup_fn != NULL) && (qf_df != NULL))
+		{
+			/*	Create backup file only if drawing file already exist.
+			 *	------------------------------------------------------ */
+			if (qf_df->exists() == true)
+			{
+				/*	Create "Drawing File Backup" object.
+				 *	*/
+				QFile	*qf_dfb	= new QFile(*qs_backup_fn);
+
+				/*	If able to create the object, process...
+				 *	---------------------------------------- */
+				if (qf_dfb != NULL)
+				{
+					/*	If a backup file already exist, remove it!
+					 *	------------------------------------------ */
+					if (qf_dfb->exists() == true)
+						qf_dfb->remove();
+
+					qf_df->copy(*qs_backup_fn);	/*	Create backup file. */
+					ret	= true;						/*	Operation successfull. */
+					delete qf_dfb;
+				}
+				/*	Can't create object.
+				 *	-------------------- */
+				else
+				{
+                    RS_DEBUG->print("%s", msg_err);
+				}
+			}
+
+		}
+		/*	Can't create object(s).
+		 *	----------------------- */
+		else
+		{
+            RS_DEBUG->print("%s", msg_err);
+		}
+
+		delete qs_backup_fn;
+		delete qf_df;
+	}
+
+	return ret;
+}
+
 
-	
-    RS_DEBUG->print("RS_Graphic::save");
-	if (isAutoSave && !isModified()) {
-	    RS_DEBUG->print("  autsave and not modified => not saved");
-		ret = true;
-	} else {
-		const RS_String *actualName;
-		RS2::FormatType actualType;
 
-		actualType = formatType;
-		if (isAutoSave) {
+/*
+ *	Description:	Saves this graphic with the current filename and settings.
+ *	Author(s):		..., Claude Sylvain
+ * Last modified:	13 July 2011
+ *	Parameters:
+ *
+ *	Returns:			bool:
+ *							false:	Operation failed.
+ *							true:		Operation successfull.
+ *
+ * Notes:			- If this is not an AutoSave, backup the drawing file
+ * 					  (if necessary).
+ * 					- Drawing is saved only when it has been modified.
+ * 					  This prevent lost of backup file when file
+ * 					  is saved more than one time without being modified.
+ */
+
+bool RS_Graphic::save(bool isAutoSave)
+{
+	bool ret	= false;
+
+	RS_DEBUG->print("RS_Graphic::save: Entering...");
+
+	/*	- Save drawing file only if it has been modifed.
+	 *	- Notes: Potentially dangerous in case of an internal
+	 *	  coding error that make LibreCAD not aware of modification
+	 *	  when some kind of drawing modification is done.
+	 *	----------------------------------------------------------- */	  
+	if (isModified() == true)
+	{
+		const QString		*actualName;
+		RS2::FormatType	actualType;
+
+		actualType	= formatType;
+
+		if (isAutoSave == true)
+		{
 			actualName = new QString(autosaveFilename);
-			if (formatType == RS2::FormatUnknown) {
+
+			if (formatType == RS2::FormatUnknown)
 				actualType = RS2::FormatDXF;
-			}
-		} else {
+		}
+		//	- This is not an AutoSave operation.  This is a manual
+		//	  save operation.  So, ...
+		//		- Set working file name to the drawing file name.
+		//		- Backup drawing file (if necessary).
+		//	------------------------------------------------------
+		else
+		{
 			actualName = new QString(filename);
+            if (RS_SETTINGS->readNumEntry("/AutoBackupDocument", 1)!=0)
+                BackupDrawingFile(filename);
+		}
+
+		/*	Save drawing file if able to created associated object.
+		 *	------------------------------------------------------- */
+		if (actualName != NULL)
+		{
+			RS_DEBUG->print("RS_Graphic::save: File: %s", actualName->toLatin1().data());
+			RS_DEBUG->print("RS_Graphic::save: Format: %d", (int) actualType);
+			RS_DEBUG->print("RS_Graphic::save: Export...");
+
+			ret = RS_FILEIO->fileExport(*this, *actualName, actualType);
+			delete actualName;
+		}
+		else
+		{
+			RS_DEBUG->print("RS_Graphic::save: Can't create object!");
+			RS_DEBUG->print("RS_Graphic::save: File not saved!");
 		}
-	    RS_DEBUG->print("  file: %s", actualName->latin1());
-		RS_DEBUG->print("  format: %d", (int)actualType);
-		RS_DEBUG->print("  export...");
-		ret = RS_FILEIO->fileExport(*this, *actualName, actualType);
-		delete actualName;
-
-		if (ret && !isAutoSave) {
-		    setModified(false);
+
+		/*	Remove AutoSave file after user has successfully saved file.
+		 *	------------------------------------------------------------ */
+		if (ret && !isAutoSave)
+		{
+			/*	Autosave file object.
+			 *	*/
+			QFile	*qf_file	= new QFile(autosaveFilename);
+
+			/*	Tell that drawing file is no more modified.
+			 *	------------------------------------------- */
+			setModified(false);
 			layerList.setModified(false);
 			blockList.setModified(false);
-			// Remove old autosave file
-			QFile f(autosaveFilename);
-			if (f.exists()) {
-				RS_DEBUG->print("  removing old autosave file %s",
-								autosaveFilename.latin1());
-				f.remove();
+
+			/*	- Remove autosave file, if able to create associated object,
+			 *	  and if autosave file exist.
+			 *	------------------------------------------------------------ */
+			if (qf_file != NULL)
+			{
+				if (qf_file->exists())
+				{
+					RS_DEBUG->print(	"RS_Graphic::save: Removing old autosave file %s",
+											autosaveFilename.toLatin1().data());
+					qf_file->remove();
+				}
+
+				delete qf_file;
+			}
+			else
+			{
+				RS_DEBUG->print("RS_Graphic::save: Can't create object!");
+				RS_DEBUG->print("RS_Graphic::save: Autosave file not removed");
 			}
 		}
+
+		RS_DEBUG->print("RS_Graphic::save: Done!");
+	}
+	else
+	{
+		RS_DEBUG->print("RS_Graphic::save: File not modified, not saved");
+		ret = true;
 	}
 
-    RS_DEBUG->print("RS_Graphic::save ok");
+	RS_DEBUG->print("RS_Graphic::save: Exiting...");
 
-    return ret;
+	return ret;
 }
 
 
 
-/**
- * Saves this graphic with the given filename and current settings.
+/*
+ *	Description:	- Saves this graphic with the given filename and current
+ *						  settings.
+ *
+ *	Author(s):		..., Claude Sylvain
+ *	Created:			?
+ *	Last modified:	13 July 2011
+ *	Parameters:
+ *
+ *	Returns:			bool:
+ *							false:	Operation failed.
+ *							true:		Operation successfull.
+ *
+ * Notes:			Backup the drawing file (if necessary).
  */
-bool RS_Graphic::saveAs(const RS_String &filename, RS2::FormatType type) {
 
-    RS_DEBUG->print("RS_Graphic::saveAs");
+bool RS_Graphic::saveAs(const QString &filename, RS2::FormatType type)
+{
+	bool	ret	= false;		/*	Set to "failed" by default. */
 
-    this->filename = filename;
-	RS_String *oldAutosaveName = new RS_String(autosaveFilename);
-	QFileInfo finfo(filename);
-	// Construct new autosave filename by prepending # to the filename
-	// part, using the same directory as the destination file.
-	this->autosaveFilename = finfo.dirPath() + "/#" + finfo.fileName();
-	this->formatType = type;
-
-    bool ret = save();
-
-	if (ret) {
-		// save was successful, remove old autosave file
-		QFile f(*oldAutosaveName);
-		if (f.exists()) {
-			RS_DEBUG->print("removing old autosave file %s",
-							oldAutosaveName->latin1());
-			f.remove();
+	/*	- Check/memorize if file name we want to use as new file
+	 *	  name is the same as the actual file name.
+	 *	*/
+	bool	fn_is_same	= filename == this->filename;
+
+	RS_DEBUG->print("RS_Graphic::saveAs: Entering...");
+
+	this->filename = filename;
+
+	QString		*oldAutosaveName	= new QString(autosaveFilename);
+	QFileInfo	*finfo				= new QFileInfo(filename);
+
+	/*	Go further more only if able to create some objects.
+	 *	---------------------------------------------------- */
+	if ((oldAutosaveName != NULL) && (finfo != NULL))
+	{
+		// Construct new autosave filename by prepending # to the filename
+		// part, using the same directory as the destination file.
+		//
+		this->autosaveFilename = finfo->path() + "/#" + finfo->fileName();
+
+		this->formatType	= type;
+
+		/*	- When drawing is saved using a different name than the actual
+		 *	  drawing file name, make LibreCAD think that drawing file
+		 *	  has been modified, to make sure the drawing file saved.
+		 *	*/
+		if (!fn_is_same)
+			setModified(true);
+
+		ret	= save();		//	Save file.
+
+		if (ret)
+		{
+			// Save was successful, remove old autosave file.
+			//
+
+			QFile	*qf_file	= new QFile(*oldAutosaveName);
+
+			if (qf_file != NULL)
+			{
+				if (qf_file->exists())
+				{
+					RS_DEBUG->print(	"RS_Graphic::saveAs: Removing old autosave file %s",
+							oldAutosaveName->toLatin1().data());
+					qf_file->remove();
+				}
+
+				delete qf_file;
+			}
+			else
+			{
+				RS_DEBUG->print("RS_Graphic::saveAs: Can't create object!");
+				RS_DEBUG->print("RS_Graphic::saveAs: Old autosave file not removed!");
+			}
 		}
 	}
+	else
+	{
+		RS_DEBUG->print("RS_Graphic::saveAs: Can't create object!");
+		RS_DEBUG->print("RS_Graphic::saveAs: File not saved!");
+	}
 
 	delete oldAutosaveName;
+	delete finfo;
+
+	RS_DEBUG->print("RS_Graphic::saveAs: Exiting...");
 
 	return ret;
 }
@@ -266,8 +479,8 @@ bool RS_Graphic::saveAs(const RS_String &filename, RS2::FormatType type) {
 /**
  * Loads the given fils into this graphic.
  */
-bool RS_Graphic::open(const RS_String &filename, RS2::FormatType type) {
-    RS_DEBUG->print("RS_Graphic::open(%s)", filename.latin1());
+bool RS_Graphic::open(const QString &filename, RS2::FormatType type) {
+    RS_DEBUG->print("RS_Graphic::open(%s)", filename.toLatin1().data());
 
 	bool ret = false;
 
@@ -275,7 +488,7 @@ bool RS_Graphic::open(const RS_String &filename, RS2::FormatType type) {
 	QFileInfo finfo(filename);
 	// Construct new autosave filename by prepending # to the filename
 	// part, using the same directory as the destination file.
-	this->autosaveFilename = finfo.dirPath() + "/#" + finfo.fileName();
+        this->autosaveFilename = finfo.path() + "/#" + finfo.fileName();
 
     // clean all:
     newDoc();
@@ -290,7 +503,7 @@ bool RS_Graphic::open(const RS_String &filename, RS2::FormatType type) {
     //cout << *((RS_Graphic*)graphic);
     //calculateBorders();
 	
-    RS_DEBUG->print("RS_Graphic::open(%s): OK", filename.latin1());
+    RS_DEBUG->print("RS_Graphic::open(%s): OK", filename.toLatin1().data());
 
     return ret;
 }
diff --git a/src/lib/engine/rs_graphic.h b/src/lib/engine/rs_graphic.h
index a23c8aa..410cc3f 100644
--- a/src/lib/engine/rs_graphic.h
+++ b/src/lib/engine/rs_graphic.h
@@ -33,12 +33,8 @@
 #include "rs_variabledict.h"
 #include "rs_document.h"
 #include "rs_units.h"
-#ifdef RS_CAM
-#include "rs_camdata.h"
-#endif
-
-//class RS_CamData;
 
+class RS_VariableDict;
 
 /**
  * A graphic document which can contain entities layers and blocks.
@@ -70,8 +66,8 @@ public:
 
     virtual void newDoc();
     virtual bool save(bool isAutoSave = false);
-    virtual bool saveAs(const RS_String& filename, RS2::FormatType type);
-    virtual bool open(const RS_String& filename, RS2::FormatType type);
+    virtual bool saveAs(const QString& filename, RS2::FormatType type);
+    virtual bool open(const QString& filename, RS2::FormatType type);
 	
 	// Wrappers for Layer functions:
     void clearLayers() {
@@ -83,7 +79,7 @@ public:
     RS_Layer* layerAt(uint i) {
         return layerList.at(i);
     }
-    void activateLayer(const RS_String& name) {
+    void activateLayer(const QString& name) {
 		layerList.activate(name);
 	}
     void activateLayer(RS_Layer* layer) {
@@ -99,10 +95,10 @@ public:
     virtual void editLayer(RS_Layer* layer, const RS_Layer& source) {
 		layerList.edit(layer, source);
 	}
-    RS_Layer* findLayer(const RS_String& name) {
+    RS_Layer* findLayer(const QString& name) {
 		return layerList.find(name);
 	}
-    void toggleLayer(const RS_String& name) {
+    void toggleLayer(const QString& name) {
 		layerList.toggle(name);
 	}
     void toggleLayer(RS_Layer* layer) {
@@ -133,7 +129,7 @@ public:
     RS_Block* blockAt(uint i) {
         return blockList.at(i);
     }
-    void activateBlock(const RS_String& name) {
+    void activateBlock(const QString& name) {
 		blockList.activate(name);
 	}
     void activateBlock(RS_Block* block) {
@@ -151,13 +147,13 @@ public:
     virtual void removeBlock(RS_Block* block) {
 		blockList.remove(block);
 	}
-    RS_Block* findBlock(const RS_String& name) {
+    RS_Block* findBlock(const QString& name) {
 		return blockList.find(name);
 	}
-    RS_String newBlockName() {
+    QString newBlockName() {
 		return blockList.newName();
 	}
-    void toggleBlock(const RS_String& name) {
+    void toggleBlock(const QString& name) {
 		blockList.toggle(name);
 	}
     void toggleBlock(RS_Block* block) {
@@ -181,37 +177,37 @@ public:
 		return variableDict.count();
     }
 
-    void addVariable(const RS_String& key, const RS_Vector& value, int code) {
+    void addVariable(const QString& key, const RS_Vector& value, int code) {
 		variableDict.add(key, value, code);
 	}
-    void addVariable(const RS_String& key, const RS_String& value, int code) {
+    void addVariable(const QString& key, const QString& value, int code) {
 		variableDict.add(key, value, code);
 	}
-    void addVariable(const RS_String& key, int value, int code) {
+    void addVariable(const QString& key, int value, int code) {
 		variableDict.add(key, value, code);
 	}
-    void addVariable(const RS_String& key, double value, int code) {
+    void addVariable(const QString& key, double value, int code) {
 		variableDict.add(key, value, code);
 	}
 
-    RS_Vector getVariableVector(const RS_String& key, const RS_Vector& def) {
+    RS_Vector getVariableVector(const QString& key, const RS_Vector& def) {
 		return variableDict.getVector(key, def);
 	}
-    RS_String getVariableString(const RS_String& key, const RS_String& def) {
+    QString getVariableString(const QString& key, const QString& def) {
 		return variableDict.getString(key, def);
 	}
-    int getVariableInt(const RS_String& key, int def) {
+    int getVariableInt(const QString& key, int def) {
 		return variableDict.getInt(key, def);
 	}
-    double getVariableDouble(const RS_String& key, double def) {
+    double getVariableDouble(const QString& key, double def) {
 		return variableDict.getDouble(key, def);
 	}
 
-    void removeVariable(const RS_String& key) {
+    void removeVariable(const QString& key) {
 		variableDict.remove(key);
 	}
 
-	RS_Dict<RS_Variable>& getVariableDict() {
+        QHash<QString, RS_Variable>& getVariableDict() {
 		return variableDict.getVariableDict();
 	}
 
@@ -272,24 +268,16 @@ public:
 		blockList.setModified(m);
 	}
 
-#ifdef RS_CAM
-	RS_CamData& getCamData() {
-		return camData;
-	}
-	void setCamData(const RS_CamData& d) {
-		camData = d;
-	}
-#endif
-
     friend std::ostream& operator << (std::ostream& os, RS_Graphic& g);
 
+
 private:
+
+	bool BackupDrawingFile(const QString &filename);
+
 	RS_LayerList layerList;
 	RS_BlockList blockList;
 	RS_VariableDict variableDict;
-#ifdef RS_CAM
-	RS_CamData camData;
-#endif
 };
 
 
diff --git a/src/lib/engine/rs_hatch.cpp b/src/lib/engine/rs_hatch.cpp
index 681ce91..e9fdfe3 100644
--- a/src/lib/engine/rs_hatch.cpp
+++ b/src/lib/engine/rs_hatch.cpp
@@ -28,15 +28,12 @@
 #include "rs_hatch.h"
 
 #include "rs_graphicview.h"
-#include "rs_graphic.h"
 #include "rs_information.h"
 #include "rs_painter.h"
-#include "rs_painterqt.h"
 #include "rs_pattern.h"
 #include "rs_patternlist.h"
 
-#include <q3ptrvector.h>
-#include <qpolygon.h>
+#include <QPolygon>
 
 /**
  * Constructor.
@@ -77,7 +74,7 @@ bool RS_Hatch::validate() {
     
 RS_Entity* RS_Hatch::clone() {
     RS_Hatch* t = new RS_Hatch(*this);
-	t->entities.setAutoDelete(entities.autoDelete());
+    t->setOwner(isOwner());
     t->initId();
     t->detach();
 	t->hatch = NULL;
@@ -290,8 +287,7 @@ void RS_Hatch::update() {
         }
 
         // getting all intersections of this pattern line with the contour:
-        RS_PtrList<RS_Vector> is;
-        is.setAutoDelete(true);
+        QList<RS_Vector*> is;
         is.append(new RS_Vector(startPoint));
 
         for (RS_Entity* loop=firstEntity(); loop!=NULL;
@@ -321,18 +317,19 @@ void RS_Hatch::update() {
         // sort the intersection points into is2:
         RS_Vector sp = startPoint;
         double sa = center.angleTo(sp);
-        RS_PtrList<RS_Vector> is2;
-        is2.setAutoDelete(true);
+        QList<RS_Vector*> is2;
         bool done;
         double minDist;
         double dist = 0.0;
         RS_Vector* av;
+        RS_Vector *v;
         RS_Vector last = RS_Vector(false);
         do {
             done = true;
             minDist = RS_MAXDOUBLE;
             av = NULL;
-            for (RS_Vector* v = is.first(); v!=NULL; v = is.next()) {
+            for (int i = 0; i < is.size(); ++i) {
+                v = is.at(i);
                 if (line!=NULL) {
                     dist = sp.distanceTo(*v);
                 } else if (arc!=NULL || circle!=NULL) {
@@ -366,16 +363,16 @@ void RS_Hatch::update() {
                     is2.append(new RS_Vector(*av));
                     last = *av;
                 }
-                is.remove(av);
+                is.removeOne(av);
                 av = NULL;
             }
         } while(!done);
 
         // add small cut lines / arcs to tmp2:
-        for (RS_Vector* v1 = is2.first(); v1!=NULL;) {
-            RS_Vector* v2 = is2.next();
+            for (int i = 1; i < is2.size(); ++i) {
+                RS_Vector *v1 = is2.at(i-1);
+                RS_Vector *v2 = is2.at(i);
 
-            if (v1!=NULL && v2!=NULL) {
                 if (line!=NULL) {
                     tmp2.addEntity(new RS_Line(&tmp2,
                                                RS_LineData(*v1, *v2)));
@@ -387,10 +384,12 @@ void RS_Hatch::update() {
                                                          center.angleTo(*v2),
                                                          reversed)));
                 }
-            }
-
-            v1 = v2;
         }
+
+        while (!is.isEmpty())
+            delete is.takeFirst();
+        while (!is2.isEmpty())
+            delete is2.takeFirst();
     }
 
     // updating hatch / adding entities that are inside
diff --git a/src/lib/engine/rs_hatch.h b/src/lib/engine/rs_hatch.h
index 5e4ce42..7ae8b2d 100644
--- a/src/lib/engine/rs_hatch.h
+++ b/src/lib/engine/rs_hatch.h
@@ -49,7 +49,7 @@ public:
     RS_HatchData(bool solid,
 	             double scale,
 				 double angle,
-	             const RS_String& pattern) {
+                     const QString& pattern) {
 		this->solid = solid;
 		this->scale = scale;
 		this->angle = angle;
@@ -59,7 +59,7 @@ public:
 	}
 
     friend std::ostream& operator << (std::ostream& os, const RS_HatchData& td) {
-        os << "(" << td.pattern.latin1() << ")";
+        os << "(" << td.pattern.toLatin1().data() << ")";
         return os;
     }
 
@@ -67,7 +67,7 @@ public:
 	bool solid;
 	double scale;
 	double angle;
-	RS_String pattern;
+        QString pattern;
 };
 
 
@@ -120,10 +120,10 @@ public:
 		data.solid = solid;
 	}
 
-	RS_String getPattern() {
+        QString getPattern() {
 		return data.pattern;
 	}
-	void setPattern(const RS_String& pattern) {
+        void setPattern(const QString& pattern) {
 		data.pattern = pattern;
 	}
 	
diff --git a/src/lib/engine/rs_image.cpp b/src/lib/engine/rs_image.cpp
index e55d9cb..6182002 100644
--- a/src/lib/engine/rs_image.cpp
+++ b/src/lib/engine/rs_image.cpp
@@ -74,8 +74,8 @@ void RS_Image::update() {
     RS_DEBUG->print("RS_Image::update");
 
     // the whole image:
-    //RS_Img image = RS_Img(data.file);
-    img = RS_Img(data.file);
+    //QImage image = QImage(data.file);
+    img = QImage(data.file);
     if (!img.isNull()) {
         data.size = RS_Vector(img.width(), img.height());
     }
@@ -88,11 +88,11 @@ void RS_Image::update() {
     ny = image.height()/100;
 
     // create small images:
-    img = new RS_Img*[nx];
-    RS_Pixmap pm;
+    img = new QImage*[nx];
+    QPixmap pm;
     int w,h;
     for (int x = 0; x<nx; ++x) {
-    	img[x] = new RS_Img[ny];
+        img[x] = new QImage[ny];
     	for (int y = 0; y<ny; ++y) {
     		if (x<nx-1) {
     			w = 100;
@@ -108,7 +108,7 @@ void RS_Image::update() {
     			h = image.height()%100;
     		}
 
-    		pm = RS_Pixmap(w, h);
+                pm = QPixmap(w, h);
     		RS_PainterQt painter(&pm);
     		painter.drawImage(-x*100, -y*100, image);
     		img[x][y] = pm.convertToImage();
diff --git a/src/lib/engine/rs_image.h b/src/lib/engine/rs_image.h
index 03ca9e9..30866c6 100644
--- a/src/lib/engine/rs_image.h
+++ b/src/lib/engine/rs_image.h
@@ -28,10 +28,9 @@
 #ifndef RS_IMAGE_H
 #define RS_IMAGE_H
 
+#include <QImage>
 #include "rs_atomicentity.h"
 
-#include "rs_img.h"
-
 /**
  * Holds the data that defines a line.
  */
@@ -47,7 +46,7 @@ public:
                 const RS_Vector& uVector,
 				const RS_Vector& vVector,
 				const RS_Vector& size,
-				const RS_String& file,
+                                const QString& file,
 				int brightness,
 				int contrast,
 				int fade) {
@@ -80,7 +79,7 @@ public:
 	/** Image size in pixel. */
 	RS_Vector size;
 	/** Path to image file. */
-	RS_String file;
+        QString file;
 	/** Brightness (0..100, default: 50). */
 	int brightness;
 	/** Contrast (0..100, default: 50). */
@@ -128,12 +127,12 @@ public:
     }
 
 	/** @return File name of the image. */
-	RS_String getFile() const {
+        QString getFile() const {
 		return data.file;
 	}
 	
 	/** Sets the file name of the image.  */
-	void setFile(const RS_String& file) {
+        void setFile(const QString& file) {
 		data.file = file;
 	}
 
@@ -240,8 +239,8 @@ public:
 
 protected:
     RS_ImageData data;
-	RS_Img img;
-	//RS_Img** img;
+        QImage img;
+        //QImage** img;
 	//int nx;
 	//int ny;
 };
diff --git a/src/lib/engine/rs_img.h b/src/lib/engine/rs_img.h
deleted file mode 100644
index 58faee6..0000000
--- a/src/lib/engine/rs_img.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_IMG_H
-#define RS_IMG_H
-
-#include <qimage.h>
-#include <qpixmap.h>
-
-#define RS_Img QImage
-#define RS_Pixmap QPixmap
-
-#endif
diff --git a/src/lib/engine/rs_insert.cpp b/src/lib/engine/rs_insert.cpp
index 9badb6c..f853a0c 100644
--- a/src/lib/engine/rs_insert.cpp
+++ b/src/lib/engine/rs_insert.cpp
@@ -30,7 +30,6 @@
 #include "rs_block.h"
 #include "rs_graphic.h"
 
-
 /**
  * @param parent The graphic this block belongs to.
  */
@@ -60,7 +59,7 @@ RS_Insert::~RS_Insert() {}
 void RS_Insert::update() {
 
 	RS_DEBUG->print("RS_Insert::update");
-	RS_DEBUG->print("RS_Insert::update: name: %s", data.name.latin1());
+        RS_DEBUG->print("RS_Insert::update: name: %s", data.name.toLatin1().data());
 	RS_DEBUG->print("RS_Insert::update: insertionPoint: %f/%f", 
 		data.insertionPoint.x, data.insertionPoint.y);
 
@@ -89,7 +88,7 @@ void RS_Insert::update() {
 	
     RS_Pen tmpPen;
 
-	/*RS_PtrListIterator<RS_Entity> it = createIterator();
+        /*QListIterator<RS_Entity> it = createIterator();
     RS_Entity* e;
     while ( (e = it.current()) != NULL ) {
         ++it;*/
diff --git a/src/lib/engine/rs_insert.h b/src/lib/engine/rs_insert.h
index c9970a0..da15b95 100644
--- a/src/lib/engine/rs_insert.h
+++ b/src/lib/engine/rs_insert.h
@@ -30,8 +30,7 @@
 
 #include "rs_entitycontainer.h"
 
-#include "rs_block.h"
-#include "rs_graphic.h"
+class RS_BlockList;
 
 /**
  * Holds the data that defines an insert.
@@ -61,7 +60,7 @@ public:
      *    often the case since you might want to adjust attributes
      *    after creating an insert entity.
      */
-    RS_InsertData(const RS_String& name,
+    RS_InsertData(const QString& name,
                   RS_Vector insertionPoint,
                   RS_Vector scaleFactor,
                   double angle,
@@ -84,11 +83,11 @@ public:
 
     friend std::ostream& operator << (std::ostream& os,
                                       const RS_InsertData& d) {
-        os << "(" << d.name.latin1() << ")";
+        os << "(" << d.name.toLatin1().data() << ")";
         return os;
     }
 
-    RS_String name;
+    QString name;
     RS_Vector insertionPoint;
     RS_Vector scaleFactor;
     double angle;
@@ -117,7 +116,7 @@ public:
 
     virtual RS_Entity* clone() {
         RS_Insert* i = new RS_Insert(*this);
-		i->entities.setAutoDelete(entities.autoDelete());
+        i->setOwner(isOwner());
         i->initId();
         i->detach();
         return i;
@@ -145,11 +144,11 @@ public:
 
     virtual void update();
 
-    RS_String getName() const {
+    QString getName() const {
         return data.name;
     }
 
-	void setName(const RS_String& newName) {
+        void setName(const QString& newName) {
 		data.name = newName;
 		update();
 	}
diff --git a/src/lib/engine/rs_layer.cpp b/src/lib/engine/rs_layer.cpp
index 6a18131..378db08 100644
--- a/src/lib/engine/rs_layer.cpp
+++ b/src/lib/engine/rs_layer.cpp
@@ -27,17 +27,10 @@
 
 #include "rs_layer.h"
 
-#include <iostream>
-
-#include "rs_color.h"
-
-#include "rs_math.h"
-
-
 /**
  * Constructor.
  */
-RS_Layer::RS_Layer(const RS_String& name) {
+RS_Layer::RS_Layer(const QString& name) {
     setName(name);
 
     data.pen.setLineType(RS2::SolidLine);
@@ -52,7 +45,7 @@ RS_Layer::RS_Layer(const RS_String& name) {
  * Dumps the layers data to stdout.
  */
 std::ostream& operator << (std::ostream& os, const RS_Layer& l) {
-    os << " name: " << l.getName().latin1()
+    os << " name: " << l.getName().toLatin1().data()
     << " pen: " << l.getPen()
 	<< " frozen: " << (int)l.isFrozen()
 	<< " address: " << &l
diff --git a/src/lib/engine/rs_layer.h b/src/lib/engine/rs_layer.h
index e0188b6..1596f42 100644
--- a/src/lib/engine/rs_layer.h
+++ b/src/lib/engine/rs_layer.h
@@ -28,18 +28,14 @@
 #ifndef RS_LAYER_H
 #define RS_LAYER_H
 
-#include <stddef.h>
-
 #ifdef __hpux
 #include <sys/_size_t.h>
 #endif
 
 #include <iostream>
+#include <QString>
 
-#include "rs_flags.h"
 #include "rs_pen.h"
-#include "rs_string.h"
-
 
 
 /**
@@ -49,7 +45,7 @@ class RS_LayerData {
 public:
     RS_LayerData() {}
 
-    RS_LayerData(const RS_String& name,
+    RS_LayerData(const QString& name,
 	             const RS_Pen& pen,
 				 bool frozen,
 				 bool locked) {
@@ -60,7 +56,7 @@ public:
     }
 
     //! Layer name
-    RS_String name;
+    QString name;
 
     //! default pen for this layer
     RS_Pen pen;
@@ -84,7 +80,7 @@ public:
  */
 class RS_Layer {
 public:
-    explicit RS_Layer(const RS_String& name);
+    explicit RS_Layer(const QString& name);
     //RS_Layer(const char* name);
 	
     RS_Layer* clone() {
@@ -92,12 +88,12 @@ public:
 	}
 
     /** sets a new name for this layer. */
-    void setName(const RS_String& name) {
+    void setName(const QString& name) {
         data.name = name;
     }
 
     /** @return the name of this layer. */
-    RS_String getName() const {
+    QString getName() const {
         return data.name;
     }
 
diff --git a/src/lib/engine/rs_layerlist.cpp b/src/lib/engine/rs_layerlist.cpp
index 32ae911..30c494b 100644
--- a/src/lib/engine/rs_layerlist.cpp
+++ b/src/lib/engine/rs_layerlist.cpp
@@ -25,16 +25,15 @@
 **********************************************************************/
 
 
+#include "rs_debug.h"
 #include "rs_layerlist.h"
-
-
+#include "rs_layer.h"
+#include "rs_layerlistlistener.h"
 
 /**
  * Default constructor.
  */
 RS_LayerList::RS_LayerList() {
-    layers.setAutoDelete(false);
-    layerListListeners.setAutoDelete(false);
     activeLayer = NULL;
 	setModified(false);
 }
@@ -56,8 +55,9 @@ void RS_LayerList::clear() {
  * 
  * @param notify Notify listeners.
  */
-void RS_LayerList::activate(const RS_String& name, bool notify) {
-    RS_DEBUG->print("RS_LayerList::activate: %s, notify: %d begin", name.latin1(), notify);
+void RS_LayerList::activate(const QString& name, bool notify) {
+    RS_DEBUG->print("RS_LayerList::activate: %s, notify: %d begin",
+                                    name.toLatin1().data(), notify);
 
     activate(find(name), notify);
     /*
@@ -68,7 +68,7 @@ void RS_LayerList::activate(const RS_String& name, bool notify) {
 }
     */
 
-    RS_DEBUG->print("RS_LayerList::activate: %s end", name.latin1());
+    RS_DEBUG->print("RS_LayerList::activate: %s end", name.toLatin1().data());
 }
 
 
@@ -91,7 +91,7 @@ void RS_LayerList::activate(RS_Layer* layer, bool notify) {
     activeLayer = layer;
 
     if (notify) {
-       for (uint i=0; i<layerListListeners.count(); ++i) {
+       for (int i=0; i<layerListListeners.size(); ++i) {
            RS_LayerListListener* l = layerListListeners.at(i);
 
            l->layerActivated(activeLayer);
@@ -125,7 +125,7 @@ void RS_LayerList::add(RS_Layer* layer) {
         layers.append(layer);
 
         // notify listeners
-        for (uint i=0; i<layerListListeners.count(); ++i) {
+        for (int i=0; i<layerListListeners.size(); ++i) {
             RS_LayerListListener* l = layerListListeners.at(i);
             l->layerAdded(layer);
         }
@@ -162,9 +162,9 @@ void RS_LayerList::remove(RS_Layer* layer) {
     }
 
     // here the layer is removed from the list but not deleted
-    layers.remove(layer);
+    layers.removeOne(layer);
 
-    for (uint i=0; i<layerListListeners.count(); ++i) {
+    for (int i=0; i<layerListListeners.size(); ++i) {
         RS_LayerListListener* l = layerListListeners.at(i);
         l->layerRemoved(layer);
     }
@@ -194,7 +194,7 @@ void RS_LayerList::edit(RS_Layer* layer, const RS_Layer& source) {
 
     *layer = source;
 
-    for (uint i=0; i<layerListListeners.count(); ++i) {
+    for (int i=0; i<layerListListeners.size(); ++i) {
         RS_LayerListListener* l = layerListListeners.at(i);
 
         l->layerEdited(layer);
@@ -209,17 +209,16 @@ void RS_LayerList::edit(RS_Layer* layer, const RS_Layer& source) {
  * @return Pointer to the layer with the given name or
  * \p NULL if no such layer was found.
  */
-RS_Layer* RS_LayerList::find(const RS_String& name) {
+RS_Layer* RS_LayerList::find(const QString& name) {
     //RS_DEBUG->print("RS_LayerList::find begin");
 
     RS_Layer* ret = NULL;
 
-    for (RS_Layer* l=layers.first();
-            l!=NULL;
-            l=layers.next()) {
-
+    for (int i=0; i<layers.size(); ++i) {
+        RS_Layer* l = layers.at(i);
         if (l->getName()==name) {
             ret = l;
+            break;
         }
     }
 
@@ -234,21 +233,18 @@ RS_Layer* RS_LayerList::find(const RS_String& name) {
  * @return Index of the given layer in the layer list or -1 if the layer
  * was not found.
  */
-int RS_LayerList::getIndex(const RS_String& name) {
+int RS_LayerList::getIndex(const QString& name) {
     //RS_DEBUG->print("RS_LayerList::find begin");
 
     int ret = -1;
-	int i = 0;
 
-    for (RS_Layer* l=layers.first();
-            l!=NULL;
-            l=layers.next()) {
+    for (int i=0; i<layers.size(); i++) {
+        RS_Layer* l = layers.at(i);
 
         if (l->getName()==name) {
             ret = i;
-			break;
+            break;
         }
-		i++;
     }
 
     //RS_DEBUG->print("RS_LayerList::find end");
@@ -263,24 +259,7 @@ int RS_LayerList::getIndex(const RS_String& name) {
  */
 int RS_LayerList::getIndex(RS_Layer* layer) {
     //RS_DEBUG->print("RS_LayerList::find begin");
-
-    int ret = -1;
-	int i = 0;
-
-    for (RS_Layer* l=layers.first();
-            l!=NULL;
-            l=layers.next()) {
-
-        if (l==layer) {
-            ret = i;
-			break;
-        }
-		i++;
-    }
-
-    //RS_DEBUG->print("RS_LayerList::find end");
-
-    return ret;
+    return layers.indexOf(layer);
 }
 
 
@@ -288,7 +267,7 @@ int RS_LayerList::getIndex(RS_Layer* layer) {
  * Switches on / off the given layer. 
  * Listeners are notified.
  */
-void RS_LayerList::toggle(const RS_String& name) {
+void RS_LayerList::toggle(const QString& name) {
     toggle(find(name));
 }
 
@@ -306,7 +285,7 @@ void RS_LayerList::toggle(RS_Layer* layer) {
     layer->toggle();
 
     // Notify listeners:
-    for (uint i=0; i<layerListListeners.count(); ++i) {
+    for (int i=0; i<layerListListeners.size(); ++i) {
         RS_LayerListListener* l = layerListListeners.at(i);
         l->layerToggled(layer);
     }
@@ -326,7 +305,7 @@ void RS_LayerList::toggleLock(RS_Layer* layer) {
     layer->toggleLock();
 
     // Notify listeners:
-    for (uint i=0; i<layerListListeners.count(); ++i) {
+    for (int i=0; i<layerListListeners.size(); ++i) {
         RS_LayerListListener* l = layerListListeners.at(i);
         l->layerToggled(layer);
     }
@@ -345,7 +324,7 @@ void RS_LayerList::freezeAll(bool freeze) {
         at(l)->freeze(freeze);
     }
 
-    for (uint i=0; i<layerListListeners.count(); ++i) {
+    for (int i=0; i<layerListListeners.size(); ++i) {
         RS_LayerListListener* l = layerListListeners.at(i);
         l->layerToggled(NULL);
     }
@@ -369,7 +348,7 @@ void RS_LayerList::addListener(RS_LayerListListener* listener) {
  * removes a LayerListListener from the list of listeners. 
  */
 void RS_LayerList::removeListener(RS_LayerListListener* listener) {
-    layerListListeners.remove(listener);
+    layerListListeners.removeOne(listener);
 }
 
 
diff --git a/src/lib/engine/rs_layerlist.h b/src/lib/engine/rs_layerlist.h
index e19120d..fc467fb 100644
--- a/src/lib/engine/rs_layerlist.h
+++ b/src/lib/engine/rs_layerlist.h
@@ -28,13 +28,10 @@
 #ifndef RS_LAYERLIST_H
 #define RS_LAYERLIST_H
 
-//#include <vector.h>
+#include <QList>
 
-
-#include "rs_layer.h"
-#include "rs_layerlistlistener.h"
-#include "rs_entity.h"
-#include "rs_ptrlist.h"
+class RS_Layer;
+class RS_LayerListListener;
 
 /**
  * A list of layers.
@@ -51,18 +48,18 @@ public:
     /**
      * @return Number of layers in the list.
      */
-    uint count() const {
+    unsigned int count() const {
         return layers.count();
     }
 
     /**
      * @return Layer at given position or NULL if i is out of range.
      */
-    RS_Layer* at(uint i) {
+    RS_Layer* at(unsigned int i) {
         return layers.at(i);
     }
 
-    void activate(const RS_String& name, bool notify = false);
+    void activate(const QString& name, bool notify = false);
     void activate(RS_Layer* layer, bool notify = false);
     //! @return The active layer of NULL if no layer is activated.
     RS_Layer* getActive() {
@@ -71,10 +68,10 @@ public:
     virtual void add(RS_Layer* layer);
     virtual void remove(RS_Layer* layer);
     virtual void edit(RS_Layer* layer, const RS_Layer& source);
-    RS_Layer* find(const RS_String& name);
-    int getIndex(const RS_String& name);
+    RS_Layer* find(const QString& name);
+    int getIndex(const QString& name);
     int getIndex(RS_Layer* layer);
-    void toggle(const RS_String& name);
+    void toggle(const QString& name);
     void toggle(RS_Layer* layer);
     void toggleLock(RS_Layer* layer);
     void freezeAll(bool freeze);
@@ -111,9 +108,9 @@ public:
 
 private:
     //! layers in the graphic
-    RS_PtrList<RS_Layer> layers;
+    QList<RS_Layer*> layers;
     //! List of registered LayerListListeners
-    RS_PtrList<RS_LayerListListener> layerListListeners;
+    QList<RS_LayerListListener*> layerListListeners;
     //! Currently active layer
     RS_Layer* activeLayer;
     /** Flag set if the layer list was modified and not yet saved. */
diff --git a/src/lib/engine/rs_leader.cpp b/src/lib/engine/rs_leader.cpp
index d39aa11..cbe0944 100644
--- a/src/lib/engine/rs_leader.cpp
+++ b/src/lib/engine/rs_leader.cpp
@@ -75,7 +75,6 @@ void RS_Leader::update() {
     }
 	
 	if (isUndone()) {
-		setVisible(false);
 		return;
 	}
 
diff --git a/src/lib/engine/rs_leader.h b/src/lib/engine/rs_leader.h
index 3e2b716..bd95e72 100644
--- a/src/lib/engine/rs_leader.h
+++ b/src/lib/engine/rs_leader.h
@@ -69,7 +69,7 @@ public:
 
     virtual RS_Entity* clone() {
         RS_Leader* p = new RS_Leader(*this);
-		p->entities.setAutoDelete(entities.autoDelete());
+        p->setOwner(isOwner());
         p->initId();
         p->detach();
         return p;
diff --git a/src/lib/engine/rs_line.cpp b/src/lib/engine/rs_line.cpp
index f87c152..e694487 100644
--- a/src/lib/engine/rs_line.cpp
+++ b/src/lib/engine/rs_line.cpp
@@ -31,6 +31,7 @@
 #include "rs_graphicview.h"
 #include "rs_painter.h"
 #include "rs_graphic.h"
+#include "rs_linetypepattern.h"
 
 /**
  * Constructor.
@@ -571,16 +572,6 @@ void RS_Line::draw(RS_Painter* painter, RS_GraphicView* view, double patternOffs
     }
 }
 
-
-/**
- * @return Unique String that identifies this entity
- */
-#ifdef RVT_CAM
-RS_String RS_Line::getCamId() {
-	return RS_String("%1/%2/%3/%4").arg(data.startpoint.x).arg(data.startpoint.y).arg(data.endpoint.x).arg(data.endpoint.y);	
-}
-#endif
-
 /**
  * Dumps the point's data to stdout.
  */
diff --git a/src/lib/engine/rs_line.h b/src/lib/engine/rs_line.h
index 7b8e38f..e994cf0 100644
--- a/src/lib/engine/rs_line.h
+++ b/src/lib/engine/rs_line.h
@@ -213,10 +213,6 @@ public:
 
     virtual void calculateBorders();
 
-#ifdef RVT_CAM
-    virtual RS_String getCamId();
-#endif
-	
 protected:
     RS_LineData data;
     //RS_Vector startpoint;
diff --git a/src/lib/engine/rs_overlaybox.cpp b/src/lib/engine/rs_overlaybox.cpp
index cb59b17..d8e4bd3 100644
--- a/src/lib/engine/rs_overlaybox.cpp
+++ b/src/lib/engine/rs_overlaybox.cpp
@@ -71,16 +71,6 @@ void RS_OverlayBox::draw(RS_Painter* painter, RS_GraphicView* view, double patte
 
 }
 
-
-/**
- * @return Unique String that identifies this entity
- */
-#ifdef RVT_CAM
-RS_String RS_OverlayBox::getCamId() {
-	return RS_String("%1/%2/%3/%4").arg(data.startpoint.x).arg(data.startpoint.y).arg(data.endpoint.x).arg(data.endpoint.y);	
-}
-#endif
-
 /**
  * Dumps the point's data to stdout.
  */
diff --git a/src/lib/engine/rs_pattern.cpp b/src/lib/engine/rs_pattern.cpp
index 572ddd8..023a7a1 100644
--- a/src/lib/engine/rs_pattern.cpp
+++ b/src/lib/engine/rs_pattern.cpp
@@ -27,10 +27,9 @@
 
 #include "rs_pattern.h"
 
-#include "rs_stringlist.h"
-#include "rs_fileinfo.h"
 #include "rs_system.h"
 #include "rs_fileio.h"
+#include "rs_layer.h"
 
 
 /**
@@ -38,7 +37,7 @@
  *
  * @param fileName File name of a DXF file defining the pattern
  */
-RS_Pattern::RS_Pattern(const RS_String& fileName)
+RS_Pattern::RS_Pattern(const QString& fileName)
         : RS_EntityContainer(NULL) {
 
     RS_DEBUG->print("RS_Pattern::RS_Pattern() ");
@@ -57,7 +56,7 @@ RS_Pattern::RS_Pattern(const RS_String& fileName)
  * @param name Pattern name.
  *
  */
-/*RS_Pattern::RS_Pattern(const RS_String& fileName, const RS_String& name)
+/*RS_Pattern::RS_Pattern(const QString& fileName, const QString& name)
         : RS_EntityContainer(NULL) {
 	this->fileName = fileName;
 	this->name = name;
@@ -83,19 +82,19 @@ bool RS_Pattern::loadPattern() {
 
 	RS_DEBUG->print("RS_Pattern::loadPattern");
 
-    RS_String path;
+    QString path;
 
     // Search for the appropriate pattern if we have only the name of the pattern:
-    if (!fileName.lower().contains(".dxf")) {
-        RS_StringList patterns = RS_SYSTEM->getPatternList();
-        RS_FileInfo file;
-        for (RS_StringList::Iterator it = patterns.begin();
+    if (!fileName.toLower().contains(".dxf")) {
+        QStringList patterns = RS_SYSTEM->getPatternList();
+        QFileInfo file;
+        for (QStringList::Iterator it = patterns.begin();
                 it!=patterns.end();
                 it++) {
 
-            if (RS_FileInfo(*it).baseName().lower()==fileName.lower()) {
+            if (QFileInfo(*it).baseName().toLower()==fileName.toLower()) {
                 path = *it;
-				RS_DEBUG->print("Pattern found: %s", path.latin1());
+                                RS_DEBUG->print("Pattern found: %s", path.toLatin1().data());
                 break;
             }
         }
@@ -108,7 +107,7 @@ bool RS_Pattern::loadPattern() {
 
     // No pattern paths found:
     if (path.isEmpty()) {
-        RS_DEBUG->print("No pattern \"%s\"available.", fileName.latin1());
+        RS_DEBUG->print("No pattern \"%s\"available.", fileName.toLatin1().data());
         return false;
     }
 
diff --git a/src/lib/engine/rs_pattern.h b/src/lib/engine/rs_pattern.h
index 49dc424..c3bf28d 100644
--- a/src/lib/engine/rs_pattern.h
+++ b/src/lib/engine/rs_pattern.h
@@ -40,19 +40,19 @@ class RS_PatternList;
  */
 class RS_Pattern : public RS_EntityContainer {
 public:
-    RS_Pattern(const RS_String& fileName);
+    RS_Pattern(const QString& fileName);
     virtual ~RS_Pattern();
 
     virtual bool loadPattern();
 	
     /** @return the fileName of this pattern. */
-    RS_String getFileName() const {
+    QString getFileName() const {
         return fileName;
     }
 
 protected:
     //! Pattern file name
-    RS_String fileName;
+    QString fileName;
 
     //! Is this pattern currently loaded into memory?
     bool loaded;
diff --git a/src/lib/engine/rs_patternlist.cpp b/src/lib/engine/rs_patternlist.cpp
index 762d378..243a1dc 100644
--- a/src/lib/engine/rs_patternlist.cpp
+++ b/src/lib/engine/rs_patternlist.cpp
@@ -27,8 +27,6 @@
 
 #include "rs_patternlist.h"
 
-#include "rs_fileinfo.h"
-#include "rs_stringlist.h"
 #include "rs_system.h"
 
 RS_PatternList* RS_PatternList::uniqueInstance = NULL;
@@ -39,7 +37,6 @@ RS_PatternList* RS_PatternList::uniqueInstance = NULL;
  * Default constructor.
  */
 RS_PatternList::RS_PatternList() {
-    patterns.setAutoDelete(true);
     //patternListListeners.setAutoDelete(false);
 }
 
@@ -52,20 +49,20 @@ RS_PatternList::RS_PatternList() {
 void RS_PatternList::init() {
     RS_DEBUG->print("RS_PatternList::initPatterns");
 
-    RS_StringList list = RS_SYSTEM->getPatternList();
+    QStringList list = RS_SYSTEM->getPatternList();
     RS_Pattern* pattern;
 
 	patterns.clear();
 
-    for (RS_StringList::Iterator it = list.begin();
+    for (QStringList::Iterator it = list.begin();
             it != list.end(); ++it) {
-        RS_DEBUG->print("pattern: %s:", (*it).latin1());
+        RS_DEBUG->print("pattern: %s:", (*it).toLatin1().data());
 
-        RS_FileInfo fi(*it);
-        pattern = new RS_Pattern(fi.baseName().lower());
+        QFileInfo fi(*it);
+        pattern = new RS_Pattern(fi.baseName().toLower());
         patterns.append(pattern);
 
-        RS_DEBUG->print("base: %s", pattern->getFileName().latin1());
+        RS_DEBUG->print("base: %s", pattern->getFileName().toLatin1().data());
     }
 }
 
@@ -75,7 +72,8 @@ void RS_PatternList::init() {
  * Removes all patterns in the patternlist.
  */
 void RS_PatternList::clearPatterns() {
-    patterns.clear();
+    while (!patterns.isEmpty())
+        delete patterns.takeFirst();
 }
 
 
@@ -89,7 +87,7 @@ void RS_PatternList::removePattern(RS_Pattern* pattern) {
     RS_DEBUG->print("RS_PatternList::removePattern()");
 
     // here the pattern is removed from the list but not deleted
-    patterns.remove(pattern);
+    patterns.removeOne(pattern);
 
     //for (uint i=0; i<patternListListeners.count(); ++i) {
     //    RS_PatternListListener* l = patternListListeners.at(i);
@@ -104,18 +102,17 @@ void RS_PatternList::removePattern(RS_Pattern* pattern) {
  * \p NULL if no such pattern was found. The pattern will be loaded into
  * memory if it's not already.
  */
-RS_Pattern* RS_PatternList::requestPattern(const RS_String& name) {
-    RS_DEBUG->print("RS_PatternList::requestPattern %s", name.latin1());
+RS_Pattern* RS_PatternList::requestPattern(const QString& name) {
+    RS_DEBUG->print("RS_PatternList::requestPattern %s", name.toLatin1().data());
 
-    RS_String name2 = name.lower();
+    QString name2 = name.toLower();
     RS_Pattern* foundPattern = NULL;
 
-    RS_DEBUG->print("name2: %s", name2.latin1());
+    RS_DEBUG->print("name2: %s", name2.toLatin1().data());
 
     // Search our list of available patterns:
-    for (RS_Pattern* p=patterns.first();
-            p!=NULL;
-            p=patterns.next()) {
+    for (int i = 0; i < patterns.size(); ++i) {
+        RS_Pattern* p = patterns.at(i);
 
         if (p->getFileName()==name2) {
             // Make sure this pattern is loaded into memory:
@@ -133,13 +130,12 @@ RS_Pattern* RS_PatternList::requestPattern(const RS_String& name) {
 }
 
 	
-bool RS_PatternList::contains(const RS_String& name) {
-    RS_String name2 = name.lower();
+bool RS_PatternList::contains(const QString& name) {
+    QString name2 = name.toLower();
 
     // Search our list of available patterns:
-    for (RS_Pattern* p=patterns.first();
-            p!=NULL;
-            p=patterns.next()) {
+    for (int i = 0; i < patterns.size(); ++i) {
+        RS_Pattern* p = patterns.at(i);
 
         if (p->getFileName()==name2) {
 			return true;
@@ -156,9 +152,8 @@ bool RS_PatternList::contains(const RS_String& name) {
 std::ostream& operator << (std::ostream& os, RS_PatternList& l) {
 
     os << "Patternlist: \n";
-    for (RS_Pattern* p=l.firstPattern();
-            p!=NULL;
-            p=l.nextPattern()) {
+    for (int i = 0; i < l.patterns.size(); ++i) {
+        RS_Pattern* p = l.patterns.at(i);
 
         os << *p << "\n";
     }
diff --git a/src/lib/engine/rs_patternlist.h b/src/lib/engine/rs_patternlist.h
index 606fa20..29c6be3 100644
--- a/src/lib/engine/rs_patternlist.h
+++ b/src/lib/engine/rs_patternlist.h
@@ -31,7 +31,6 @@
 
 #include "rs_pattern.h"
 #include "rs_entity.h"
-#include "rs_ptrlist.h"
 
 #define RS_PATTERNLIST RS_PatternList::instance()
 
@@ -56,7 +55,7 @@ public:
         return uniqueInstance;
     }
 
-    virtual ~RS_PatternList() {}
+    virtual ~RS_PatternList() {clearPatterns();}
 
     void init();
 
@@ -65,20 +64,13 @@ public:
         return patterns.count();
     }
     virtual void removePattern(RS_Pattern* pattern);
-    RS_Pattern* requestPattern(const RS_String& name);
-    //! @return First pattern of the list.
-    RS_Pattern* firstPattern() {
-        return patterns.first();
-    }
-    /** 
-	 * @return Next pattern from the list after
-     * calling firstPattern() or nextPattern().
-     */
-    RS_Pattern* nextPattern() {
-        return patterns.next();
+    RS_Pattern* requestPattern(const QString& name);
+    //! @return a const iterator for the pattern list.
+    QListIterator<RS_Pattern *> getIteretor(){
+        return QListIterator<RS_Pattern *>(patterns);
     }
 
-	bool contains(const RS_String& name);
+        bool contains(const QString& name);
 
     //void addPatternListListener(RS_PatternListListener* listener);
 
@@ -91,9 +83,9 @@ protected:
 
 private:
     //! patterns in the graphic
-    RS_PtrList<RS_Pattern> patterns;
+    QList<RS_Pattern*> patterns;
     //! List of registered PatternListListeners
-    //RS_PtrList<RS_PatternListListener> patternListListeners;
+    //QList<RS_PatternListListener> patternListListeners;
 }
 ;
 
diff --git a/src/lib/engine/rs_polyline.cpp b/src/lib/engine/rs_polyline.cpp
index 3ac77df..0767c11 100644
--- a/src/lib/engine/rs_polyline.cpp
+++ b/src/lib/engine/rs_polyline.cpp
@@ -258,6 +258,7 @@ void RS_Polyline::endPolyline() {
             //data.endpoint = data.startpoint;
         }
     }
+    calculateBorders();
 }
 	
 	
@@ -294,7 +295,7 @@ void RS_Polyline::updateEndpoints() {
 	if (e2!=NULL && e2->isAtomic()) {
 		RS_Vector v = ((RS_AtomicEntity*)e2)->getEndpoint();
 		setEndpoint(v);
-	}
+    }
 }
 
 
@@ -446,6 +447,10 @@ void RS_Polyline::draw(RS_Painter* painter,RS_GraphicView* view,
 	
 	// draw first entity and set correct pen:
     RS_Entity* e = firstEntity(RS2::ResolveNone);
+    // We get the pen from the entitycontainer and apply it to the
+    // first line so that subsequent line are draw in the right color
+    RS_Pen p=this->getPen(true);
+    e->setPen(p);
     view->drawEntity(painter, e);
 
 	// draw subsequent entities with same pen:
diff --git a/src/lib/engine/rs_polyline.h b/src/lib/engine/rs_polyline.h
index d9fa731..35135ed 100644
--- a/src/lib/engine/rs_polyline.h
+++ b/src/lib/engine/rs_polyline.h
@@ -83,7 +83,7 @@ public:
 
     virtual RS_Entity* clone() {
         RS_Polyline* p = new RS_Polyline(*this);
-		p->entities.setAutoDelete(entities.autoDelete());
+        p->setOwner(isOwner());
         p->initId();
         p->detach();
         return p;
diff --git a/src/lib/engine/rs_ptrlist.h b/src/lib/engine/rs_ptrlist.h
deleted file mode 100644
index b63440e..0000000
--- a/src/lib/engine/rs_ptrlist.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_PTRLIST_H
-#define RS_PTRLIST_H
-
-#include <q3ptrlist.h>
-
-#define RS_PtrList Q3PtrList
-#define RS_PtrListIterator Q3PtrListIterator
-
-#endif
diff --git a/src/lib/engine/rs_ptrqueue.h b/src/lib/engine/rs_ptrqueue.h
deleted file mode 100644
index 8e441cf..0000000
--- a/src/lib/engine/rs_ptrqueue.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_PTRQUEUE_H
-#define RS_PTRQUEUE_H
-
-#include <qptrqueue.h>
-
-#define RS_PtrQueue QPtrQueue
-
-
-#endif
diff --git a/src/lib/engine/rs_regexp.h b/src/lib/engine/rs_regexp.h
deleted file mode 100644
index ba2f4bb..0000000
--- a/src/lib/engine/rs_regexp.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_REGEXP_H
-#define RS_REGEXP_H
-
-#include <qregexp.h>
-
-#define RS_RegExp QRegExp
-
-#endif
diff --git a/src/lib/engine/rs_settings.cpp b/src/lib/engine/rs_settings.cpp
index e518175..e94d860 100644
--- a/src/lib/engine/rs_settings.cpp
+++ b/src/lib/engine/rs_settings.cpp
@@ -27,8 +27,6 @@
 // RVT_PORT changed QSettings s(QSettings::Ini) to QSettings s("./qcad.ini", QSettings::IniFormat);
 
 #include "rs_settings.h"
-#include "rs_debug.h"
-#include <iostream>
 
 RS_Settings* RS_Settings::uniqueInstance = NULL;
 
@@ -38,7 +36,6 @@ RS_Settings::RS_Settings() {
     companyKey = "";
     appKey = "";
     group = "";
-    cache.setAutoDelete(true);
 }
 
 /**
@@ -49,8 +46,8 @@ RS_Settings::RS_Settings() {
  * @param appKey String that identifies the application. Must start
  *        with a "/". E.g. "/LibreCAD"
  */
-void RS_Settings::init(const RS_String& companyKey,
-                       const RS_String& appKey) {
+void RS_Settings::init(const QString& companyKey,
+                       const QString& appKey) {
 
     group = "";
 	
@@ -66,11 +63,17 @@ void RS_Settings::init(const RS_String& companyKey,
 /**
  * Destructor
  */
-RS_Settings::~RS_Settings() {}
+RS_Settings::~RS_Settings() {
+    while (!cache.isEmpty()) {
+        QVariant *value = *cache.begin();
+        cache.erase(cache.begin());
+        delete value;
+    }
+}
 
 
 
-void RS_Settings::beginGroup(const RS_String& group) {
+void RS_Settings::beginGroup(const QString& group) {
     this->group = group;
 }
 
@@ -78,19 +81,19 @@ void RS_Settings::endGroup() {
     this->group = "";
 }
 
-bool RS_Settings::writeEntry(const RS_String& key, int value) {
+bool RS_Settings::writeEntry(const QString& key, int value) {
     return writeEntry(key, QVariant(value));
 }
 
-bool RS_Settings::writeEntry(const RS_String& key,const QString& value) {
+bool RS_Settings::writeEntry(const QString& key,const QString& value) {
     return writeEntry(key, QVariant(value));
 }
 
-bool RS_Settings::writeEntry(const RS_String& key, double value) {
+bool RS_Settings::writeEntry(const QString& key, double value) {
     return writeEntry(key, QVariant(value));
 }
 
-bool RS_Settings::writeEntry(const RS_String& key, const QVariant& value) {
+bool RS_Settings::writeEntry(const QString& key, const QVariant& value) {
 	QSettings s(companyKey, appKey);
     // RVT_PORT not supported anymore s.insertSearchPath(QSettings::Windows, companyKey);
 
@@ -102,8 +105,8 @@ bool RS_Settings::writeEntry(const RS_String& key, const QVariant& value) {
     return true;
 }
 
-RS_String RS_Settings::readEntry(const RS_String& key,
-                                 const RS_String& def,
+QString RS_Settings::readEntry(const QString& key,
+                                 const QString& def,
                                  bool* ok) {
 	
     // lookup:
@@ -126,8 +129,8 @@ RS_String RS_Settings::readEntry(const RS_String& key,
 
 }
 
-QByteArray RS_Settings::readByteArrayEntry(const RS_String& key,
-                    const RS_String& def,
+QByteArray RS_Settings::readByteArrayEntry(const QString& key,
+                    const QString& def,
                     bool* ok) {
     QVariant ret = readEntryCache(key);
     if (!ret.isValid()) {
@@ -148,7 +151,7 @@ QByteArray RS_Settings::readByteArrayEntry(const RS_String& key,
 
 }
 
-int RS_Settings::readNumEntry(const RS_String& key, int def, bool* ok) {
+int RS_Settings::readNumEntry(const QString& key, int def, bool* ok) {
 
     // lookup:
     QVariant ret = readEntryCache(key);
@@ -166,17 +169,16 @@ int RS_Settings::readNumEntry(const RS_String& key, int def, bool* ok) {
 }
 
 
-QVariant RS_Settings::readEntryCache(const RS_String& key) {
-	QVariant* s = cache.find(key);
-	if (s==NULL) {
-		return QVariant();
-	}
-	else {
-		return *s;
-	}
+QVariant RS_Settings::readEntryCache(const QString& key) {
+       QVariant *s = cache.value(key);
+        if (s == NULL)
+            return QVariant();
+        else
+            return *s;
 }
 
 
-void RS_Settings::addToCache(const RS_String& key, const QVariant& value) {
-	cache.replace(key, new QVariant(value));
+void RS_Settings::addToCache(const QString& key, const QVariant& value) {
+        delete cache.take(key);
+        cache.insert(key, new QVariant(value));
 }
diff --git a/src/lib/engine/rs_settings.h b/src/lib/engine/rs_settings.h
index fecbf50..172d173 100644
--- a/src/lib/engine/rs_settings.h
+++ b/src/lib/engine/rs_settings.h
@@ -28,13 +28,8 @@
 #ifndef RS_SETTINGS_H
 #define RS_SETTINGS_H
 
-#include <iostream>
-#include <qglobal.h>
-
-#include <qsettings.h>
-
-#include "rs_string.h"
-#include "rs_dict.h"
+#include <QHash>
+#include <QSettings>
 
 #define RS_SETTINGS RS_Settings::instance()
 
@@ -67,38 +62,38 @@ public:
      * @param companyKey Company Key
      * @param appKey Application key
      */
-    void init(const RS_String& companyKey, const RS_String& appKey);
+    void init(const QString& companyKey, const QString& appKey);
 
-    void beginGroup(const RS_String& group);
+    void beginGroup(const QString& group);
     void endGroup();
 
-    bool writeEntry(const RS_String& key, int value);
-    bool writeEntry(const RS_String& key, double value);
-    bool writeEntry(const RS_String& key, const QVariant& value);
-    bool writeEntry(const RS_String& key, const QString& value);
-    RS_String readEntry(const RS_String& key,
-                        const RS_String& def = RS_String::null,
+    bool writeEntry(const QString& key, int value);
+    bool writeEntry(const QString& key, double value);
+    bool writeEntry(const QString& key, const QVariant& value);
+    bool writeEntry(const QString& key, const QString& value);
+    QString readEntry(const QString& key,
+                        const QString& def = QString::null,
                         bool* ok = 0);
-    QByteArray readByteArrayEntry(const RS_String& key,
-                        const RS_String& def = RS_String::null,
+    QByteArray readByteArrayEntry(const QString& key,
+                        const QString& def = QString::null,
                         bool* ok = 0);
-    int readNumEntry(const RS_String& key, int def=0, bool* ok=0);
+    int readNumEntry(const QString& key, int def=0, bool* ok=0);
 	
 
 public:
     ~RS_Settings();
 
 private:
-	QVariant readEntryCache(const RS_String& key);
-	void addToCache(const RS_String& key, const QVariant& value);
+        QVariant readEntryCache(const QString& key);
+        void addToCache(const QString& key, const QVariant& value);
 
 protected:
     static RS_Settings* uniqueInstance;
 
-	RS_Dict<QVariant> cache;
-    RS_String companyKey;
-    RS_String appKey;
-    RS_String group;
+    QHash<QString, QVariant*> cache;
+    QString companyKey;
+    QString appKey;
+    QString group;
     bool initialized;
 };
 
diff --git a/src/lib/engine/rs_spline.cpp b/src/lib/engine/rs_spline.cpp
index b183665..52b34c8 100644
--- a/src/lib/engine/rs_spline.cpp
+++ b/src/lib/engine/rs_spline.cpp
@@ -32,7 +32,6 @@
 #include "rs_painter.h"
 #include "rs_graphic.h"
 
-
 /**
  * Constructor.
  */
@@ -54,7 +53,7 @@ RS_Spline::~RS_Spline() {}
 
 RS_Entity* RS_Spline::clone() {
     RS_Spline* l = new RS_Spline(*this);
-	l->entities.setAutoDelete(entities.autoDelete());
+    l->setOwner(isOwner());
     l->initId();
     l->detach();
     return l;
@@ -66,7 +65,7 @@ void RS_Spline::calculateBorders() {
     /*minV = RS_Vector::minimum(data.startpoint, data.endpoint);
     maxV = RS_Vector::maximum(data.startpoint, data.endpoint);
 
-    RS_ValueList<RS_Vector>::iterator it;
+    QList<RS_Vector>::iterator it;
     for (it = data.controlPoints.begin(); 
     it!=data.controlPoints.end(); ++it) {
 
@@ -80,14 +79,10 @@ void RS_Spline::calculateBorders() {
 
 RS_VectorSolutions RS_Spline::getRefPoints() {
 
-    RS_VectorSolutions ret(data.controlPoints.count());
-
-    int i=0;
-    RS_ValueList<RS_Vector>::iterator it;
-    for (it = data.controlPoints.begin();
-            it!=data.controlPoints.end(); ++it, ++i) {
+    RS_VectorSolutions ret(data.controlPoints.size());
 
-        ret.set(i, (*it));
+    for (int i = 0; i < data.controlPoints.size(); ++i) {
+        ret.set(i, data.controlPoints.at(i));
     }
 
     return ret;
@@ -127,18 +122,18 @@ void RS_Spline::update() {
         return;
     }
 
-    if (data.controlPoints.count()<(uint)data.degree+1) {
+    if (data.controlPoints.size() < data.degree+1) {
         RS_DEBUG->print("RS_Spline::update: not enough control points");
         return;
     }
 
     resetBorders();
 
-    RS_ValueList<RS_Vector> tControlPoints = data.controlPoints;
+    QList<RS_Vector> tControlPoints = data.controlPoints;
 
     if (data.closed) {
         for (int i=0; i<data.degree; ++i) {
-            tControlPoints.append(data.controlPoints[i]);
+            tControlPoints.append(data.controlPoints.at(i));
         }
     }
 
@@ -153,11 +148,10 @@ void RS_Spline::update() {
     double* h = new double[npts+1];
     double* p = new double[p1*3+1];
 
-    RS_ValueList<RS_Vector>::iterator it;
     i = 1;
-    for (it = tControlPoints.begin(); it!=tControlPoints.end(); ++it) {
-        b[i] = (*it).x;
-        b[i+1] = (*it).y;
+    for (int it = 0; it < tControlPoints.size(); ++it) {
+        b[i] = tControlPoints.at(it).x;
+        b[i+1] = tControlPoints.at(it).y;
         b[i+2] = 0.0;
 
         RS_DEBUG->print("RS_Spline::update: b[%d]: %f/%f", i, b[i], b[i+1]);
@@ -207,12 +201,12 @@ RS_Vector RS_Spline::getNearestEndpoint(const RS_Vector& coord,
     double d;
     RS_Vector ret(false);
 
-    for (uint i=0; i<data.controlPoints.count(); i++) {
-        d = data.controlPoints[i].distanceTo(coord);
+    for (int i=0; i<data.controlPoints.count(); i++) {
+        d = (data.controlPoints.at(i)).distanceTo(coord);
 
         if (d<minDist) {
             minDist = d;
-            ret = data.controlPoints[i];
+            ret = data.controlPoints.at(i);
         }
     }
     if (dist!=NULL) {
@@ -269,11 +263,8 @@ RS_Vector RS_Spline::getNearestDist(double /*distance*/,
 
 
 void RS_Spline::move(RS_Vector offset) {
-    RS_ValueList<RS_Vector>::iterator it;
-    for (it = data.controlPoints.begin();
-            it!=data.controlPoints.end(); ++it) {
-
-        (*it).move(offset);
+    for (int i = 0; i < data.controlPoints.size(); ++i) {
+        data.controlPoints[i].move(offset);
     }
 
     update();
@@ -282,11 +273,8 @@ void RS_Spline::move(RS_Vector offset) {
 
 
 void RS_Spline::rotate(RS_Vector center, double angle) {
-    RS_ValueList<RS_Vector>::iterator it;
-    for (it = data.controlPoints.begin();
-            it!=data.controlPoints.end(); ++it) {
-
-        (*it).rotate(center, angle);
+    for (int i = 0; i < data.controlPoints.size(); ++i) {
+        (data.controlPoints[i] ).rotate(center, angle);
     }
 
     update();
@@ -295,11 +283,8 @@ void RS_Spline::rotate(RS_Vector center, double angle) {
 
 
 void RS_Spline::scale(RS_Vector center, RS_Vector factor) {
-    RS_ValueList<RS_Vector>::iterator it;
-    for (it = data.controlPoints.begin();
-            it!=data.controlPoints.end(); ++it) {
-
-        (*it).scale(center, factor);
+    for (int i = 0; i < data.controlPoints.size(); ++i) {
+        (data.controlPoints[i] ).scale(center, factor);
     }
 
     update();
@@ -308,11 +293,8 @@ void RS_Spline::scale(RS_Vector center, RS_Vector factor) {
 
 
 void RS_Spline::mirror(RS_Vector axisPoint1, RS_Vector axisPoint2) {
-    RS_ValueList<RS_Vector>::iterator it;
-    for (it = data.controlPoints.begin();
-            it!=data.controlPoints.end(); ++it) {
-
-        (*it).mirror(axisPoint1, axisPoint2);
+    for (int i = 0; i < data.controlPoints.size(); ++i) {
+        (data.controlPoints[i] ).mirror(axisPoint1, axisPoint2);
     }
 
     update();
@@ -321,12 +303,10 @@ void RS_Spline::mirror(RS_Vector axisPoint1, RS_Vector axisPoint2) {
 
 
 void RS_Spline::moveRef(const RS_Vector& ref, const RS_Vector& offset) {
-    RS_ValueList<RS_Vector>::iterator it;
-    for (it = data.controlPoints.begin();
-            it!=data.controlPoints.end(); ++it) {
+    for (int i = 0; i < data.controlPoints.size(); ++i) {
 
-        if (ref.distanceTo(*it)<1.0e-4) {
-            (*it).move(offset);
+        if (ref.distanceTo(data.controlPoints.at(i))<1.0e-4) {
+            data.controlPoints[i].move(offset);
         }
     }
 
@@ -376,7 +356,7 @@ void RS_Spline::draw(RS_Painter* painter, RS_GraphicView* view) {
    / *
       if (data.controlPoints.count()>0) {
           RS_Vector prev(false);
-          RS_ValueList<RS_Vector>::iterator it;
+          QList<RS_Vector>::iterator it;
           for (it = data.controlPoints.begin(); it!=data.controlPoints.end(); ++it) {
               if (prev.valid) {
                   painter->drawLine(view->toGui(prev),
@@ -398,7 +378,7 @@ void RS_Spline::draw(RS_Painter* painter, RS_GraphicView* view) {
    double* h = new double[npts+1];
    double* p = new double[p1*3+1];
  
-   RS_ValueList<RS_Vector>::iterator it;
+   QList<RS_Vector>::iterator it;
    i = 1;
    for (it = data.controlPoints.begin(); it!=data.controlPoints.end(); ++it) {
        b[i] = (*it).x;
@@ -437,7 +417,7 @@ void RS_Spline::draw(RS_Painter* painter, RS_GraphicView* view) {
 /**
  * @return The reference points of the spline.
  */
-RS_ValueList<RS_Vector> RS_Spline::getControlPoints() {
+QList<RS_Vector> RS_Spline::getControlPoints() {
     return data.controlPoints;
 }
 
diff --git a/src/lib/engine/rs_spline.h b/src/lib/engine/rs_spline.h
index 10a6840..f1e6a61 100644
--- a/src/lib/engine/rs_spline.h
+++ b/src/lib/engine/rs_spline.h
@@ -28,8 +28,8 @@
 #ifndef RS_SPLINE_H
 #define RS_SPLINE_H
 
+#include <QList>
 #include "rs_entitycontainer.h"
-#include "rs_valuelist.h"
 
 /**
  * Holds the data that defines a line.
@@ -59,7 +59,7 @@ public:
 	/** Closed flag. */
 	bool closed;
 	/** Control points of the spline. */
-    RS_ValueList<RS_Vector> controlPoints;
+    QList<RS_Vector> controlPoints;
 };
 
 
@@ -216,7 +216,7 @@ public:
 	virtual void moveRef(const RS_Vector& ref, const RS_Vector& offset);
 
     virtual void draw(RS_Painter* painter, RS_GraphicView* view, double patternOffset=0.0);
-	RS_ValueList<RS_Vector> getControlPoints();
+        QList<RS_Vector> getControlPoints();
 
     friend std::ostream& operator << (std::ostream& os, const RS_Spline& l);
 
diff --git a/src/lib/engine/rs_string.cpp b/src/lib/engine/rs_string.cpp
deleted file mode 100644
index b8297bf..0000000
--- a/src/lib/engine/rs_string.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#include "rs_string.h"
-
-#include <iostream>
-
-
-RS_String RS_StringCompat::replace(const RS_String& str,
-                                   RS_Char c1, RS_Char c2) {
-
-    RS_String ret = str;
-
-    for (uint i=0; i<ret.length(); ++i) {
-        if (ret.at(i)==c1) {
-            ret.ref(i) = c2;
-        }
-    }
-
-    return ret;
-}
-
-RS_String RS_StringCompat::replace(const RS_String& str,
-                                   const RS_String& s1, const RS_String& s2) {
-
-    if (s1.isEmpty()) {
-        return str;
-    }
-
-    RS_String ret = "";
-
-    for (uint i=0; i<str.length(); ++i) {
-        if (str.mid(i, s1.length())==s1) {
-            ret += s2;
-			i += s1.length()-1;
-        } else {
-            ret += str.at(i);
-        }
-    }
-
-    return ret;
-}
-
-void RS_StringCompat::test() {
-    RS_String res;
-    RS_String s1 = "abcdefg";
-    res = RS_StringCompat::replace(s1, 'a', 'A');
-    assert(res=="Abcdefg");
-    res = RS_StringCompat::replace(s1, 'b', 'B');
-    assert(res=="aBcdefg");
-    res = RS_StringCompat::replace(s1, 'g', 'G');
-    assert(res=="abcdefG");
-
-    res = RS_StringCompat::replace(s1, "", "blah");
-    assert(res=="abcdefg");
-    res = RS_StringCompat::replace(s1, "ab", "AB");
-    assert(res=="ABcdefg");
-    res = RS_StringCompat::replace(s1, "def", "DEF");
-    assert(res=="abcDEFg");
-    res = RS_StringCompat::replace(s1, "g", "G");
-    assert(res=="abcdefG");
-    res = RS_StringCompat::replace(s1, "fg", "FG");
-    assert(res=="abcdeFG");
-
-    s1 = "a";
-    res = RS_StringCompat::replace(s1, "a", "ABC");
-    assert(res=="ABC");
-    s1 = "ab";
-    res = RS_StringCompat::replace(s1, "ab", "");
-    assert(res=="");
-}
diff --git a/src/lib/engine/rs_string.h b/src/lib/engine/rs_string.h
deleted file mode 100644
index ceddbe6..0000000
--- a/src/lib/engine/rs_string.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_STRING_H
-#define RS_STRING_H
-
-#include <assert.h>
-
-#include <qstring.h>
-
-#define STR(x)   #x
-#define XSTR(x)  STR(x)
-
-#define RS_String QString
-#define RS_Char QChar
-
-class RS_StringCompat {
-public:
-    static RS_String replace(const RS_String& str, RS_Char c1, RS_Char c2);
-    static RS_String replace(const RS_String& str, 
-		const RS_String& s1, const RS_String& s2);
-	static void test();
-};
-
-#endif
diff --git a/src/lib/engine/rs_stringlist.h b/src/lib/engine/rs_stringlist.h
deleted file mode 100644
index 2b1b1cf..0000000
--- a/src/lib/engine/rs_stringlist.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_STRINGLIST_H
-#define RS_STRINGLIST_H
-
-#include <qstringlist.h>
-
-#define RS_StringList QStringList
-
-#endif
diff --git a/src/lib/engine/rs_system.cpp b/src/lib/engine/rs_system.cpp
index 2baccb3..42d5dbb 100644
--- a/src/lib/engine/rs_system.cpp
+++ b/src/lib/engine/rs_system.cpp
@@ -24,17 +24,15 @@
 **
 **********************************************************************/
 
+#include <QMap>
 #include <qapplication.h>
-#include <qtextcodec.h>
+#include <QTextCodec>
 #include <QTranslator>
+#include <QDesktopServices>
+#include <QFileInfo>
 #include "rs_settings.h"
 #include "rs_system.h"
-#include "rs_regexp.h"
-#include "rs_translator.h"
-#include "rs_fileinfo.h"
-#include "rs_locale.h"
 #include "rs.h"
-#include <QDesktopServices>
 
 RS_System* RS_System::uniqueInstance = NULL;
 
@@ -49,19 +47,19 @@ RS_System* RS_System::uniqueInstance = NULL;
  * @param appDir Absolute application directory (e.g. /opt/qcad)
  *                 defaults to current directory.
  */
-void RS_System::init(const RS_String& appName, const RS_String& appVersion,
-                     const RS_String& appDirName, const RS_String& appDir) {
+void RS_System::init(const QString& appName, const QString& appVersion,
+                     const QString& appDirName, const QString& appDir) {
     this->appName = appName;
     this->appVersion = appVersion;
     this->appDirName = appDirName;
     if (appDir=="") {
-        this->appDir = RS_Dir::currentDirPath();
+        this->appDir = QDir::currentPath();
     } else {
         this->appDir = appDir;
     }
 
-    RS_DEBUG->print("RS_System::init: System %s initialized.", appName.latin1());
-    RS_DEBUG->print("RS_System::init: App dir: %s", appDir.latin1());
+    RS_DEBUG->print("RS_System::init: System %s initialized.", appName.toLatin1().data());
+    RS_DEBUG->print("RS_System::init: App dir: %s", appDir.toLatin1().data());
     initialized = true;
 
     initAllLanguagesList();
@@ -75,27 +73,26 @@ void RS_System::init(const RS_String& appName, const RS_String& appVersion,
  */
 void RS_System::initLanguageList() {
     RS_DEBUG->print("RS_System::initLanguageList");
-    RS_StringList lst = getFileList("qm", "qm");
+    QStringList lst = getFileList("qm", "qm");
 
     RS_SETTINGS->beginGroup("/Paths");
-    lst += RS_StringList::split(";",
-                                RS_SETTINGS->readEntry("/Translations", ""));
+    lst += (RS_SETTINGS->readEntry("/Translations", "")).split(";", QString::SkipEmptyParts);
     RS_SETTINGS->endGroup();
 
-    for (RS_StringList::Iterator it = lst.begin();
+    for (QStringList::Iterator it = lst.begin();
             it!=lst.end();
             ++it) {
 
         RS_DEBUG->print("RS_System::initLanguageList: qm file: %s",
-                        (*it).latin1());
+                        (*it).toLatin1().data());
 
-        int i1 = (*it).find('_');
-        int i2 = (*it).find('.', i1);
-        RS_String l = (*it).mid(i1+1, i2-i1-1);
+        int i1 = (*it).indexOf('_');
+        int i2 = (*it).indexOf('.', i1);
+        QString l = (*it).mid(i1+1, i2-i1-1);
 
-        if (languageList.find(l)==languageList.end()) {
+        if ( !(languageList.contains(l)) ) {
             RS_DEBUG->print("RS_System::initLanguageList: append language: %s",
-                            l.latin1());
+                            l.toLatin1().data());
             languageList.append(l);
         }
     }
@@ -118,6 +115,9 @@ void RS_System::initAllLanguagesList() {
     if (allKnownLocales==NULL) {
         allKnownLocales=new QList<RS_Locale* >();
     }
+
+    // RVT uk_AU renamed to uk so that we don't have to change the pootle server
+    //
     allKnownLocales->clear();
     RS_Locale *locale;
     LNG("ab"   ,RS2::locLeftToRight, "Abkhazian")
@@ -335,7 +335,7 @@ void RS_System::initAllLanguagesList() {
     LNG("tk"   ,RS2::locLeftToRight, "Turkmen")
     LNG("tw"   ,RS2::locLeftToRight, "Twi")
     LNG("ug"   ,RS2::locLeftToRight, "Uighur")
-    LNG("uk_UA",RS2::locLeftToRight, "Ukrainian")
+    LNG("uk",RS2::locLeftToRight, "Ukrainian")
     LNG("ur"   ,RS2::locLeftToRight, "Urdu")
     LNG("ur_IN",RS2::locLeftToRight, "Urdu (India)")
     LNG("ur_PK",RS2::locLeftToRight, "Urdu (Pakistan)")
@@ -358,20 +358,20 @@ void RS_System::initAllLanguagesList() {
 /**
  * Loads a different translation for the application GUI.
  */
-void RS_System::loadTranslation(const RS_String& lang, const RS_String& langCmd) {
-    static RS_Translator* tQt = NULL;
-    static RS_Translator* tLibreCAD = NULL;
+void RS_System::loadTranslation(const QString& lang, const QString& langCmd) {
+//unused    static RS_Translator* tQt = NULL;
+    static QTranslator* tLibreCAD = NULL;
 
-    RS_String langFile;
+    QString langFile;
 
     // search in various directories for translations
-    RS_StringList lst = getDirectoryList("qm");
+    QStringList lst = getDirectoryList("qm");
 
     RS_SETTINGS->beginGroup("/Paths");
-    lst += RS_StringList::split(";", RS_SETTINGS->readEntry("/Translations", ""));
+    lst += (RS_SETTINGS->readEntry("/Translations", "")).split(";", QString::SkipEmptyParts);
     RS_SETTINGS->endGroup();
 
-    for (RS_StringList::Iterator it = lst.begin();
+    for (QStringList::Iterator it = lst.begin();
             it!=lst.end();
             ++it) {
 
@@ -423,33 +423,33 @@ bool RS_System::createPaths(const QString& directory) {
  *
  * @return List of the absolute paths of the files found.
  */
-RS_StringList RS_System::getFileList(const RS_String& subDirectory,
-                                     const RS_String& fileExtension) {
+QStringList RS_System::getFileList(const QString& subDirectory,
+                                     const QString& fileExtension) {
 
     checkInit();
 
-        RS_DEBUG->print("RS_System::getFileList: subdirectory %s ", subDirectory.latin1());
-        RS_DEBUG->print("RS_System::getFileList: appDirName %s ", appDirName.latin1());
-        RS_DEBUG->print("RS_System::getFileList: getCurrentDir %s ", getCurrentDir().latin1());
+        RS_DEBUG->print("RS_System::getFileList: subdirectory %s ", subDirectory.toLatin1().data());
+        RS_DEBUG->print("RS_System::getFileList: appDirName %s ", appDirName.toLatin1().data());
+        RS_DEBUG->print("RS_System::getFileList: getCurrentDir %s ", getCurrentDir().toLatin1().data());
 
 
-    RS_StringList dirList = getDirectoryList(subDirectory);
+    QStringList dirList = getDirectoryList(subDirectory);
 
-    RS_StringList fileList;
-    RS_String path;
-    RS_Dir dir;
+    QStringList fileList;
+    QString path;
+    QDir dir;
 
-    for (RS_StringList::Iterator it = dirList.begin();
+    for (QStringList::Iterator it = dirList.begin();
             it!=dirList.end();
             ++it ) {
 
-        //path = RS_String(*it) + "/" + subDirectory;
-        path = RS_String(*it);
-        dir = RS_Dir(path);
+        //path = QString(*it) + "/" + subDirectory;
+        path = QString(*it);
+        dir = QDir(path);
 
         if (dir.exists() && dir.isReadable()) {
-            RS_StringList files = dir.entryList("*." + fileExtension);
-            for (RS_StringList::Iterator it2 = files.begin();
+            QStringList files = dir.entryList( QStringList("*." + fileExtension) );
+            for (QStringList::Iterator it2 = files.begin();
                     it2!=files.end();
                     it2++) {
 
@@ -467,8 +467,8 @@ RS_StringList RS_System::getFileList(const RS_String& subDirectory,
  * @return List of all directories in subdirectory 'subDirectory' in
  * all possible QCad directories.
  */
-RS_StringList RS_System::getDirectoryList(const RS_String& _subDirectory) {
-    RS_StringList dirList;
+QStringList RS_System::getDirectoryList(const QString& _subDirectory) {
+    QStringList dirList;
 
     QString subDirectory=QDir::fromNativeSeparators(_subDirectory);
 
@@ -513,32 +513,32 @@ RS_StringList RS_System::getDirectoryList(const RS_String& _subDirectory) {
     // Individual directories:
     RS_SETTINGS->beginGroup("/Paths");
     if (subDirectory=="fonts") {
-        dirList += RS_StringList::split(RS_RegExp("[;]"),
-                                        RS_SETTINGS->readEntry("/Fonts", ""));
+        dirList += (RS_SETTINGS->readEntry("/Fonts", "")).split(QRegExp("[;]"),
+                                                        QString::SkipEmptyParts);
     } else if (subDirectory=="patterns") {
-        dirList += RS_StringList::split(RS_RegExp("[;]"),
-                                        RS_SETTINGS->readEntry("/Patterns", ""));
+        dirList += (RS_SETTINGS->readEntry("/Patterns", "")).split(QRegExp("[;]"),
+                                                        QString::SkipEmptyParts);
     } else if (subDirectory.startsWith("scripts")) {
-        dirList += RS_StringList::split(RS_RegExp("[;]"),
-                                        RS_SETTINGS->readEntry("/Scripts", ""));
+        dirList += (RS_SETTINGS->readEntry("/Scripts", "")).split(QRegExp("[;]"),
+                                                        QString::SkipEmptyParts);
     } else if (subDirectory.startsWith("library")) {
-        dirList += RS_StringList::split(RS_RegExp("[;]"),
-                                        RS_SETTINGS->readEntry("/Library", ""));
+        dirList += (RS_SETTINGS->readEntry("/Library", "")).split(QRegExp("[;]"),
+                                                        QString::SkipEmptyParts);
     } else if (subDirectory.startsWith("po")) {
-        dirList += RS_StringList::split(RS_RegExp("[;]"),
-                                        RS_SETTINGS->readEntry("/Translations", ""));
+        dirList += (RS_SETTINGS->readEntry("/Translations", "")).split(QRegExp("[;]"),
+                                                        QString::SkipEmptyParts);
     }
     RS_SETTINGS->endGroup();
 
-    RS_StringList ret;
+    QStringList ret;
 
     RS_DEBUG->print("RS_System::getDirectoryList: Paths:");
-    for (RS_StringList::Iterator it = dirList.begin();
+    for (QStringList::Iterator it = dirList.begin();
             it!=dirList.end(); ++it ) {
 
-        if (RS_FileInfo(*it).isDir()) {
+        if (QFileInfo(*it).isDir()) {
             ret += (*it);
-            RS_DEBUG->print(*it);
+            RS_DEBUG->print( (*it).toLatin1() );
         }
     }
 
@@ -551,12 +551,12 @@ RS_StringList RS_System::getDirectoryList(const RS_String& _subDirectory) {
  * Converts a language string to a symbol (e.g. Deutsch or German to 'de').
  * Languages taken from RFC3066
  */
-RS_String RS_System::languageToSymbol(const RS_String& lang) {
-    RS_String l = lang.lower();
+QString RS_System::languageToSymbol(const QString& lang) {
+    QString l = lang.toLower();
 
     RS_Locale *locale;
     foreach (locale, *RS_SYSTEM->allKnownLocales) {
-        if (locale->getName().lower()==l) {
+        if (locale->getName().toLower()==l) {
             return locale->getCanonical();
         }
     }
@@ -570,13 +570,13 @@ RS_String RS_System::languageToSymbol(const RS_String& lang) {
  * Converst a language two-letter-code into a readable string
  * (e.g. 'de' to Deutsch)
  */
-RS_String RS_System::symbolToLanguage(const RS_String& symb) {
-    RS_String l = symb.lower();
+QString RS_System::symbolToLanguage(const QString& symb) {
+    QString l = symb.toLower();
 
     RS_Locale *locale;
     foreach (locale, *RS_SYSTEM->allKnownLocales) {
-        QString canon=locale->getCanonical().lower();
-        if (canon==l || canon==l+"_"+l.upper() || canon.mid(0,2)==l) {
+        QString canon=locale->getCanonical().toLower();
+        if (canon==l || canon==l+"_"+l.toUpper() || canon.mid(0,2)==l) {
             return locale->getName();
         }
     }
@@ -588,8 +588,8 @@ RS_String RS_System::symbolToLanguage(const RS_String& symb) {
 /**
  * Tries to convert the given encoding string to an encoding Qt knows.
  */
-RS_String RS_System::getEncoding(const RS_String& str) {
-    RS_String l=str.lower();
+QString RS_System::getEncoding(const QString& str) {
+    QString l=str.toLower();
 
     if (l=="latin1" || l=="ansi_1252" || l=="iso-8859-1" ||
             l=="cp819" || l=="csiso" || l=="ibm819" || l=="iso_8859-1" ||
diff --git a/src/lib/engine/rs_system.h b/src/lib/engine/rs_system.h
index b7d2c79..9bc9e09 100644
--- a/src/lib/engine/rs_system.h
+++ b/src/lib/engine/rs_system.h
@@ -28,13 +28,10 @@
 #ifndef RS_SYSTEM_H
 #define RS_SYSTEM_H
 
-#include <iostream>
+#include <QDir>
+#include <QList>
 
 #include "rs_debug.h"
-#include "rs_dir.h"
-#include "rs_string.h"
-#include "rs_stringlist.h"
-#include <QList>
 #include "rs_locale.h"
 
 #define RS_SYSTEM RS_System::instance()
@@ -70,8 +67,8 @@ public:
         return uniqueInstance;
     }
 
-    void init(const RS_String& appName, const RS_String& appVersion, 
-	          const RS_String& appDirName, const RS_String& appDir="");
+    void init(const QString& appName, const QString& appVersion,
+                  const QString& appDirName, const QString& appDir="");
 	void initLanguageList();
         void initAllLanguagesList();
 
@@ -81,61 +78,61 @@ public:
     /**
      * @return Users home directory.
      */
-    RS_String getHomeDir() {
-        return RS_Dir::homePath();
+    QString getHomeDir() {
+        return QDir::homePath();
     }
 
     /**
      * @return Current directory.
      */
-    RS_String getCurrentDir() {
-        return RS_Dir::currentDirPath();
+    QString getCurrentDir() {
+        return QDir::currentPath();
     }
 
 	/**
 	 * @return Application directory.
 	 */
-	RS_String getAppDir() {
+        QString getAppDir() {
 		return appDir;
 	}
 
     /**
      * @return A list of absolute paths to all font files found.
      */
-    RS_StringList getFontList() {
-        RS_StringList ret = getFileList("fonts", "cxf");
+    QStringList getFontList() {
+        QStringList ret = getFileList("fonts", "cxf");
 		return ret;
     }
 	
     /**
      * @return A list of absolute paths to all hatch pattern files found.
      */
-    RS_StringList getPatternList() {
-        RS_StringList ret = getFileList("patterns", "dxf");
+    QStringList getPatternList() {
+        QStringList ret = getFileList("patterns", "dxf");
 		return ret;
     }
 
     /**
      * @return A list of absolute paths to all script files found.
      */
-    RS_StringList getScriptList() {
-        RS_StringList ret = getFileList("scripts/qsa", "qs");
+    QStringList getScriptList() {
+        QStringList ret = getFileList("scripts/qsa", "qs");
 		return ret;
     }
 	
     /**
      * @return A list of absolute paths to all machine configuration files found.
      */
-    RS_StringList getMachineList() {
-        RS_StringList ret = getFileList("machines", "cxm");
+    QStringList getMachineList() {
+        QStringList ret = getFileList("machines", "cxm");
 		return ret;
     }
 	
     /**
      * @return Absolute path to the documentation.
      */
-    RS_String getDocPath() {
-        RS_StringList lst = getDirectoryList("doc");
+    QString getDocPath() {
+        QStringList lst = getDirectoryList("doc");
 
         if( !(lst.isEmpty()) ){
             return lst.first();
@@ -145,32 +142,32 @@ public:
 	/**
 	 * @return The application name.
 	 */
-	RS_String getAppName() {
+        QString getAppName() {
 		return appName;
 	}
 
 	/**
 	 * @return The application version.
 	 */
-	RS_String getAppVersion() {
+        QString getAppVersion() {
 		return appVersion;
 	}
 
-    RS_StringList getFileList(const RS_String& subDirectory,
-                              const RS_String& fileExtension);
+    QStringList getFileList(const QString& subDirectory,
+                              const QString& fileExtension);
 							  
-    RS_StringList getDirectoryList(const RS_String& subDirectory);
+    QStringList getDirectoryList(const QString& subDirectory);
 							  
-	RS_StringList getLanguageList() {
+    QStringList getLanguageList() {
 		return languageList;
 	}
 	
-	static RS_String languageToSymbol(const RS_String& lang);
-	static RS_String symbolToLanguage(const RS_String& symb);
+        static QString languageToSymbol(const QString& lang);
+        static QString symbolToLanguage(const QString& symb);
 
-	static RS_String getEncoding(const RS_String& str);
+        static QString getEncoding(const QString& str);
 
-	void loadTranslation(const RS_String& lang, const RS_String& langCmd);
+        void loadTranslation(const QString& lang, const QString& langCmd);
 
     static bool test();
 
@@ -184,14 +181,14 @@ public:
 protected:
     static RS_System* uniqueInstance;
 
-    RS_String appName;
-    RS_String appVersion;
-    RS_String appDirName;
-    RS_String appDir;
+    QString appName;
+    QString appVersion;
+    QString appDirName;
+    QString appDir;
 	
 	//! List of available translations
 
-    RS_StringList languageList;
+    QStringList languageList;
     bool initialized;
     QList<RS_Locale* > *allKnownLocales;
 
diff --git a/src/lib/engine/rs_text.cpp b/src/lib/engine/rs_text.cpp
index c63039d..1d09377 100644
--- a/src/lib/engine/rs_text.cpp
+++ b/src/lib/engine/rs_text.cpp
@@ -25,12 +25,12 @@
 **********************************************************************/
 
 
+#include "rs_font.h"
 #include "rs_text.h"
 
 #include "rs_fontlist.h"
 #include "rs_insert.h"
 
-
 /**
  * Constructor.
  */
@@ -49,7 +49,7 @@ RS_Text::RS_Text(RS_EntityContainer* parent,
  * Sets a new text. The entities representing the 
  * text are updated.
  */
-void RS_Text::setText(const RS_String& t) {
+void RS_Text::setText(const QString& t) {
     data.text = t;
 
     // handle some special flags embedded in the text:
@@ -229,8 +229,8 @@ void RS_Text::update() {
                     break;
 
                 case 'S': {
-                        RS_String up;
-                        RS_String dw;
+                        QString up;
+                        QString dw;
                         //letterPos += letterSpace;
 
                         // get upper string:
@@ -314,7 +314,7 @@ void RS_Text::update() {
 					RS_DEBUG->print("RS_Text::update: insert a "
 					  "letter at pos: %f/%f", letterPos.x, letterPos.y);
 
-                    RS_InsertData d(RS_String(data.text.at(i)),
+                    RS_InsertData d(QString(data.text.at(i)),
                                     letterPos,
                                     RS_Vector(1.0, 1.0),
                                     0.0,
diff --git a/src/lib/engine/rs_text.h b/src/lib/engine/rs_text.h
index b24fa52..cf29329 100644
--- a/src/lib/engine/rs_text.h
+++ b/src/lib/engine/rs_text.h
@@ -28,7 +28,6 @@
 #ifndef RS_TEXT_H
 #define RS_TEXT_H
 
-#include "rs_entity.h"
 #include "rs_entitycontainer.h"
 
 /**
@@ -69,8 +68,8 @@ public:
                 RS2::TextDrawingDirection drawingDirection,
                 RS2::TextLineSpacingStyle lineSpacingStyle,
                 double lineSpacingFactor,
-                const RS_String& text,
-                const RS_String& style,
+                const QString& text,
+                const QString& style,
                 double angle,
                 RS2::UpdateMode updateMode = RS2::Update) {
         this->insertionPoint = insertionPoint;
@@ -90,7 +89,7 @@ public:
     friend class RS_Text;
 
     friend std::ostream& operator << (std::ostream& os, const RS_TextData& td) {
-        os << "(" << td.text.latin1() << ")";
+        os << "(" << td.text.toLatin1().data() << ")";
         return os;
     }
 
@@ -112,9 +111,9 @@ public:
     /** Line spacing factor */
     double lineSpacingFactor;
     /** Text string */
-    RS_String text;
+    QString text;
     /** Text style name */
-    RS_String style;
+    QString style;
     /** Rotation angle */
     double angle;
     /** Update mode */
@@ -139,7 +138,7 @@ public:
 
     virtual RS_Entity* clone() {
         RS_Text* t = new RS_Text(*this);
-		t->entities.setAutoDelete(entities.autoDelete());
+        t->setOwner(isOwner());
         t->initId();
         t->detach();
         return t;
@@ -199,14 +198,14 @@ public:
     double getLineSpacingFactor() {
         return data.lineSpacingFactor;
     }
-    void setText(const RS_String& t);
-    RS_String getText() {
+    void setText(const QString& t);
+    QString getText() {
         return data.text;
     }
-    void setStyle(const RS_String& s) {
+    void setStyle(const QString& s) {
         data.style = s;
     }
-    RS_String getStyle() {
+    QString getStyle() {
         return data.style;
     }
 	void setAngle(double a) {
diff --git a/src/lib/engine/rs_textstream.h b/src/lib/engine/rs_textstream.h
deleted file mode 100644
index d1e3297..0000000
--- a/src/lib/engine/rs_textstream.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_TEXTSTREAM_H
-#define RS_TEXTSTREAM_H
-
-#include <QTextStream>
-#include <QTextCodec>
-
-#define RS_TextStream QTextStream
-#define RS_TextCodec QTextCodec
-
-#endif
diff --git a/src/lib/engine/rs_translator.h b/src/lib/engine/rs_translator.h
deleted file mode 100644
index 2bd8f29..0000000
--- a/src/lib/engine/rs_translator.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_TRANSLATOR_H
-#define RS_TRANSLATOR_H
-
-#include <qtranslator.h>
-
-#define RS_Translator QTranslator
-
-#endif
diff --git a/src/lib/engine/rs_undo.cpp b/src/lib/engine/rs_undo.cpp
index 85dc0c3..fe5f4dd 100644
--- a/src/lib/engine/rs_undo.cpp
+++ b/src/lib/engine/rs_undo.cpp
@@ -25,6 +25,7 @@
 **********************************************************************/
 
 
+#include "rs_undocycle.h"
 #include "rs_undo.h"
 
 
@@ -33,11 +34,15 @@
  * Default constructor.
  */
 RS_Undo::RS_Undo() {
-    undoList.setAutoDelete(true);
     undoPointer = -1;
     currentCycle = NULL;
 }
 
+RS_Undo::~RS_Undo() {
+//clear undolist
+while (!undoList.isEmpty())
+     delete undoList.takeFirst();
+}
 
 
 /**
@@ -57,7 +62,7 @@ int RS_Undo::countUndoCycles() {
 int RS_Undo::countRedoCycles() {
     RS_DEBUG->print("RS_Undo::countRedoCycles");
 
-    return (int)undoList.count()-1-undoPointer;
+    return undoList.size()-1-undoPointer;
 }
 
 
@@ -71,7 +76,7 @@ void RS_Undo::addUndoCycle(RS_UndoCycle* i) {
     RS_DEBUG->print("RS_Undo::addUndoCycle");
 	
     undoList.insert(++undoPointer, i);
-	
+
     RS_DEBUG->print("RS_Undo::addUndoCycle: ok");
 }
 
@@ -86,20 +91,24 @@ void RS_Undo::startUndoCycle() {
 
     // definitely delete Undo Cycles and all Undoables in them
     //   that cannot be redone now:
-    while ((int)undoList.count()>undoPointer+1 && (int)undoList.count()>0) {
+    while (undoList.size()>undoPointer+1 && undoList.size()>0) {
 
-        RS_UndoCycle* l = undoList.last();
+        RS_UndoCycle* l = NULL;
+        if (!( undoList.isEmpty()) )
+            l = undoList.last();
         if (l!=NULL) {
             RS_Undoable* u=NULL;
             bool done = false;
             do {
-                u = l->getFirstUndoable();
+                if (!( l->undoables.isEmpty()) )
+                    u = l->undoables.first();
+                else
+                   u = NULL;
                 if (u!=NULL) {
                     // Remove the pointer from _all_ cycles:
-					for (RS_UndoCycle* l2=undoList.first(); l2!=NULL; 
-						l2=undoList.next()) {
-						l2->removeUndoable(u);
-					}
+                                        for (int i = 0; i < undoList.size(); ++i) {
+                                            (undoList.at(i))->removeUndoable(u);
+                                        }
 
                     // Delete the Undoable for good:
                     if (u->isUndone()) {
@@ -112,7 +121,7 @@ void RS_Undo::startUndoCycle() {
         }
 
         // Remove obsolete undo cycles:
-        undoList.removeLast();
+        delete undoList.takeLast();
     }
 	
     currentCycle = new RS_UndoCycle();
@@ -153,11 +162,13 @@ void RS_Undo::undo() {
     RS_DEBUG->print("RS_Undo::undo");
 
     if (undoPointer>=0) {
-        RS_UndoCycle* i = undoList.at(undoPointer);
-        if (i!=NULL) {
-            for (RS_Undoable* u=i->undoables.first();
-                    u!=NULL; u=i->undoables.next()) {
-                u->changeUndoState();
+
+        RS_UndoCycle* uc = NULL;
+        if (undoPointer < undoList.size())
+            uc = undoList.at(undoPointer);
+        if (uc != NULL) {
+            for (int i = 0; i < uc->undoables.size(); ++i) {
+                (uc->undoables.at(i))->changeUndoState();
             }
             undoPointer--;
         }
@@ -165,20 +176,18 @@ void RS_Undo::undo() {
 }
 
 
-
 /**
  * Redoes the undo cycle which was at last undone.
  */
 void RS_Undo::redo() {
     RS_DEBUG->print("RS_Undo::redo");
 
-    if (undoPointer+1<(int)undoList.count()) {
+    if (undoPointer+1 < undoList.size()) {
         undoPointer++;
-        RS_UndoCycle* i = undoList.at(undoPointer);
-        if (i!=NULL) {
-            for (RS_Undoable* u=i->undoables.first();
-                    u!=NULL; u=i->undoables.next()) {
-                u->changeUndoState();
+        RS_UndoCycle* uc = undoList.at(undoPointer);
+        if (uc != NULL) {
+            for (int i = 0; i < uc->undoables.size(); ++i) {
+                (uc->undoables.at(i))->changeUndoState();
             }
         }
     }
@@ -195,7 +204,7 @@ RS_UndoCycle* RS_Undo::getUndoCycle() {
 	
     RS_DEBUG->print("RS_Undo::getUndoCycle");
 
-    if (undoPointer>=0 && undoPointer<(int)undoList.count()) {
+    if ( (undoPointer>=0) && (undoPointer < undoList.size()) ) {
         ret = undoList.at(undoPointer);
     }
     RS_DEBUG->print("RS_Undo::getUndoCycle: OK");
@@ -212,7 +221,7 @@ RS_UndoCycle* RS_Undo::getUndoCycle() {
 RS_UndoCycle* RS_Undo::getRedoCycle() {
     RS_DEBUG->print("RS_Undo::getRedoCycle");
 
-    if (undoPointer+1>=0 && undoPointer+1<(int)undoList.count()) {
+    if ( (undoPointer+1>=0) && (undoPointer+1 < undoList.size()) ) {
         return undoList.at(undoPointer+1);
     }
 
@@ -227,16 +236,15 @@ RS_UndoCycle* RS_Undo::getRedoCycle() {
 std::ostream& operator << (std::ostream& os, RS_Undo& l) {
     os << "Undo List: " <<  "\n";
     os << " Pointer is at: " << l.undoPointer << "\n";
-    for (RS_UndoCycle* i = l.undoList.first();
-            i!=NULL; i = l.undoList.next()) {
+    for (int i = 0; i < l.undoList.size(); ++i) {
 
-        if (l.undoList.at()==l.undoPointer) {
+        if (i==l.undoPointer) {
             os << " -->";
         }
 		else {
             os << "    ";
 		}
-        os << *i << "\n";
+        os << *(l.undoList.at(i)) << "\n";
     }
     return os;
 }
diff --git a/src/lib/engine/rs_undo.h b/src/lib/engine/rs_undo.h
index 78f7035..8e9d678 100644
--- a/src/lib/engine/rs_undo.h
+++ b/src/lib/engine/rs_undo.h
@@ -28,8 +28,10 @@
 #ifndef RS_UNDO_H
 #define RS_UNDO_H
 
-#include "rs_undocycle.h"
-#include "rs_ptrlist.h"
+#include <QList>
+
+class RS_UndoCycle;
+class RS_Undoable;
 
 /**
  * Undo / redo functionality. The internal undo list consists of
@@ -41,7 +43,7 @@
 class RS_Undo {
 public:
     RS_Undo();
-    virtual ~RS_Undo() {}
+    virtual ~RS_Undo();
 
     void addUndoCycle(RS_UndoCycle* i);
 
@@ -71,7 +73,7 @@ public:
 
 protected:
     //! List of undo list items. every item is something that can be undone.
-    RS_PtrList<RS_UndoCycle> undoList;
+    QList<RS_UndoCycle*> undoList;
 
     /**
      * Index that points to the current position in the undo list.
diff --git a/src/lib/engine/rs_undocycle.h b/src/lib/engine/rs_undocycle.h
index c334136..fceb8a0 100644
--- a/src/lib/engine/rs_undocycle.h
+++ b/src/lib/engine/rs_undocycle.h
@@ -29,10 +29,9 @@
 #define RS_UNDOLISTITEM_H
 
 #include <iostream>
+#include <QList>
 
-#include "rs.h"
 #include "rs_entity.h"
-#include "rs_ptrlist.h"
 #include "rs_undoable.h"
 
 /**
@@ -55,14 +54,13 @@ public:
      */
     RS_UndoCycle(/*RS2::UndoType type*/) {
         //this->type = type;
-        undoables.setAutoDelete(false);
     }
 
     /**
      * Adds an Undoable to this Undo Cycle. Every Cycle can contain one or
      * more Undoables.
      */
-    void addUndoable(const RS_Undoable* u) {
+    void addUndoable(RS_Undoable* u) {
         undoables.append(u);
     }
 
@@ -70,25 +68,11 @@ public:
      * Removes an undoable from the list.
      */
     void removeUndoable(RS_Undoable* u) {
-        undoables.remove(u);
-    }
-
-    /**
-     * Iteration through undoable elements in this item.
-     */
-    RS_Undoable* getFirstUndoable() {
-        return undoables.first();
-    }
-
-    /**
-     * Iteration through undoable elements in this item.
-     */
-    RS_Undoable* getNextUndoable() {
-        return undoables.next();
+        undoables.removeOne(u);
     }
 
     friend std::ostream& operator << (std::ostream& os,
-                                      RS_UndoCycle& i) {
+                                      RS_UndoCycle& uc) {
         os << " Undo item: " << "\n";
         //os << "   Type: ";
         /*switch (i.type) {
@@ -100,15 +84,15 @@ public:
             break;
     }*/
         os << "   Undoable ids: ";
-        for (RS_Undoable* u=i.getFirstUndoable();
-                u!=NULL; u=i.getNextUndoable()) {
-
+        for (int i = 0; i < uc.undoables.size(); ++i) {
+            RS_Undoable *u = uc.undoables.at(i);
             if (u->undoRtti()==RS2::UndoableEntity) {
                 RS_Entity* e = (RS_Entity*)u;
                 os << e->getId() << (u->isUndone() ? "*" : "") << " ";
             } else {
                 os << "|";
             }
+
         }
 
         return os;
@@ -120,7 +104,7 @@ private:
     //! Undo type:
     //RS2::UndoType type;
     //! List of entity id's that were affected by this action
-    RS_PtrList<RS_Undoable> undoables;
+    QList<RS_Undoable *> undoables;
 };
 
 #endif
diff --git a/src/lib/engine/rs_units.cpp b/src/lib/engine/rs_units.cpp
index fc269ce..1ffc73b 100644
--- a/src/lib/engine/rs_units.cpp
+++ b/src/lib/engine/rs_units.cpp
@@ -27,8 +27,7 @@
 
 #include "rs_units.h"
 
-#include <stdio.h>
-#include <qobject.h>
+#include <QObject>
 
 #include "rs_math.h"
 #include "rs_debug.h"
@@ -90,8 +89,8 @@ RS2::Unit RS_Units::dxfint2unit(int dxfint) {
 /**
  * @return a short string representing the given unit (e.g. "mm")
  */
-RS_String RS_Units::unitToSign(RS2::Unit u) {
-    RS_String ret = "";
+QString RS_Units::unitToSign(RS2::Unit u) {
+    QString ret = "";
 
     switch (u) {
     case RS2::None:
@@ -172,72 +171,72 @@ RS_String RS_Units::unitToSign(RS2::Unit u) {
  * @return a string representing the given unit (e.g. "Millimeter").
  *      translated if @a t is true (the default).
  */
-RS_String RS_Units::unitToString(RS2::Unit u, bool t) {
-    RS_String ret = "";
+QString RS_Units::unitToString(RS2::Unit u, bool t) {
+    QString ret = "";
 
     switch (u) {
     case RS2::None:
-        ret = t ? QObject::tr("None") : RS_String("None");
+        ret = t ? QObject::tr("None") : QString("None");
         break;
     case RS2::Inch:
-        ret = t ? QObject::tr("Inch") : RS_String("Inch");
+        ret = t ? QObject::tr("Inch") : QString("Inch");
         break;
     case RS2::Foot:
-        ret = t ? QObject::tr("Foot") : RS_String("Foot");
+        ret = t ? QObject::tr("Foot") : QString("Foot");
         break;
     case RS2::Mile:
-        ret = t ? QObject::tr("Mile") : RS_String("Mile");
+        ret = t ? QObject::tr("Mile") : QString("Mile");
         break;
     case RS2::Millimeter:
-        ret = t ? QObject::tr("Millimeter") : RS_String("Millimeter");
+        ret = t ? QObject::tr("Millimeter") : QString("Millimeter");
         break;
     case RS2::Centimeter:
-        ret = t ? QObject::tr("Centimeter") : RS_String("Centimeter");
+        ret = t ? QObject::tr("Centimeter") : QString("Centimeter");
         break;
     case RS2::Meter:
-        ret = t ? QObject::tr("Meter") : RS_String("Meter");
+        ret = t ? QObject::tr("Meter") : QString("Meter");
         break;
     case RS2::Kilometer:
-        ret = t ? QObject::tr("Kilometer") : RS_String("Kilometer");
+        ret = t ? QObject::tr("Kilometer") : QString("Kilometer");
         break;
     case RS2::Microinch:
-        ret = t ? QObject::tr("Microinch") : RS_String("Microinch");
+        ret = t ? QObject::tr("Microinch") : QString("Microinch");
         break;
     case RS2::Mil:
-        ret = t ? QObject::tr("Mil") : RS_String("Mil");
+        ret = t ? QObject::tr("Mil") : QString("Mil");
         break;
     case RS2::Yard:
-        ret = t ? QObject::tr("Yard") : RS_String("Yard");
+        ret = t ? QObject::tr("Yard") : QString("Yard");
         break;
     case RS2::Angstrom:
-        ret = t ? QObject::tr("Angstrom") : RS_String("Angstrom");
+        ret = t ? QObject::tr("Angstrom") : QString("Angstrom");
         break;
     case RS2::Nanometer:
-        ret = t ? QObject::tr("Nanometer") : RS_String("Nanometer");
+        ret = t ? QObject::tr("Nanometer") : QString("Nanometer");
         break;
     case RS2::Micron:
-        ret = t ? QObject::tr("Micron") : RS_String("Micron");
+        ret = t ? QObject::tr("Micron") : QString("Micron");
         break;
     case RS2::Decimeter:
-        ret = t ? QObject::tr("Decimeter") : RS_String("Decimeter");
+        ret = t ? QObject::tr("Decimeter") : QString("Decimeter");
         break;
     case RS2::Decameter:
-        ret = t ? QObject::tr("Decameter") : RS_String("Decameter");
+        ret = t ? QObject::tr("Decameter") : QString("Decameter");
         break;
     case RS2::Hectometer:
-        ret = t ? QObject::tr("Hectometer") : RS_String("Hectometer");
+        ret = t ? QObject::tr("Hectometer") : QString("Hectometer");
         break;
     case RS2::Gigameter:
-        ret = t ? QObject::tr("Gigameter") : RS_String("Gigameter");
+        ret = t ? QObject::tr("Gigameter") : QString("Gigameter");
         break;
     case RS2::Astro:
-        ret = t ? QObject::tr("Astro") : RS_String("Astro");
+        ret = t ? QObject::tr("Astro") : QString("Astro");
         break;
     case RS2::Lightyear:
-        ret = t ? QObject::tr("Lightyear") : RS_String("Lightyear");
+        ret = t ? QObject::tr("Lightyear") : QString("Lightyear");
         break;
     case RS2::Parsec:
-        ret = t ? QObject::tr("Parsec") : RS_String("Parsec");
+        ret = t ? QObject::tr("Parsec") : QString("Parsec");
         break;
 
     default:
@@ -253,7 +252,7 @@ RS_String RS_Units::unitToString(RS2::Unit u, bool t) {
 /**
  * Converts a string into a unit enum.
  */
-RS2::Unit RS_Units::stringToUnit(const RS_String& u) {
+RS2::Unit RS_Units::stringToUnit(const QString& u) {
     RS2::Unit ret = RS2::None;
 
     if (u=="None") {
@@ -446,13 +445,13 @@ RS_Vector RS_Units::convert(const RS_Vector val, RS2::Unit src, RS2::Unit dest)
  * @param prec Precisision of the value (e.g. 0.001 or 1/128 = 0.0078125)
  & @param showUnit Append unit to the value.
  */
-RS_String RS_Units::formatLinear(double length, RS2::Unit unit,
+QString RS_Units::formatLinear(double length, RS2::Unit unit,
                                  RS2::LinearFormat format,
                                  int prec, bool showUnit) {
-    RS_String ret;
+    QString ret;
 
     // unit appended to value (e.g. 'mm'):
-    /*RS_String unitString = "";
+    /*QString unitString = "";
     if (showUnit) {
         unitString = unitToSign(unit);
 }*/
@@ -498,20 +497,18 @@ RS_String RS_Units::formatLinear(double length, RS2::Unit unit,
  * @param prec Precisision of the value (e.g. 0.001 or 1/128 = 0.0078125)
  & @param showUnit Append unit to the value.
  */
-RS_String RS_Units::formatScientific(double length, RS2::Unit unit,
+QString RS_Units::formatScientific(double length, RS2::Unit unit,
                                      int prec, bool showUnit) {
 
-    RS_String ret;
+    QString ret;
 
     // unit appended to value (e.g. 'mm'):
-    RS_String unitString = "";
+    QString unitString = "";
     if (showUnit) {
         unitString = unitToSign(unit);
     }
 
-    char format[128];
-    sprintf(format, "%%.%dE%%s", prec);
-    ret.sprintf(format, length, (const char*)unitString.local8Bit());
+    ret = QString("%1%2").arg(length,0,'E', prec).arg(unitString);
 
     return ret;
 }
@@ -525,13 +522,13 @@ RS_String RS_Units::formatScientific(double length, RS2::Unit unit,
  * @param prec Precisision of the value (e.g. 0.001)
  & @param showUnit Append unit to the value.
  */
-RS_String RS_Units::formatDecimal(double length, RS2::Unit unit,
+QString RS_Units::formatDecimal(double length, RS2::Unit unit,
                                   int prec, bool showUnit) {
 
-    RS_String ret;
+    QString ret;
 
     // unit appended to value (e.g. 'mm'):
-    RS_String unitString = "";
+    QString unitString = "";
     if (showUnit) {
         unitString = unitToSign(unit);
     }
@@ -553,15 +550,15 @@ RS_String RS_Units::formatDecimal(double length, RS2::Unit unit,
  * @param prec Precisision of the value (e.g. 0.001 or 1/128 = 0.0078125)
  & @param showUnit Append unit to the value.
  */
-RS_String RS_Units::formatEngineering(double length, RS2::Unit /*unit*/,
+QString RS_Units::formatEngineering(double length, RS2::Unit /*unit*/,
                                       int prec, bool /*showUnit*/) {
-    RS_String ret;
+    QString ret;
 
     bool sign = (length<0.0);
     int feet = (int)floor(fabs(length)/12);
     double inches = fabs(length) - feet*12;
 
-    RS_String sInches = RS_Math::doubleToString(inches, prec);
+    QString sInches = RS_Math::doubleToString(inches, prec);
 
     if (sInches=="12") {
         feet++;
@@ -569,9 +566,9 @@ RS_String RS_Units::formatEngineering(double length, RS2::Unit /*unit*/,
     }
 
     if (feet!=0) {
-        ret.sprintf("%d'-%s\"", feet, (const char*)sInches.local8Bit());
+        ret = QString("%1'-%2\"").arg(feet).arg(sInches);
     } else {
-        ret.sprintf("%s\"", (const char*)sInches.local8Bit());
+        ret = QString("%1\"").arg(sInches);
     }
 
     if (sign) {
@@ -590,15 +587,15 @@ RS_String RS_Units::formatEngineering(double length, RS2::Unit /*unit*/,
  * @param prec Precisision of the value (e.g. 0.001 or 1/128 = 0.0078125)
  & @param showUnit Append unit to the value.
  */
-RS_String RS_Units::formatArchitectural(double length, RS2::Unit /*unit*/,
+QString RS_Units::formatArchitectural(double length, RS2::Unit /*unit*/,
                                         int prec, bool showUnit) {
-    RS_String ret;
+    QString ret;
     bool neg = (length<0.0);
 
     int feet = (int)floor(fabs(length)/12);
     double inches = fabs(length) - feet*12;
 
-    RS_String sInches = formatFractional(inches, RS2::Inch, prec, showUnit);
+    QString sInches = formatFractional(inches, RS2::Inch, prec, showUnit);
 
     if (sInches=="12") {
         feet++;
@@ -606,9 +603,9 @@ RS_String RS_Units::formatArchitectural(double length, RS2::Unit /*unit*/,
     }
 
     if (neg) {
-        ret.sprintf("-%d'-%s\"", feet, (const char*)sInches.local8Bit());
+        ret = QString("-%1'-%2\"").arg(feet).arg(sInches);
     } else {
-        ret.sprintf("%d'-%s\"", feet, (const char*)sInches.local8Bit());
+        ret = QString("%1'-%2\"").arg(feet).arg(sInches);
     }
 
     return ret;
@@ -624,17 +621,17 @@ RS_String RS_Units::formatArchitectural(double length, RS2::Unit /*unit*/,
  * @param prec Precisision of the value (e.g. 0.001 or 1/128 = 0.0078125)
  & @param showUnit Append unit to the value.
  */
-RS_String RS_Units::formatFractional(double length, RS2::Unit /*unit*/,
+QString RS_Units::formatFractional(double length, RS2::Unit /*unit*/,
                                      int prec, bool /*showUnit*/) {
 
-    RS_String ret;
+    QString ret;
 
     int num;            // number of complete inches (num' 7/128")
     int nominator;      // number of fractions (nominator/128)
     int denominator;    // (4/denominator)
 
     // sign:
-    RS_String neg = "";
+    QString neg = "";
     if(length < 0) {
         neg = "-";
         length = fabs(length);
@@ -667,19 +664,13 @@ RS_String RS_Units::formatFractional(double length, RS2::Unit /*unit*/,
     }
 
     if( num!=0 && nominator!=0 ) {
-        ret.sprintf("%s%d %d/%d",
-                    (const char*)neg.local8Bit(), num,
-                    nominator, denominator);
+        ret = QString("%1%2 %3/%4").arg(neg).arg(num).arg(nominator).arg(denominator);
     } else if(nominator!=0) {
-        ret.sprintf("%s%d/%d",
-                    (const char*)neg.local8Bit(),
-                    nominator, denominator);
+        ret = QString("%1%2/%3").arg(neg).arg(nominator).arg(denominator);
     } else if(num!=0) {
-        ret.sprintf("%s%d",
-                    (const char*)neg.local8Bit(),
-                    num);
+        ret = QString("%1%2").arg(neg).arg(num);
     } else {
-        ret.sprintf("0");
+        ret = "0";
     }
 
     return ret;
@@ -698,10 +689,10 @@ RS_String RS_Units::formatFractional(double length, RS2::Unit /*unit*/,
  *
  * @ret String with the formatted angle.
  */
-RS_String RS_Units::formatAngle(double angle, RS2::AngleFormat format,
+QString RS_Units::formatAngle(double angle, RS2::AngleFormat format,
                                 int prec) {
 
-    RS_String ret;
+    QString ret;
     double value;
 
     switch (format) {
@@ -738,7 +729,7 @@ RS_String RS_Units::formatAngle(double angle, RS2::AngleFormat format,
     case RS2::DegreesMinutesSeconds: {
             int vDegrees, vMinutes;
             double vSeconds;
-            RS_String degrees, minutes, seconds;
+            QString degrees, minutes, seconds;
 
             vDegrees = (int)floor(value);
             vMinutes = (int)floor((value - vDegrees) * 60.0);
@@ -963,8 +954,8 @@ RS2::PaperFormat RS_Units::paperSizeToFormat(const RS_Vector s) {
 /**
  * Converts a paper format to a string (e.g. for a combobox).
  */
-RS_String RS_Units::paperFormatToString(RS2::PaperFormat p) {
-    RS_String ret = "";
+QString RS_Units::paperFormatToString(RS2::PaperFormat p) {
+    QString ret = "";
 
     switch (p) {
     case RS2::Custom:
@@ -1110,8 +1101,8 @@ RS_String RS_Units::paperFormatToString(RS2::PaperFormat p) {
 /**
  * Converts a string to a paper format.
  */
-RS2::PaperFormat RS_Units::stringToPaperFormat(const RS_String& p) {
-    RS_String ls = p.lower();
+RS2::PaperFormat RS_Units::stringToPaperFormat(const QString& p) {
+    QString ls = p.toLower();
     RS2::PaperFormat ret = RS2::Custom;
 
     if (p=="custom") {
@@ -1212,7 +1203,7 @@ RS2::PaperFormat RS_Units::stringToPaperFormat(const RS_String& p) {
  * Performs some testing for the math class.
  */
 void RS_Units::test() {
-    RS_String s;
+    QString s;
     double v;
 
     /*
@@ -1316,7 +1307,7 @@ void RS_Units::test() {
             s = RS_Units::formatLinear(v, RS2::Inch, RS2::Architectural,
                                        prec, true);
 			// RVT_PORT changed  << s to s.ascii()
-            std::cout << "prec: " << prec << " v: " << v << " s: " << s.ascii() << "\n";
+            std::cout << "prec: " << prec << " v: " << v << " s: " << s.toAscii().data() << "\n";
         }
     }
 
diff --git a/src/lib/engine/rs_units.h b/src/lib/engine/rs_units.h
index 3a3752b..0186724 100644
--- a/src/lib/engine/rs_units.h
+++ b/src/lib/engine/rs_units.h
@@ -29,7 +29,6 @@
 #define RS_UNITS_H
 
 #include "rs.h"
-#include "rs_string.h"
 #include "rs_vector.h"
 
 /**
@@ -47,38 +46,38 @@ public:
 
     static RS2::Unit dxfint2unit(int dxfint);
 
-    static RS_String unitToString(RS2::Unit u, bool t = true);
-    static RS2::Unit stringToUnit(const RS_String& u);
+    static QString unitToString(RS2::Unit u, bool t = true);
+    static RS2::Unit stringToUnit(const QString& u);
 
 	static bool isMetric(RS2::Unit u);
 	static double getFactorToMM(RS2::Unit u);
 	static double convert(double val, RS2::Unit src, RS2::Unit dest);
 	static RS_Vector convert(const RS_Vector val, RS2::Unit src, RS2::Unit dest);
 	
-    static RS_String unitToSign(RS2::Unit u);
+    static QString unitToSign(RS2::Unit u);
 
-    static RS_String formatLinear(double length, RS2::Unit unit,
+    static QString formatLinear(double length, RS2::Unit unit,
                                   RS2::LinearFormat format,
                                   int prec, bool showUnit=false);
-    static RS_String formatScientific(double length, RS2::Unit unit,
+    static QString formatScientific(double length, RS2::Unit unit,
                                   int prec, bool showUnit=false);
-    static RS_String formatDecimal(double length, RS2::Unit unit,
+    static QString formatDecimal(double length, RS2::Unit unit,
                                   int prec, bool showUnit=false);
-    static RS_String formatEngineering(double length, RS2::Unit unit,
+    static QString formatEngineering(double length, RS2::Unit unit,
                                   int prec, bool showUnit=false);
-    static RS_String formatArchitectural(double length, RS2::Unit unit,
+    static QString formatArchitectural(double length, RS2::Unit unit,
                                   int prec, bool showUnit=false);
-    static RS_String formatFractional(double length, RS2::Unit unit,
+    static QString formatFractional(double length, RS2::Unit unit,
                                   int prec, bool showUnit=false);
 
-    static RS_String formatAngle(double angle, RS2::AngleFormat format,
+    static QString formatAngle(double angle, RS2::AngleFormat format,
                                  int prec);
 
 	static RS_Vector paperFormatToSize(RS2::PaperFormat p);
 	static RS2::PaperFormat paperSizeToFormat(const RS_Vector s);
 	
-	static RS_String paperFormatToString(RS2::PaperFormat p);
-	static RS2::PaperFormat stringToPaperFormat(const RS_String& p);
+        static QString paperFormatToString(RS2::PaperFormat p);
+        static RS2::PaperFormat stringToPaperFormat(const QString& p);
 
 	static void test();
 };
diff --git a/src/lib/engine/rs_utility.cpp b/src/lib/engine/rs_utility.cpp
index 1d042ef..6e7099b 100644
--- a/src/lib/engine/rs_utility.cpp
+++ b/src/lib/engine/rs_utility.cpp
@@ -32,8 +32,8 @@
  * Converts a double to a string cutting away unnecessary 0's.
  * e.g. 2.70000  -> 2.7
  */
-RS_String RS_Utility::doubleToString(double value, int precision) {
-    RS_String ret;
+QString RS_Utility::doubleToString(double value, int precision) {
+    QString ret;
 
     ret.setNum(value, 'f', precision);
 
diff --git a/src/lib/engine/rs_utility.h b/src/lib/engine/rs_utility.h
index cf1a754..8bab5f0 100644
--- a/src/lib/engine/rs_utility.h
+++ b/src/lib/engine/rs_utility.h
@@ -28,7 +28,7 @@
 #ifndef RS_UTILITY_H
 #define RS_UTILITY_H
 
-#include "rs_string.h"
+#include <QString>
 
 /**
  * Various utilities.
@@ -37,7 +37,7 @@
  */
 class RS_Utility {
 public:
-    static RS_String doubleToString(double value, int precision=6);
+    static QString doubleToString(double value, int precision=6);
 };
 
 #endif
diff --git a/src/lib/engine/rs_valuelist.h b/src/lib/engine/rs_valuelist.h
deleted file mode 100644
index 7052020..0000000
--- a/src/lib/engine/rs_valuelist.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_VALUELIST_H
-#define RS_VALUELIST_H
-
-#include <q3valuelist.h>
-
-#define RS_ValueList Q3ValueList
-
-#endif
diff --git a/src/lib/engine/rs_valuevector.h b/src/lib/engine/rs_valuevector.h
deleted file mode 100644
index ed6ae6c..0000000
--- a/src/lib/engine/rs_valuevector.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_VALUEVECTOR_H
-#define RS_VALUEVECTOR_H
-
-#include <qvector.h>
-
-// RVT_PORT changed from #define RS_ValueVector QValueVector
-#define RS_ValueVector QVector
-
-#endif
diff --git a/src/lib/engine/rs_variable.h b/src/lib/engine/rs_variable.h
index 95e78fd..63d977c 100644
--- a/src/lib/engine/rs_variable.h
+++ b/src/lib/engine/rs_variable.h
@@ -30,9 +30,7 @@
 
 
 #include "rs.h"
-#include "rs_string.h"
 #include "rs_vector.h"
-#include "rs_debug.h"
 
 /**
  * A variable of type int, double, string or vector.
@@ -44,7 +42,7 @@
 class RS_Variable {
 public:
 	typedef struct {
-		RS_String s;
+                QString s;
 		int i;
 		double d;
 		RS_Vector v;
@@ -58,7 +56,7 @@ public:
 		setVector(v);
 		code = c;
 	}
-    RS_Variable(const RS_String& v, int c) {
+    RS_Variable(const QString& v, int c) {
 		setString(v);
 		code = c;
 	}
@@ -72,7 +70,7 @@ public:
 	}
     virtual ~RS_Variable() {}
 
-	void setString(const RS_String& str) {
+        void setString(const QString& str) {
 		contents.s = str;
 		type = RS2::VariableString;
 	}
@@ -89,7 +87,7 @@ public:
 		type = RS2::VariableVector;
 	}
 
-	RS_String getString() {
+        QString getString() {
 		return contents.s;
 	}
 	int getInt() {
diff --git a/src/lib/engine/rs_variabledict.cpp b/src/lib/engine/rs_variabledict.cpp
index af02470..6406074 100644
--- a/src/lib/engine/rs_variabledict.cpp
+++ b/src/lib/engine/rs_variabledict.cpp
@@ -26,13 +26,12 @@
 
 
 #include "rs_variabledict.h"
-
+#include "rs_debug.h"
 
 /**
  * Constructor.
  */
 RS_VariableDict::RS_VariableDict() {
-    variables.setAutoDelete(true);
 }
 
 
@@ -48,7 +47,7 @@ void RS_VariableDict::clear() {
  * Activates the given block.
  * Listeners are notified.
  */
-//void RS_VariableDict::activateBlock(const RS_String& name) {
+//void RS_VariableDict::activateBlock(const QString& name) {
 //	activateBlock(findBlock(name));
 //}
 
@@ -73,8 +72,8 @@ void RS_VariableDict::clear() {
  * Adds a variable to the variable dictionary. If a variable with the 
  * same name already exists, is will be overwritten.
  */
-void RS_VariableDict::add(const RS_String& key,
-                                  const RS_String& value, int code) {
+void RS_VariableDict::add(const QString& key,
+                                  const QString& value, int code) {
     RS_DEBUG->print("RS_VariableDict::addVariable()");
 
     if (key.isEmpty()) {
@@ -84,7 +83,7 @@ void RS_VariableDict::add(const RS_String& key,
         return;
     }
 
-    variables.replace(key, new RS_Variable(value, code));
+    variables.insert(key, RS_Variable(value, code));
 }
 
 
@@ -93,7 +92,7 @@ void RS_VariableDict::add(const RS_String& key,
  * Adds a variable to the variable dictionary. If a variable with the 
  * same name already exists, is will be overwritten.
  */
-void RS_VariableDict::add(const RS_String& key, int value, int code) {
+void RS_VariableDict::add(const QString& key, int value, int code) {
     RS_DEBUG->print("RS_VariableDict::addVariable()");
 
     if (key.isEmpty()) {
@@ -103,7 +102,7 @@ void RS_VariableDict::add(const RS_String& key, int value, int code) {
         return;
     }
 
-    variables.replace(key, new RS_Variable(value, code));
+    variables.insert(key, RS_Variable(value, code));
 }
 
 
@@ -112,7 +111,7 @@ void RS_VariableDict::add(const RS_String& key, int value, int code) {
  * Adds a variable to the variable dictionary. If a variable with the 
  * same name already exists, is will be overwritten.
  */
-void RS_VariableDict::add(const RS_String& key, double value, int code) {
+void RS_VariableDict::add(const QString& key, double value, int code) {
     RS_DEBUG->print("RS_VariableDict::addVariable()");
 
     if (key.isEmpty()) {
@@ -122,7 +121,7 @@ void RS_VariableDict::add(const RS_String& key, double value, int code) {
         return;
     }
 
-    variables.replace(key, new RS_Variable(value, code));
+    variables.insert(key, RS_Variable(value, code));
 }
 
 
@@ -131,7 +130,7 @@ void RS_VariableDict::add(const RS_String& key, double value, int code) {
  * Adds a variable to the variable dictionary. If a variable with the 
  * same name already exists, is will be overwritten.
  */
-void RS_VariableDict::add(const RS_String& key,
+void RS_VariableDict::add(const QString& key,
                                   const RS_Vector& value, int code) {
     RS_DEBUG->print("RS_VariableDict::addVariable()");
 
@@ -142,7 +141,7 @@ void RS_VariableDict::add(const RS_String& key,
         return;
     }
 
-    variables.replace(key, new RS_Variable(value, code));
+    variables.insert(key, RS_Variable(value, code));
 }
 
 
@@ -156,16 +155,15 @@ void RS_VariableDict::add(const RS_String& key,
  * @return The value for the given variable or the given default value
  * if the variable couldn't be found.
  */
-RS_Vector RS_VariableDict::getVector(const RS_String& key,
+RS_Vector RS_VariableDict::getVector(const QString& key,
         const RS_Vector& def) {
 
     RS_Vector ret;
-    RS_Variable* ptr = variables.find(key);
-
-    if (ptr==NULL || ptr->getType()!=RS2::VariableVector) {
-        ret = def;
+    QHash<QString, RS_Variable>::iterator i = variables.find(key);
+     if (i != variables.end() || i.value().getType()==RS2::VariableVector) {
+        ret = i.value().getVector();
     } else {
-        ret = ptr->getVector();
+        ret = def;
     }
     return ret;
 }
@@ -181,26 +179,26 @@ RS_Vector RS_VariableDict::getVector(const RS_String& key,
  * @return The value for the given variable or the given default value
  * if the variable couldn't be found.
  */
-RS_String RS_VariableDict::getString(const RS_String& key,
-        const RS_String& def) {
+QString RS_VariableDict::getString(const QString& key,
+        const QString& def) {
 
-    RS_String ret;
+    QString ret;
 
 	RS_DEBUG->print("RS_VariableDict::getString: 001");
-	RS_DEBUG->print("RS_VariableDict::getString: key: '%s'", key.latin1());
+        RS_DEBUG->print("RS_VariableDict::getString: key: '%s'", key.toLatin1().data());
 	
-    RS_Variable* ptr = variables.find(key);
-	RS_DEBUG->print("RS_VariableDict::getString: 002");
+    QHash<QString, RS_Variable>::iterator i = variables.find(key);
+        RS_DEBUG->print("RS_VariableDict::getString: 002");
 
-    if (ptr==NULL) {
+    if (i == variables.end()) {
 		RS_DEBUG->print("RS_VariableDict::getString: 003");
         ret = def;
-	} else if (ptr->getType()!=RS2::VariableString) {
+        } else if (i.value().getType() != RS2::VariableString) {
 		RS_DEBUG->print("RS_VariableDict::getString: 004");
 		ret = def;
     } else {
 		RS_DEBUG->print("RS_VariableDict::getString: 005");
-        ret = ptr->getString();
+        ret = i.value().getString();
     }
 	RS_DEBUG->print("RS_VariableDict::getString: 006");
 
@@ -218,16 +216,15 @@ RS_String RS_VariableDict::getString(const RS_String& key,
  * @return The value for the given variable or the given default value
  * if the variable couldn't be found.
  */
-int RS_VariableDict::getInt(const RS_String& key,
+int RS_VariableDict::getInt(const QString& key,
                                     int def) {
 
     int ret;
-    RS_Variable* ptr = variables.find(key);
-
-    if (ptr==NULL || ptr->getType()!=RS2::VariableInt) {
-        ret = def;
+    QHash<QString, RS_Variable>::iterator i = variables.find(key);
+     if (i != variables.end() || i.value().getType()==RS2::VariableInt) {
+        ret = i.value().getInt();
     } else {
-        ret = ptr->getInt();
+        ret = def;
     }
     return ret;
 }
@@ -243,16 +240,15 @@ int RS_VariableDict::getInt(const RS_String& key,
  * @return The value for the given variable or the given default value
  * if the variable couldn't be found.
  */
-double RS_VariableDict::getDouble(const RS_String& key,
+double RS_VariableDict::getDouble(const QString& key,
         double def) {
 
     double ret;
-    RS_Variable* ptr = variables.find(key);
-
-    if (ptr==NULL || ptr->getType()!=RS2::VariableDouble) {
-        ret = def;
+    QHash<QString, RS_Variable>::iterator i = variables.find(key);
+     if (i != variables.end() || i.value().getType()==RS2::VariableDouble) {
+        ret = i.value().getDouble();
     } else {
-        ret = ptr->getDouble();
+        ret = def;
     }
     return ret;
 }
@@ -275,7 +271,7 @@ void RS_VariableDict::addBlockNotification() {
  * TODO: Listeners are notified after the block was removed from 
  * the list but before it gets deleted.
  */
-void RS_VariableDict::remove(const RS_String& key) {
+void RS_VariableDict::remove(const QString& key) {
     RS_DEBUG->print("RS_VariableDict::removeVariable()");
 
     // here the block is removed from the list but not deleted
@@ -291,28 +287,27 @@ void RS_VariableDict::remove(const RS_String& key) {
 std::ostream& operator << (std::ostream& os, RS_VariableDict& d) {
 
     os << "Variables: \n";
-    RS_DictIterator<RS_Variable> it(d.variables);
-    for( ; it.current(); ++it ) {
-		// RVT_PORT changed it.currentKey() to it.currentKey().ascii()
-        os << it.currentKey().ascii() << ": ";
-        switch (it.current()->getType()) {
+    QHash<QString, RS_Variable>::iterator it = d.variables.begin();
+    while (it != d.variables.end()) {
+        os << it.key().toLatin1().data() << ": ";
+        switch (it.value().getType()) {
         case RS2::VariableVoid:
             os << "void\n";
             break;
         case RS2::VariableInt:
-            os << "int " << it.current()->getInt() << "\n";
+            os << "int " << it.value().getInt() << "\n";
             break;
         case RS2::VariableDouble:
-            os << "double " << it.current()->getDouble() << "\n";
+            os << "double " << it.value().getDouble() << "\n";
             break;
         case RS2::VariableVector:
-            os << "vector " << it.current()->getVector() << "\n";
+            os << "vector " << it.value().getVector() << "\n";
             break;
         case RS2::VariableString:
-			// RVT_PORT
-            os << "string " << it.current()->getString().ascii() << "\n";
+            os << "string " << it.value().getString().toLatin1().data() << "\n";
             break;
         }
+        ++it;
     }
     os << std::endl;
 
diff --git a/src/lib/engine/rs_variabledict.h b/src/lib/engine/rs_variabledict.h
index 07392e8..562e7c7 100644
--- a/src/lib/engine/rs_variabledict.h
+++ b/src/lib/engine/rs_variabledict.h
@@ -28,12 +28,9 @@
 #ifndef RS_VARIABLEDICT_H
 #define RS_VARIABLEDICT_H
 
-
-#include "rs_variabledict.h"
+#include <QHash>
 #include "rs_variable.h"
-#include "rs_dict.h"
-#include "rs_string.h"
-#include "rs_debug.h"
+class RS_Vector;
 
 /**
  * Dictionary of variables. The variables are stored as key / value
@@ -54,19 +51,19 @@ public:
         return variables.count();
     }
 
-    void add(const RS_String& key, const RS_Vector& value, int code);
-    void add(const RS_String& key, const RS_String& value, int code);
-    void add(const RS_String& key, int value, int code);
-    void add(const RS_String& key, double value, int code);
+    void add(const QString& key, const RS_Vector& value, int code);
+    void add(const QString& key, const QString& value, int code);
+    void add(const QString& key, int value, int code);
+    void add(const QString& key, double value, int code);
 
-    RS_Vector getVector(const RS_String& key, const RS_Vector& def);
-    RS_String getString(const RS_String& key, const RS_String& def);
-    int getInt(const RS_String& key, int def);
-    double getDouble(const RS_String& key, double def);
+    RS_Vector getVector(const QString& key, const RS_Vector& def);
+    QString getString(const QString& key, const QString& def);
+    int getInt(const QString& key, int def);
+    double getDouble(const QString& key, double def);
 
-    virtual void remove(const RS_String& key);
+    virtual void remove(const QString& key);
 
-	RS_Dict<RS_Variable>& getVariableDict() {
+        QHash<QString, RS_Variable>& getVariableDict() {
 		return variables;
 	}
 
@@ -76,7 +73,7 @@ public:
 
 private:
     //! Variables for the graphic
-    RS_Dict<RS_Variable> variables;
+    QHash<QString, RS_Variable> variables;
 }
 ;
 
diff --git a/src/lib/engine/rs_vector.cpp b/src/lib/engine/rs_vector.cpp
index e17a5c5..6b346e6 100644
--- a/src/lib/engine/rs_vector.cpp
+++ b/src/lib/engine/rs_vector.cpp
@@ -109,26 +109,29 @@ void RS_Vector::setPolar(double radius, double angle) {
  * @return The angle from zero to this vector (in rad).
  */
 double RS_Vector::angle() const {
-    double ret = 0.0;
-    double m = magnitude();
-
-    if (m>1.0e-6) {
-		double dp = dotP(*this, RS_Vector(1.0, 0.0));
-		RS_DEBUG->print("RS_Vector::angle: dp/m: %f/%f", dp, m);
-		if (dp/m>=1.0) {
-			ret = 0.0;
-		}
-		else if (dp/m<-1.0) {
-			ret = M_PI;
-		}
-		else {
-        	ret = acos( dp / m);
-		}
-        if (y<0.0) {
-            ret = 2*M_PI - ret;
-        }
-    }
-    return ret;
+        return fmod(2*M_PI+atan2(y,x),2*M_PI);
+//    double ret = 0.0;
+//    double m = magnitude();
+//
+//    if (m>1.0e-6) {
+//		double dp = dotP(*this, RS_Vector(1.0, 0.0));
+//		RS_DEBUG->print("RS_Vector::angle: dp/m: %f/%f", dp, m);
+//		if (dp/m>=1.0) {
+//			ret = 0.0;
+//		}
+//		else if (dp/m<-1.0) {
+//			ret = M_PI;
+//		}
+//		else {
+//        	ret = acos( dp / m);
+//		}
+//        if (y<0.0) {
+//            ret = 2*M_PI - ret;
+//        }
+//    }
+//    //std::cout<<"New angle="<<fmod(2*M_PI+atan2(y,x),2*M_PI)<<"\tatan2("<<y<<','<<x<<")"<<atan2(y,x)<<std::endl;
+//
+//    return ret;
 }
 
 
diff --git a/src/lib/fileio/rs_fileio.cpp b/src/lib/fileio/rs_fileio.cpp
index 64ebbd2..cc9b7cd 100644
--- a/src/lib/fileio/rs_fileio.cpp
+++ b/src/lib/fileio/rs_fileio.cpp
@@ -24,13 +24,9 @@
 **
 **********************************************************************/
 
+#include <QFileInfo>
+#include <QTextStream>
 #include "rs_fileio.h"
-#include "rs_filtercxf.h"
-#include "rs_filterdxf.h"
-#include "rs_filterdxf1.h"
-#include "rs_fileinfo.h"
-#include "rs_textstream.h"
-
 
 RS_FileIO* RS_FileIO::uniqueInstance = NULL;
 
@@ -43,10 +39,10 @@ RS_FileIO* RS_FileIO::uniqueInstance = NULL;
  *        it can also be a polyline, text, ...
  * @param file Path and name of the file to import.
  */
-bool RS_FileIO::fileImport(RS_Graphic& graphic, const RS_String& file, 
+bool RS_FileIO::fileImport(RS_Graphic& graphic, const QString& file,
 		RS2::FormatType type) {
 
-    RS_DEBUG->print("Trying to import file '%s'...", file.latin1());
+    RS_DEBUG->print("Trying to import file '%s'...", file.toLatin1().data());
 
     RS_FilterInterface* filter = NULL;
 
@@ -85,7 +81,7 @@ bool RS_FileIO::fileImport(RS_Graphic& graphic, const RS_String& file,
 	else {
 		RS_DEBUG->print(RS_Debug::D_WARNING,
 			"RS_FileIO::fileImport: failed to import file: %s", 
-			file.latin1());
+                        file.toLatin1().data());
 	}
 	
 	return false;
@@ -99,15 +95,15 @@ bool RS_FileIO::fileImport(RS_Graphic& graphic, const RS_String& file,
  *
  * @param file Path and name of the file to import.
  */
-bool RS_FileIO::fileExport(RS_Graphic& graphic, const RS_String& file,
+bool RS_FileIO::fileExport(RS_Graphic& graphic, const QString& file,
 		RS2::FormatType type) {
 
     RS_DEBUG->print("RS_FileIO::fileExport");
     //RS_DEBUG->print("Trying to export file '%s'...", file.latin1());
 
 	if (type==RS2::FormatUnknown) {
-    	RS_String extension;
-    	extension = RS_FileInfo(file).extension(false).lower();
+        QString extension;
+        extension = QFileInfo(file).suffix().toLower();
 
 		if (extension=="dxf") {
 			type = RS2::FormatDXF;
@@ -131,29 +127,29 @@ bool RS_FileIO::fileExport(RS_Graphic& graphic, const RS_String& file,
 /**
  * Detects and returns the file format of the given file.
  */
-RS2::FormatType RS_FileIO::detectFormat(const RS_String& file) {
+RS2::FormatType RS_FileIO::detectFormat(const QString& file) {
     RS2::FormatType type = RS2::FormatUnknown;
-    RS_FileInfo f(file);
+    QFileInfo fi(file);
 
-    RS_String ext = f.extension(false).lower();
+    QString ext = fi.suffix().toLower();
     if (ext=="cxf") {
         type = RS2::FormatCXF;
     } else if (ext=="dxf") {
         type = RS2::FormatDXF1;
-        RS_File f(file);
+        QFile f(file);
 
         if (!f.open(QIODevice::ReadOnly)) {
             // Error opening file:
             RS_DEBUG->print(RS_Debug::D_WARNING,
-				"RS_FileIO::detectFormat: Cannot open file: %s", file.latin1());
+                                "RS_FileIO::detectFormat: Cannot open file: %s", file.toLatin1().data());
             type = RS2::FormatUnknown;
         } else {
             RS_DEBUG->print("RS_FileIO::detectFormat: "
 				"Successfully opened DXF file: %s",
-                file.latin1());
+                file.toLatin1().data());
 
-            RS_TextStream ts(&f);
-            RS_String line;
+            QTextStream ts(&f);
+            QString line;
             int c=0;
             while (!ts.atEnd() && ++c<100) {
                 line = ts.readLine();
diff --git a/src/lib/fileio/rs_fileio.h b/src/lib/fileio/rs_fileio.h
index 22bb77e..277e4c9 100644
--- a/src/lib/fileio/rs_fileio.h
+++ b/src/lib/fileio/rs_fileio.h
@@ -27,11 +27,12 @@
 #ifndef RS_FILEIO_H
 #define RS_FILEIO_H
 
-#include "rs_entitycontainer.h"
+#include <QList>
 #include "rs_filterinterface.h"
 
 #define RS_FILEIO RS_FileIO::instance()
 
+//RLZ: TODO destructor for clear filterList
 /**
  * API Class for importing files. 
  *
@@ -62,7 +63,7 @@ public:
     /**
      * @return List of registered filters.
      */
-	RS_PtrList<RS_FilterInterface> getFilterList() {
+        QList<RS_FilterInterface*> getFilterList() {
 		return filterList;
 	}
 
@@ -70,13 +71,11 @@ public:
 	 * @return Filter which can import the given file type.
 	 */
 	RS_FilterInterface* getImportFilter(RS2::FormatType t) {
-		for (RS_FilterInterface* f=filterList.first(); 
-			f!=NULL; f=filterList.next()) {
-		
-			if (f->canImport(t)) {
-				return f;
-			}
-		}
+                for (int i = 0; i < filterList.size(); ++i) {
+                    if (filterList.at(i)->canImport(t)) {
+                                return filterList.at(i);
+                        }
+                }
 
 		return NULL;
 	}
@@ -85,28 +84,26 @@ public:
 	 * @return Filter which can export the given file type.
 	 */
 	RS_FilterInterface* getExportFilter(RS2::FormatType t) {
-		for (RS_FilterInterface* f=filterList.first(); 
-			f!=NULL; f=filterList.next()) {
-		
-			if (f->canExport(t)) {
-				return f;
-			}
-		}
+                for (int i = 0; i < filterList.size(); ++i) {
+                    if (filterList.at(i)->canExport(t)) {
+                                return filterList.at(i);
+                        }
+                }
 
 		return NULL;
 	}
 
-    bool fileImport(RS_Graphic& graphic, const RS_String& file, 
+    bool fileImport(RS_Graphic& graphic, const QString& file,
 		RS2::FormatType type = RS2::FormatUnknown);
 		
-    bool fileExport(RS_Graphic& graphic, const RS_String& file,
+    bool fileExport(RS_Graphic& graphic, const QString& file,
 		RS2::FormatType type = RS2::FormatUnknown);
 
-	RS2::FormatType detectFormat(const RS_String& file);
+        RS2::FormatType detectFormat(const QString& file);
 
 protected:
     static RS_FileIO* uniqueInstance;
-    RS_PtrList<RS_FilterInterface> filterList;
+    QList<RS_FilterInterface*> filterList;
 }
 ;
 
diff --git a/src/lib/filters/rs_filtercxf.cpp b/src/lib/filters/rs_filtercxf.cpp
index 7dcc24c..9a4a7b9 100644
--- a/src/lib/filters/rs_filtercxf.cpp
+++ b/src/lib/filters/rs_filtercxf.cpp
@@ -30,10 +30,11 @@
 #include <iostream>
 #include <fstream>
 
-#include "rs_regexp.h"
 #include "rs_font.h"
 #include "rs_utility.h"
 #include "rs_system.h"
+#include "rs_block.h"
+#include <QStringList>
 
 
 /**
@@ -57,7 +58,7 @@ RS_FilterCXF::RS_FilterCXF() : RS_FilterInterface() {
  * will be created or the graphics from which the entities are
  * taken to be stored in a file.
  */
-bool RS_FilterCXF::fileImport(RS_Graphic& g, const RS_String& file, RS2::FormatType /*type*/) {
+bool RS_FilterCXF::fileImport(RS_Graphic& g, const QString& file, RS2::FormatType /*type*/) {
     RS_DEBUG->print("CXF Filter: importing file '%s'...", file.latin1());
 
     //this->graphic = &g;
@@ -88,15 +89,15 @@ bool RS_FilterCXF::fileImport(RS_Graphic& g, const RS_String& file, RS2::FormatT
     for (uint i=0; i<font.countLetters(); ++i) {
         RS_Block* ch = font.letterAt(i);
 
-        RS_String uCode;
+        QString uCode;
         uCode.setNum(ch->getName().at(0).unicode(), 16);
         while (uCode.length()<4) {
             uCode="0"+uCode;
         }
         //ch->setName("[" + uCode + "] " + ch->getName());
-        //letterList->rename(ch, RS_String("[%1]").arg(ch->getName()));
+        //letterList->rename(ch, QString("[%1]").arg(ch->getName()));
         letterList->rename(ch,
-                           RS_String("[%1] %2").arg(uCode).arg(ch->getName().at(0)));
+                           QString("[%1] %2").arg(uCode).arg(ch->getName().at(0)));
 
         g.addBlock(ch, false);
         ch->reparent(&g);
@@ -115,7 +116,7 @@ bool RS_FilterCXF::fileImport(RS_Graphic& g, const RS_String& file, RS2::FormatT
  *
  * @param file Full path to the CXF file that will be written.
  */
-bool RS_FilterCXF::fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatType /*type*/) {
+bool RS_FilterCXF::fileExport(RS_Graphic& g, const QString& file, RS2::FormatType /*type*/) {
 
     RS_DEBUG->print("CXF Filter: exporting file '%s'...", file.latin1());
 
@@ -141,11 +142,11 @@ bool RS_FilterCXF::fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatT
                 (const char*)RS_SYSTEM->getAppVersion().local8Bit());
 
         RS_DEBUG->print("001");
-        RS_String ns = g.getVariableString("Names", "");
+        QString ns = g.getVariableString("Names", "");
         if (!ns.isEmpty()) {
-            RS_StringList names = RS_StringList::split(',', ns);
+            QStringList names = QStringList::split(',', ns);
             RS_DEBUG->print("002");
-            for (RS_StringList::Iterator it = names.begin(); it!=names.end(); ++it) {
+            for (QStringList::Iterator it = names.begin(); it!=names.end(); ++it) {
                 fprintf(fp, "# Name:              %s\n",
                         (const char*)((*it).local8Bit()));
             }
@@ -153,7 +154,7 @@ bool RS_FilterCXF::fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatT
 
         RS_DEBUG->print("003");
 
-        RS_String es = g.getVariableString("Encoding", "");
+        QString es = g.getVariableString("Encoding", "");
         if (!es.isEmpty()) {
             fprintf(fp, "# Encoding:          %s\n",
                     (const char*)es.local8Bit());
@@ -168,19 +169,19 @@ bool RS_FilterCXF::fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatT
         fprintf(fp, "# LineSpacingFactor: %f\n",
                 g.getVariableDouble("LineSpacingFactor", 1.0));
 
-        RS_String sa = g.getVariableString("Authors", "");
+        QString sa = g.getVariableString("Authors", "");
         RS_DEBUG->print("authors: %s", (const char*)sa.local8Bit());
         if (!sa.isEmpty()) {
-            RS_StringList authors = RS_StringList::split(',', sa);
+            QStringList authors = QStringList::split(',', sa);
             RS_DEBUG->print("006");
             RS_DEBUG->print("count: %d", authors.count());
 
-            RS_String a;
-            for (RS_StringList::Iterator it2 = authors.begin();
+            QString a;
+            for (QStringList::Iterator it2 = authors.begin();
                     it2!=authors.end(); ++it2) {
 
                 RS_DEBUG->print("006a");
-                a = RS_String(*it2);
+                a = QString(*it2);
                 RS_DEBUG->print("006b");
                 RS_DEBUG->print("string is: %s", a.ascii());
                 RS_DEBUG->print("006b0");
diff --git a/src/lib/filters/rs_filtercxf.h b/src/lib/filters/rs_filtercxf.h
index c951644..9a00108 100644
--- a/src/lib/filters/rs_filtercxf.h
+++ b/src/lib/filters/rs_filtercxf.h
@@ -57,9 +57,9 @@ public:
 		return (t==RS2::FormatCXF);
 	}*/
 
-    virtual bool fileImport(RS_Graphic& g, const RS_String& file, RS2::FormatType /*type*/);
+    virtual bool fileImport(RS_Graphic& g, const QString& file, RS2::FormatType /*type*/);
 
-    virtual bool fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatType /*type*/);
+    virtual bool fileExport(RS_Graphic& g, const QString& file, RS2::FormatType /*type*/);
 
     void stream(std::ofstream& fs, double value);
 };
diff --git a/src/lib/filters/rs_filterdxf.cpp b/src/lib/filters/rs_filterdxf.cpp
index 1d78aac..4662c28 100644
--- a/src/lib/filters/rs_filterdxf.cpp
+++ b/src/lib/filters/rs_filterdxf.cpp
@@ -38,13 +38,14 @@
 #include "rs_dimdiametric.h"
 #include "rs_dimlinear.h"
 #include "rs_dimradial.h"
-#include "rs_fileinfo.h"
 #include "rs_hatch.h"
 #include "rs_image.h"
 #include "rs_leader.h"
-#include "rs_regexp.h"
+#include "rs_spline.h"
 #include "rs_system.h"
 
+#include <QStringList>
+
 #include <qtextcodec.h>
 
 /**
@@ -92,7 +93,7 @@ RS_FilterDXF::~RS_FilterDXF() {
  * will be created or the graphics from which the entities are
  * taken to be stored in a file.
  */
-bool RS_FilterDXF::fileImport(RS_Graphic& g, const RS_String& file, RS2::FormatType /*type*/) {
+bool RS_FilterDXF::fileImport(RS_Graphic& g, const QString& file, RS2::FormatType /*type*/) {
     RS_DEBUG->print("RS_FilterDXF::fileImport");
     //RS_DEBUG->timestamp();
 
@@ -199,15 +200,15 @@ void RS_FilterDXF::addBlock(const DL_BlockData& data) {
 
 
     // Prevent special blocks (paper_space, model_space) from being added:
-    if (RS_String(QString::fromUtf8(data.name.c_str())).lower()!="*paper_space0" &&
-            RS_String(QString::fromUtf8(data.name.c_str())).lower()!="*paper_space" &&
-            RS_String(QString::fromUtf8(data.name.c_str())).lower()!="*model_space" &&
-            RS_String(QString::fromUtf8(data.name.c_str())).lower()!="$paper_space0" &&
-            RS_String(QString::fromUtf8(data.name.c_str())).lower()!="$paper_space" &&
-            RS_String(QString::fromUtf8(data.name.c_str())).lower()!="$model_space") {
+    if (QString(QString::fromUtf8(data.name.c_str())).lower()!="*paper_space0" &&
+            QString(QString::fromUtf8(data.name.c_str())).lower()!="*paper_space" &&
+            QString(QString::fromUtf8(data.name.c_str())).lower()!="*model_space" &&
+            QString(QString::fromUtf8(data.name.c_str())).lower()!="$paper_space0" &&
+            QString(QString::fromUtf8(data.name.c_str())).lower()!="$paper_space" &&
+            QString(QString::fromUtf8(data.name.c_str())).lower()!="$model_space") {
 
 #ifndef RS_NO_COMPLEX_ENTITIES
-        if (RS_String(QString::fromUtf8(QString::fromUtf8(data.name.c_str()))).startsWith("__CE")) {
+        if (QString(QString::fromUtf8(QString::fromUtf8(data.name.c_str()))).startsWith("__CE")) {
             RS_EntityContainer* ec = new RS_EntityContainer();
             ec->setLayer("0");
             currentContainer = ec;
@@ -432,7 +433,7 @@ void RS_FilterDXF::addInsert(const DL_InsertData& data) {
 
     RS_DEBUG->print("RS_FilterDXF::addInsert");
 
-    if (RS_String(data.name.c_str()).left(3)=="A$C") {
+    if (QString(data.name.c_str()).left(3)=="A$C") {
         return;
     }
 
@@ -481,7 +482,7 @@ void RS_FilterDXF::addMText(const DL_MTextData& data) {
     RS2::HAlign halign;
     RS2::TextDrawingDirection dir;
     RS2::TextLineSpacingStyle lss;
-    RS_String sty = QString::fromUtf8(data.style.c_str());
+    QString sty = QString::fromUtf8(data.style.c_str());
     sty=sty.lower();
 
     if (data.attachmentPoint<=3) {
@@ -520,7 +521,7 @@ void RS_FilterDXF::addMText(const DL_MTextData& data) {
     // use default style for the drawing:
     if (sty.isEmpty()) {
         // japanese, cyrillic:
-        RS_String codepage = variables.getString("$DWGCODEPAGE", "ANSI_1252");
+        QString codepage = variables.getString("$DWGCODEPAGE", "ANSI_1252");
         if (codepage=="ANSI_932" || codepage=="ANSI_1251") {
             sty = "Unicode";
         } else {
@@ -655,9 +656,9 @@ RS_DimensionData RS_FilterDXF::convDimensionData(
     RS2::VAlign valign;
     RS2::HAlign halign;
     RS2::TextLineSpacingStyle lss;
-    RS_String sty = QString::fromUtf8(data.style.c_str());
+    QString sty = QString::fromUtf8(data.style.c_str());
 
-    RS_String t; //= data.text;
+    QString t; //= data.text;
 
     // middlepoint of text can be 0/0 which is considered to be invalid (!):
     //  0/0 because older QCad versions save the middle of the text as 0/0
@@ -896,8 +897,9 @@ void RS_FilterDXF::addHatch(const DL_HatchData& data) {
                          RS_HatchData(data.solid,
                                       data.scale,
                                       data.angle,
-                                      RS_String(QString::fromUtf8(data.pattern.c_str()))));
+                                      QString(QString::fromUtf8(data.pattern.c_str()))));
     setEntityAttributes(hatch, attributes);
+    omitHatchLoop = false;
 
     currentContainer->addEntity(hatch);
 }
@@ -907,9 +909,13 @@ void RS_FilterDXF::addHatch(const DL_HatchData& data) {
 /**
  * Implementation of the method which handles hatch loops.
  */
-void RS_FilterDXF::addHatchLoop(const DL_HatchLoopData& /*data*/) {
+void RS_FilterDXF::addHatchLoop(const DL_HatchLoopData& data) {
     RS_DEBUG->print("RS_FilterDXF::addHatchLoop()");
-    if (hatch!=NULL) {
+    if ( (data.pathType & 32) == 32)
+        omitHatchLoop = true;
+    else
+        omitHatchLoop = false;
+    if (hatch!=NULL && !omitHatchLoop) {
         hatchLoop = new RS_EntityContainer(hatch);
         hatchLoop->setLayer(NULL);
         hatch->addEntity(hatchLoop);
@@ -924,7 +930,7 @@ void RS_FilterDXF::addHatchLoop(const DL_HatchLoopData& /*data*/) {
 void RS_FilterDXF::addHatchEdge(const DL_HatchEdgeData& data) {
     RS_DEBUG->print("RS_FilterDXF::addHatchEdge()");
 
-    if (hatchLoop!=NULL) {
+    if (hatchLoop!=NULL && !omitHatchLoop) {
         RS_Entity* e = NULL;
         switch (data.type) {
         case 1:
@@ -987,10 +993,10 @@ void RS_FilterDXF::addImage(const DL_ImageData& data) {
     RS_Image* image =
         new RS_Image(
             currentContainer,
-            RS_ImageData(RS_String(data.ref.c_str()).toInt(NULL, 16),
+            RS_ImageData(QString(data.ref.c_str()).toInt(NULL, 16),
                          ip, uv, vv,
                          size,
-                         RS_String(""),
+                         QString(""),
                          data.brightness,
                          data.contrast,
                          data.fade));
@@ -1007,10 +1013,10 @@ void RS_FilterDXF::addImage(const DL_ImageData& data) {
 void RS_FilterDXF::linkImage(const DL_ImageDefData& data) {
     RS_DEBUG->print("RS_FilterDXF::linkImage");
 
-    int handle = RS_String(data.ref.c_str()).toInt(NULL, 16);
-    RS_String sfile(QString::fromUtf8(data.file.c_str()));
-    RS_FileInfo fiDxf(file);
-    RS_FileInfo fiBitmap(sfile);
+    int handle = QString(data.ref.c_str()).toInt(NULL, 16);
+    QString sfile(QString::fromUtf8(data.file.c_str()));
+    QFileInfo fiDxf(file);
+    QFileInfo fiBitmap(sfile);
 
     // try to find the image file:
 
@@ -1019,14 +1025,14 @@ void RS_FilterDXF::linkImage(const DL_ImageDefData& data) {
         RS_DEBUG->print("File %s doesn't exist.",
                         (const char*)QFile::encodeName(sfile));
         // try relative path:
-        RS_String f1 = fiDxf.dirPath(true) + "/" + sfile;
-        if (RS_FileInfo(f1).exists()) {
+        QString f1 = fiDxf.absolutePath() + "/" + sfile;
+        if (QFileInfo(f1).exists()) {
             sfile = f1;
         } else {
             RS_DEBUG->print("File %s doesn't exist.", (const char*)QFile::encodeName(f1));
             // try drawing path:
-            RS_String f2 = fiDxf.dirPath(true) + "/" + fiBitmap.fileName();
-            if (RS_FileInfo(f2).exists()) {
+            QString f2 = fiDxf.absolutePath() + "/" + fiBitmap.fileName();
+            if (QFileInfo(f2).exists()) {
                 sfile = f2;
             } else {
                 RS_DEBUG->print("File %s doesn't exist.", (const char*)QFile::encodeName(f2));
@@ -1100,7 +1106,7 @@ void RS_FilterDXF::setVariableVector(const char* key,
 
     // update document's variable list:
     if (currentContainer->rtti()==RS2::EntityGraphic) {
-        ((RS_Graphic*)currentContainer)->addVariable(RS_String(key),
+        ((RS_Graphic*)currentContainer)->addVariable(QString(key),
                 RS_Vector(v1, v2, v3), code);
     }
 }
@@ -1115,12 +1121,12 @@ void RS_FilterDXF::setVariableString(const char* key,
     RS_DEBUG->print("RS_FilterDXF::setVariableString");
 
     // update local DXF variable list:
-    variables.add(RS_String(key), RS_String(value), code);
+    variables.add(QString(key), QString(value), code);
 
     // update document's variable list:
     if (currentContainer->rtti()==RS2::EntityGraphic) {
-        ((RS_Graphic*)currentContainer)->addVariable(RS_String(key),
-                RS_String(value), code);
+        ((RS_Graphic*)currentContainer)->addVariable(QString(key),
+                QString(value), code);
     }
 }
 
@@ -1134,7 +1140,7 @@ void RS_FilterDXF::setVariableInt(const char* key, int value, int code) {
 
     // update document's variable list:
     if (currentContainer->rtti()==RS2::EntityGraphic) {
-        ((RS_Graphic*)currentContainer)->addVariable(RS_String(key),
+        ((RS_Graphic*)currentContainer)->addVariable(QString(key),
                 value, code);
     }
 }
@@ -1149,7 +1155,7 @@ void RS_FilterDXF::setVariableDouble(const char* key, double value, int code) {
 
     // update document's variable list:
     if (currentContainer->rtti()==RS2::EntityGraphic) {
-        ((RS_Graphic*)currentContainer)->addVariable(RS_String(key),
+        ((RS_Graphic*)currentContainer)->addVariable(QString(key),
                 value, code);
     }
 
@@ -1163,7 +1169,7 @@ void RS_FilterDXF::setVariableDouble(const char* key, double value, int code) {
  *
  * @param file Full path to the DXF file that will be written.
  */
-bool RS_FilterDXF::fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatType type) {
+bool RS_FilterDXF::fileExport(RS_Graphic& g, const QString& file, RS2::FormatType type) {
 
     RS_DEBUG->print("RS_FilterDXF::fileExport: exporting file '%s'...",
                     (const char*)QFile::encodeName(file));
@@ -1174,8 +1180,8 @@ bool RS_FilterDXF::fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatT
     // check if we can write to that directory:
 #ifndef Q_OS_WIN
 
-    RS_String path = RS_FileInfo(file).dirPath(true);
-    if (RS_FileInfo(path).isWritable()==false) {
+    QString path = QFileInfo(file).absolutePath();
+    if (QFileInfo(path).isWritable()==false) {
         RS_DEBUG->print("RS_FilterDXF::fileExport: can't write file: "
                         "no permission");
         return false;
@@ -1340,7 +1346,7 @@ bool RS_FilterDXF::fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatT
         dxf.writeObjects(*dw);
 
         // IMAGEDEF's from images in entities and images in blocks
-        RS_StringList written;
+        QStringList written;
         for (uint i=0; i<graphic->countBlocks(); ++i) {
             RS_Block* block = graphic->blockAt(i);
             for (RS_Entity* e=block->firstEntity(RS2::ResolveAll);
@@ -1382,7 +1388,7 @@ bool RS_FilterDXF::fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatT
     delete dw;
 
     // check if file was actually written (strange world of windoze xp):
-    if (RS_FileInfo(file).exists()==false) {
+    if (QFileInfo(file).exists()==false) {
         RS_DEBUG->print("RS_FilterDXF::fileExport: file could not be written");
         return false;
     }
@@ -1396,41 +1402,43 @@ bool RS_FilterDXF::fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatT
  * Writes all known variable settings to the DXF file.
  */
 void RS_FilterDXF::writeVariables(DL_WriterA& dw) {
-    RS_DictIterator<RS_Variable> it(graphic->getVariableDict());
-    for (; it.current(); ++it) {
+    QHash<QString, RS_Variable>vars = graphic->getVariableDict();
+    QHash<QString, RS_Variable>::iterator it = vars.begin();
+    while (it != vars.end()) {
         // exclude variables that are not known to DXF 12:
-        if (!DL_Dxf::checkVariable(it.currentKey().latin1(), dxf.getVersion())) {
+        if (!DL_Dxf::checkVariable(it.key().toLatin1(), dxf.getVersion())) {
             continue;
         }
 
-        if (it.currentKey()!="$ACADVER" && it.currentKey()!="$HANDSEED") {
+        if (it.key()!="$ACADVER" && it.key()!="$HANDSEED") {
 
-            dw.dxfString(9, (const char*) it.currentKey());
-            switch (it.current()->getType()) {
+            dw.dxfString(9, it.key().toLatin1());
+            switch (it.value().getType()) {
             case RS2::VariableVoid:
                 break;
             case RS2::VariableInt:
-                dw.dxfInt(it.current()->getCode(), it.current()->getInt());
+                dw.dxfInt(it.value().getCode(), it.value().getInt());
                 break;
             case RS2::VariableDouble:
-                dw.dxfReal(it.current()->getCode(), it.current()->getDouble());
+                dw.dxfReal(it.value().getCode(), it.value().getDouble());
                 break;
             case RS2::VariableString:
-                dw.dxfString(it.current()->getCode(),
-                             (const char*) it.current()->getString());
+                dw.dxfString(it.value().getCode(),
+                             it.value().getString().toLatin1());
                 break;
             case RS2::VariableVector:
-                dw.dxfReal(it.current()->getCode(),
-                           it.current()->getVector().x);
-                dw.dxfReal(it.current()->getCode()+10,
-                           it.current()->getVector().y);
-                if (isVariableTwoDimensional(it.currentKey())==false) {
-                    dw.dxfReal(it.current()->getCode()+20,
-                               it.current()->getVector().z);
+                dw.dxfReal(it.value().getCode(),
+                           it.value().getVector().x);
+                dw.dxfReal(it.value().getCode()+10,
+                           it.value().getVector().y);
+                if ( isVariableTwoDimensional(it.key()) == false) {
+                    dw.dxfReal(it.value().getCode()+20,
+                               it.value().getVector().z);
                 }
                 break;
             }
         }
+        ++it;
     }
     dw.sectionEnd();
 }
@@ -1750,8 +1758,8 @@ void RS_FilterDXF::writeSpline(DL_WriterA& dw,
         attrib);
 
     // write spline knots:
-    RS_ValueList<RS_Vector> cp = s->getControlPoints();
-    RS_ValueList<RS_Vector>::iterator it;
+    QList<RS_Vector> cp = s->getControlPoints();
+    QList<RS_Vector>::iterator it;
 
     int k = s->getDegree()+1;
     DL_KnotData kd;
@@ -2262,7 +2270,7 @@ void RS_FilterDXF::writeImage(DL_WriterA& dw, RS_Image* i,
 
 void RS_FilterDXF::writeEntityContainer(DL_WriterA& dw, RS_EntityContainer* con,
                                         const DL_Attributes& /*attrib*/) {
-    RS_String blkName;
+    QString blkName;
     blkName = "__CE";
 
     // Creating an unique ID from the element ID
@@ -2398,7 +2406,7 @@ DL_Attributes RS_FilterDXF::getEntityAttributes(RS_Entity* entity) {
 
     // Layer:
     RS_Layer* layer = entity->getLayer();
-    RS_String layerName;
+    QString layerName;
     if (layer!=NULL) {
         layerName = layer->getName();
     } else {
@@ -2412,7 +2420,7 @@ DL_Attributes RS_FilterDXF::getEntityAttributes(RS_Entity* entity) {
     //printf("Color is: %s -> %d\n", pen.getColor().name().latin1(), color);
 
     // Linetype:
-    RS_String lineType = lineTypeToName(pen.getLineType());
+    QString lineType = lineTypeToName(pen.getLineType());
 
     // Width:
     int width = widthToNumber(pen.getWidth());
@@ -2596,9 +2604,9 @@ void RS_FilterDXF::addComment(const char*) {
  * Converts a line type name (e.g. "CONTINUOUS") into a RS2::LineType
  * object.
  */
-RS2::LineType RS_FilterDXF::nameToLineType(const RS_String& name) {
+RS2::LineType RS_FilterDXF::nameToLineType(const QString& name) {
 
-    RS_String uName = name.upper();
+    QString uName = name.upper();
 
     // Standard linetypes for QCad II / AutoCAD
     if (uName.isEmpty() || uName=="BYLAYER") {
@@ -2681,7 +2689,7 @@ RS2::LineType RS_FilterDXF::nameToLineType(const RS_String& name) {
 /**
  * Converts a RS_LineType into a name for a line type.
  */
-RS_String RS_FilterDXF::lineTypeToName(RS2::LineType lineType) {
+QString RS_FilterDXF::lineTypeToName(RS2::LineType lineType) {
 
     // Standard linetypes for QCad II / AutoCAD
     switch (lineType) {
@@ -2769,7 +2777,7 @@ RS_String RS_FilterDXF::lineTypeToName(RS2::LineType lineType) {
 /**
  * Converts a RS_LineType into a name for a line type.
  */
-/*RS_String RS_FilterDXF::lineTypeToDescription(RS2::LineType lineType) {
+/*QString RS_FilterDXF::lineTypeToDescription(RS2::LineType lineType) {
  
     // Standard linetypes for QCad II / AutoCAD
     switch (lineType) {
@@ -2898,8 +2906,8 @@ int RS_FilterDXF::widthToNumber(RS2::LineWidth width) {
  * - %%%d for a degree sign
  * - %%%p for a plus/minus sign
  */
-RS_String RS_FilterDXF::toDxfString(const RS_String& string) {
-    RS_String res = "";
+QString RS_FilterDXF::toDxfString(const QString& string) {
+    QString res = "";
 
     for (uint i=0; i<string.length(); ++i) {
         int c = string.at(i).unicode();
@@ -2925,12 +2933,12 @@ RS_String RS_FilterDXF::toDxfString(const RS_String& string) {
             break;
         default:
             if (c>127) {
-                RS_String hex;
-                hex = RS_String("%1").arg(c, 4, 16);
+                QString hex;
+                hex = QString("%1").arg(c, 4, 16);
 
                 hex = hex.replace(' ', '0');
 
-                res+=RS_String("\\U+%1").arg(hex);
+                res+=QString("\\U+%1").arg(hex);
             } else {
                 res+=string.at(i);
             }
@@ -2946,43 +2954,41 @@ RS_String RS_FilterDXF::toDxfString(const RS_String& string) {
 /**
  * Converts a DXF encoded string into a native Unicode string.
  */
-RS_String RS_FilterDXF::toNativeString(const char* data, const QString& encoding) {
-    RS_String res = QString(data);
+QString RS_FilterDXF::toNativeString(const char* data, const QString& encoding) {
+    QString res = QString(data);
 
-    // If the given string doesn't contain any unicode characters, we pass the string
-    // Through a textcoder, if that is possible, to convert the string to unicode
-    // We try to use the DWGCODEPAGE if it's available, else we just return the string and assume it's latin1
+    /*	- If the given string doesn't contain any unicode characters, we pass
+     *	  the string through a textcoder.
+     *	--------------------------------------------------------------------- */
     if (!res.contains("\\U+")) {
         QTextCodec *codec = QTextCodec::codecForName(encoding);
         if (codec)
             res = codec->toUnicode(data);
-        return res;
     }
 
-
     // Line feed:
-    res = res.replace(RS_RegExp("\\\\P"), "\n");
+    res = res.replace(QRegExp("\\\\P"), "\n");
     // Space:
-    res = res.replace(RS_RegExp("\\\\~"), " ");
+    res = res.replace(QRegExp("\\\\~"), " ");
     // diameter:
-    res = res.replace(RS_RegExp("%%c"), QChar(0x2205));
+    res = res.replace(QRegExp("%%c"), QChar(0x2205));
     // degree:
-    res = res.replace(RS_RegExp("%%d"), QChar(0x00B0));
+    res = res.replace(QRegExp("%%d"), QChar(0x00B0));
     // plus/minus
-    res = res.replace(RS_RegExp("%%p"), QChar(0x00B1));
+    res = res.replace(QRegExp("%%p"), QChar(0x00B1));
 
     // Unicode characters:
-    RS_String cap = "";
+    QString cap = "";
     int uCode = 0;
     bool ok = false;
     do {
-        RS_RegExp regexp("\\\\U\\+[0-9A-Fa-f]{4,4}");
-        regexp.search(res);
+        QRegExp regexp("\\\\U\\+[0-9A-Fa-f]{4,4}");
+        regexp.indexIn(res);
         cap = regexp.cap();
         if (!cap.isNull()) {
             uCode = cap.right(4).toInt(&ok, 16);
             // workaround for Qt 3.0.x:
-            res.replace(RS_RegExp("\\\\U\\+" + cap.right(4)), QChar(uCode));
+            res.replace(QRegExp("\\\\U\\+" + cap.right(4)), QChar(uCode));
             // for Qt 3.1:
             //res.replace(cap, QChar(uCode));
         }
@@ -2994,13 +3000,13 @@ RS_String RS_FilterDXF::toNativeString(const char* data, const QString& encoding
     uCode = 0;
     ok = false;
     do {
-        RS_RegExp regexp("%%[0-9]{3,3}");
-        regexp.search(res);
+        QRegExp regexp("%%[0-9]{3,3}");
+        regexp.indexIn(res);
         cap = regexp.cap();
         if (!cap.isNull()) {
             uCode = cap.right(3).toInt(&ok, 10);
             // workaround for Qt 3.0.x:
-            res.replace(RS_RegExp("%%" + cap.right(3)), QChar(uCode));
+            res.replace(QRegExp("%%" + cap.right(3)), QChar(uCode));
             // for Qt 3.1:
             //res.replace(cap, QChar(uCode));
         }
@@ -3008,7 +3014,7 @@ RS_String RS_FilterDXF::toNativeString(const char* data, const QString& encoding
     while (!cap.isNull());
 
     // Ignore font tags:
-    res = res.replace(RS_RegExp("\\\\f[0-9A-Za-z| ]{0,};"), "");
+    res = res.replace(QRegExp("\\\\f[0-9A-Za-z| ]{0,};"), "");
 
     // Ignore {}
     res = res.replace("\\{", "#curly#");
@@ -3247,7 +3253,7 @@ int RS_FilterDXF::unitToNumber(RS2::Unit unit) {
 /**
  * Checks if the given variable is two-dimensional (e.g. $LIMMIN).
  */
-bool RS_FilterDXF::isVariableTwoDimensional(const RS_String& var) {
+bool RS_FilterDXF::isVariableTwoDimensional(const QString& var) {
     if (var=="$LIMMIN" ||
             var=="$LIMMAX" ||
             var=="$PLIMMIN" ||
diff --git a/src/lib/filters/rs_filterdxf.h b/src/lib/filters/rs_filterdxf.h
index 97b290a..53c1329 100644
--- a/src/lib/filters/rs_filterdxf.h
+++ b/src/lib/filters/rs_filterdxf.h
@@ -32,15 +32,11 @@
 
 #include "rs_block.h"
 #include "rs_color.h"
-#include "rs_dict.h"
 #include "rs_dimension.h"
-#include "rs_hatch.h"
 #include "rs_insert.h"
 #include "rs_layer.h"
-#include "rs_layer.h"
 #include "rs_leader.h"
 #include "rs_polyline.h"
-#include "rs_spline.h"
 #include "rs_solid.h"
 #include "rs_text.h"
 #include "rs_image.h"
@@ -48,7 +44,8 @@
 #include "dl_creationinterface.h"
 #include "dl_dxf.h"
 
-
+class RS_Spline;
+class RS_Hatch;
 class DL_WriterA;
 
 /**
@@ -79,7 +76,7 @@ public:
 	}*/
 
     // Import:
-    virtual bool fileImport(RS_Graphic& g, const RS_String& file, RS2::FormatType /*type*/);
+    virtual bool fileImport(RS_Graphic& g, const QString& file, RS2::FormatType /*type*/);
 
     // Methods from DL_CreationInterface:
     virtual void addLayer(const DL_LayerData& data);
@@ -136,7 +133,7 @@ public:
     virtual void setVariableDouble(const char* key, double value, int code);
 
     // Export:
-    virtual bool fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatType type);
+    virtual bool fileExport(RS_Graphic& g, const QString& file, RS2::FormatType type);
 
     void writeVariables(DL_WriterA& dw);
     void writeLayer(DL_WriterA& dw, RS_Layer* l);
@@ -172,8 +169,8 @@ public:
     void setEntityAttributes(RS_Entity* entity, const DL_Attributes& attrib);
     DL_Attributes getEntityAttributes(RS_Entity* entity);
 
-    static RS_String toDxfString(const RS_String& string);
-    static RS_String toNativeString(const char* data, const QString& encoding);
+    static QString toDxfString(const QString& string);
+    static QString toNativeString(const char* data, const QString& encoding);
     QString getDXFEncoding();
 
 public:
@@ -182,9 +179,9 @@ public:
     static RS_Color numberToColor(int num, bool comp=false);
     static int colorToNumber(const RS_Color& col);
 
-    static RS2::LineType nameToLineType(const RS_String& name);
-    static RS_String lineTypeToName(RS2::LineType lineType);
-    //static RS_String lineTypeToDescription(RS2::LineType lineType);
+    static RS2::LineType nameToLineType(const QString& name);
+    static QString lineTypeToName(RS2::LineType lineType);
+    //static QString lineTypeToDescription(RS2::LineType lineType);
 
     static RS2::LineWidth numberToWidth(int num);
     static int widthToNumber(RS2::LineWidth width);
@@ -195,15 +192,15 @@ public:
 	static RS2::Unit numberToUnit(int num);
 	static int unitToNumber(RS2::Unit unit);
 	
-	static bool isVariableTwoDimensional(const RS_String& var);
+        static bool isVariableTwoDimensional(const QString& var);
 
 private:
     /** Pointer to the graphic we currently operate on. */
     RS_Graphic* graphic;
 	/** File name. Used to find out the full path of images. */
-	RS_String file;
+        QString file;
     /** string for concatinating text parts of MTEXT entities. */
-    RS_String mtext;
+    QString mtext;
     /** Pointer to current polyline entity we're adding vertices to. */
     RS_Polyline* polyline;
     /** Pointer to current spline entity we're adding control points to. */
@@ -220,6 +217,7 @@ private:
 
     DL_Dxf dxf;
     RS_VariableDict variables;
+    bool omitHatchLoop;
 }
 ;
 
diff --git a/src/lib/filters/rs_filterdxf1.cpp b/src/lib/filters/rs_filterdxf1.cpp
index b40330c..8f96adb 100644
--- a/src/lib/filters/rs_filterdxf1.cpp
+++ b/src/lib/filters/rs_filterdxf1.cpp
@@ -30,8 +30,6 @@
 
 #include <iostream>
 
-#include "rs_file.h"
-#include "rs_regexp.h"
 #include "rs_font.h"
 #include "rs_information.h"
 #include "rs_utility.h"
@@ -66,7 +64,7 @@ RS_FilterDXF1::RS_FilterDXF1()
  * will be created or the graphics from which the entities are
  * taken to be stored in a file.
  */
-bool RS_FilterDXF1::fileImport(RS_Graphic& g, const RS_String& file, RS2::FormatType /*type*/) {
+bool RS_FilterDXF1::fileImport(RS_Graphic& g, const QString& file, RS2::FormatType /*type*/) {
     RS_DEBUG->print("DXF1 Filter: importing file '%s'...", file.latin1());
 
 	this->graphic = &g;
@@ -95,8 +93,8 @@ bool RS_FilterDXF1::readFromBuffer() {
     RS_DEBUG->print( "\nDXF: Read from buffer" );
 
     bool      ret;                    // returned value
-    RS_String   dxfLine;                // A line in the dxf file
-    RS_String   dxfCode;                // A Code in the dxf file as string
+    QString   dxfLine;                // A line in the dxf file
+    QString   dxfCode;                // A Code in the dxf file as string
     int       code=-1;                // Dxf-code as number
     double    vx1=0.0, vy1=0.0;       // Start point
     double    vx2=0.0, vy2=0.0;       // End point
@@ -107,7 +105,7 @@ bool RS_FilterDXF1::readFromBuffer() {
     //           vpx=0.0, vpy=0.0;       // First Polyline point
     //double    ax=0.0, ay=0.0;         // Current coordinate
     //bool      plClose=false;          // Polyline closed-flag
-    RS_String lastLayer;              // Last used layer name (test adding only
+    QString lastLayer;              // Last used layer name (test adding only
     //   if the new layer!=lastLayer)
     //int       currentLayerNum=0;      // Current layer number
     RS_Layer* currentLayer=0;         // Pointer to current layer
@@ -886,14 +884,14 @@ bool RS_FilterDXF1::readFromBuffer() {
                 // -----
                 else if(dxfLine=="TEXT") {
 
-                    RS_String vtext;          // the text
+                    QString vtext;          // the text
                     char  vtextStyle[256];  // text style (normal_ro, cursive_ri, normal_st, ...)
                     double vheight=10.0;     // text height
                     double vtextAng=0.0;     // text angle
                     //double vradius=0.0;      // text radius
                     //double vletterspace=2.0; // Text letter space
                     //double vwordspace=6.0;   // Text wordspace
-                    RS_String vfont;         // font "normal", "cursive", ...
+                    QString vfont;         // font "normal", "cursive", ...
                     RS2::HAlign vhalign=RS2::HAlignLeft;
                     // alignment (0=left, 1=center, 2=right)
                     //int   vattachement=7;   // 1=top left, 2, 3, 4, 5, 6, 7, 8, 9=bottom right
@@ -1078,7 +1076,7 @@ bool RS_FilterDXF1::readFromBuffer() {
                     double v15=0.0, v25=0.0;
                     double v16=0.0, v26=0.0;
                     double v40=0.0, v50=0.0;
-                    RS_String dimText;
+                    QString dimText;
                     do {
                         dxfCode=getBufLine();
                         if(dxfCode.size()) {
@@ -1418,7 +1416,7 @@ bool RS_FilterDXF1::readFromBuffer() {
                 // ---------
                 /*
                       else if(dxfLine=="HATCH") {
-                        RS_String patternName="45";
+                        QString patternName="45";
                         double patternScale=1.0;
                         //int numPaths=1;
                         //int numEdges=1;
@@ -1644,12 +1642,12 @@ void RS_FilterDXF1::dos2unix() {
 // return:  -Null-string: end of buffer
 //          -String which is the next line in buffer
 //
-RS_String RS_FilterDXF1::getBufLine() {
+QString RS_FilterDXF1::getBufLine() {
     char *ret;
-    RS_String str;
+    QString str;
 
     if (fBufP >= (int)fSize)
-        return RS_String::null;
+        return QString::null;
 
     ret = &fBuf[fBufP];
 
@@ -1658,7 +1656,7 @@ RS_String RS_FilterDXF1::getBufLine() {
         while (++fBufP < (int)fSize && fBuf[fBufP] == '\0')
             ;
         if (fBufP >= (int)fSize)
-            return RS_String::null;
+            return QString::null;
         ret = &fBuf[fBufP];
 }*/
 
@@ -1666,7 +1664,7 @@ RS_String RS_FilterDXF1::getBufLine() {
     while (fBufP < (int)fSize && fBuf[fBufP++] != '\0')
         ;
 
-    str = RS_String::fromLocal8Bit(ret).stripWhiteSpace();
+    str = QString::fromLocal8Bit(ret).stripWhiteSpace();
 
     if (str.isNull()) {
         return "";
@@ -1727,7 +1725,7 @@ void RS_FilterDXF1::copyBufFrom(const char* _buf) {
 //         false: end of buffer
 //
 bool RS_FilterDXF1::gotoBufLine(char* _lstr) {
-    RS_String l;
+    QString l;
     do {
         l=getBufLine();
     } while(!l.isNull() && l!=_lstr);
@@ -1746,7 +1744,7 @@ bool RS_FilterDXF1::gotoBufLine(char* _lstr) {
 //
 //
 bool RS_FilterDXF1::gotoBufLineString(char* _lstr) {
-    RS_String l;
+    QString l;
     do {
         l=getBufLine();
     } while(!l.isNull() && l.contains(_lstr));
@@ -1861,7 +1859,7 @@ bool RS_FilterDXF1::readFileInBuffer(int _bNum) {
 
 // Decode a DXF string to the C-convention (special character \P is a \n)
 //
-void RS_FilterDXF1::strDecodeDxfString(RS_String& str) {
+void RS_FilterDXF1::strDecodeDxfString(QString& str) {
     if (str.isEmpty())
         return;
     str.replace(QRegExp("%%c"), QChar(0xF8)); // Diameter
diff --git a/src/lib/filters/rs_filterdxf1.h b/src/lib/filters/rs_filterdxf1.h
index 7b29df4..2ce4e71 100644
--- a/src/lib/filters/rs_filterdxf1.h
+++ b/src/lib/filters/rs_filterdxf1.h
@@ -29,9 +29,9 @@
 #define RS_FILTERDXF1_H
 
 #include <fstream>
+#include <QFile>
 
 #include "rs_filterinterface.h"
-#include "rs_file.h"
 
 /**
  * This format filter class can import and export old DXF files
@@ -62,9 +62,9 @@ public:
 		return false;
 	}*/
 
-    virtual bool fileImport(RS_Graphic& g, const RS_String& file, RS2::FormatType /*type*/);
+    virtual bool fileImport(RS_Graphic& g, const QString& file, RS2::FormatType /*type*/);
 
-    virtual bool fileExport(RS_Graphic& /*g*/, const RS_String& /*file*/, 
+    virtual bool fileExport(RS_Graphic& /*g*/, const QString& /*file*/,
 		RS2::FormatType /*type*/) {
         RS_DEBUG->print(RS_Debug::D_WARNING,
                         "Exporting of QCad 1.x file not implemented");
@@ -83,7 +83,7 @@ public:
     void    delBuffer();
     void    dos2unix();
 
-    RS_String getBufLine();
+    QString getBufLine();
     char*   getBufLineCh();
     char*   getBuf() {
         return fBuf;
@@ -109,7 +109,7 @@ public:
     bool    readFileInBuffer(char* _name, int _bNum=-1);
     bool    readFileInBuffer(int _bNum=-1);
 
-    void     strDecodeDxfString(RS_String& str);
+    void     strDecodeDxfString(QString& str);
     bool     mtCompFloat(double _v1, double _v2, double _tol=1.0e-6);
 
 protected:
@@ -121,8 +121,8 @@ protected:
     uint    fSize;            // Filesize
     bool    dosFile;          // File is in DOS-format
     int       numElements;
-    RS_String name;
-    RS_File  file;
+    QString name;
+    QFile  file;
 }
 ;
 
diff --git a/src/lib/filters/rs_filterinterface.h b/src/lib/filters/rs_filterinterface.h
index 261e750..83a19ed 100644
--- a/src/lib/filters/rs_filterinterface.h
+++ b/src/lib/filters/rs_filterinterface.h
@@ -30,11 +30,6 @@
 
 #include "rs_graphic.h"
 
-#include "rs_string.h"
-#include "rs_valuelist.h"
-
-#include "rs_debug.h"
-
 /**
  * This is the interface that must be implemented for all 
  * format filter classes. The RS_FileIO class 
@@ -65,7 +60,7 @@ public:
      * @retval false otherwise.
      */
     virtual bool canImport(RS2::FormatType t) {
-        return !(importFormats.find(t)==importFormats.end());
+        return importFormats.contains(t);
     }
 
     /**
@@ -75,7 +70,7 @@ public:
      *         false otherwise.
      */
     virtual bool canExport(RS2::FormatType t) {
-        return !(exportFormats.find(t)==exportFormats.end());
+        return exportFormats.contains(t);
     }
 
     /**
@@ -83,14 +78,14 @@ public:
      * class should read a file from disk and put the entities
      * into the current entity container.
      */
-    virtual bool fileImport(RS_Graphic& g, const RS_String& file, RS2::FormatType type) = 0;
+    virtual bool fileImport(RS_Graphic& g, const QString& file, RS2::FormatType type) = 0;
 
     /**
      * The implementation of this method in a inherited format
      * class should write the entities in the current entity container
      * to a file on the disk.
      */
-    virtual bool fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatType type) = 0;
+    virtual bool fileExport(RS_Graphic& g, const QString& file, RS2::FormatType type) = 0;
 
 protected:
     /**
@@ -114,10 +109,10 @@ protected:
     //RS_Graphic* graphic;
 
     //! Vector of file extensions this filter can import.
-    RS_ValueList<RS2::FormatType> importFormats;
+    QList<RS2::FormatType> importFormats;
 
     //! Vector of file extensions this filter can export.
-    RS_ValueList<RS2::FormatType> exportFormats;
+    QList<RS2::FormatType> exportFormats;
 };
 
 #endif
diff --git a/src/lib/gui/rs_commandevent.h b/src/lib/gui/rs_commandevent.h
index c95ede5..4a80426 100644
--- a/src/lib/gui/rs_commandevent.h
+++ b/src/lib/gui/rs_commandevent.h
@@ -38,7 +38,7 @@ public:
 	 *
 	 * @param cmd the command that was triggered.
 	 */
-    RS_CommandEvent(const RS_String& cmd) {
+    RS_CommandEvent(const QString& cmd) {
         this->cmd = cmd;
 		accepted = false;
     }
@@ -47,7 +47,7 @@ public:
 	 * @return the command that was triggered, usually by
 	 * the user.
 	 */
-    RS_String getCommand() {
+    QString getCommand() {
         return cmd;
     }
 
@@ -66,7 +66,7 @@ public:
 	}
  
 protected:
-    RS_String cmd;
+    QString cmd;
 	bool accepted;
 };
 
diff --git a/src/lib/gui/rs_dialogfactory.cpp b/src/lib/gui/rs_dialogfactory.cpp
index f8a3764..06ab4fa 100644
--- a/src/lib/gui/rs_dialogfactory.cpp
+++ b/src/lib/gui/rs_dialogfactory.cpp
@@ -89,7 +89,7 @@ RS_DialogFactoryInterface* RS_DialogFactory::getFactoryObject() {
 
 
 
-void RS_DialogFactory::commandMessage(const RS_String& m) {
+void RS_DialogFactory::commandMessage(const QString& m) {
 	RS_DEBUG->print("RS_DialogFactory::commandMessage");
 
     if (factoryObject!=NULL) {
diff --git a/src/lib/gui/rs_dialogfactory.h b/src/lib/gui/rs_dialogfactory.h
index dd82b51..1a844a1 100644
--- a/src/lib/gui/rs_dialogfactory.h
+++ b/src/lib/gui/rs_dialogfactory.h
@@ -28,10 +28,9 @@
 #ifndef RS_DIALOGFACTORY_H
 #define RS_DIALOGFACTORY_H
 
-#include "rs_dialogfactoryinterface.h"
 #include "rs_dialogfactoryadapter.h"
-#include "rs_debug.h"
 
+class RS_DialogFactoryInterface;
 
 #define RS_DIALOGFACTORY RS_DialogFactory::instance()->getFactoryObject()
 
@@ -51,7 +50,7 @@ public:
 	void setFactoryObject(RS_DialogFactoryInterface* fo);
 	RS_DialogFactoryInterface* getFactoryObject();
 
-	void commandMessage(const RS_String& m);
+        void commandMessage(const QString& m);
 
 private:
 	RS_DialogFactoryInterface* factoryObject;
diff --git a/src/lib/gui/rs_dialogfactoryadapter.h b/src/lib/gui/rs_dialogfactoryadapter.h
index 6eb315f..1c7ff2c 100644
--- a/src/lib/gui/rs_dialogfactoryadapter.h
+++ b/src/lib/gui/rs_dialogfactoryadapter.h
@@ -30,13 +30,8 @@
 
 #include "rs_dialogfactoryinterface.h"
 #include "rs_block.h"
-#include "rs_layer.h"
 
 class RS_BlockList;
-class RS_LayerList;
-#ifdef RVT_CAM
-class RVT_CAMProfileData;
-#endif
 
 /**
  * Adapter for dialog factory interface.
@@ -47,8 +42,8 @@ public:
     RS_DialogFactoryAdapter() {}
     virtual ~RS_DialogFactoryAdapter() {}
     virtual void requestPreviousMenu() {}
-    virtual void requestWarningDialog(const RS_String& ) {}
-    virtual RS_GraphicView* requestNewDocument(const RS_String& = RS_String::null, 
+    virtual void requestWarningDialog(const QString& ) {}
+    virtual RS_GraphicView* requestNewDocument(const QString& = QString::null,
 			RS_Document* =NULL) { return NULL; }
     virtual RS_Layer* requestNewLayerDialog(
         RS_LayerList* = NULL) { return NULL; }
@@ -65,7 +60,7 @@ public:
     virtual void requestEditBlockWindow(
         RS_BlockList* ) {}
 	virtual void closeEditBlockWindow(RS_Block* ) {}
-    virtual RS_String requestImageOpenDialog() { return ""; }
+    virtual QString requestImageOpenDialog() { return ""; }
     virtual void requestOptions(RS_ActionInterface* , 
 		bool , bool = false) {}
     virtual void requestSnapDistOptions(double& , bool ) {}
@@ -85,19 +80,14 @@ public:
     virtual bool requestHatchDialog(RS_Hatch* ) { return false; }
     virtual void requestOptionsGeneralDialog() {}
     virtual void requestOptionsDrawingDialog(RS_Graphic& ) {}
-#ifdef RS_CAM
-    virtual bool requestCamOptionsDialog(RS_Graphic& ) { printf("fake\n"); return false; }
-#endif
-#ifdef RVT_CAM
-    virtual bool requestCamProfileDialog(RVT_CAMProfileData&  ) { return false; }
-#endif
     virtual void updateCoordinateWidget(const RS_Vector& ,
 										const RS_Vector& ,
 										bool =false) {}
-    virtual void updateMouseWidget(const RS_String& ,
-                                   const RS_String& ) {}
+    virtual void updateMouseWidget(const QString& ,
+                                   const QString& ) {}
+    virtual void updateMouseWidget(void) {}
     virtual void updateSelectionWidget(int ) {}
-    virtual void commandMessage(const RS_String& ) {}
+    virtual void commandMessage(const QString& ) {}
 	virtual bool isAdapter() { return true; }
 };
 
diff --git a/src/lib/gui/rs_dialogfactoryinterface.h b/src/lib/gui/rs_dialogfactoryinterface.h
index 5c9c22a..7d908b8 100644
--- a/src/lib/gui/rs_dialogfactoryinterface.h
+++ b/src/lib/gui/rs_dialogfactoryinterface.h
@@ -29,7 +29,6 @@
 #define RS_DIALOGFACTORYINTERFACE_H
 
 #include "rs.h"
-#include "rs_string.h"
 
 class RS_ActionInterface;
 class RS_ArcData;
@@ -62,9 +61,6 @@ class RS_ScaleData;
 class RS_Solid;
 class RS_Text;
 class RS_Vector;
-#ifdef RVT_CAM
-class RVT_CAMProfileData;
-#endif
 
 /**
  * Interface for objects that can create and show dialogs.
@@ -86,14 +82,14 @@ public:
      * This virtual method must be overwritten and must provide
      * a message dialog.
      */
-    virtual void requestWarningDialog(const RS_String& warning) = 0;
+    virtual void requestWarningDialog(const QString& warning) = 0;
 
 	/**
 	 * This virtual method must be overwritten and must create a new
 	 * window for the given document or for a new document isf no document
 	 * is given.
 	 */
-    virtual RS_GraphicView* requestNewDocument(const RS_String& fileName = RS_String::null, 
+    virtual RS_GraphicView* requestNewDocument(const QString& fileName = QString::null,
 			RS_Document* doc=NULL) = 0;
 
     /**
@@ -192,7 +188,7 @@ public:
      *         which contains the file name or an empty string if
      *         the user cancels the dialog.
      */
-    //virtual RS_String requestFileSaveAsDialog() = 0;
+    //virtual QString requestFileSaveAsDialog() = 0;
 
     /**
      * This virtual method must be overwritten and must provide
@@ -203,7 +199,7 @@ public:
      *         which contains the file name or an empty string if
      *         the user cancels the dialog.
      */
-    //virtual RS_String requestFileOpenDialog() = 0;
+    //virtual QString requestFileOpenDialog() = 0;
 	
     /**
      * This virtual method must be overwritten and must provide
@@ -214,7 +210,7 @@ public:
      *         which contains the file name or an empty string if
      *         the user cancels the dialog.
      */
-    virtual RS_String requestImageOpenDialog() = 0;
+    virtual QString requestImageOpenDialog() = 0;
 	
     /**
      * This virtual method must be overwritten and must present
@@ -358,14 +354,6 @@ public:
 	 * @param graphic Graphic document.
      */
     virtual void requestOptionsDrawingDialog(RS_Graphic& graphic) = 0;
-	
-#ifdef RS_CAM
-    virtual bool requestCamOptionsDialog(RS_Graphic& graphic) = 0;
-#endif
-
-#ifdef RVT_CAM
-    virtual bool requestCamProfileDialog(RVT_CAMProfileData& data) = 0;
-#endif
 
     /**
      * This virtual method must be overwritten if the graphic view has
@@ -390,8 +378,9 @@ public:
      * @param left Help text for the left mouse button.
      * @param right Help text for the right mouse button.
      */
-    virtual void updateMouseWidget(const RS_String& left,
-                                   const RS_String& right) = 0;
+    virtual void updateMouseWidget(const QString& left,
+                                   const QString& right) = 0;
+    virtual void updateMouseWidget(void)=0;
 								   
     /**
      * This virtual method must be overwritten if the graphic view has
@@ -413,7 +402,7 @@ public:
      *
      * @param message The message for the user.
      */
-    virtual void commandMessage(const RS_String& message) = 0;
+    virtual void commandMessage(const QString& message) = 0;
 
 
 	virtual bool isAdapter() = 0;
diff --git a/src/lib/gui/rs_event.h b/src/lib/gui/rs_event.h
deleted file mode 100644
index 64d629a..0000000
--- a/src/lib/gui/rs_event.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_EVENT_H
-#define RS_EVENT_H
-
-/**
- * Events base class.
- */
-class RS_Event {}
-;
-
-#endif
diff --git a/src/lib/gui/rs_eventhandler.cpp b/src/lib/gui/rs_eventhandler.cpp
index 8239034..37e6a16 100644
--- a/src/lib/gui/rs_eventhandler.cpp
+++ b/src/lib/gui/rs_eventhandler.cpp
@@ -28,10 +28,8 @@
 #include "rs_eventhandler.h"
 
 #include "rs_actioninterface.h"
-#include "rs_coordinateevent.h"
-#include "rs_regexp.h"
-//Added by qt3to4:
-#include <QEvent>
+#include "rs_dialogfactory.h"
+#include "rs_commandevent.h"
 
 /**
  * Constructor.
@@ -75,8 +73,8 @@ RS_EventHandler::~RS_EventHandler() {
  * Go back in current action.
  */
 void RS_EventHandler::back() {
-    RS_MouseEvent e(QEvent::MouseButtonRelease, QPoint(0,0),
-                    Qt::RightButton, Qt::RightButton);
+    QMouseEvent e(QEvent::MouseButtonRelease, QPoint(0,0),
+                    Qt::RightButton, Qt::RightButton,Qt::NoModifier);
     mouseReleaseEvent(&e);
 }
 
@@ -86,7 +84,7 @@ void RS_EventHandler::back() {
  * Go enter pressed event for current action.
  */
 void RS_EventHandler::enter() {
-    RS_KeyEvent e(QEvent::KeyPress, Qt::Key_Enter, '\n', 0);
+    QKeyEvent e(QEvent::KeyPress, Qt::Key_Enter, 0);
     keyPressEvent(&e);
 }
 
@@ -94,7 +92,7 @@ void RS_EventHandler::enter() {
 /**
  * Called by RS_GraphicView 
  */
-void RS_EventHandler::mousePressEvent(RS_MouseEvent* e) {
+void RS_EventHandler::mousePressEvent(QMouseEvent* e) {
     if (actionIndex>=0 && currentActions[actionIndex]!=NULL) {
         currentActions[actionIndex]->mousePressEvent(e);
         e->accept();
@@ -114,12 +112,12 @@ void RS_EventHandler::mousePressEvent(RS_MouseEvent* e) {
 /**
  * Called by RS_GraphicView 
  */
-void RS_EventHandler::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_EventHandler::mouseReleaseEvent(QMouseEvent* e) {
 
     if (actionIndex>=0 && currentActions[actionIndex]!=NULL &&
             !currentActions[actionIndex]->isFinished()) {
         RS_DEBUG->print("call action %s",
-                        currentActions[actionIndex]->getName().latin1());
+                        currentActions[actionIndex]->getName().toLatin1().data());
 
         currentActions[actionIndex]->mouseReleaseEvent(e);
 
@@ -140,7 +138,7 @@ void RS_EventHandler::mouseReleaseEvent(RS_MouseEvent* e) {
 /**
  * Called by RS_GraphicView 
  */
-void RS_EventHandler::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_EventHandler::mouseMoveEvent(QMouseEvent* e) {
     if (actionIndex>=0 && currentActions[actionIndex]!=NULL &&
             !currentActions[actionIndex]->isFinished()) {
         currentActions[actionIndex]->mouseMoveEvent(e);
@@ -194,7 +192,7 @@ void RS_EventHandler::mouseEnterEvent() {
 /**
  * Called by RS_GraphicView 
  */
-void RS_EventHandler::keyPressEvent(RS_KeyEvent* e) {
+void RS_EventHandler::keyPressEvent(QKeyEvent* e) {
     if (actionIndex>=0 && currentActions[actionIndex]!=NULL &&
             !currentActions[actionIndex]->isFinished()) {
         currentActions[actionIndex]->keyPressEvent(e);
@@ -215,7 +213,7 @@ void RS_EventHandler::keyPressEvent(RS_KeyEvent* e) {
 /**
  * Called by RS_GraphicView 
  */
-void RS_EventHandler::keyReleaseEvent(RS_KeyEvent* e) {
+void RS_EventHandler::keyReleaseEvent(QKeyEvent* e) {
     if (actionIndex>=0 && currentActions[actionIndex]!=NULL &&
             !currentActions[actionIndex]->isFinished()) {
         currentActions[actionIndex]->keyReleaseEvent(e);
@@ -238,8 +236,7 @@ void RS_EventHandler::keyReleaseEvent(RS_KeyEvent* e) {
 void RS_EventHandler::commandEvent(RS_CommandEvent* e) {
 	RS_DEBUG->print("RS_EventHandler::commandEvent");
 
-    //RS_RegExp rex;
-    RS_String cmd = e->getCommand();
+    QString cmd = e->getCommand();
 
     if (coordinateInputEnabled) {
         if (!e->isAccepted()) {
@@ -247,7 +244,7 @@ void RS_EventHandler::commandEvent(RS_CommandEvent* e) {
             if (cmd.contains(',') && cmd.at(0)!='@') {
                 if (actionIndex>=0 && currentActions[actionIndex]!=NULL &&
                         !currentActions[actionIndex]->isFinished()) {
-                    int commaPos = cmd.find(',');
+                    int commaPos = cmd.indexOf(',');
 	                RS_DEBUG->print("RS_EventHandler::commandEvent: 001");
                     bool ok1, ok2;
 	                RS_DEBUG->print("RS_EventHandler::commandEvent: 002");
@@ -277,7 +274,7 @@ void RS_EventHandler::commandEvent(RS_CommandEvent* e) {
             if (cmd.contains(',') && cmd.at(0)=='@') {
                 if (actionIndex>=0 && currentActions[actionIndex]!=NULL &&
                         !currentActions[actionIndex]->isFinished()) {
-                    int commaPos = cmd.find(',');
+                    int commaPos = cmd.indexOf(',');
                     bool ok1, ok2;
                     double x = RS_Math::eval(cmd.mid(1, commaPos-1), &ok1);
                     double y = RS_Math::eval(cmd.mid(commaPos+1), &ok2);
@@ -302,7 +299,7 @@ void RS_EventHandler::commandEvent(RS_CommandEvent* e) {
             if (cmd.contains('<') && cmd.at(0)!='@') {
                 if (actionIndex>=0 && currentActions[actionIndex]!=NULL &&
                         !currentActions[actionIndex]->isFinished()) {
-                    int commaPos = cmd.find('<');
+                    int commaPos = cmd.indexOf('<');
                     bool ok1, ok2;
                     double r = RS_Math::eval(cmd.left(commaPos), &ok1);
                     double a = RS_Math::eval(cmd.mid(commaPos+1), &ok2);
@@ -328,7 +325,7 @@ void RS_EventHandler::commandEvent(RS_CommandEvent* e) {
             if (cmd.contains('<') && cmd.at(0)=='@') {
                 if (actionIndex>=0 && currentActions[actionIndex]!=NULL &&
                         !currentActions[actionIndex]->isFinished()) {
-                    int commaPos = cmd.find('<');
+                    int commaPos = cmd.indexOf('<');
                     bool ok1, ok2;
                     double r = RS_Math::eval(cmd.mid(1, commaPos-1), &ok1);
                     double a = RS_Math::eval(cmd.mid(commaPos+1), &ok2);
@@ -473,7 +470,7 @@ void RS_EventHandler::setCurrentAction(RS_ActionInterface* action) {
     // Set current action:
     currentActions[actionIndex] = action;
     RS_DEBUG->print("RS_EventHandler::setCurrentAction: current action is: %s",
-                    currentActions[actionIndex]->getName().latin1());
+                    currentActions[actionIndex]->getName().toLatin1().data());
 
     // Initialisation of our new action:
     RS_DEBUG->print("RS_EventHandler::setCurrentAction: init current action");
@@ -654,7 +651,7 @@ void RS_EventHandler::debugActions() {
         }
         if (currentActions[c]!=NULL) {
             RS_DEBUG->print("Action %03d: %s [%s]",
-                            c, currentActions[c]->getName().latin1(),
+                            c, currentActions[c]->getName().toLatin1().data(),
                             currentActions[c]->isFinished() ? "finished" : "active");
         } else {
             RS_DEBUG->print("Action %03d: NULL", c);
diff --git a/src/lib/gui/rs_eventhandler.h b/src/lib/gui/rs_eventhandler.h
index d6a38dc..eee44ea 100644
--- a/src/lib/gui/rs_eventhandler.h
+++ b/src/lib/gui/rs_eventhandler.h
@@ -28,17 +28,10 @@
 #ifndef RS_EVENTHANDLER_H
 #define RS_EVENTHANDLER_H
 
-#include "rs_actioninterface.h"
-//#include "rs_actiondrawpoint.h"
-
-#include "rs_event.h"
-#include "rs_keyevent.h"
-#include "rs_mouseevent.h"
+#include "rs_graphicview.h"
 
 #define RS_MAXACTIONS 16
 
-class RS_ActionInterface;
-
 /**
  * The event handler owns and manages all actions that are currently 
  * active. All events going from the view to the actions come over
@@ -52,14 +45,14 @@ public:
     void back();
     void enter();
 
-    void mousePressEvent(RS_MouseEvent *e);
-    void mouseReleaseEvent(RS_MouseEvent *e);
-    void mouseMoveEvent(RS_MouseEvent *e);
+    void mousePressEvent(QMouseEvent *e);
+    void mouseReleaseEvent(QMouseEvent *e);
+    void mouseMoveEvent(QMouseEvent *e);
     void mouseLeaveEvent();
     void mouseEnterEvent();
 
-    void keyPressEvent(RS_KeyEvent* e);
-    void keyReleaseEvent(RS_KeyEvent* e);
+    void keyPressEvent(QKeyEvent* e);
+    void keyReleaseEvent(QKeyEvent* e);
 
 	void commandEvent(RS_CommandEvent* e);
 	void enableCoordinateInput();
diff --git a/src/lib/gui/rs_graphicview.cpp b/src/lib/gui/rs_graphicview.cpp
index 9d288cb..415b5c0 100644
--- a/src/lib/gui/rs_graphicview.cpp
+++ b/src/lib/gui/rs_graphicview.cpp
@@ -27,24 +27,14 @@
 
 #include "rs_graphicview.h"
 
-#include <stdio.h>
-
-#include "rs_application.h"
-#include "rs_actioninterface.h"
-#include "rs_block.h"
+#include "rs_linetypepattern.h"
 #include "rs_eventhandler.h"
 #include "rs_graphic.h"
 #include "rs_grid.h"
-#include "rs_insert.h"
-#include "rs_keyevent.h"
-#include "rs_layer.h"
-#include "rs_line.h"
-#include "rs_mouseevent.h"
 #include "rs_painter.h"
 #include "rs_text.h"
 #include "rs_settings.h"
-#include "rs_solid.h"
-#include "rs_entitycontainer.h"
+#include "rs_dialogfactory.h"
 
 
 
@@ -317,7 +307,7 @@ void RS_GraphicView::enter() {
  * Called by the actual GUI class which implements the RS_GraphicView 
  * interface to notify LibreCAD about mouse events.
  */
-void RS_GraphicView::mousePressEvent(RS_MouseEvent* e) {
+void RS_GraphicView::mousePressEvent(QMouseEvent* e) {
     if (eventHandler!=NULL) {
         eventHandler->mousePressEvent(e);
     }
@@ -329,10 +319,10 @@ void RS_GraphicView::mousePressEvent(RS_MouseEvent* e) {
  * Called by the actual GUI class which implements the RS_GraphicView
  * interface to notify LibreCAD about mouse events.
  */
-void RS_GraphicView::mouseReleaseEvent(RS_MouseEvent* e) {
+void RS_GraphicView::mouseReleaseEvent(QMouseEvent* e) {
 	RS_DEBUG->print("RS_GraphicView::mouseReleaseEvent");
     if (eventHandler!=NULL) {
-        if (RS2::qtToRsButtonState(e->button())!=RS2::RightButton || 
+        if (e->button()!=Qt::RightButton ||
 			eventHandler->hasAction()) {
 
             eventHandler->mouseReleaseEvent(e);
@@ -348,12 +338,24 @@ void RS_GraphicView::mouseReleaseEvent(RS_MouseEvent* e) {
 }
 
 
+/*	*
+ *	Function name:
+ *
+ *	Description:		- Called by the actual GUI class which implements the
+ *							  RS_GraphicView interface to notify LibreCAD about
+ *							  mouse events.
+ *
+ *	Author(s):			..., Claude Sylvain	
+ *	Created:				?	
+ *	Last modified:		23 July 2011
+ *
+ *	Parameters:			QMouseEvent* e:
+ *								...
+ *
+ *	Returns:				void
+ *	*/
 
-/**
- * Called by the actual GUI class which implements the RS_GraphicView
- * interface to notify LibreCAD about mouse events.
- */
-void RS_GraphicView::mouseMoveEvent(RS_MouseEvent* e) {
+void RS_GraphicView::mouseMoveEvent(QMouseEvent* e) {
     RS_DEBUG->print("RS_GraphicView::mouseMoveEvent begin");
 
     RS_Graphic* graphic = NULL;
@@ -377,13 +379,14 @@ void RS_GraphicView::mouseMoveEvent(RS_MouseEvent* e) {
 
     RS_DEBUG->print("RS_GraphicView::mouseMoveEvent 003");
 
-    if (eventHandler==NULL || !eventHandler->hasAction() && graphic!=NULL) {
-        RS_Vector mouse = toGraph(RS_Vector(mx, my));
-        RS_Vector relMouse = mouse - getRelativeZero();
+    if (	((eventHandler == NULL) || !eventHandler->hasAction()) &&
+			(graphic != NULL))
+	 {
+        RS_Vector	mouse		= toGraph(RS_Vector(mx, my));
+        RS_Vector	relMouse	= mouse - getRelativeZero();
 
-        if (RS_DIALOGFACTORY!=NULL) {
+        if (RS_DIALOGFACTORY!=NULL)
             RS_DIALOGFACTORY->updateCoordinateWidget(mouse, relMouse);
-        }
     }
 
     RS_DEBUG->print("RS_GraphicView::mouseMoveEvent end");
@@ -419,7 +422,7 @@ void RS_GraphicView::mouseEnterEvent() {
  * Called by the actual GUI class which implements the RS_GraphicView
  * interface to notify LibreCAD about key events.
  */
-void RS_GraphicView::keyPressEvent(RS_KeyEvent* e) {
+void RS_GraphicView::keyPressEvent(QKeyEvent* e) {
     if (eventHandler!=NULL) {
         eventHandler->keyPressEvent(e);
     }
@@ -431,7 +434,7 @@ void RS_GraphicView::keyPressEvent(RS_KeyEvent* e) {
  * Called by the actual GUI class which implements the RS_GraphicView
  * interface to notify LibreCAD about key events.
  */
-void RS_GraphicView::keyReleaseEvent(RS_KeyEvent* e) {
+void RS_GraphicView::keyReleaseEvent(QKeyEvent* e) {
     if (eventHandler!=NULL) {
         eventHandler->keyReleaseEvent(e);
     }
@@ -706,12 +709,19 @@ void RS_GraphicView::restoreView() {
 }
 
 
-
-/**
- * performs autozoom in y only
+/*	*
+ *	Function name:
+ *	Description:		Performs autozoom in Y axis only.
+ *	Author(s):			..., Claude Sylvain	
+ *	Created:				?	
+ *	Last modified:		23 July 2011
  *
- * @param axis include axis in zoom
- */
+ *	Parameters:			bool axis:
+ *								Axis in zoom.
+ *
+ *	Returns:				void
+ *	*/
+
 void RS_GraphicView::zoomAutoY(bool axis) {
     if (container!=NULL) {
         double visibleHeight = 0.0;
@@ -728,8 +738,10 @@ void RS_GraphicView::zoomAutoY(bool axis) {
                 double x1, x2;
                 x1 = toGuiX(l->getStartpoint().x);
                 x2 = toGuiX(l->getEndpoint().x);
-                if (x1>0.0 && x1<(double)getWidth() ||
-                        x2>0.0 && x2<(double)getWidth()) {
+
+                if (	((x1 > 0.0) && (x1 < (double) getWidth())) ||
+                     ((x2 > 0.0) && (x2 < (double) getWidth())))
+					 {
                     minY = std::min(minY, l->getStartpoint().y);
                     minY = std::min(minY, l->getEndpoint().y);
                     maxY = std::max(maxY, l->getStartpoint().y);
@@ -999,12 +1011,31 @@ void RS_GraphicView::drawLayer1(RS_Painter *painter) {
 
 }
 
-void RS_GraphicView::drawLayer2(RS_Painter *painter) {
-    // drawing entities:
-    drawEntity(painter, container);
-	drawAbsoluteZero(painter);
+
+/*	*
+ *	Function name:
+ *	Description: 		Do the drawing, step 2/3.
+ *	Author(s):			..., Claude Sylvain	
+ *	Created:				?	
+ *	Last modified:		23 July 2011
+ *
+ *	Parameters:			RS_Painter *painter:
+ *								...
+ *
+ *	Returns:				void
+ *	*/
+
+void RS_GraphicView::drawLayer2(RS_Painter *painter)
+{
+	drawEntity(painter, container);	//	Draw all entities.
+
+	//	If not in print preview, draw the absolute zero reference.
+	//	----------------------------------------------------------
+	if (!isPrintPreview())
+		drawAbsoluteZero(painter);
 }
 
+
 void RS_GraphicView::drawLayer3(RS_Painter *painter) {
     // drawing zero points:
     if (!isPrintPreview()) {
@@ -1012,12 +1043,29 @@ void RS_GraphicView::drawLayer3(RS_Painter *painter) {
 		drawOverlay(painter);
     }	
 }
-/**
- * Sets the pen of the painter object to the suitable pen for the given
- * entity.
+
+
+/*	*
+ *	Function name:
+ *
+ *	Description:	- Sets the pen of the painter object to the suitable pen
+ *						  for the given entity.
+ *
+ *	Author(s):		..., Claude Sylvain
+ *	Created:			?
+ *	Last modified:	24 July 2011
+ *
+ *	Parameters:		RS_Painter *painter:
+ *							...
+ *
+ *						RS_Entity *e:
+ *							...
+ *
+ *	Returns:			void
  */
-void RS_GraphicView::setPenForEntity(RS_Painter *painter,RS_Entity* e) {
 
+void RS_GraphicView::setPenForEntity(RS_Painter *painter,RS_Entity *e)
+{
     if (draftMode) {
         painter->setPen(RS_Pen(foreground,
 							   RS2::Width00, RS2::SolidLine));
@@ -1031,26 +1079,21 @@ void RS_GraphicView::setPenForEntity(RS_Painter *painter,RS_Entity* e) {
             w = 0;
         }
 
-        // scale pen width:
-        if (!draftMode) {
-            double uf = 1.0;  // unit factor
-            double wf = 1.0;  // width factor
-            RS_Graphic* graphic = container->getGraphic();
-            if (graphic!=NULL) {
-                uf = RS_Units::convert(1.0, RS2::Millimeter, graphic->getUnit());
-                if ((isPrinting() || isPrintPreview()) &&
-                        graphic->getPaperScale()>1.0e-6) {
-
-                    wf = 1.0/graphic->getPaperScale();
-                }
-            }
+		// Scale pen width.
+		//	----------------
+		if (!draftMode)
+		{
+			double uf = 1.0;	//	Unit factor.
 
-            pen.setScreenWidth(toGuiDX(w/100.0*uf*wf));
-        } else {
-            //pen.setWidth(RS2::Width00);
-            pen.setScreenWidth(0);
-        }
+			RS_Graphic* graphic = container->getGraphic();
 
+			if (graphic != NULL)
+				uf = RS_Units::convert(1.0, RS2::Millimeter, graphic->getUnit());
+
+				pen.setScreenWidth(toGuiDX(w / 100.0 * uf));
+		}
+		else
+			pen.setScreenWidth(0);
 
         // prevent drawing with 1-width which is slow:
         if (RS_Math::round(pen.getScreenWidth())==1) {
@@ -1081,6 +1124,7 @@ void RS_GraphicView::setPenForEntity(RS_Painter *painter,RS_Entity* e) {
         painter->setPen(pen);
 }
 
+
 /**
  * Draws an entity. Might be recusively called e.g. for polylines.
  * If the class wide painter is NULL a new painter will be created 
@@ -1196,8 +1240,13 @@ void RS_GraphicView::drawEntityPlain(RS_Painter *painter, RS_Entity* e, double p
     if (e==NULL) {
         return;
     }
-	
+
+    if (!e->isContainer() && (e->isSelected()!=painter->shouldDrawSelected())) {
+        return;
+    }
+
     e->draw(painter, this, patternOffset);
+
 }
 
 /**
@@ -1449,8 +1498,8 @@ void RS_GraphicView::drawGrid(RS_Painter *painter) {
 
     // draw grid info:
     //painter->setPen(Qt::white);
-    RS_String info = grid->getInfo();
-    //info = RS_String("%1 / %2")
+    QString info = grid->getInfo();
+    //info = QString("%1 / %2")
     //       .arg(grid->getSpacing())
     //       .arg(grid->getMetaSpacing());
 
@@ -1545,15 +1594,7 @@ RS_Vector RS_GraphicView::toGui(RS_Vector v) {
  * @param visible Pointer to a boolean which will contain true
  * after the call if the coordinate is within the visible range.
  */
-double RS_GraphicView::toGuiX(double x, bool* visible) {
-    if (visible!=NULL) {
-        double res = x*factor.x+offsetX;
-        if (res>0.0 && res<getWidth()) {
-            *visible = true;
-        } else {
-            *visible = false;
-        }
-    }
+double RS_GraphicView::toGuiX(double x) {
     return x*factor.x + offsetX;
 }
 
diff --git a/src/lib/gui/rs_graphicview.h b/src/lib/gui/rs_graphicview.h
index 4026f4b..86e6230 100644
--- a/src/lib/gui/rs_graphicview.h
+++ b/src/lib/gui/rs_graphicview.h
@@ -30,38 +30,15 @@
 
 #include "rs_entitycontainer.h"
 
-#include <stdarg.h>
-#include <qmap.h>
+#include <QMap>
+#include <QKeyEvent>
 
-#include "rs.h"
-#include "rs_blocklist.h"
-#include "rs_color.h"
-#include "rs_keyevent.h"
-#include "rs_linetypepattern.h"
-#include "rs_mouseevent.h"
-#include "rs_commandevent.h"
 
 class RS_ActionInterface;
-//class RS_DimensionData;
-//class RS_DimLinearData;
 class RS_EventHandler;
 class RS_Grid;
-class RS_Insert;
-class RS_Painter;
-class RS_Solid;
-class RS_Text;
-class RS_Hatch;
-class RS_Painter;
-class RS_EntityContainer;
-//class RS_MirrorData;
-//class RS_MoveData;
-//class RS_MoveRotateData;
-//class RS_Rotate2Data;
-//class RS_RotateData;
-//class RS_ScaleData;
-//class RS_BevelData;
-//class RS_RoundData;
-
+class RS_CommandEvent;
+class RS_LineTypePattern;
 
 
 /**
@@ -293,13 +270,13 @@ public:
     void back();
     void enter();
 
-    void mousePressEvent(RS_MouseEvent* e);
-    void mouseReleaseEvent(RS_MouseEvent* e);
-    void mouseMoveEvent(RS_MouseEvent* e);
+    void mousePressEvent(QMouseEvent* e);
+    void mouseReleaseEvent(QMouseEvent* e);
+    void mouseMoveEvent(QMouseEvent* e);
     void mouseLeaveEvent();
     void mouseEnterEvent();
-    void keyPressEvent(RS_KeyEvent* e);
-    void keyReleaseEvent(RS_KeyEvent* e);
+    void keyPressEvent(QKeyEvent* e);
+    void keyReleaseEvent(QKeyEvent* e);
 	void commandEvent(RS_CommandEvent* e);
 	void enableCoordinateInput();
 	void disableCoordinateInput();
@@ -345,7 +322,7 @@ public:
     RS_Grid* getGrid() {
         return grid;
     }
-	virtual void updateGridStatusWidget(const RS_String& /*text*/) {}
+        virtual void updateGridStatusWidget(const QString& /*text*/) {}
 
     void setDefaultSnapMode(RS2::SnapMode sm);
     RS2::SnapMode getDefaultSnapMode() {
@@ -362,7 +339,7 @@ public:
     bool isGridOn();
 
     RS_Vector toGui(RS_Vector v);
-    double toGuiX(double x, bool* visible=NULL);
+    double toGuiX(double x);
     double toGuiY(double y);
     double toGuiDX(double d);
     double toGuiDY(double d);
@@ -446,7 +423,7 @@ public:
 	void setDraftMode(bool dm) {
 		draftMode=dm;
 	}
-	
+
 	virtual RS_EntityContainer* getOverlayContainer(RS2::OverlayGraphics position);
 	
 protected:
diff --git a/src/lib/gui/rs_grid.h b/src/lib/gui/rs_grid.h
index f6b83e4..390cd5f 100644
--- a/src/lib/gui/rs_grid.h
+++ b/src/lib/gui/rs_grid.h
@@ -75,8 +75,8 @@ public:
 	/**
 	 * @return Grid info for status widget.
 	 */
-	RS_String getInfo() {
-		return RS_String("%1 / %2").arg(spacing).arg(metaSpacing);
+        QString getInfo() {
+                return QString("%1 / %2").arg(spacing).arg(metaSpacing);
 	}
 
 	/**
diff --git a/src/lib/gui/rs_keyevent.h b/src/lib/gui/rs_keyevent.h
deleted file mode 100644
index 4044a7e..0000000
--- a/src/lib/gui/rs_keyevent.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_KEYEVENT_H
-#define RS_KEYEVENT_H
-
-#include <qevent.h>
-
-#define RS_KeyEvent QKeyEvent
-
-#endif
diff --git a/src/lib/gui/rs_mainwindowinterface.h b/src/lib/gui/rs_mainwindowinterface.h
index 63d3360..70cc23e 100644
--- a/src/lib/gui/rs_mainwindowinterface.h
+++ b/src/lib/gui/rs_mainwindowinterface.h
@@ -44,7 +44,7 @@ public:
     virtual RS_Document* getDocument() = 0;
 
 	virtual void createNewDocument(
-		const RS_String& fileName = RS_String::null, RS_Document* doc=NULL) = 0;
+                const QString& fileName = QString::null, RS_Document* doc=NULL) = 0;
 
 };
 
diff --git a/src/lib/gui/rs_mouseevent.h b/src/lib/gui/rs_mouseevent.h
deleted file mode 100644
index f54f5e9..0000000
--- a/src/lib/gui/rs_mouseevent.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_MOUSEEVENT_H
-#define RS_MOUSEEVENT_H
-
-#include <qevent.h>
-
-#define RS_MouseEvent QMouseEvent
-
-/**
- * Events which can be triggered for every action.
- */
-//enum RS_MouseButton { LEFT, MIDDLE, RIGHT, NONE };
-
-/**
- * Mouse Events.
- */
-/*
-class RS_MouseEvent {
-public:
-    RS_MouseEvent(int x, int y, RS_MouseButton button) {
-        this->x = x;
-        this->y = y;
-        this->button = button;
-    }
- 
-    int getX() {
-        return x;
-    }
-    int getY() {
-        return y;
-    }
-    RS_MouseButton getButton() {
-        return button;
-    }
- 
-protected:
-    int x;
-    int y;
-    RS_MouseButton button;
-};
-*/
-
-#endif
diff --git a/src/lib/gui/rs_painter.cpp b/src/lib/gui/rs_painter.cpp
index 320ce98..d97744c 100644
--- a/src/lib/gui/rs_painter.cpp
+++ b/src/lib/gui/rs_painter.cpp
@@ -50,6 +50,7 @@ void RS_Painter::createArc(QPolygon& pa,
         aStep=1.0;
     }
 
+    aStep=aStep/2.0;
     //if (aStep<0.05) {
     //    aStep = 0.05;
     //}
diff --git a/src/lib/gui/rs_painter.h b/src/lib/gui/rs_painter.h
index e71e7c4..2b48938 100644
--- a/src/lib/gui/rs_painter.h
+++ b/src/lib/gui/rs_painter.h
@@ -29,7 +29,6 @@
 #define RS_PAINTER_H
 
 #include "rs_color.h"
-#include "rs_img.h"
 #include "rs_math.h"
 #include "rs_pen.h"
 #include "rs_vector.h"
@@ -51,6 +50,7 @@ public:
     RS_Painter() {
         drawingMode = RS2::ModeFull;
         offset = RS_Vector(0.0,0.0);
+        drawSelectedEntities=false;
     }
     virtual ~RS_Painter() {}
 
@@ -61,6 +61,16 @@ public:
         drawingMode = m;
     }
 
+    // When set to true, only entities that are selected will be drawn
+    void setDrawSelectedOnly(bool dso) {
+        drawSelectedEntities=dso;
+    }
+
+    // When true, only selected items will be draw
+    bool shouldDrawSelected() {
+        return drawSelectedEntities;
+    }
+
     /**
      * @return Current drawing mode.
      */
@@ -92,14 +102,14 @@ public:
                              double angle,
                              double angle1, double angle2,
                              bool reversed) = 0;
-	virtual void drawImg(RS_Img& img, const RS_Vector& pos, 
+        virtual void drawImg(QImage& img, const RS_Vector& pos,
 			double angle, const RS_Vector& factor,
 			int sx, int sy, int sw, int sh) = 0;
 
     virtual void drawTextH(int x1, int y1, int x2, int y2,
-                           const RS_String& text) = 0;
+                           const QString& text) = 0;
     virtual void drawTextV(int x1, int y1, int x2, int y2,
-                           const RS_String& text) = 0;
+                           const QString& text) = 0;
 
     virtual void fillRect(int x1, int y1, int w, int h, const RS_Color& col) = 0;
 	virtual void fillRect ( const QRectF & rectangle, const RS_Color & color ) = 0;
@@ -144,6 +154,11 @@ protected:
      * A fixed offset added to all entities drawn (useful for previews).
      */
     RS_Vector offset;
+
+    // When set to true, only selected entities should be drawn
+    bool drawSelectedEntities;
+
+
 };
 
 #endif
diff --git a/src/lib/gui/rs_painteradapter.h b/src/lib/gui/rs_painteradapter.h
deleted file mode 100644
index 96ffd2f..0000000
--- a/src/lib/gui/rs_painteradapter.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-
-#ifndef RS_PAINTERADAPTER_H
-#define RS_PAINTERADAPTER_H
-
-#include "rs_painter.h"
-//Added by qt3to4:
-#include <qpolygon.h>
-
-
-
-/**
- * An abstract adapter class for painter object. The methods in this class are empty. 
- * This class exists as convenience for creating painter objects.
- */
-class RS_PainterAdapter: public RS_Painter {
-public:
-    RS_PainterAdapter() : RS_Painter() {}
-    virtual ~RS_PainterAdapter() {}
-	
-	virtual void moveTo(int , int ) {}
-	virtual void lineTo(int , int ) {}
-
-    virtual void drawGridPoint(const RS_Vector&) {}
-    virtual void drawPoint(const RS_Vector&) {}
-    virtual void drawLine(const RS_Vector&, const RS_Vector&) {}
-    virtual void drawRect(const RS_Vector&, const RS_Vector&) {}
-    virtual void drawArc(const RS_Vector&, double,
-                         double, double,
-                         const RS_Vector&, const RS_Vector&,
-                         bool ) {}
-    virtual void drawArc(const RS_Vector&, double,
-                         double, double,
-                         bool ) {}
-    void createArc(QPolygon& ,
-                   const RS_Vector&, double,
-                   double, double,
-                   bool ) {}
-    virtual void drawCircle(const RS_Vector&, double) {}
-    virtual void drawEllipse(const RS_Vector&,
-                             double, double,
-                             double,
-                             double, double,
-                             bool ) {}
-	virtual void drawImg(RS_Img& , const RS_Vector&, 
-			double, const RS_Vector&,
-			int, int, int, int) {}
-
-    virtual void drawTextH(int, int, int, int,
-                           const RS_String&) {}
-    virtual void drawTextV(int, int, int, int,
-                           const RS_String&) {}
-
-    virtual void fillRect(int, int, int, int,
-                          const RS_Color&) {}
-
-    virtual void fillTriangle(const RS_Vector&,
-                              const RS_Vector&,
-                              const RS_Vector&) {}
-
-    virtual RS_Pen getPen() { return RS_Pen(); }
-    virtual void setPen(const RS_Pen&) {}
-    virtual void setPen(const RS_Color&) {}
-    virtual void setPen(int, int, int) {}
-    virtual void disablePen() {}
-	virtual void setBrush(const RS_Color&) {}
-	virtual void drawPolygon(const QPolygon& ) {}
-	virtual void erase() {}
-	virtual int getWidth() { return 0; }
-	virtual int getHeight() { return 0; }
-
-    virtual void setClipRect(int, int, int, int) {}
-    virtual void resetClipping() {}
-
-};
-
-#endif
diff --git a/src/lib/gui/rs_painterqt.cpp b/src/lib/gui/rs_painterqt.cpp
index a763caa..36750ed 100644
--- a/src/lib/gui/rs_painterqt.cpp
+++ b/src/lib/gui/rs_painterqt.cpp
@@ -25,18 +25,8 @@
 **********************************************************************/
 
 
-#include <stdio.h>
-#include <q3paintdevicemetrics.h>
-#include <qpolygon.h>
-
 #include "rs_painterqt.h"
 
-#include "rs_math.h"
-#include "rs_application.h"
-#include "rs_color.h"
-#include <qpen.h>
-//#include "rs_settings.h"
-
 /**
  * Constructor.
  */
@@ -476,7 +466,7 @@ void RS_PainterQt::drawEllipse(const RS_Vector& cp,
 /**
  * Draws image.
  */
-void RS_PainterQt::drawImg(RS_Img& img, const RS_Vector& pos,
+void RS_PainterQt::drawImg(QImage& img, const RS_Vector& pos,
                            double angle, const RS_Vector& factor,
                            int sx, int sy, int sw, int sh) {
     save();
@@ -552,14 +542,12 @@ void RS_PainterQt::erase() {
 
 
 int RS_PainterQt::getWidth() {
-    Q3PaintDeviceMetrics m(device());
-    return m.width();
+    return device()->width();
 }
 
 
 int RS_PainterQt::getHeight() {
-    Q3PaintDeviceMetrics m(device());
-    return m.height();
+    return device()->height();
 }
 
 RS_Pen RS_PainterQt::getPen() {
diff --git a/src/lib/gui/rs_painterqt.h b/src/lib/gui/rs_painterqt.h
index 4a87150..65b293a 100644
--- a/src/lib/gui/rs_painterqt.h
+++ b/src/lib/gui/rs_painterqt.h
@@ -28,10 +28,8 @@
 #ifndef RS_PAINTERQT_H
 #define RS_PAINTERQT_H
 
-#include <qpainter.h>
+#include <QPainter>
 
-#include "rs_color.h"
-#include "rs_graphicview.h"
 #include "rs_painter.h"
 
 /**
@@ -70,7 +68,7 @@ public:
                              double angle,
                              double a1, double a2,
                              bool reversed);
-	virtual void drawImg(RS_Img& img, const RS_Vector& pos, 
+        virtual void drawImg(QImage& img, const RS_Vector& pos,
 			double angle, const RS_Vector& factor,
 			int sx, int sy, int sw, int sh);
     virtual void drawTextH(int x1, int y1, int x2, int y2,
diff --git a/src/lib/gui/rs_staticgraphicview.h b/src/lib/gui/rs_staticgraphicview.h
index ab3b622..107bb38 100644
--- a/src/lib/gui/rs_staticgraphicview.h
+++ b/src/lib/gui/rs_staticgraphicview.h
@@ -28,7 +28,7 @@
 #define RS_STATICGRAPHICVIEW_H
 
 #include "rs_graphicview.h"
-#include "rs_layerlistlistener.h"
+//#include "rs_layerlistlistener.h"
 
 /**
  * This is an implementation of a graphic viewer with a fixed size
@@ -47,7 +47,7 @@ public:
     virtual void setMouseCursor(RS2::CursorType ) {}
 
     virtual void emulateMouseMoveEvent() {}
-	virtual void updateGridStatusWidget(const RS_String& ) {}
+        virtual void updateGridStatusWidget(const QString& ) {}
 
     void paint();
 
diff --git a/src/lib/information/rs_infoarea.cpp b/src/lib/information/rs_infoarea.cpp
index 94a1fff..04cd756 100644
--- a/src/lib/information/rs_infoarea.cpp
+++ b/src/lib/information/rs_infoarea.cpp
@@ -26,8 +26,6 @@
 
 #include "rs_infoarea.h"
 
-
-#include "rs_infoarea.h"
 #include "rs_math.h"
 #include "rs_debug.h"
 
diff --git a/src/lib/information/rs_infoarea.h b/src/lib/information/rs_infoarea.h
index debcf59..e7c1372 100644
--- a/src/lib/information/rs_infoarea.h
+++ b/src/lib/information/rs_infoarea.h
@@ -27,9 +27,8 @@
 #ifndef RS_INFOAREA_H
 #define RS_INFOAREA_H
 
+#include <QVector>
 #include "rs_vector.h"
-#include "rs_valuevector.h"
-
 
 
 /**
@@ -61,7 +60,7 @@ public:
 private:
 	double calcSubArea(const RS_Vector& p1, const RS_Vector& p2);
 
-	RS_ValueVector<RS_Vector> thePoints;
+        QVector<RS_Vector> thePoints;
 	double baseY;
 	double area;
 	double circumference;
diff --git a/src/lib/information/rs_information.cpp b/src/lib/information/rs_information.cpp
index fb238b7..40d0581 100644
--- a/src/lib/information/rs_information.cpp
+++ b/src/lib/information/rs_information.cpp
@@ -805,7 +805,7 @@ bool RS_Information::isPointInsideContour(const RS_Vector& point,
 
     // remove double intersections:
     /*
-       RS_PtrList<RS_Vector> is2;
+       QList<RS_Vector> is2;
        bool done;
     RS_Vector* av;
        do {
diff --git a/src/lib/math/rs_math.cpp b/src/lib/math/rs_math.cpp
index 17bba33..64db735 100644
--- a/src/lib/math/rs_math.cpp
+++ b/src/lib/math/rs_math.cpp
@@ -7,7 +7,7 @@
 **
 **
 ** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
+** it under the terms of the GNU General Public License as published by
 ** the Free Software Foundation; either version 2 of the License, or
 ** (at your option) any later version.
 **
@@ -15,12 +15,12 @@
 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ** GNU General Public License for more details.
-** 
+**
 ** You should have received a copy of the GNU General Public License
 ** along with this program; if not, write to the Free Software
 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 **
-** This copyright notice MUST APPEAR in all copies of the script!  
+** This copyright notice MUST APPEAR in all copies of the script!
 **
 **********************************************************************/
 
@@ -30,10 +30,11 @@
 
 
 /**
- * Rounds the given double to the next int. 
+ * Rounds the given double to the next int.
  */
 int RS_Math::round(double v) {
-    return (v-floor(v)<0.5 ? (int)floor(v) : (int)ceil(v));
+    return (int) lrint(v);
+    //return (v-floor(v)<0.5 ? (int)floor(v) : (int)ceil(v));
 }
 
 
@@ -43,19 +44,19 @@ int RS_Math::round(double v) {
  * Save pow function
  */
 double RS_Math::pow(double x, double y) {
-	errno = 0;
-	double ret = ::pow(x, y);
-	if (errno==EDOM) {
+    errno = 0;
+    double ret = ::pow(x, y);
+    if (errno==EDOM) {
         RS_DEBUG->print(RS_Debug::D_ERROR,
-			"RS_Math::pow: EDOM in pow");
-		ret = 0.0;
-	}
-	else if (errno==ERANGE) {
+                        "RS_Math::pow: EDOM in pow");
+        ret = 0.0;
+    }
+    else if (errno==ERANGE) {
         RS_DEBUG->print(RS_Debug::D_WARNING,
-			"RS_Math::pow: ERANGE in pow");
-		ret = 0.0;
-	}
-	return ret;
+                        "RS_Math::pow: ERANGE in pow");
+        ret = 0.0;
+    }
+    return ret;
 }
 
 
@@ -105,7 +106,7 @@ int RS_Math::findGCD(int a, int b) {
 
 
 /**
- * Tests if angle a is between a1 and a2. a, a1 and a2 must be in the 
+ * Tests if angle a is between a1 and a2. a, a1 and a2 must be in the
  * range between 0 and 2*PI.
  * All angles in rad.
  *
@@ -116,40 +117,49 @@ bool RS_Math::isAngleBetween(double a,
                              double a1, double a2,
                              bool reversed) {
 
-    bool ret = false;
+//    bool ret = false;
 
     if (reversed) {
         double tmp = a1;
         a1 = a2;
         a2 = tmp;
     }
-
-    if(a1>=a2-1.0e-12) {
-        if(a>=a1-1.0e-12 || a<=a2+1.0e-12) {
-            ret = true;
-        }
+    if ( correctAngle(a2 -a1) >= correctAngle(a - a1) + RS_TOLERANCE_ANGLE &&
+            correctAngle(a - a1) >= RS_TOLERANCE_ANGLE ) {
+        return true;
     } else {
-        if(a>=a1-1.0e-12 && a<=a2+1.0e-12) {
-            ret = true;
-        }
+        return false;
     }
-    //RS_DEBUG->print("angle %f is %sbetween %f and %f",
-    //                a, ret ? "" : "not ", a1, a2);
-    return ret;
 }
 
+//    if(a1>=a2-RS_TOLERENCE) {
+//        if(a>=a1-RS_TOLERENCE || a<=a2+RS_TOLERENCE) {
+//            ret = true;
+//        }
+//    } else {
+//        if(a>=a1-RS_TOLERENCE && a<=a2+RS_TOLERENCE) {
+//            ret = true;
+//        }
+//    }
+//RS_DEBUG->print("angle %f is %sbetween %f and %f",
+//                a, ret ? "" : "not ", a1, a2);
+//    return ret;
+//}
+
 
 
 /**
  * Corrects the given angle to the range of 0-2*Pi.
  */
 double RS_Math::correctAngle(double a) {
-    while (a>2*M_PI)
-        a-=2*M_PI;
-    while (a<0)
-        a+=2*M_PI;
-    return a;
+    return M_PI + remainder(a - M_PI, 2*M_PI);
 }
+//    while (a>2*M_PI)
+//        a-=2*M_PI;
+//    while (a<0)
+//        a+=2*M_PI;
+//    return a;
+//}
 
 
 
@@ -159,11 +169,12 @@ double RS_Math::correctAngle(double a) {
  */
 double RS_Math::getAngleDifference(double a1, double a2) {
     double ret;
+    ret=M_PI + remainder(a2 -a1 -M_PI, 2*M_PI);
 
-    if (a1>=a2) {
-        a2+=2*M_PI;
-    }
-    ret = a2-a1;
+//    if (a1>=a2) {
+//        a2+=2*M_PI;
+//    }
+//    ret = a2-a1;
 
     if (ret>=2*M_PI) {
         ret=0.0;
@@ -180,7 +191,7 @@ double RS_Math::getAngleDifference(double a1, double a2) {
 * @param readable true: make angle readable, false: unreadable
 * @param corrected Will point to true if the given angle was
 *   corrected, false otherwise.
-* 
+*
  * @return The given angle or the given angle+PI, depending which on
  * is readable from the bottom or right.
  */
@@ -209,7 +220,7 @@ double RS_Math::makeAngleReadable(double angle, bool readable,
 
 
 /**
- * @return true: if the given angle is in a range that is readable 
+ * @return true: if the given angle is in a range that is readable
  * for texts created with that angle.
  */
 bool RS_Math::isAngleReadable(double angle) {
@@ -228,17 +239,17 @@ bool RS_Math::isAngleReadable(double angle) {
  * @retval true The two angles point in the same direction.
  */
 bool RS_Math::isSameDirection(double dir1, double dir2, double tol) {
-	double diff = fabs(dir1-dir2);
-	if (diff<tol || diff>2*M_PI-tol) {
-		//std::cout << "RS_Math::isSameDirection: " << dir1 << " and " << dir2 
-		//	<< " point in the same direction" << "\n";
-		return true;
-	}
-	else {
-		//std::cout << "RS_Math::isSameDirection: " << dir1 << " and " << dir2 
-		//	<< " don't point in the same direction" << "\n";
-		return false;
-	}
+    double diff = fabs(dir1-dir2);
+    if (diff<tol || diff>2*M_PI-tol) {
+        //std::cout << "RS_Math::isSameDirection: " << dir1 << " and " << dir2
+        //	<< " point in the same direction" << "\n";
+        return true;
+    }
+    else {
+        //std::cout << "RS_Math::isSameDirection: " << dir1 << " and " << dir2
+        //	<< " don't point in the same direction" << "\n";
+        return false;
+    }
 }
 
 
@@ -255,7 +266,7 @@ bool RS_Math::cmpDouble(double v1, double v2, double tol) {
  * Evaluates a mathematical expression and returns the result.
  * If an error occured, the given default value 'def' will be returned.
  */
-double RS_Math::eval(const RS_String& expr, double def) {
+double RS_Math::eval(const QString& expr, double def) {
 
     bool ok;
     double res = RS_Math::eval(expr, &ok);
@@ -274,29 +285,29 @@ double RS_Math::eval(const RS_String& expr, double def) {
  * Evaluates a mathematical expression and returns the result.
  * If an error occured, ok will be set to false (if ok isn't NULL).
  */
-//double RS_Math::eval(const RS_String& expr, bool* ok);
+//double RS_Math::eval(const QString& expr, bool* ok);
 
 
 /**
  * Converts a double into a string which is as short as possible
  *
  * @param value The double value
- * @param prec Precision e.g. a precision of 1 would mean that a 
+ * @param prec Precision e.g. a precision of 1 would mean that a
  *     value of 2.12030 will be converted to "2.1". 2.000 is always just "2").
  */
-RS_String RS_Math::doubleToString(double value, double prec) {
-	if (prec<1.0e-12) {
-		std::cerr << "RS_Math::doubleToString: invalid precision\n";
-		return "";
-	}
-
-    RS_String ret;
-    RS_String exaStr;
+QString RS_Math::doubleToString(double value, double prec) {
+    if (prec< RS_TOLERANCE ) {
+        std::cerr << "RS_Math::doubleToString: invalid precision\n";
+        return "";
+    }
+
+    QString ret;
+    QString exaStr;
     int dotPos;
     int num = RS_Math::round(value / prec);
 
     exaStr = RS_Math::doubleToString(prec, 10);
-    dotPos = exaStr.find('.');
+    dotPos = exaStr.indexOf('.');
 
     if (dotPos==-1) {
         ret.sprintf("%d", RS_Math::round(num*prec));
@@ -317,8 +328,8 @@ RS_String RS_Math::doubleToString(double value, double prec) {
  * @param value The double value
  * @param prec Precision
  */
-RS_String RS_Math::doubleToString(double value, int prec) {
-    RS_String valStr;
+QString RS_Math::doubleToString(double value, int prec) {
+    QString valStr;
 
     valStr.setNum(value, 'f', prec);
 
@@ -342,7 +353,7 @@ RS_String RS_Math::doubleToString(double value, int prec) {
  * Performs some testing for the math class.
  */
 void RS_Math::test() {
-    RS_String s;
+    QString s;
     double v;
 
     std::cout << "RS_Math::test: doubleToString:\n";
@@ -375,4 +386,181 @@ void RS_Math::test() {
 
     std::cout << "RS_Math::test: complete\n";
 }
+//quadratic, cubic, and quartic equation solver
+// ce[] contains coefficent of the cubic equation:
+// roots[] pointed to a list of real roots
+// solvers assume arguments are valid, and there's no attempt to verify validity of the argument pointers
+//
+unsigned int RS_Math::quadraticSolver(double * ce,  double * roots)
+//quadratic solver for
+// x^2 + ce[0] x + ce[2] =0
+{
+    double discriminant=0.25*ce[0]*ce[0]-ce[1];
+    if (discriminant < 0. ) return 0;
+    roots[0]= -0.5*ce[0] + sqrt(discriminant);
+    roots[1]= -ce[0] - roots[0];
+    return 2;
+}
+
+unsigned int RS_Math::cubicSolver(double * ce, double *roots)
+//cubic equation solver
+// x^3 + ce[0] x^2 + ce[1] x + ce[2] = 0
+{
+    // depressed cubic, Tschirnhaus transformation, x= t - b/(3a)
+    // t^3 + p t +q =0
+    unsigned int ret=0;
+    double shift=(1./3)*ce[0];
+    double p=ce[1] -shift*ce[0];
+    double q=ce[0]*( (2./27)*ce[0]*ce[0]-(1./3)*ce[1])+ce[2];
+    //Cardano's method,
+    //	t=u+v
+    //	u^3 + v^3 + ( 3 uv + p ) (u+v) + q =0
+    //	select 3uv + p =0, then,
+    //	u^3 + v^3 = -q
+    //	u^3 v^3 = - p^3/27
+    //	so, u^3 and v^3 are roots of equation,
+    //	z^2 + q z - p^3/27 = 0
+    //	and u^3,v^3 are,
+    //		-q/2 \pm sqrt(q^2/4 + p^3/27)
+    //	discriminant= q^2/4 + p^3/27
+    //std::cout<<"p="<<p<<"\tq="<<q<<std::endl;
+    double discriminant= (1./27)*p*p*p+(1./4)*q*q;
+    if ( fabs(p)< 1.0e-75) {
+        ret=1;
+        *roots=(q>0)?-pow(q,(1./3)):pow(-q,(1./3));
+        *roots -= shift;
+        return ret;
+    }
+    //std::cout<<"discriminant="<<discriminant<<std::endl;
+    if(discriminant>0) {
+        double ce2[2]= {q, -1./27*p*p*p},u3[2];
+        ret=quadraticSolver(ce2,u3);
+        if (! ret ) { //should not happen
+            std::cerr<<"cubicSolver()::Error cubicSolver("<<ce[0]<<' '<<ce[1]<<' '<<ce[2]<<")\n";
+        }
+        ret=1;
+        double u,v;
+        u= (q<=0) ? pow(u3[0], 1./3): -pow(-u3[1],1./3);
+        //u=(q<=0)?pow(-0.5*q+sqrt(discriminant),1./3):-pow(0.5*q+sqrt(discriminant),1./3);
+        v=(-1./3)*p/u;
+        //std::cout<<"u="<<u<<"\tv="<<v<<std::endl;
+        //std::cout<<"u^3="<<u*u*u<<"\tv^3="<<v*v*v<<std::endl;
+        *roots=u+v - shift;
+        return ret;
+    }
+    ret=3;
+    std::complex<double> u(q,0),rt[3];
+    u=std::pow(-0.5*u-sqrt(0.25*u*u+p*p*p/27),1./3);
+    rt[0]=u-p/(3.*u)-shift;
+    std::complex<double> w(-0.5,sqrt(3.)/2);
+    rt[1]=u*w-p/(3.*u*w)-shift;
+    rt[2]=u/w-p*w/(3.*u)-shift;
+//	std::cout<<"Roots:\n";
+//	std::cout<<rt[0]<<std::endl;
+//	std::cout<<rt[1]<<std::endl;
+//	std::cout<<rt[2]<<std::endl;
+
+    roots[0]=rt[0].real();
+    roots[1]=rt[1].real();
+    roots[2]=rt[2].real();
+    return ret;
+}
 
+unsigned int RS_Math::quarticSolver(double * ce, double *roots)
+//quartic solver
+// x^4 + ce[0] x^3 + ce[1] x^2 + ce[2] x + ce[3] = 0
+{
+    // x^4 + a x^3 + b x^2 +c x + d = 0
+    // depressed quartic, x= t - a/4
+    // t^4 + ( b - 3/8 a^2 ) t^2 + (c - a b/2 + a^3/8) t + d - a c /4 + a^2 b/16 - 3 a^4/256 =0
+    // t^4 + p t^2 + q t + r =0
+    // p= b - (3./8)*a*a;
+    // q= c - 0.5*a*b+(1./8)*a*a*a;
+    // r= d - 0.25*a*c+(1./16)*a*a*b-(3./256)*a^4
+    unsigned int ret=0;
+    double shift=0.25*ce[0];
+    double shift2=shift*shift;
+    double a2=ce[0]*ce[0];
+    double p= ce[1] - (3./8)*a2;
+    double q= ce[2] + ce[0]*((1./8)*a2 - 0.5*ce[1]);
+    double r= ce[3] - shift*ce[2] + (ce[1] - 3.*shift2)*shift2;
+    //std::cout<<"quartic_solver:: p="<<p<<"\tq="<<q<<"\tr="<<r<<std::endl;
+    if (fabs(q) <= RS_TOLERANCE) {// Biquadratic equations
+        double discriminant= 0.25*p*p -r;
+        if (discriminant < 0.) {
+            return 0;
+        }
+        double t2[2];
+        t2[0]=-0.5*p-sqrt(discriminant);
+        t2[1]= -p - t2[0];
+        if ( t2[0] >= 0. ) {// four real roots
+            roots[0]=sqrt(t2[0])-shift;
+            roots[1]= -roots[0]-shift;
+            roots[2]=sqrt(t2[1])-shift;
+            roots[3]= -roots[2]-shift;
+            return 4;
+        }
+        if ( t2[1] >= 0.) { // two real roots
+            roots[0]=sqrt(t2[1])-shift;
+            roots[1]= -roots[0]-shift;
+            return 2;
+        }
+        return 0;
+    }
+    if ( fabs(r)< 1.0e-75 ) {
+        double cubic[3]= {0.,p,q};
+        roots[0]=0.;
+        ret=1+cubicSolver(cubic,roots+1);
+        for(unsigned int i=0; i<ret; i++) roots[i] -= shift;
+        return ret;
+    }
+    // depressed quartic to two quadratic equations
+    // t^4 + p t^2 + q t + r = ( t^2 + u t + v) ( t^2 - u t + w)
+    // so,
+    // 	p + u^2= w+v
+    // 	q/u= w-v
+    // 	r= wv
+    // so,
+    //  (p+u^2)^2 - (q/u)^2 = 4 r
+    //  y=u^2,
+    //  y^3 + 2 p y^2 + ( p^2 - 4 r) y - q^2 =0
+    //
+    double cubic[3]= {2.*p,p*p-4.*r,-q*q},croots[3];
+    ret = cubicSolver(cubic,croots);
+    //std::cout<<"quartic_solver:: real roots from cubic: "<<ret<<std::endl;
+    //for(unsigned int i=0; i<ret; i++)
+    //   std::cout<<"cubic["<<i<<"]="<<cubic[i]<<" x= "<<croots[i]<<std::endl;
+    if (ret==1) { //one real root from cubic
+        if (croots[0]< 0.) {//this should not happen
+            std::cerr<<"Quartic Error:: Found one real root for cubic, but negative\n";
+            return 0;
+        }
+        double sqrtz0=sqrt(croots[0]);
+        double ce2[2];
+        ce2[0]=	-sqrtz0;
+        ce2[1]=0.5*(p+croots[0])+0.5*q/sqrtz0;
+        ret=quadraticSolver(ce2,roots);
+        if (! ret ) {
+            ce2[0]=	sqrtz0;
+            ce2[1]=0.5*(p+croots[0])-0.5*q/sqrtz0;
+            ret=quadraticSolver(ce2,roots);
+        }
+        ret=2;
+        for(unsigned int i=0; i<ret; i++) roots[i] -= shift;
+        return ret;
+    }
+    if ( croots[0]> 0. && croots[1] > 0. ) {
+        double sqrtz0=sqrt(croots[0]);
+        double ce2[2];
+        ce2[0]=	-sqrtz0;
+        ce2[1]=0.5*(p+croots[0])+0.5*q/sqrtz0;
+        ret=quadraticSolver(ce2,roots);
+        ce2[0]=	sqrtz0;
+        ce2[1]=0.5*(p+croots[0])-0.5*q/sqrtz0;
+        ret=quadraticSolver(ce2,roots+2);
+        ret=4;
+        for(unsigned int i=0; i<ret; i++) roots[i] -= shift;
+        return ret;
+    }
+    return 0;
+}
diff --git a/src/lib/math/rs_math.h b/src/lib/math/rs_math.h
index 38358af..283069a 100644
--- a/src/lib/math/rs_math.h
+++ b/src/lib/math/rs_math.h
@@ -7,7 +7,7 @@
 **
 **
 ** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
+** it under the terms of the GNU General Public License as published by
 ** the Free Software Foundation; either version 2 of the License, or
 ** (at your option) any later version.
 **
@@ -15,12 +15,12 @@
 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ** GNU General Public License for more details.
-** 
+**
 ** You should have received a copy of the GNU General Public License
 ** along with this program; if not, write to the Free Software
 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 **
-** This copyright notice MUST APPEAR in all copies of the script!  
+** This copyright notice MUST APPEAR in all copies of the script!
 **
 **********************************************************************/
 
@@ -32,17 +32,17 @@
 #define _MT
 #endif
 
-#include <math.h>
+#include <cmath>
+#include <complex>
 #include <errno.h>
 
 // RVT port abs issue on latest compiler?
 #include <cstdlib>
 
+#include <QRegExp>
 #include "fparser.hh"
 
 #include "rs.h"
-#include "rs_string.h"
-#include "rs_regexp.h"
 #include "rs_vector.h"
 
 //#ifdef __GNUC__
@@ -56,13 +56,14 @@
 
 typedef unsigned int uint;
 
+
 /**
  * Math functions.
  */
 class RS_Math {
 public:
     static int round(double v);
-	static double pow(double x, double y);
+    static double pow(double x, double y);
 
     //static double abs(double v);
     //static int abs(int v);
@@ -79,16 +80,26 @@ public:
                                     bool* corrected=NULL);
     static bool isAngleReadable(double angle);
     static bool isSameDirection(double dir1, double dir2, double tol);
-    static double eval(const RS_String& expr, double def=0.0);
+    static double eval(const QString& expr, double def=0.0);
 
     static bool cmpDouble(double v1, double v2, double tol=0.001);
-  	
+//swap of two variables
+    template <class T>
+    static void swap( T &a, T &b) {
+        const T ttmp=a;
+        a=b;
+        b=ttmp;
+    };
+    static unsigned int quadraticSolver(double * ce, double * roots);
+    static unsigned int cubicSolver(double * ce, double * roots);
+    static unsigned int quarticSolver(double * ce, double * roots);
+
     /**
      * Evaluates a mathematical expression and returns the result.
      * If an error occured, ok will be set to false (if ok isn't NULL).
      */
-	// Keep that in the header file for dynamic inclusion/exclusion.
-    static double eval(const RS_String& expr, bool* ok) {
+    // Keep that in the header file for dynamic inclusion/exclusion.
+    static double eval(const QString& expr, bool* ok) {
         if (expr.isEmpty()) {
             if (ok!=NULL) {
                 *ok = false;
@@ -99,22 +110,22 @@ public:
         FunctionParser fp;
         fp.AddConstant("pi", M_PI);
 
-		// replace '14 3/4' with '14+3/4'
-		RS_String s = expr;
-		bool done;
-		do {
-			done = true;
-			int i = s.find(RS_RegExp("[0-9]* [0-9]*/[0-9]*"));
-			if (i!=-1) {
-				int i2 = s.find(' ', i);
-				if (i2!=-1) {
-					s.replace(i2, 1, "+");
-					done = false;
-				}
-			}
-		} while (!done);
-
-        int ret = fp.Parse(s.latin1(), "", true);
+        // replace '14 3/4' with '14+3/4'
+        QString s = expr;
+        bool done;
+        do {
+            done = true;
+            int i = s.indexOf(QRegExp("[0-9]* [0-9]*/[0-9]*"));
+            if (i!=-1) {
+                int i2 = s.indexOf(' ', i);
+                if (i2!=-1) {
+                    s.replace(i2, 1, "+");
+                    done = false;
+                }
+            }
+        } while (!done);
+
+        int ret = fp.Parse(s.toLatin1().data(), "", true);
 
         if (ret>=0) {
             if (ok!=NULL) {
@@ -130,8 +141,8 @@ public:
         return fp.Eval(NULL);
     }
 
-    static RS_String doubleToString(double value, double prec);
-    static RS_String doubleToString(double value, int prec);
+    static QString doubleToString(double value, double prec);
+    static QString doubleToString(double value, int prec);
 
     static void test();
 };
diff --git a/src/lib/modification/rs_modification.cpp b/src/lib/modification/rs_modification.cpp
index 8d91be0..17b6fee 100644
--- a/src/lib/modification/rs_modification.cpp
+++ b/src/lib/modification/rs_modification.cpp
@@ -7,7 +7,7 @@
 **
 **
 ** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
+** it under the terms of the GNU General Public License as published by
 ** the Free Software Foundation; either version 2 of the License, or
 ** (at your option) any later version.
 **
@@ -15,25 +15,28 @@
 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ** GNU General Public License for more details.
-** 
+**
 ** You should have received a copy of the GNU General Public License
 ** along with this program; if not, write to the Free Software
 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 **
-** This copyright notice MUST APPEAR in all copies of the script!  
+** This copyright notice MUST APPEAR in all copies of the script!
 **
 **********************************************************************/
 
 #include "rs_modification.h"
 
+#include "rs_graphicview.h"
 #include "rs_clipboard.h"
 #include "rs_creation.h"
-#include "rs_entity.h"
+//#include "rs_entity.h"
 #include "rs_graphic.h"
 #include "rs_information.h"
 #include "rs_insert.h"
+#include "rs_block.h"
 #include "rs_polyline.h"
 #include "rs_text.h"
+#include "rs_layer.h"
 
 
 
@@ -97,7 +100,7 @@ void RS_Modification::remove
 
 
 /**
- * Changes the attributes of all selected 
+ * Changes the attributes of all selected
  */
 bool RS_Modification::changeAttributes(RS_AttributesData& data) {
     if (container==NULL) {
@@ -106,8 +109,7 @@ bool RS_Modification::changeAttributes(RS_AttributesData& data) {
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL) {
         document->startUndoCycle();
@@ -161,7 +163,7 @@ bool RS_Modification::changeAttributes(RS_AttributesData& data) {
     }
 
     if (graphicView!=NULL) {
-		graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
 
     return true;
@@ -433,7 +435,7 @@ void RS_Modification::paste(const RS_PasteData& data, RS_Graphic* source) {
 
     // add entities to this host (graphic or a new block)
     RS_EntityContainer* host = container;
-    RS_String blockName;
+    QString blockName;
 
     // create new block:
     if (graphic!=NULL) {
@@ -462,7 +464,7 @@ void RS_Modification::paste(const RS_PasteData& data, RS_Graphic* source) {
 
         if (e!=NULL) {
 
-            RS_String layerName = "0";
+            QString layerName = "0";
             RS_Layer* layer = e->getLayer();
             if (layer!=NULL) {
                 layerName = layer->getName();
@@ -537,10 +539,10 @@ void RS_Modification::paste(const RS_PasteData& data, RS_Graphic* source) {
  * @param v1 1st cutting point.
  * @param e2 2nd entity on which the first cutting point is.
  * @param v2 2nd cutting point.
- * @param polyline1 Pointer to a polyline pointer which will hold the 
+ * @param polyline1 Pointer to a polyline pointer which will hold the
  *        1st resulting new polyline. Pass NULL if you don't
  *        need those pointers.
- * @param polyline2 Pointer to a polyline pointer which will hold the 
+ * @param polyline2 Pointer to a polyline pointer which will hold the
  *        2nd resulting new polyline. Pass NULL if you don't
  *        need those pointers.
  *
@@ -640,7 +642,7 @@ bool RS_Modification::splitPolyline(RS_Polyline& polyline,
 
 /**
  * Adds a node to the given polyline. The new node is placed between
- * the start and end point of the given segment. 
+ * the start and end point of the given segment.
  *
  * @param node The position of the new node.
  *
@@ -756,7 +758,7 @@ RS_Polyline* RS_Modification::addPolylineNode(RS_Polyline& polyline,
 
 
 /**
- * Deletes a node from a polyline. 
+ * Deletes a node from a polyline.
  *
  * @param node The node to delete.
  *
@@ -903,15 +905,15 @@ RS_Polyline* RS_Modification::deletePolylineNode(RS_Polyline& polyline,
 /**
  * Deletes all nodes between the two given nodes (exclusive).
  *
- * @param node1 First limiting node. 
- * @param node2 Second limiting node. 
+ * @param node1 First limiting node.
+ * @param node2 Second limiting node.
  *
  * @return Pointer to the new polyline or NULL.
  */
 
 RS_Polyline* RS_Modification::deletePolylineNodesBetween(RS_Polyline& polyline,
         RS_AtomicEntity& segment, const RS_Vector& node1, const RS_Vector& node2) {
-
+    Q_UNUSED(segment);
     RS_DEBUG->print("RS_Modification::deletePolylineNodesBetween");
 
     if (container==NULL) {
@@ -974,8 +976,8 @@ RS_Polyline* RS_Modification::deletePolylineNodesBetween(RS_Polyline& polyline,
         if (startpointInvolved) {
             if (e->isAtomic()) {
                 RS_AtomicEntity* ae = (RS_AtomicEntity*)e;
-            	length1+=ae->getLength();
-			}
+                length1+=ae->getLength();
+            }
             e = polyline.nextEntity();
         }
         for (; e!=NULL; e=polyline.nextEntity()) {
@@ -1065,9 +1067,9 @@ RS_Polyline* RS_Modification::deletePolylineNodesBetween(RS_Polyline& polyline,
                                 ae->getEndpoint().x, ae->getEndpoint().y);
                 removing = false;
                 done = true;
-				if (first==false) {
-                	nextIsStraight = true;
-				}
+                if (first==false) {
+                    nextIsStraight = true;
+                }
             }
 
             // normal node (not deleted):
@@ -1393,8 +1395,7 @@ bool RS_Modification::move(RS_MoveData& data) {
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL && handleUndo) {
         document->startUndoCycle();
@@ -1438,7 +1439,7 @@ bool RS_Modification::move(RS_MoveData& data) {
     }
 
     if (graphicView!=NULL) {
-		graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
     return true;
 }
@@ -1456,8 +1457,7 @@ bool RS_Modification::rotate(RS_RotateData& data) {
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL && handleUndo) {
         document->startUndoCycle();
@@ -1499,7 +1499,7 @@ bool RS_Modification::rotate(RS_RotateData& data) {
         document->endUndoCycle();
     }
     if (graphicView!=NULL) {
-            graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
 
     return true;
@@ -1518,8 +1518,7 @@ bool RS_Modification::scale(RS_ScaleData& data) {
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL && handleUndo) {
         document->startUndoCycle();
@@ -1561,7 +1560,7 @@ bool RS_Modification::scale(RS_ScaleData& data) {
     }
 
     if (graphicView!=NULL) {
-           graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
     return true;
 }
@@ -1579,8 +1578,7 @@ bool RS_Modification::mirror(RS_MirrorData& data) {
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL && handleUndo) {
         document->startUndoCycle();
@@ -1623,7 +1621,7 @@ bool RS_Modification::mirror(RS_MirrorData& data) {
     }
 
     if (graphicView!=NULL) {
-            graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
     return true;
 }
@@ -1640,8 +1638,7 @@ bool RS_Modification::rotate2(RS_Rotate2Data& data) {
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL && handleUndo) {
         document->startUndoCycle();
@@ -1689,7 +1686,7 @@ bool RS_Modification::rotate2(RS_Rotate2Data& data) {
     }
 
     if (graphicView!=NULL) {
-            graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
     return true;
 }
@@ -1706,8 +1703,7 @@ bool RS_Modification::moveRotate(RS_MoveRotateData& data) {
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL && handleUndo) {
         document->startUndoCycle();
@@ -1751,7 +1747,7 @@ bool RS_Modification::moveRotate(RS_MoveRotateData& data) {
         document->endUndoCycle();
     }
     if (graphicView!=NULL) {
-            graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
 
     return true;
@@ -1815,19 +1811,19 @@ void RS_Modification::deselectOriginals(bool remove
 
 
 /**
- * Adds the given entities to the container and draws the entities if 
+ * Adds the given entities to the container and draws the entities if
  * there's a graphic view available.
  *
  * @param addList Entities to add.
  */
-void RS_Modification::addNewEntities(RS_PtrList<RS_Entity>& addList) {
-    for (RS_Entity* e=addList.first();
-            e!=NULL;
-            e=addList.next()) {
-        if (e!=NULL) {
-            container->addEntity(e);
+void RS_Modification::addNewEntities(QList<RS_Entity*>& addList) {
+    for (int i = 0; i < addList.size(); ++i) {
+        /*        if (addList.at(i) == "Jane")
+                    cout << "Found Jane at position " << i << endl;*/
+        if (addList.at(i) != NULL) {
+            container->addEntity(addList.at(i));
             if (document!=NULL && handleUndo) {
-                document->addUndoable(e);
+                document->addUndoable(addList.at(i));
             }
             //if (graphicView!=NULL) {
             //    graphicView->drawEntity(e);
@@ -1842,7 +1838,7 @@ void RS_Modification::addNewEntities(RS_PtrList<RS_Entity>& addList) {
  * Trims or extends the given trimEntity to the intersection point of the
  * trimEntity and the limitEntity.
  *
- * @param trimCoord Coordinate which defines which endpoint of the 
+ * @param trimCoord Coordinate which defines which endpoint of the
  *   trim entity to trim.
  * @param trimEntity Entity which will be trimmed.
  * @param limitCoord Coordinate which defines the intersection to which the
@@ -1948,6 +1944,55 @@ bool RS_Modification::trim(const RS_Vector& trimCoord,
     RS_DEBUG->print("RS_Modification::trim: is2: %f/%f", is2.x, is2.y);
 
     //RS2::Ending ending = trimmed1->getTrimPoint(trimCoord, is);
+    if (trimEntity->rtti()==RS2::EntityEllipse) {//special for ellipse arc
+        RS_Ellipse* c = (RS_Ellipse*)trimmed1;
+        double am=c->getEllipseAngle(trimCoord);
+        double ia=c->getEllipseAngle(is);
+        double ia2=c->getEllipseAngle(is2);
+        if(RS_Math::isSameDirection(c->getAngle1(),c->getAngle2(),RS_TOLERANCE_ANGLE)) {
+            //whole ellipse
+            if( !RS_Math::isAngleBetween(am,ia,ia2,c->isReversed())) {
+                RS_Math::swap(ia,ia2);
+                RS_Math::swap(is,is2);
+            }
+            c->setAngle1(ia);
+            c->setAngle2(ia2);
+            double da1=fabs(remainder(c->getAngle1()-am,2*M_PI));
+            double da2=fabs(remainder(c->getAngle2()-am,2*M_PI));
+            if(da2<da1) {
+                RS_Math::swap(is,is2);
+            }
+
+        } else {
+            double dia=fabs(remainder(ia-am,2*M_PI));
+            double dia2=fabs(remainder(ia2-am,2*M_PI));
+            double ai_min=(dia<dia2)? dia:dia2;
+            double da1=fabs(remainder(c->getAngle1()-am,2*M_PI));
+            double da2=fabs(remainder(c->getAngle2()-am,2*M_PI));
+            double da_min=(da1<da2)? da1:da2;
+            if( da_min < ai_min ) {
+                //trimming one end of arc
+                if( ((da1 < da2) && (RS_Math::isAngleBetween(ia2,ia,c->getAngle1(),c->isReversed()))) ||
+                        ((da1 > da2) && (RS_Math::isAngleBetween(ia2,c->getAngle2(),ia,c->isReversed())))
+                  ) {
+                    RS_Math::swap(is,is2);
+                }
+            } else {
+                //choose intersection as new end
+                if( dia > dia2) {
+                    RS_Math::swap(is,is2);
+                    RS_Math::swap(ia,ia2);
+                }
+                if(RS_Math::isAngleBetween(ia,c->getAngle1(),c->getAngle2(),c->isReversed())) {
+                    if(RS_Math::isAngleBetween(am,c->getAngle1(),ia,c->isReversed())) {
+                        c->setAngle2(ia);
+                    } else {
+                        c->setAngle1(ia);
+                    }
+                }
+            }
+        }
+    }
     RS2::Ending ending = trimmed1->getTrimPoint(trimCoord, is);
 
     switch (ending) {
@@ -2020,7 +2065,7 @@ bool RS_Modification::trim(const RS_Vector& trimCoord,
 /**
  * Trims or extends the given trimEntity by the given amount.
  *
- * @param trimCoord Coordinate which defines which endpoint of the 
+ * @param trimCoord Coordinate which defines which endpoint of the
  *   trim entity to trim.
  * @param trimEntity Entity which will be trimmed.
  * @param dist Amount to trim by.
@@ -2169,8 +2214,7 @@ bool RS_Modification::stretch(const RS_Vector& firstCorner,
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL && handleUndo) {
         document->startUndoCycle();
@@ -2184,13 +2228,14 @@ bool RS_Modification::stretch(const RS_Vector& firstCorner,
                 e->isVisible() &&
                 !e->isLocked() ) {
 //            &&
-//                (e->isInWindow(firstCorner, secondCorner) ||
-//                 e->hasEndpointsWithinWindow(firstCorner, secondCorner))) {
+            if (  (e->isInWindow(firstCorner, secondCorner) ||
+                e->hasEndpointsWithinWindow(firstCorner, secondCorner))) {
 
-            RS_Entity* ec = e->clone();
-            ec->stretch(firstCorner, secondCorner, offset);
-            addList.append(ec);
-            e->setSelected(true);
+                RS_Entity* ec = e->clone();
+                ec->stretch(firstCorner, secondCorner, offset);
+                addList.append(ec);
+                e->setSelected(true);
+            }
         }
     }
 
@@ -2202,7 +2247,7 @@ bool RS_Modification::stretch(const RS_Vector& firstCorner,
     }
 
     if (graphicView!=NULL) {
-            graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
     return true;
 }
@@ -2223,7 +2268,7 @@ bool RS_Modification::bevel(const RS_Vector& coord1, RS_AtomicEntity* entity1,
                             RS_BevelData& data) {
 
     RS_DEBUG->print("RS_Modification::bevel");
-    
+
     if (entity1==NULL || entity2==NULL) {
         RS_DEBUG->print(RS_Debug::D_WARNING,
                         "RS_Modification::bevel: At least one entity is NULL");
@@ -2265,9 +2310,9 @@ bool RS_Modification::bevel(const RS_Vector& coord1, RS_AtomicEntity* entity1,
 
         //baseContainer = entity1->getParent();
         isPolyline = true;
-		isClosedPolyline = ((RS_Polyline*)entity1)->isClosed();
+        isClosedPolyline = ((RS_Polyline*)entity1)->isClosed();
     }
-        
+
     RS_DEBUG->print("RS_Modification::bevel: getting intersection");
 
     RS_VectorSolutions sol =
@@ -2281,60 +2326,60 @@ bool RS_Modification::bevel(const RS_Vector& coord1, RS_AtomicEntity* entity1,
     RS_AtomicEntity* trimmed2 = NULL;
 
     //if (data.trim || isPolyline) {
-        if (isPolyline) {
-            trimmed1 = entity1;
-            trimmed2 = entity2;
-        } else {
-            trimmed1 = (RS_AtomicEntity*)entity1->clone();
-            trimmed2 = (RS_AtomicEntity*)entity2->clone();
-        }
+    if (isPolyline) {
+        trimmed1 = entity1;
+        trimmed2 = entity2;
+    } else {
+        trimmed1 = (RS_AtomicEntity*)entity1->clone();
+        trimmed2 = (RS_AtomicEntity*)entity2->clone();
+    }
 
-        // remove trim entity (on screen):
-        if (data.trim==true || isPolyline) {
-            if (graphicView!=NULL) {
-                if (isPolyline) {
-                    graphicView->deleteEntity(baseContainer);
-                } else {
-                    graphicView->deleteEntity(entity1);
-                    graphicView->deleteEntity(entity2);
-                }
+    // remove trim entity (on screen):
+    if (data.trim==true || isPolyline) {
+        if (graphicView!=NULL) {
+            if (isPolyline) {
+                graphicView->deleteEntity(baseContainer);
+            } else {
+                graphicView->deleteEntity(entity1);
+                graphicView->deleteEntity(entity2);
             }
         }
+    }
 
-        // trim entities to intersection
-        RS_DEBUG->print("RS_Modification::bevel: trim entities to intersection 01");
-        bool start1 = false;
-        RS_Vector is = sol.getClosest(coord2);
-        RS2::Ending ending1 = trimmed1->getTrimPoint(coord1, is);
-        switch (ending1) {
-        case RS2::EndingStart:
-            trimmed1->trimStartpoint(is);
-            start1 = true;
-            break;
-        case RS2::EndingEnd:
-            trimmed1->trimEndpoint(is);
-            start1 = false;
-            break;
-        default:
-            break;
-        }
+    // trim entities to intersection
+    RS_DEBUG->print("RS_Modification::bevel: trim entities to intersection 01");
+    bool start1 = false;
+    RS_Vector is = sol.getClosest(coord2);
+    RS2::Ending ending1 = trimmed1->getTrimPoint(coord1, is);
+    switch (ending1) {
+    case RS2::EndingStart:
+        trimmed1->trimStartpoint(is);
+        start1 = true;
+        break;
+    case RS2::EndingEnd:
+        trimmed1->trimEndpoint(is);
+        start1 = false;
+        break;
+    default:
+        break;
+    }
 
-        RS_DEBUG->print("RS_Modification::bevel: trim entities to intersection 02");
-        bool start2 = false;
-        is = sol.getClosest(coord1);
-        RS2::Ending ending2 = trimmed2->getTrimPoint(coord2, is);
-        switch (ending2) {
-        case RS2::EndingStart:
-            trimmed2->trimStartpoint(is);
-            start2 = true;
-            break;
-        case RS2::EndingEnd:
-            trimmed2->trimEndpoint(is);
-            start2 = false;
-            break;
-        default:
-            break;
-        }
+    RS_DEBUG->print("RS_Modification::bevel: trim entities to intersection 02");
+    bool start2 = false;
+    is = sol.getClosest(coord1);
+    RS2::Ending ending2 = trimmed2->getTrimPoint(coord2, is);
+    switch (ending2) {
+    case RS2::EndingStart:
+        trimmed2->trimStartpoint(is);
+        start2 = true;
+        break;
+    case RS2::EndingEnd:
+        trimmed2->trimEndpoint(is);
+        start2 = false;
+        break;
+    default:
+        break;
+    }
     //}
 
 
@@ -2395,20 +2440,20 @@ bool RS_Modification::bevel(const RS_Vector& coord1, RS_AtomicEntity* entity1,
         bevel->setSelected(baseContainer->isSelected());
         bevel->setLayer(baseContainer->getLayer());
         bevel->setPen(baseContainer->getPen());
-		
-		bool insertAfter1 = false;
-		if (!isClosedPolyline) {
-			insertAfter1 = (idx1<idx2);
-		}
-		else {
-			insertAfter1 = ((idx1<idx2 && idx1!=0) || 
-				(idx2==0 && idx1==(int)baseContainer->count()-1));
-		}
+
+        bool insertAfter1 = false;
+        if (!isClosedPolyline) {
+            insertAfter1 = (idx1<idx2);
+        }
+        else {
+            insertAfter1 = ((idx1<idx2 && idx1!=0) ||
+                            (idx2==0 && idx1==(int)baseContainer->count()-1));
+        }
 
         // insert bevel at the right position:
-        //if ((idx1<idx2 && idx1!=0) || 
-		//	(idx2==0 && idx1==(int)baseContainer->count()-1)) {
-		if (insertAfter1) {
+        //if ((idx1<idx2 && idx1!=0) ||
+        //	(idx2==0 && idx1==(int)baseContainer->count()-1)) {
+        if (insertAfter1) {
             if (trimmed1->getEndpoint().distanceTo(bevel->getStartpoint())>1.0e-4) {
                 bevel->reverse();
             }
@@ -2432,7 +2477,7 @@ bool RS_Modification::bevel(const RS_Vector& coord1, RS_AtomicEntity* entity1,
             graphicView->drawEntity(bevel);
         }
     }
-    
+
     RS_DEBUG->print("RS_Modification::bevel: handling undo");
 
     if (document!=NULL && handleUndo) {
@@ -2498,13 +2543,13 @@ bool RS_Modification::round(const RS_Vector& coord,
     }
 
     // find out whether we're rounding within a polyline:
-    if (entity1->getParent()!=NULL && 
-		entity1->getParent()->rtti()==RS2::EntityPolyline) {
+    if (entity1->getParent()!=NULL &&
+            entity1->getParent()->rtti()==RS2::EntityPolyline) {
 
         if (entity1->getParent()!=entity2->getParent()) {
             RS_DEBUG->print(RS_Debug::D_WARNING,
                             "RS_Modification::round: entities not in "
-							"the same polyline");
+                            "the same polyline");
             if (document!=NULL && handleUndo) {
                 document->endUndoCycle();
             }
@@ -2528,7 +2573,7 @@ bool RS_Modification::round(const RS_Vector& coord,
         entity2 = (RS_AtomicEntity*)baseContainer->entityAt(entity2->getParent()->findEntity(entity2));
 
         isPolyline = true;
-		isClosedPolyline = ((RS_Polyline*)entity1)->isClosed();
+        isClosedPolyline = ((RS_Polyline*)entity1)->isClosed();
     }
 
     // create 2 tmp parallels
@@ -2638,24 +2683,24 @@ bool RS_Modification::round(const RS_Vector& coord,
         arc->setLayer(baseContainer->getLayer());
         arc->setPen(baseContainer->getPen());
 
-		RS_DEBUG->print("RS_Modification::round: idx1<idx2: %d", (int)(idx1<idx2));
-		RS_DEBUG->print("RS_Modification::round: idx1!=0: %d", (int)(idx1!=0));
-		RS_DEBUG->print("RS_Modification::round: idx2==0: %d", (int)(idx2==0));
-		RS_DEBUG->print("RS_Modification::round: idx1==(int)baseContainer->count()-1: %d", 
-			(int)(idx1==(int)baseContainer->count()-1));
-
-		bool insertAfter1 = false;
-		if (!isClosedPolyline) {
-			insertAfter1 = (idx1<idx2);
-		}
-		else {
-			insertAfter1 = ((idx1<idx2 && idx1!=0) || 
-				(idx2==0 && idx1==(int)baseContainer->count()-1));
-		}
+        RS_DEBUG->print("RS_Modification::round: idx1<idx2: %d", (int)(idx1<idx2));
+        RS_DEBUG->print("RS_Modification::round: idx1!=0: %d", (int)(idx1!=0));
+        RS_DEBUG->print("RS_Modification::round: idx2==0: %d", (int)(idx2==0));
+        RS_DEBUG->print("RS_Modification::round: idx1==(int)baseContainer->count()-1: %d",
+                        (int)(idx1==(int)baseContainer->count()-1));
+
+        bool insertAfter1 = false;
+        if (!isClosedPolyline) {
+            insertAfter1 = (idx1<idx2);
+        }
+        else {
+            insertAfter1 = ((idx1<idx2 && idx1!=0) ||
+                            (idx2==0 && idx1==(int)baseContainer->count()-1));
+        }
 
         // insert rounding at the right position:
-        //if ((idx1<idx2 && idx1!=0) || 
-		//	(idx2==0 && idx1==(int)baseContainer->count()-1)) {
+        //if ((idx1<idx2 && idx1!=0) ||
+        //	(idx2==0 && idx1==(int)baseContainer->count()-1)) {
         //if (idx1<idx2) {
         if (insertAfter1) {
             if (trimmed1->getEndpoint().distanceTo(arc->getStartpoint())>1.0e-4) {
@@ -2721,8 +2766,7 @@ bool RS_Modification::explode() {
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL && handleUndo) {
         document->startUndoCycle();
@@ -2816,7 +2860,7 @@ bool RS_Modification::explode() {
     }
 
     if (graphicView!=NULL) {
-            graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
 
     return true;
@@ -2832,8 +2876,7 @@ bool RS_Modification::explodeTextIntoLetters() {
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL && handleUndo) {
         document->startUndoCycle();
@@ -2861,7 +2904,7 @@ bool RS_Modification::explodeTextIntoLetters() {
     }
 
     if (graphicView!=NULL) {
-            graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
 
     return true;
@@ -2869,7 +2912,7 @@ bool RS_Modification::explodeTextIntoLetters() {
 
 
 
-bool RS_Modification::explodeTextIntoLetters(RS_Text* text, RS_PtrList<RS_Entity>& addList) {
+bool RS_Modification::explodeTextIntoLetters(RS_Text* text, QList<RS_Entity*>& addList) {
 
     if (text==NULL) {
         return false;
@@ -2908,17 +2951,17 @@ bool RS_Modification::explodeTextIntoLetters(RS_Text* text, RS_PtrList<RS_Entity
                     RS_Insert* letter = (RS_Insert*)e3;
 
                     RS_Text* tl = new RS_Text(
-                                      container,
-                                      RS_TextData(letter->getInsertionPoint(),
-                                                  text->getHeight(),
-                                                  100.0,
-                                                  RS2::VAlignBottom, RS2::HAlignLeft,
-                                                  RS2::LeftToRight, RS2::Exact,
-                                                  1.0,
-                                                  letter->getName(),
-                                                  text->getStyle(),
-                                                  letter->getAngle(),
-                                                  RS2::Update));
+                        container,
+                        RS_TextData(letter->getInsertionPoint(),
+                                    text->getHeight(),
+                                    100.0,
+                                    RS2::VAlignBottom, RS2::HAlignLeft,
+                                    RS2::LeftToRight, RS2::Exact,
+                                    1.0,
+                                    letter->getName(),
+                                    text->getStyle(),
+                                    letter->getAngle(),
+                                    RS2::Update));
 
                     tl->setLayer(text->getLayer());
                     tl->setPen(text->getPen());
@@ -2945,8 +2988,7 @@ bool RS_Modification::moveRef(RS_MoveRefData& data) {
         return false;
     }
 
-    RS_PtrList<RS_Entity> addList;
-    addList.setAutoDelete(false);
+    QList<RS_Entity*> addList;
 
     if (document!=NULL && handleUndo) {
         document->startUndoCycle();
@@ -2974,7 +3016,7 @@ bool RS_Modification::moveRef(RS_MoveRefData& data) {
     }
 
     if (graphicView!=NULL) {
-            graphicView->redraw(RS2::RedrawDrawing);
+        graphicView->redraw(RS2::RedrawDrawing);
     }
     return true;
 }
diff --git a/src/lib/modification/rs_modification.h b/src/lib/modification/rs_modification.h
index 6f63527..659f016 100644
--- a/src/lib/modification/rs_modification.h
+++ b/src/lib/modification/rs_modification.h
@@ -27,11 +27,16 @@
 #ifndef RS_MODIFICATION_H
 #define RS_MODIFICATION_H
 
-#include "rs_entitycontainer.h"
-#include "rs_graphicview.h"
-#include "rs_line.h"
-
-
+#include "rs_vector.h"
+#include "rs_pen.h"
+class RS_AtomicEntity;
+class RS_Entity;
+class RS_EntityContainer;
+class RS_Text;
+class RS_Polyline;
+class RS_Document;
+class RS_Graphic;
+class RS_GraphicView;
 
 /**
  * Holds the data needed for move modifications.
@@ -156,7 +161,7 @@ public:
  */
 class RS_AttributesData {
 public:
-	RS_String layer;
+        QString layer;
 	RS_Pen pen;
 	bool changeLayer;
 	bool changeColor;
@@ -174,7 +179,7 @@ public:
 		double factor,
 		double angle,
 		bool asInsert,
-		const RS_String& blockName) {
+                const QString& blockName) {
 
 		this->insertionPoint = insertionPoint;
 		this->factor = factor;
@@ -192,7 +197,7 @@ public:
 	//! Paste as an insert rather than individual entities.
 	bool asInsert;
 	//! Name of the block to create or an empty string to assign a new auto name.
-	RS_String blockName;
+        QString blockName;
 };
 
 
@@ -255,7 +260,7 @@ public:
 
 	bool explode();
 	bool explodeTextIntoLetters();
-	bool explodeTextIntoLetters(RS_Text* text, RS_PtrList<RS_Entity>& addList);
+        bool explodeTextIntoLetters(RS_Text* text, QList<RS_Entity*>& addList);
     bool moveRef(RS_MoveRefData& data);
 
     bool splitPolyline(RS_Polyline& polyline,
@@ -276,7 +281,7 @@ public:
 
 private:
     void deselectOriginals(bool remove);
-    void addNewEntities(RS_PtrList<RS_Entity>& addList);
+    void addNewEntities(QList<RS_Entity*>& addList);
 
 protected:
     RS_EntityContainer* container;
diff --git a/src/lib/modification/rs_selection.cpp b/src/lib/modification/rs_selection.cpp
index 8889bf8..7e65e3d 100644
--- a/src/lib/modification/rs_selection.cpp
+++ b/src/lib/modification/rs_selection.cpp
@@ -30,6 +30,7 @@
 #include "rs_polyline.h"
 #include "rs_entity.h"
 #include "rs_graphic.h"
+#include "rs_layer.h"
 
 
 
@@ -308,7 +309,7 @@ void RS_Selection::selectLayer(RS_Entity* e) {
         return;
     }
 
-    RS_String layerName = layer->getName();
+    QString layerName = layer->getName();
 	selectLayer(layerName, select);
 }
 
@@ -317,7 +318,7 @@ void RS_Selection::selectLayer(RS_Entity* e) {
 /**
  * Selects all entities on the given layer.
  */
-void RS_Selection::selectLayer(const RS_String& layerName, bool select) {
+void RS_Selection::selectLayer(const QString& layerName, bool select) {
 
     for (RS_Entity* en=container->firstEntity(); en!=NULL;
             en=container->nextEntity()) {
diff --git a/src/lib/modification/rs_selection.h b/src/lib/modification/rs_selection.h
index 6bba46b..7daedaf 100644
--- a/src/lib/modification/rs_selection.h
+++ b/src/lib/modification/rs_selection.h
@@ -64,8 +64,8 @@ public:
     void selectContour(RS_Entity* e);
 	
     void selectLayer(RS_Entity* e);
-    void selectLayer(const RS_String& layerName, bool select=true);
-    void deselectLayer(RS_String& layerName) {
+    void selectLayer(const QString& layerName, bool select=true);
+    void deselectLayer(QString& layerName) {
 		selectLayer(layerName, false);
 	}
 
diff --git a/src/lib/scripting/rs_python.cpp b/src/lib/scripting/rs_python.cpp
index 750e410..e6cc6ef 100644
--- a/src/lib/scripting/rs_python.cpp
+++ b/src/lib/scripting/rs_python.cpp
@@ -67,7 +67,7 @@ RS_Python* RS_Python::instance() {
 /**
  * Launches the given script.
  */
-int RS_Python::launch(const RS_String& script) {
+int RS_Python::launch(const QString& script) {
     PyObject *modname, *mod, *mdict, *func, *rslt;
     //Py_SetProgramName(argv[0]);
 
diff --git a/src/lib/scripting/rs_python.h b/src/lib/scripting/rs_python.h
index 10b938f..959f981 100644
--- a/src/lib/scripting/rs_python.h
+++ b/src/lib/scripting/rs_python.h
@@ -57,7 +57,7 @@ public:
         return graphic;
     }
 
-    int launch(const RS_String& script);
+    int launch(const QString& script);
 
 private:
     static RS_Python* uniqueInstance;
diff --git a/src/lib/scripting/rs_python_wrappers.cpp b/src/lib/scripting/rs_python_wrappers.cpp
index 48af0f8..faaa3a8 100644
--- a/src/lib/scripting/rs_python_wrappers.cpp
+++ b/src/lib/scripting/rs_python_wrappers.cpp
@@ -70,24 +70,24 @@ RS_Graphic* currentGraphic() { return RS_PYTHON->getGraphic(); }
        creation of new documents, ... */
 
 /* To/From Python string conversion logic for string management */
-namespace RS_String_Python_Conversions {
+namespace QString_Python_Conversions {
     namespace {
-        struct RS_String_to_python_str
+        struct QString_to_python_str
         {
-            static PyObject* convert(RS_String const& s)
+            static PyObject* convert(QString const& s)
             {
                 return boost::python::incref(boost::python::object((const char*)s).ptr());
             }
         };
 
-        struct RS_String_from_python_str
+        struct QString_from_python_str
         {
-            RS_String_from_python_str()
+            QString_from_python_str()
             {
                 boost::python::converter::registry::push_back(
                     &convertible,
                     &construct,
-                    boost::python::type_id<RS_String>());
+                    boost::python::type_id<QString>());
             }
 
             static void* convertible(PyObject* obj_ptr)
@@ -104,9 +104,9 @@ namespace RS_String_Python_Conversions {
                 if (!value)
                     boost::python::throw_error_already_set();
                 void* storage = (
-                    (boost::python::converter::rvalue_from_python_storage<RS_String>*)
+                    (boost::python::converter::rvalue_from_python_storage<QString>*)
                     data)->storage.bytes;
-                new (storage) RS_String(value);
+                new (storage) QString(value);
                 data->convertible = storage;
             }
         };
@@ -116,9 +116,9 @@ namespace RS_String_Python_Conversions {
             using namespace boost::python;
 
             boost::python::to_python_converter<
-                RS_String, RS_String_to_python_str>();
+                QString, QString_to_python_str>();
 
-            RS_String_from_python_str();
+            QString_from_python_str();
         }
     }
 }
@@ -147,13 +147,13 @@ ADDVERTEX_FUNCTION(RS_EntityContainer_addPoint, RS_Point)
 ADDVERTEX_FUNCTION(RS_EntityContainer_addPolyline, RS_Polyline)
 
 /* Overloaded functions helpers */
-void (RS_LayerList::*RS_LayerList_activate_string)(const RS_String&) = &RS_LayerList::activate;
+void (RS_LayerList::*RS_LayerList_activate_string)(const QString&) = &RS_LayerList::activate;
 void (RS_LayerList::*RS_LayerList_activate_layer)(RS_Layer*) = &RS_LayerList::activate;
-void (RS_LayerList::*RS_LayerList_toggle_string)(const RS_String&) = &RS_LayerList::toggle;
-void (RS_LayerList::*RS_LayerList_toggle_layer)(const RS_String&) = &RS_LayerList::toggle;
-void (RS_Graphic::*RS_Graphic_toggleLayer_string)(const RS_String&) = &RS_Graphic::toggleLayer;
+void (RS_LayerList::*RS_LayerList_toggle_string)(const QString&) = &RS_LayerList::toggle;
+void (RS_LayerList::*RS_LayerList_toggle_layer)(const QString&) = &RS_LayerList::toggle;
+void (RS_Graphic::*RS_Graphic_toggleLayer_string)(const QString&) = &RS_Graphic::toggleLayer;
 void (RS_Graphic::*RS_Graphic_toggleLayer_layer)(RS_Layer*) = &RS_Graphic::toggleLayer;
-void (RS_Entity::*RS_Entity_setLayer_string)(const RS_String&) = &RS_Entity::setLayer;
+void (RS_Entity::*RS_Entity_setLayer_string)(const QString&) = &RS_Entity::setLayer;
 void (RS_Entity::*RS_Entity_setLayer_layer)(RS_Layer*) = &RS_Entity::setLayer;
 
 /**
@@ -163,7 +163,7 @@ void (RS_Entity::*RS_Entity_setLayer_layer)(RS_Layer*) = &RS_Entity::setLayer;
 BOOST_PYTHON_MODULE(librecad)
 {
     /* Initialization code */
-    RS_String_Python_Conversions::registerConversions();
+    QString_Python_Conversions::registerConversions();
     
     /* Unbound functions */
     
@@ -352,13 +352,13 @@ BOOST_PYTHON_MODULE(librecad)
     ;
 
     class_<RS_LayerData>("LayerData")
-        .def(init<const RS_String&, const RS_Pen&, bool>())
+        .def(init<const QString&, const RS_Pen&, bool>())
 	.def_readwrite("name", &RS_LayerData::name)
 	.def_readwrite("pen", &RS_LayerData::pen)
 	.def_readwrite("frozen", &RS_LayerData::frozen)
     ;
 
-    class_<RS_Layer, std::auto_ptr<RS_Layer> >("Layer", init<const RS_String&>())
+    class_<RS_Layer, std::auto_ptr<RS_Layer> >("Layer", init<const QString&>())
         .add_property("name", &RS_Layer::getName, &RS_Layer::setName)
 	.add_property("pen", &RS_Layer::getPen, &RS_Layer::setPen)
 	.add_property("frozen", &RS_Layer::isFrozen, &RS_Layer::freeze)
@@ -466,7 +466,7 @@ BOOST_PYTHON_MODULE(librecad)
     ;
 
     class_<RS_BlockData>("BlockData")
-        .def(init<RS_String&, const RS_Vector&, bool>())
+        .def(init<QString&, const RS_Vector&, bool>())
 	.add_property("valid", &RS_BlockData::isValid)
 	.def_readwrite("name", &RS_BlockData::name)
 	.def_readwrite("basePoint", &RS_BlockData::basePoint)
@@ -489,7 +489,7 @@ BOOST_PYTHON_MODULE(librecad)
     ;
 
     class_<RS_ImageData>("ImageData")
-        .def(init<int, const RS_Vector&, const RS_Vector&, const RS_Vector&, const RS_Vector&, const RS_String&, int, int, int>())
+        .def(init<int, const RS_Vector&, const RS_Vector&, const RS_Vector&, const RS_Vector&, const QString&, int, int, int>())
 	.def_readwrite("handle", &RS_ImageData::handle)
 	.def_readwrite("insertionPoint", &RS_ImageData::insertionPoint)
 	.def_readwrite("uVector", &RS_ImageData::uVector)
diff --git a/src/lib/scripting/rs_script.cpp b/src/lib/scripting/rs_script.cpp
index 444e1e5..f68e585 100644
--- a/src/lib/scripting/rs_script.cpp
+++ b/src/lib/scripting/rs_script.cpp
@@ -34,7 +34,7 @@
 /**
  * Constructor.
  */
-RS_Script::RS_Script(const RS_String& name, const RS_String& /*path*/) {
+RS_Script::RS_Script(const QString& name, const QString& /*path*/) {
     this->name = name;
 }
 
diff --git a/src/lib/scripting/rs_script.h b/src/lib/scripting/rs_script.h
index c72a84e..7f69776 100644
--- a/src/lib/scripting/rs_script.h
+++ b/src/lib/scripting/rs_script.h
@@ -28,12 +28,12 @@
 #define RS_SCRIPT_H
 
 #include <iostream>
+#include <QString>
 
-#include "rs_string.h"
 
 
 /**
- * Class for representing a script. This is implemented as a RS_String
+ * Class for representing a script. This is implemented as a QString
  * containing the script name.
  *
  * OBSOLETE
@@ -42,25 +42,25 @@
  */
 class RS_Script {
 public:
-    RS_Script(const RS_String& name, const RS_String& path);
+    RS_Script(const QString& name, const QString& path);
     //RS_Script(const char* name);
 
     /** @return the name of this script. */
-    RS_String getName() const {
+    QString getName() const {
         return name;
     }
 
     /** @return the full path and file name of this script. */
-    RS_String getPath() const {
+    QString getPath() const {
         return path;
     }
 
 private:
     //! Script name
-    RS_String name;
+    QString name;
 
     //! Full path to script
-    RS_String path;
+    QString path;
 };
 
 #endif
diff --git a/src/lib/scripting/rs_scriptlist.cpp b/src/lib/scripting/rs_scriptlist.cpp
index 81e0114..a154bae 100644
--- a/src/lib/scripting/rs_scriptlist.cpp
+++ b/src/lib/scripting/rs_scriptlist.cpp
@@ -26,8 +26,6 @@
 
 #include "rs_scriptlist.h"
 
-#include "rs_fileinfo.h"
-#include "rs_stringlist.h"
 #include "rs_system.h"
 
 RS_ScriptList* RS_ScriptList::uniqueInstance = NULL;
@@ -36,7 +34,6 @@ RS_ScriptList* RS_ScriptList::uniqueInstance = NULL;
  * Default constructor.
  */
 RS_ScriptList::RS_ScriptList() {
-    scripts.setAutoDelete(true);
     //init();
     //scriptListListeners.setAutoDelete(false);
     //activeScript = NULL;
@@ -51,20 +48,20 @@ void RS_ScriptList::init() {
 
     RS_DEBUG->print("RS_ScriptList::initScripts");
 
-    scripts.clear();
-    RS_StringList list = RS_SYSTEM->getScriptList();
+    clearScripts();
+    QStringList list = RS_SYSTEM->getScriptList();
     RS_Script* script;
 
-    for ( RS_StringList::Iterator it = list.begin();
+    for ( QStringList::Iterator it = list.begin();
             it != list.end(); ++it ) {
-        RS_DEBUG->print("script: %s:", (*it).latin1());
+        RS_DEBUG->print("script: %s:", (*it).toLatin1().data());
 
-        RS_FileInfo fi(*it);
-        script = new RS_Script(fi.baseName(), fi.absFilePath());
+        QFileInfo fi(*it);
+        script = new RS_Script(fi.baseName(), fi.absoluteFilePath());
         scripts.append(script);
 
-        RS_DEBUG->print("base: %s", fi.baseName().latin1());
-        RS_DEBUG->print("path: %s", fi.absFilePath().latin1());
+        RS_DEBUG->print("base: %s", fi.baseName().toLatin1().data());
+        RS_DEBUG->print("path: %s", fi.absoluteFilePath().toLatin1().data());
     }
 
     //RS_Script* f = new RS_Script("normal");
@@ -76,7 +73,8 @@ void RS_ScriptList::init() {
  * Removes all scripts in the scriptlist.
  */
 void RS_ScriptList::clearScripts() {
-    scripts.clear();
+    while (!scripts.isEmpty())
+        delete scripts.takeFirst();
 }
 
 
@@ -90,7 +88,7 @@ void RS_ScriptList::removeScript(RS_Script* script) {
     RS_DEBUG->print("RS_ScriptList::removeScript()");
 
     // here the script is removed from the list but not deleted
-    scripts.remove(script);
+    scripts.removeOne(script);
 
     //for (uint i=0; i<scriptListListeners.count(); ++i) {
     //    RS_ScriptListListener* l = scriptListListeners.at(i);
@@ -113,21 +111,19 @@ void RS_ScriptList::removeScript(RS_Script* script) {
  * \p NULL if no such script was found. The script will be loaded into
  * memory if it's not already.
  */
-RS_Script* RS_ScriptList::requestScript(const RS_String& name) {
-    RS_DEBUG->print("RS_ScriptList::requestScript %s",  name.latin1());
+RS_Script* RS_ScriptList::requestScript(const QString& name) {
+    RS_DEBUG->print("RS_ScriptList::requestScript %s",  name.toLatin1().data());
 
-    RS_String name2 = name.lower();
+    QString name2 = name.toLower();
     RS_Script* foundScript = NULL;
 
-    RS_DEBUG->print("name2: %s", name2.latin1());
+    RS_DEBUG->print("name2: %s", name2.toLatin1().data());
 
     // Search our list of available scripts:
-    for (RS_Script* s=scripts.first();
-            s!=NULL;
-            s=scripts.next()) {
+    for (int i = 0; i < scripts.size(); ++i) {
 
-        if (s->getName()==name2) {
-            foundScript = s;
+        if (scripts.at(i)->getName()==name2) {
+            foundScript = scripts.at(i);
             break;
         }
     }
@@ -142,7 +138,7 @@ RS_Script* RS_ScriptList::requestScript(const RS_String& name) {
  * @return Pointer to the script with the given name or
  * \p NULL if no such script was found.
  */
-//RS_Script* RS_ScriptList::loadScript(const RS_String& name) {
+//RS_Script* RS_ScriptList::loadScript(const QString& name) {
 //}
 
 
diff --git a/src/lib/scripting/rs_scriptlist.h b/src/lib/scripting/rs_scriptlist.h
index 2fc8e7a..56b95aa 100644
--- a/src/lib/scripting/rs_scriptlist.h
+++ b/src/lib/scripting/rs_scriptlist.h
@@ -28,8 +28,8 @@
 #define RS_SCRIPTLIST_H
 
 
+#include<QList>
 #include "rs_script.h"
-#include "rs_ptrlist.h"
 
 #define RS_SCRIPTLIST RS_ScriptList::instance()
 
@@ -56,7 +56,7 @@ public:
         return uniqueInstance;
     }
 
-    virtual ~RS_ScriptList() {}
+    virtual ~RS_ScriptList() {clearScripts();}
 
     void init();
 
@@ -64,25 +64,19 @@ public:
     int countScripts() {
         return scripts.count();
     }
-    //void activateScript(const RS_String& name);
+    //void activateScript(const QString& name);
     //void activateScript(RS_Script* script);
     ////! @return The active script of NULL if no script is activated.
     //RS_Script* getActiveScript() { return activeScript; }
     //virtual void addScript(RS_Script* script);
     virtual void removeScript(RS_Script* script);
     //virtual void editScript(RS_Script* script, const RS_Script& source);
-    RS_Script* requestScript(const RS_String& name);
-    //RS_Script* loadScript(const RS_String& name);
-    //void toggleScript(const RS_String& name);
-    //! @return First script of the list.
-    RS_Script* firstScript() {
-        return scripts.first();
-    }
-    /** @return Next script from the list after
-     * calling firstScript() or nextScript().
-     */
-    RS_Script* nextScript() {
-        return scripts.next();
+    RS_Script* requestScript(const QString& name);
+    //RS_Script* loadScript(const QString& name);
+    //void toggleScript(const QString& name);
+    //! @return a const iterator for the font list.
+    QListIterator<RS_Script *> getIteretor(){
+        return QListIterator<RS_Script *>(scripts);
     }
 
     //void addScriptListListener(RS_ScriptListListener* listener);
@@ -94,9 +88,9 @@ protected:
 
 private:
     //! all scripts available
-    RS_PtrList<RS_Script> scripts;
+    QList<RS_Script*> scripts;
     //! List of registered ScriptListListeners
-    //RS_PtrList<RS_ScriptListListener> scriptListListeners;
+    //QList<RS_ScriptListListener> scriptListListeners;
     //! Currently active script
     //RS_Script* activeScript;
 }
diff --git a/src/lib/scripting/rs_simplepython.cpp b/src/lib/scripting/rs_simplepython.cpp
index b2628ac..8ad66b2 100644
--- a/src/lib/scripting/rs_simplepython.cpp
+++ b/src/lib/scripting/rs_simplepython.cpp
@@ -50,7 +50,7 @@ RS_SimplePython* RS_SimplePython::instance() {
 /**
  * Launches the given script.
  */
-int RS_SimplePython::launch(const RS_String& script) {
+int RS_SimplePython::launch(const QString& script) {
     long answer;
     PyObject *modname, *mod, *mdict, *func, *rslt;
     //Py_SetProgramName(argv[0]);
diff --git a/src/lib/scripting/rs_simplepython.h b/src/lib/scripting/rs_simplepython.h
index 82654ec..be6ceb1 100644
--- a/src/lib/scripting/rs_simplepython.h
+++ b/src/lib/scripting/rs_simplepython.h
@@ -59,7 +59,7 @@ public:
         return graphic;
     }
 
-    int launch(const RS_String& script);
+    int launch(const QString& script);
 
 private:
     static RS_SimplePython* uniqueInstance;
diff --git a/src/main/doc_plugin_interface.cpp b/src/main/doc_plugin_interface.cpp
index c193ea9..580ec6d 100644
--- a/src/main/doc_plugin_interface.cpp
+++ b/src/main/doc_plugin_interface.cpp
@@ -25,11 +25,521 @@
 **********************************************************************/
 
 #include "doc_plugin_interface.h"
+#include <QEventLoop>
+#include <QList>
+#include <QInputDialog>
+#include "rs_graphicview.h"
+#include "rs_actioninterface.h"
+#include "rs_actionselect.h"
 #include "rs_text.h"
+#include "rs_layer.h"
+#include "rs_image.h"
+#include "rs_insert.h"
+#include "rs_polyline.h"
+#include "intern/qc_actiongetpoint.h"
+#include "intern/qc_actiongetselect.h"
+#include "intern/qc_actiongetent.h"
 
-Doc_plugin_interface::Doc_plugin_interface(RS_Graphic *d)
+convLTW::convLTW(){
+//    QHash<int, QString> lType;
+    lType.insert(RS2::LineByLayer, "BYLAYER");
+    lType.insert(RS2::LineByBlock, "BYBLOCK");
+    lType.insert(RS2::SolidLine, "SolidLine");
+    lType.insert(RS2::DotLine, "DotLine");
+    lType.insert(RS2::DotLine2, "DotLine2");
+    lType.insert(RS2::DotLineX2, "DotLineX2");
+    lType.insert(RS2::DashLine, "DashLine");
+    lType.insert(RS2::DashLine2, "DashLine2");
+    lType.insert(RS2::DashLineX2, "DashLineX2");
+    lType.insert(RS2::DashDotLine, "DashDotLine");
+    lType.insert(RS2::DashDotLine2, "DashDotLine2");
+    lType.insert(RS2::DashDotLineX2, "DashDotLineX2");
+    lType.insert(RS2::DivideLine, "DivideLine");
+    lType.insert(RS2::DivideLine2, "DivideLine2");
+    lType.insert(RS2::DivideLineX2, "DivideLineX2");
+    lType.insert(RS2::CenterLine, "CenterLine");
+    lType.insert(RS2::CenterLine2, "CenterLine2");
+    lType.insert(RS2::CenterLineX2, "CenterLineX2");
+    lType.insert(RS2::BorderLine, "BorderLine");
+    lType.insert(RS2::BorderLine2, "BorderLine");
+    lType.insert(RS2::BorderLineX2, "BorderLine");
+
+    lWidth.insert(RS2::Width00, "0.00mm");
+    lWidth.insert(RS2::Width01, "0.05mm");
+    lWidth.insert(RS2::Width02, "0.09mm");
+    lWidth.insert(RS2::Width03, "0.13mm");
+    lWidth.insert(RS2::Width04, "0.15mm");
+    lWidth.insert(RS2::Width05, "0.18mm");
+    lWidth.insert(RS2::Width06, "0.20mm");
+    lWidth.insert(RS2::Width07, "0.25mm");
+    lWidth.insert(RS2::Width08, "0.30mm");
+    lWidth.insert(RS2::Width09, "0.35mm");
+    lWidth.insert(RS2::Width10, "0.40mm");
+    lWidth.insert(RS2::Width11, "0.50mm");
+    lWidth.insert(RS2::Width12, "0.53mm");
+    lWidth.insert(RS2::Width13, "0.60mm");
+    lWidth.insert(RS2::Width14, "0.70mm");
+    lWidth.insert(RS2::Width15, "0.80mm");
+    lWidth.insert(RS2::Width16, "0.90mm");
+    lWidth.insert(RS2::Width17, "1.00mm");
+    lWidth.insert(RS2::Width18, "1.06mm");
+    lWidth.insert(RS2::Width19, "1.20mm");
+    lWidth.insert(RS2::Width20, "1.40mm");
+    lWidth.insert(RS2::Width21, "1.58mm");
+    lWidth.insert(RS2::Width22, "2.00mm");
+    lWidth.insert(RS2::Width23, "2.11mm");
+    lWidth.insert(RS2::WidthByLayer, "BYLAYER");
+    lWidth.insert(RS2::WidthByBlock, "BYBLOCK");
+    lWidth.insert(RS2::WidthDefault, "BYDEFAULT");
+}
+
+QString convLTW::lt2str(enum RS2::LineType lt){
+    return lType.value(lt, "BYLAYER");
+}
+QString convLTW::lw2str(enum RS2::LineWidth lw){
+    return lWidth.value(lw, "BYDEFAULT");
+}
+enum RS2::LineType convLTW::str2lt(QString s){
+    return lType.key(s, RS2::LineByLayer);
+}
+enum RS2::LineWidth convLTW::str2lw(QString w){
+    return lWidth.key(w, RS2::WidthDefault);
+}
+
+
+convLTW Converter;
+
+
+Plugin_Entity::Plugin_Entity(RS_Entity* ent) {
+    entity = ent;
+    hasContainer = true;
+}
+
+/*RS_EntityContainer* parent,
+                 const RS_LineData& d*/
+Plugin_Entity::Plugin_Entity(RS_EntityContainer* parent, enum DPI::ETYPE type){
+    hasContainer = false;
+    entity = NULL;
+    switch (type) {
+    case DPI::POINT:
+        entity = new RS_Point(parent, RS_PointData(RS_Vector(0,0)));
+        break;
+    case DPI::LINE:
+        entity = new RS_Line(parent, RS_LineData());
+        break;
+/*    case DPI::CONSTRUCTIONLINE:
+        entity = new RS_ConstructionLine();
+        break;*/
+    case DPI::CIRCLE:
+        entity = new RS_Circle(parent, RS_CircleData());
+        break;
+    case DPI::ARC:
+        entity = new RS_Arc(parent, RS_ArcData());
+        break;
+/*    case DPI::ELLIPSE:
+        entity = new RS_Ellipse(parent, RS_EllipseData());
+        break;*/
+    case DPI::IMAGE:
+        entity = new RS_Image(parent, RS_ImageData());
+        break;
+/*    case DPI::OVERLAYBOX:
+        entity = new RS_OverlayBox();
+        break;
+    case DPI::SOLID:
+        entity = new RS_Solid();
+        break;*/
+    case DPI::TEXT:
+        entity = new RS_Text(parent, RS_TextData());
+        break;
+/*    case DPI::INSERT:
+        entity = new RS_Insert();
+        break;*/
+    case DPI::POLYLINE:
+        entity = new RS_Polyline(parent, RS_PolylineData());
+        break;
+/*    case DPI::SPLINE:
+        entity = new RS_Spline();
+        break;
+    case DPI::HATCH:
+        entity = new RS_Hatch();
+        break;
+    case DPI::DIMLEADER:
+        entity = new RS_Leader();
+        break;
+    case DPI::DIMALIGNED:
+        entity = new RS_DimAligned();
+        break;
+    case DPI::DIMLINEAR:
+        entity = new RS_DimLinear();
+        break;
+    case DPI::DIMRADIAL:
+        entity = new RS_DimRadial();
+        break;
+    case DPI::DIMDIAMETRIC:
+        entity = new RS_DimDiametric();
+        break;
+    case DPI::DIMANGULAR:
+        entity = new RS_DimAngular();
+        break;*/
+    default:
+        break;
+    }
+}
+
+Plugin_Entity::~Plugin_Entity() {
+    if(!hasContainer)
+        delete entity;
+}
+
+void Plugin_Entity::getData(QHash<int, QVariant> *data){
+    if (entity == NULL) return;
+    RS2::EntityType et = entity->rtti();
+    data->insert(DPI::EID, (qulonglong)entity->getId());
+    data->insert(DPI::LAYER, entity->getLayer()->getName() );
+    data->insert(DPI::LTYPE, Converter.lt2str(entity->getPen().getLineType()) );
+    data->insert(DPI::LWIDTH, Converter.lw2str(entity->getPen().getWidth()) );
+    data->insert(DPI::COLOR, entity->getPen().getColor() );
+    switch (et) {
+    //atomicEntity
+    case RS2::EntityLine: {
+        data->insert(DPI::ETYPE, DPI::LINE);
+        RS_LineData d = static_cast<RS_Line*>(entity)->getData();
+        data->insert(DPI::STARTX, d.startpoint.x );
+        data->insert(DPI::STARTY, d.startpoint.y );
+        data->insert(DPI::ENDX, d.endpoint.x );
+        data->insert(DPI::ENDY, d.endpoint.y );
+        break;}
+    case RS2::EntityPoint: {
+        data->insert(DPI::ETYPE, DPI::POINT);
+        RS_PointData d = static_cast<RS_Point*>(entity)->getData();
+        data->insert(DPI::STARTX, d.pos.x );
+        data->insert(DPI::STARTY, d.pos.y );
+        break; }
+    case RS2::EntityArc: {
+        data->insert(DPI::ETYPE, DPI::ARC);
+        RS_ArcData d = static_cast<RS_Arc*>(entity)->getData();
+        data->insert(DPI::STARTX, d.center.x );
+        data->insert(DPI::STARTY, d.center.y );
+        data->insert(DPI::RADIUS, d.radius );
+        data->insert(DPI::STARTANGLE, d.angle1 );
+        data->insert(DPI::ENDANGLE, d.angle2 );
+        break;}
+    case RS2::EntityCircle: {
+        data->insert(DPI::ETYPE, DPI::CIRCLE);
+        RS_CircleData d = static_cast<RS_Circle*>(entity)->getData();
+        data->insert(DPI::STARTX, d.center.x );
+        data->insert(DPI::STARTY, d.center.y );
+        data->insert(DPI::RADIUS, d.radius );
+        break;}
+    case RS2::EntityEllipse: { //TODO
+        data->insert(DPI::ETYPE, DPI::ELLIPSE);
+//        RS_EllipseData d = static_cast<RS_Ellipse*>(entity)->getData();
+        RS_Ellipse *dd = static_cast<RS_Ellipse*>(entity);
+        data->insert(DPI::STARTX, dd->getCenter().x );//10
+        data->insert(DPI::STARTY, dd->getCenter().y );//20
+        data->insert(DPI::ENDX, dd->getMajorP().x );//11 pto final eje mayor
+        data->insert(DPI::ENDY, dd->getMajorP().y );//21 pto final eje mayor
+        data->insert(DPI::HEIGHT, dd->getRatio() );//40 ratio eje menor/mayor
+        break;}
+    case RS2::EntitySolid:
+        //Only used in dimensions ?
+        data->insert(DPI::ETYPE, DPI::SOLID);
+        break;
+    case RS2::EntityConstructionLine:
+        //Unused ?
+        data->insert(DPI::ETYPE, DPI::CONSTRUCTIONLINE);
+        break;
+    case RS2::EntityImage: {
+        data->insert(DPI::ETYPE, DPI::IMAGE);
+        RS_ImageData d = static_cast<RS_Image*>(entity)->getData();
+        data->insert(DPI::STARTX, d.insertionPoint.x );
+        data->insert(DPI::STARTY, d.insertionPoint.y );
+        break;}
+    case RS2::EntityOverlayBox:
+        //Unused ?
+        data->insert(DPI::ETYPE, DPI::OVERLAYBOX);
+        break;
+//EntityContainer
+    case RS2::EntityInsert: {
+        data->insert(DPI::ETYPE, DPI::INSERT);
+        RS_InsertData d = static_cast<RS_Insert*>(entity)->getData();
+        data->insert(DPI::STARTX, d.insertionPoint.x );
+        data->insert(DPI::STARTY, d.insertionPoint.y );
+        data->insert(DPI::BLKNAME, d.name );
+        data->insert(DPI::STARTANGLE, d.angle );
+        data->insert(DPI::XSCALE, d.scaleFactor.x );
+        data->insert(DPI::YSCALE, d.scaleFactor.y );
+        break;}
+    case RS2::EntityText: {
+        data->insert(DPI::ETYPE, DPI::TEXT);
+        RS_TextData d = static_cast<RS_Text*>(entity)->getData();
+        data->insert(DPI::STARTX, d.insertionPoint.x );
+        data->insert(DPI::STARTY, d.insertionPoint.y );
+        data->insert(DPI::STARTANGLE, d.angle );
+        data->insert(DPI::HEIGHT, d.height );
+        data->insert(DPI::TEXTCONTENT, d.text );
+        break;}
+    case RS2::EntityHatch:
+        data->insert(DPI::ETYPE, DPI::HATCH);
+        break;
+    case RS2::EntitySpline:
+        data->insert(DPI::ETYPE, DPI::SPLINE);
+        break;
+    case RS2::EntityPolyline:
+        data->insert(DPI::ETYPE, DPI::POLYLINE);
+        data->insert(DPI::CLOSEPOLY, static_cast<RS_Polyline*>(entity)->isClosed() );
+        break;
+    case RS2::EntityVertex:
+        data->insert(DPI::ETYPE, DPI::UNKNOWN);
+        break;
+    case RS2::EntityDimAligned:
+        data->insert(DPI::ETYPE, DPI::DIMALIGNED);
+        break;
+    case RS2::EntityDimLinear:
+        data->insert(DPI::ETYPE, DPI::DIMLINEAR);
+        break;
+    case RS2::EntityDimRadial:
+        data->insert(DPI::ETYPE, DPI::DIMRADIAL);
+        break;
+    case RS2::EntityDimDiametric:
+        data->insert(DPI::ETYPE, DPI::DIMDIAMETRIC);
+        break;
+    case RS2::EntityDimAngular:
+        data->insert(DPI::ETYPE, DPI::DIMANGULAR);
+        break;
+    case RS2::EntityDimLeader:
+        data->insert(DPI::ETYPE, DPI::DIMLEADER);
+        break;
+    case RS2::EntityUnknown:
+    default:
+        data->insert(DPI::ETYPE, DPI::UNKNOWN);
+        break;
+    }
+}
+
+void Plugin_Entity::updateData(QHash<int, QVariant> *data){
+    if (entity == NULL) return;
+    QHash<int, QVariant> hash = *data;
+    QString str;
+    RS_Vector vec;
+    RS_Pen epen = entity->getPen();
+//    double num;
+    if (hash.contains(DPI::LAYER)) {
+        str = (hash.take(DPI::LAYER)).toString();
+        entity->setLayer(str);
+    }
+    if (hash.contains(DPI::LTYPE)) {
+        str = (hash.take(DPI::LTYPE)).toString();
+        epen.setLineType( Converter.str2lt(str) );
+    }
+    if (hash.contains(DPI::LWIDTH)) {
+        str = (hash.take(DPI::LWIDTH)).toString();
+        epen.setWidth( Converter.str2lw(str) );
+    }
+    if (hash.contains(DPI::COLOR)) {
+        QColor color = hash.take(DPI::COLOR).value<QColor>();
+        epen.setColor(color);
+    }
+    entity->setPen(epen);
+
+    RS2::EntityType et = entity->rtti();
+    switch (et) {
+    //atomicEntity
+    case RS2::EntityLine: {
+        vec = static_cast<RS_Line*>(entity)->getStartpoint();
+        if (hash.contains(DPI::STARTX)) {
+            vec.x = (hash.take(DPI::STARTX)).toDouble();
+        }
+        if (hash.contains(DPI::STARTY)) {
+            vec.y = (hash.take(DPI::STARTY)).toDouble();
+        }
+        static_cast<RS_Line*>(entity)->setStartpoint(vec);
+        vec = static_cast<RS_Line*>(entity)->getEndpoint();
+        if (hash.contains(DPI::ENDX)) {
+            vec.x = (hash.take(DPI::ENDX)).toDouble();
+        }
+        if (hash.contains(DPI::ENDY)) {
+            vec.y = (hash.take(DPI::ENDY)).toDouble();
+        }
+        static_cast<RS_Line*>(entity)->setEndpoint(vec);
+        break;}
+    case RS2::EntityPoint: {
+        vec = static_cast<RS_Point*>(entity)->getPos();
+        if (hash.contains(DPI::STARTX)) {
+            vec.x = (hash.take(DPI::STARTX)).toDouble();
+        }
+        if (hash.contains(DPI::STARTY)) {
+            vec.y = (hash.take(DPI::STARTY)).toDouble();
+        }
+        static_cast<RS_Point*>(entity)->setPos(vec);
+        break; }
+    case RS2::EntityArc: {
+        RS_Arc *arc = static_cast<RS_Arc*>(entity);
+        vec = arc->getCenter();
+        if (hash.contains(DPI::STARTX)) {
+            vec.x = (hash.take(DPI::STARTX)).toDouble();
+        }
+        if (hash.contains(DPI::STARTY)) {
+            vec.y = (hash.take(DPI::STARTY)).toDouble();
+        }
+        arc->setCenter(vec);
+        if (hash.contains(DPI::RADIUS)) {
+            arc->setRadius( (hash.take(DPI::RADIUS)).toDouble() );
+        }
+        if (hash.contains(DPI::STARTANGLE)) {
+             arc->setAngle1( (hash.take(DPI::STARTANGLE)).toDouble() );
+           vec.y = (hash.take(DPI::STARTANGLE)).toDouble();
+        }
+        if (hash.contains(DPI::ENDANGLE)) {
+            arc->setAngle2( (hash.take(DPI::ENDANGLE)).toDouble() );
+        }
+        break;}
+    case RS2::EntityCircle: {
+        RS_Circle *cir = static_cast<RS_Circle*>(entity);
+        vec = cir->getCenter();
+        if (hash.contains(DPI::STARTX)) {
+            vec.x = (hash.take(DPI::STARTX)).toDouble();
+        }
+        if (hash.contains(DPI::STARTY)) {
+            vec.y = (hash.take(DPI::STARTY)).toDouble();
+        }
+        cir->setCenter(vec);
+        if (hash.contains(DPI::RADIUS)) {
+            cir->setRadius( (hash.take(DPI::RADIUS)).toDouble() );
+        }
+        break;}
+    case RS2::EntityEllipse: { //TODO
+        break;}
+    case RS2::EntitySolid:
+        //Only used in dimensions ?
+        break;
+    case RS2::EntityConstructionLine:
+        //Unused ?
+        break;
+    case RS2::EntityImage: {
+        break;}
+    case RS2::EntityOverlayBox:
+        //Unused ?
+        break;
+//EntityContainer
+    case RS2::EntityInsert: {
+        break;}
+    case RS2::EntityText: {
+        RS_Text *txt = static_cast<RS_Text*>(entity);
+        vec = txt->getInsertionPoint();
+        if (hash.contains(DPI::STARTX)) {
+            vec.x = (hash.take(DPI::STARTX)).toDouble() - vec.x;
+        }
+        if (hash.contains(DPI::STARTY)) {
+            vec.y = (hash.take(DPI::STARTY)).toDouble() - vec.y;
+        }
+        txt->move(vec);
+        if (hash.contains(DPI::TEXTCONTENT)) {
+            txt->setText( (hash.take(DPI::TEXTCONTENT)).toString() );
+        }
+        break;}
+    case RS2::EntityHatch:
+        break;
+    case RS2::EntitySpline:
+        break;
+    case RS2::EntityPolyline:
+        break;
+    case RS2::EntityVertex:
+        break;
+    case RS2::EntityDimAligned:
+        break;
+    case RS2::EntityDimLinear:
+        break;
+    case RS2::EntityDimRadial:
+        break;
+    case RS2::EntityDimDiametric:
+        break;
+    case RS2::EntityDimAngular:
+        break;
+    case RS2::EntityDimLeader:
+        break;
+    case RS2::EntityUnknown:
+    default:
+        break;
+    }
+    entity->update();
+}
+
+void Plugin_Entity::getPolylineData(QList<Plug_VertexData> *data){
+    if (entity == NULL) return;
+    RS2::EntityType et = entity->rtti();
+    if (et != RS2::EntityPolyline) return;
+    RS_Polyline *l = static_cast<RS_Polyline*>(entity);
+
+    RS_Entity* nextEntity = 0;
+    RS_AtomicEntity* ae = NULL;
+    RS_Entity* v = l->firstEntity(RS2::ResolveNone);
+    double bulge=0.0;
+//bad polyline without vertex
+    if (v == NULL) return;
+
+//First polyline vertex
+    if (v->rtti() == RS2::EntityArc) {
+        bulge = ((RS_Arc*)v)->getBulge();
+    }
+    ae = (RS_AtomicEntity*)v;
+    data->append(Plug_VertexData(QPointF(ae->getStartpoint().x,
+                                         ae->getStartpoint().y),bulge));
+
+    for (v=l->firstEntity(RS2::ResolveNone); v!=NULL; v=nextEntity) {
+        nextEntity = l->nextEntity(RS2::ResolveNone);
+        bulge = 0.0;
+        if (!v->isAtomic()) {
+            continue;
+        }
+        ae = (RS_AtomicEntity*)v;
+
+        if (nextEntity!=NULL) {
+            if (nextEntity->rtti()==RS2::EntityArc) {
+                bulge = ((RS_Arc*)nextEntity)->getBulge();
+            }
+        }
+
+        if (l->isClosed()==false || nextEntity!=NULL) {
+            data->append(Plug_VertexData(QPointF(ae->getEndpoint().x,
+                                         ae->getEndpoint().y),bulge));
+        }
+    }
+
+}
+
+void Plugin_Entity::updatePolylineData(QList<Plug_VertexData> *data){
+    if (entity == NULL) return;
+    RS2::EntityType et = entity->rtti();
+    if (et != RS2::EntityPolyline) return;
+    if (data->size()<2) return; //At least two vertex
+
+}
+
+void Plugin_Entity::move(QPointF offset){
+    entity->move( RS_Vector(offset.x(), offset.y()) );
+}
+
+void Plugin_Entity::rotate(QPointF center, double angle){
+    entity->rotate( RS_Vector(center.x(), center.y()) , angle);
+}
+
+void Plugin_Entity::scale(QPointF center, QPointF factor){
+    entity->scale( RS_Vector(center.x(), center.y()),
+                RS_Vector(factor.x(), factor.y()) );
+}
+
+
+Doc_plugin_interface::Doc_plugin_interface(RS_Graphic *d, RS_GraphicView* gv, QWidget* parent)
 {
     doc =d;
+    gView =gv;
+    main = parent;
+}
+
+void Doc_plugin_interface::updateView(){
+    doc->setSelected(false);
+    gView->redraw();
 }
 
 void Doc_plugin_interface::addPoint(QPointF *start){
@@ -77,6 +587,91 @@ void Doc_plugin_interface::addText(QString txt, QString sty, QPointF *start,
     doc->addEntity(entity);
 }
 
+void Doc_plugin_interface::addCircle(QPointF *start, qreal radius){
+    RS_DEBUG->print("RS_FilterDXF::addCircle");
+
+    RS_Vector v(start->x(), start->y());
+    RS_CircleData d(v, radius);
+    RS_Circle* entity = new RS_Circle(doc, d);
+//    setEntityAttributes(entity, attributes);
+    doc->addEntity(entity);
+}
+void Doc_plugin_interface::addArc(QPointF *start, qreal radius, qreal a1, qreal a2){
+    RS_Vector v(start->x(), start->y());
+    RS_ArcData d(v, radius,
+                 a1/ARAD,
+                 a2/ARAD,
+                 false);
+    RS_Arc* entity = new RS_Arc(doc, d);
+//    setEntityAttributes(entity, attributes);
+    doc->addEntity(entity);
+}
+void Doc_plugin_interface::addEllipse(QPointF *start, QPointF *end, qreal ratio, qreal a1, qreal a2){
+
+/*    RS_Vector v1(data.cx, data.cy);
+    RS_Vector v2(data.mx, data.my);*/
+    RS_Vector v1(start->x(), start->y());
+    RS_Vector v2(end->x(), end->y());
+
+    RS_EllipseData ed(v1, v2, ratio,
+                      a1, a2, false);
+    RS_Ellipse* entity = new RS_Ellipse(doc, ed);
+//    setEntityAttributes(entity, attributes);
+
+    doc->addEntity(entity);
+}
+
+void Doc_plugin_interface::addImage(int handle, QPointF *start, QPointF *uvr, QPointF *vvr,
+                                    int w, int h, QString name, int br, int con, int fade){
+    RS_Vector ip(start->x(), start->y());
+    RS_Vector uv(uvr->x(), uvr->y());
+    RS_Vector vv(vvr->x(), vvr->y());
+    RS_Vector size(w, h);
+
+    RS_Image* image =
+        new RS_Image(
+            doc,
+            RS_ImageData(handle /*QString(data.ref.c_str()).toInt(NULL, 16)*/,
+                         ip, uv, vv,
+                         size,
+                         name,
+                         br,
+                         con,
+                         fade));
+
+//    setEntityAttributes(image, attributes);
+    doc->addEntity(image);
+}
+
+void Doc_plugin_interface::addEntity(Plug_Entity *handle){
+    RS_Entity *ent = (reinterpret_cast<Plugin_Entity*>(handle))->getEnt();
+    if (ent != NULL)
+        doc->addEntity(ent);
+}
+
+Plug_Entity *Doc_plugin_interface::newEntity( enum DPI::ETYPE type){
+    Plugin_Entity *e = new Plugin_Entity(doc, type);
+    if( !(e->isValid()) ) {
+        delete e;
+        return NULL;
+    }
+    return  reinterpret_cast<Plug_Entity*>(e);
+}
+
+void Doc_plugin_interface::removeEntity(Plug_Entity *ent){
+    RS_Entity *e = (reinterpret_cast<Plugin_Entity*>(ent))->getEnt();
+    if (doc!=NULL) {
+        doc->startUndoCycle();
+        if (e!=NULL) {
+            e->setSelected(false);
+            e->changeUndoState();
+            doc->addUndoable(e);
+        }
+        doc->endUndoCycle();
+        gView->redraw(RS2::RedrawDrawing);
+    }
+}
+
 void Doc_plugin_interface::setLayer(QString name){
     RS_Layer *lay = new RS_Layer(name);
     doc->addLayer(lay);
@@ -85,3 +680,137 @@ void Doc_plugin_interface::setLayer(QString name){
 QString Doc_plugin_interface::getCurrentLayer(){
     return doc->getActiveLayer()->getName();
 }
+
+QStringList Doc_plugin_interface::getAllLayer(){
+    QStringList listName;
+    RS_LayerList* listLay = doc->getLayerList();
+    for (unsigned int i = 0; i < listLay->count(); ++i) {
+         listName << listLay->at(i)->getName();
+     }
+    return listName;
+}
+
+bool Doc_plugin_interface::deleteLayer(QString name){
+    RS_Layer* layer = doc->findLayer(name);
+    if (layer != NULL) {
+        doc->removeLayer(layer);
+        return true;
+    }
+    return false;
+}
+
+bool Doc_plugin_interface::getPoint(QPointF *point, const QString& mesage, QPointF *base){
+    bool status = false;
+    QC_ActionGetPoint* a = new QC_ActionGetPoint(*doc, *gView);
+    if (a!=NULL) {
+        if (!(mesage.isEmpty()) ) a->setMesage(mesage);
+        gView->killAllActions();
+        gView->setCurrentAction(a);
+        if (base) a->setBasepoint(base);
+        QEventLoop ev;
+        while (gView->getCurrentAction() ==a)
+        {
+            ev.processEvents (QEventLoop::ExcludeSocketNotifiers);
+        }
+        a->getPoint(point);
+        status = true;
+//RLZ: delete QC_ActionGetPoint. Investigate how to kill only this action
+        gView->killAllActions();
+    }
+    return status;
+}
+
+Plug_Entity *Doc_plugin_interface::getEnt(const QString& mesage){
+    QC_ActionGetEnt* a = new QC_ActionGetEnt(*doc, *gView);
+    if (a!=NULL) {
+        if (!(mesage.isEmpty()) )
+            a->setMesage(mesage);
+        gView->killAllActions();
+        gView->setCurrentAction(a);
+        QEventLoop ev;
+        while ( !a->isCompleted())
+        {
+            ev.processEvents ();
+        }
+    }
+    Plug_Entity *e = reinterpret_cast<Plug_Entity*>(a->getSelected());
+    gView->killAllActions();
+    return e;
+}
+
+bool Doc_plugin_interface::getSelect(QList<Plug_Entity *> *sel, const QString& mesage){
+    bool status = false;
+    QC_ActionGetSelect* a = new QC_ActionGetSelect(*doc, *gView);
+    if (a!=NULL) {
+        if (!(mesage.isEmpty()) )
+            a->setMesage(mesage);
+        gView->killAllActions();
+        gView->setCurrentAction(a);
+        QEventLoop ev;
+        while (!a->isCompleted())
+        {
+            ev.processEvents ();
+        }
+    }
+//    QList<Plug_Entity *> *se = new QList<Plug_Entity *>();
+    a->getSelected(sel);
+    status = true;
+    gView->killAllActions();
+    return status;
+
+}
+
+bool Doc_plugin_interface::getInt(int *num, const QString& mesage, const QString& title){
+    bool ok;
+    QString msg, tit;
+    if ( mesage.isEmpty() )
+        msg = QObject::tr("enter an integer number");
+    else
+        msg = mesage;
+    if ( title.isEmpty() )
+        tit = QObject::tr("LibreCAD query");
+    else
+        tit = title;
+
+    int data = QInputDialog::getInt(main, tit, msg, 0, -2147483647, 2147483647, 1, &ok);
+    if (ok)
+        *num = data;
+    return ok;
+}
+bool Doc_plugin_interface::getReal(qreal *num, const QString& mesage, const QString& title){
+    bool ok;
+    QString msg, tit;
+    if ( mesage.isEmpty() )
+        msg = QObject::tr("enter a number");
+    else
+        msg = mesage;
+    if ( title.isEmpty() )
+        tit = QObject::tr("LibreCAD query");
+    else
+        tit = title;
+
+    double data = QInputDialog::getDouble(main, tit, msg, 0, -2147483647, 2147483647, 4, &ok);
+    if (ok )
+        *num = data;
+    return ok;
+}
+bool Doc_plugin_interface::getString(QString *txt, const QString& mesage, const QString& title){
+    bool ok;
+    QString msg, tit;
+    if ( mesage.isEmpty() )
+        msg = QObject::tr("enter text");
+    else
+        msg = mesage;
+    if ( title.isEmpty() )
+        tit = QObject::tr("LibreCAD query");
+    else
+        tit = title;
+
+    QString text = QInputDialog::getText(main, tit,msg, QLineEdit::Normal,
+                                         QString(), &ok);
+    if (ok && !text.isEmpty()) {
+        txt->clear();
+        txt->append(text);
+    }
+    return ok;
+}
diff --git a/src/main/doc_plugin_interface.h b/src/main/doc_plugin_interface.h
index da69e5f..cd7551e 100644
--- a/src/main/doc_plugin_interface.h
+++ b/src/main/doc_plugin_interface.h
@@ -31,22 +31,82 @@
 #include "document_interface.h"
 #include "rs_graphic.h"
 
+class convLTW
+{
+public:
+    convLTW();
+    QString lt2str(enum RS2::LineType lt);
+    QString lw2str(enum RS2::LineWidth lw);
+    enum RS2::LineType str2lt(QString s);
+    enum RS2::LineWidth str2lw(QString w);
+private:
+    QHash<RS2::LineType, QString> lType;
+    QHash<RS2::LineWidth, QString> lWidth;
+};
+
+class Plugin_Entity
+{
+public:
+    Plugin_Entity(RS_Entity* ent);
+    Plugin_Entity(RS_EntityContainer* parent, enum DPI::ETYPE type);
+    virtual ~Plugin_Entity();
+    bool isValid(){if (entity) return true; else return false;}
+    RS_Entity* getEnt() {return entity;}
+    virtual void getData(QHash<int, QVariant> *data);
+    virtual void updateData(QHash<int, QVariant> *data);
+    virtual void getPolylineData(QList<Plug_VertexData> *data);
+    virtual void updatePolylineData(QList<Plug_VertexData> *data);
+
+    virtual void move(QPointF offset);
+    virtual void rotate(QPointF center, double angle);
+    virtual void scale(QPointF center, QPointF factor);
+private:
+    RS_Entity* entity;
+    bool hasContainer;
+};
+
 class Doc_plugin_interface : public Document_Interface
 
 {
 public:
-    Doc_plugin_interface(RS_Graphic *d);
+    Doc_plugin_interface(RS_Graphic *d, RS_GraphicView* gv, QWidget* parent);
 //    ~Doc_plugin_interface(){};
+    void updateView();
     void addPoint(QPointF *start);
     void addLine(QPointF *start, QPointF *end);
     void addText(QString txt, QString sty, QPointF *start,
             double height, double angle, DPI::HAlign ha,  DPI::VAlign va);
 
+    void addCircle(QPointF *start, qreal radius);
+    void addArc(QPointF *start, qreal radius, qreal a1, qreal a2);
+    void addEllipse(QPointF *start, QPointF *end, qreal ratio, qreal a1, qreal a2);
+    void addImage(int handle, QPointF *start, QPointF *uvr, QPointF *vvr,
+                  int w, int h, QString name, int br, int con, int fade);
+    void addEntity(Plug_Entity *handle);
+    Plug_Entity *newEntity( enum DPI::ETYPE type);
+    void removeEntity(Plug_Entity *ent);
+
     void setLayer(QString name);
     QString getCurrentLayer();
+    QStringList getAllLayer();
+    bool deleteLayer(QString name);
+
+    bool getPoint(QPointF *point, const QString& mesage, QPointF *base);
+    Plug_Entity *getEnt(const QString& mesage);
+    bool getSelect(QList<Plug_Entity *> *sel, const QString& mesage);
+
+    bool getInt(int *num, const QString& mesage, const QString& title);
+    bool getReal(qreal *num, const QString& mesage, const QString& title);
+    bool getString(QString *txt, const QString& mesage, const QString& title);
 
 private:
     RS_Graphic *doc;
+    RS_GraphicView *gView;
+    QWidget* main;
 };
 
+/*void addArc(QPointF *start);			->Without start
+void addCircle(QPointF *start);			->Without start
+more...
+*/
 #endif // DOC_PLUGIN_INTERFACE_H
diff --git a/src/main/main.cpp b/src/main/main.cpp
index f486da6..daf6791 100644
--- a/src/main/main.cpp
+++ b/src/main/main.cpp
@@ -103,16 +103,13 @@ int main(int argc, char** argv) {
         RS_FILEIO->registerFilter(new RS_FilterCXF());
         RS_FILEIO->registerFilter(new RS_FilterDXF());
         RS_FILEIO->registerFilter(new RS_FilterDXF1());
-#ifdef RS_OPT_CAM
-        RS_FILEIO->registerFilter(new RS_FilterCAM());
-#endif
 
         // parse command line arguments that might not need a launched program:
         QStringList fileList = handleArgs(argc, argv);
 
-        RS_String lang;
-        RS_String langCmd;
-        RS_String unit;
+        QString lang;
+        QString langCmd;
+        QString unit;
 
         RS_SETTINGS->beginGroup("/Defaults");
 #ifndef QC_PREDEFINED_UNIT
@@ -296,58 +293,8 @@ QStringList handleArgs(int argc, char** argv) {
                 else if (QString(argv[i])=="--exit") {
                         doexit = true;
                 }
-#ifdef RS_CAM
-                else if (QString(argv[i])=="--convert") {
-                        ++i;
-                        if (i<argc) {
-                                machine = QString(argv[i]);
-                        }
-                        else {
-                        RS_DEBUG->print(RS_Debug::D_WARNING,
-                                        "No machine configuration given after --convert. "
-                                    "Aborting..");
-                                exit(1);
-                        }
-                        ++i;
-                        if (i<argc) {
-                                input = QString(argv[i]);
-                        }
-                        else {
-                        RS_DEBUG->print(RS_Debug::D_WARNING,
-                                        "No input given after --convert. "
-                                    "Aborting..");
-                                exit(1);
-                        }
-                        ++i;
-                        if (i<argc) {
-                                output = QString(argv[i]);
-                        }
-                        else {
-                        RS_DEBUG->print(RS_Debug::D_WARNING,
-                                        "No output given after --convert. "
-                                    "Aborting..");
-                                exit(1);
-                        }
-                }
-#endif
         }
 
-#ifdef RS_CAM
-        // auto cam convert
-        if (machine.isEmpty()==false && input.isEmpty()==false &&
-                output.isEmpty()==false) {
-
-                RS_FilterCAM fc;
-                RS_Graphic gr;
-                RS_FILEIO->fileImport(gr, input, RS2::FormatUnknown);
-                RS_CamDialog dlg(gr, NULL);
-                dlg.activateMachineGenerator(machine);
-                dlg.externalOK();
-                fc.sort(gr);
-                fc.fileExport(gr, output, RS2::FormatCAM);
-        }
-#endif
-
         if (doexit) {
                 exit(0);
         }
diff --git a/src/main/main.h b/src/main/main.h
index e80a994..73f39aa 100644
--- a/src/main/main.h
+++ b/src/main/main.h
@@ -33,6 +33,8 @@
 # define QC_DEBUGGING false
 #endif
 
+#define STR(x)   #x
+#define XSTR(x)  STR(x)
 
 QStringList handleArgs(int argc, char** argv);
 
diff --git a/src/main/qc_applicationwindow.cpp b/src/main/qc_applicationwindow.cpp
index 6375566..822a24a 100644
--- a/src/main/qc_applicationwindow.cpp
+++ b/src/main/qc_applicationwindow.cpp
@@ -24,6 +24,7 @@
 **
 **********************************************************************/
 
+#include <Q3MimeSourceFactory>
 #include <QStatusBar>
 #include <QMenuBar>
 #include <QDockWidget>
@@ -37,6 +38,8 @@
 
 #include <fstream>
 
+#include <QPrinter>
+#include <QPrintDialog>
 #include <QFileDialog>
 #include <QMessageBox>
 #include <QTimer>
@@ -44,7 +47,6 @@
 //Plugin support
 #include <QPluginLoader>
 
-#include "rs_application.h"
 #include "rs_actionprintpreview.h"
 #include "rs_dimaligned.h"
 #include "rs_dimlinear.h"
@@ -71,6 +73,7 @@
 #include "qg_selectionwidget.h"
 #include "qg_mousewidget.h"
 
+#include "rs_dialogfactory.h"
 #include "qc_dialogfactory.h"
 #include "main.h"
 #include "doc_plugin_interface.h"
@@ -166,18 +169,28 @@ QC_ApplicationWindow::QC_ApplicationWindow()
     //setFocusPolicy(WheelFocus);
 }
 
-
-QMenu *QC_ApplicationWindow::findMenu(QStringList *treemenu) {
-    QMenu *atMenu = 0;
-    //find menu
-    if (!treemenu->isEmpty()) {
-        atMenu = menuBar()->findChild<QMenu *>(treemenu->takeFirst());
-    }
-    //find submenus
-    while (!treemenu->isEmpty()) {
-        atMenu = atMenu->findChild<QMenu *>(treemenu->takeFirst());
+/**
+  * Find a menu entry in the current menu list. This function will try to recursivly find the menu
+  * searchMenu for example foo/bar
+  * thisMenuList list of Widgets
+  * currentEntry only used internally dueing recursion
+  * returns 0 when no menu was found
+  */
+QMenu *QC_ApplicationWindow::findMenu(const QString &searchMenu, const QObjectList thisMenuList, const QString& currentEntry) {
+    if (searchMenu==currentEntry)
+        return ( QMenu *)thisMenuList.at(0)->parent();
+
+    QList<QObject*>::const_iterator i=thisMenuList.begin();
+    while (i != thisMenuList.end()) {
+        if ((*i)->inherits ("QMenu")) {
+            QMenu *ii=(QMenu*)*i;
+            if (QMenu *foundMenu=findMenu(searchMenu, ii->children(), currentEntry+"/"+ii->objectName().replace("&", ""))) {
+                return foundMenu;
+            }
+        }
+        i++;
     }
-    return atMenu;
+    return 0;
 }
 
 /**
@@ -185,8 +198,8 @@ QMenu *QC_ApplicationWindow::findMenu(QStringList *treemenu) {
  */
 void QC_ApplicationWindow::loadPlugins() {
 
-    QMenu* pluginMenu = new QMenu(tr("&Plugins"));
-    RS_StringList lst = RS_SYSTEM->getDirectoryList("plugins");
+    loadedPlugins.clear();
+    QStringList lst = RS_SYSTEM->getDirectoryList("plugins");
 
     for (int i = 0; i < lst.size(); ++i) {
         QDir pluginsDir(lst.at(i));
@@ -196,14 +209,35 @@ void QC_ApplicationWindow::loadPlugins() {
             if (plugin) {
                 QC_PluginInterface *pluginInterface = qobject_cast<QC_PluginInterface *>(plugin);
                 if (pluginInterface) {
-                    QAction *actpl = new QAction(pluginInterface->name(), plugin);
-                    connect(actpl, SIGNAL(triggered()), this, SLOT(execPlug()));
-                    QStringList treemenu = pluginInterface->menu().split('/', QString::SkipEmptyParts);
-                    QMenu *atMenu = findMenu(&treemenu);
-                    if (atMenu)
-                        atMenu->addAction(actpl);
-                    else
-                        pluginMenu->addAction(actpl);
+                    loadedPlugins.append(pluginInterface);
+                    PluginCapabilities pluginCapabilities=pluginInterface->getCapabilities();
+                    foreach (PluginMenuLocation loc,  pluginCapabilities.menuEntryPoints) {
+                        QAction *actpl = new QAction(loc.menuEntryActionName, plugin);
+                        actpl->setData(loc.menuEntryActionName);
+                        connect(actpl, SIGNAL(triggered()), this, SLOT(execPlug()));
+                        QMenu *atMenu = findMenu("/"+loc.menuEntryPoint, menuBar()->children(), "");
+                        if (atMenu) {
+                            atMenu->addAction(actpl);
+                        } else {
+                            QStringList treemenu = loc.menuEntryPoint.split('/', QString::SkipEmptyParts);
+                            QString currentLevel="";
+                            QMenu *parentMenu=0;
+                            do {
+                                QString menuName=treemenu.at(0); treemenu.removeFirst();
+                                currentLevel=currentLevel+"/"+menuName;
+                                atMenu = findMenu(currentLevel, menuBar()->children(), "");
+                                if (atMenu==0) {
+                                    if (parentMenu==0) {
+                                        parentMenu=menuBar()->addMenu(menuName);
+                                    } else {
+                                        parentMenu=parentMenu->addMenu(menuName);
+                                    }
+                                    parentMenu->setName(menuName);
+                                }
+                            } while(treemenu.size()>0);
+                            parentMenu->addAction(actpl);
+                        }
+                    }
                 }
             } else {
                 QMessageBox::information(this, "Info", pluginLoader.errorString());
@@ -211,10 +245,6 @@ void QC_ApplicationWindow::loadPlugins() {
             }
         }
     }
-    if (pluginMenu->actions().isEmpty())
-        delete (pluginMenu);
-    else
-        menuBar()->addMenu(pluginMenu);
 }
 
 /**
@@ -227,9 +257,9 @@ void QC_ApplicationWindow::execPlug() {
     QC_MDIWindow* w = getMDIWindow();
     RS_Graphic* currdoc = static_cast<RS_Graphic*>(w->getDocument());
 //create document interface instance
-    Doc_plugin_interface pligundoc(currdoc);
+    Doc_plugin_interface pligundoc(currdoc, w->getGraphicView(), this);
 //execute plugin
-    plugin->execComm(&pligundoc, this);
+    plugin->execComm(&pligundoc, this, action->data().toString());
 //TODO call update view
 w->getGraphicView()->redraw();
 }
@@ -316,6 +346,7 @@ void QC_ApplicationWindow::slotRunScript() {
  * Runs the script with the given name.
  */
 void QC_ApplicationWindow::slotRunScript(const QString& name) {
+    Q_UNUSED(name);
 #ifdef RS_SCRIPTING
 	RS_DEBUG->print("QC_ApplicationWindow::slotRunScript");
 
@@ -475,11 +506,17 @@ void QC_ApplicationWindow::initMDI() {
 }
 
 
+/*	*
+ *	Description:	Initializes all QActions of the application.
+ *	Author(s):		..., Claude Sylvain
+ *	Created:
+ *	Last modified:	16 July 2011
+ *	Parameters:		void
+ *	Returns:			void
+ *	*/
 
-/**
- * Initializes all QActions of the application.
- */
-void QC_ApplicationWindow::initActions() {
+void QC_ApplicationWindow::initActions(void)
+{
     RS_DEBUG->print("QC_ApplicationWindow::initActions()");
 
     QG_ActionFactory actionFactory(actionHandler, this);
@@ -1073,6 +1110,7 @@ void QC_ApplicationWindow::initActions() {
                                         actionHandler);
     action->addTo(menu);
     connect(this, SIGNAL(windowsChanged(bool)), action, SLOT(setEnabled(bool)));
+    action->setChecked(true);
     action = actionFactory.createAction(RS2::ActionRestrictOrthogonal,
                                         actionHandler);
     action->addTo(menu);
@@ -1118,6 +1156,10 @@ void QC_ApplicationWindow::initActions() {
                                         actionHandler);
     action->addTo(menu);
     connect(this, SIGNAL(windowsChanged(bool)), action, SLOT(setEnabled(bool)));
+    action = actionFactory.createAction(RS2::ActionInfoArea,
+                                        actionHandler);
+    action->addTo(menu);
+    connect(this, SIGNAL(windowsChanged(bool)), action, SLOT(setEnabled(bool)));
 
     // Layer actions:
     //
@@ -1204,14 +1246,6 @@ void QC_ApplicationWindow::initActions() {
     scriptRun = 0;
 #endif
 
-#ifdef RVT_CAM
-    menu = menuBar()->addMenu(tr("&CAM"));
-    menu->setName("CAM");
-
-    action = actionFactory.createAction(RS2::ActionCamMakeProfile, actionHandler);
-    action->addTo(menu);
-    connect(this, SIGNAL(windowsChanged(bool)), action, SLOT(setEnabled(bool)));
-#endif
 
     // Help menu:
     //
@@ -1407,11 +1441,13 @@ void QC_ApplicationWindow::initToolBar() {
 
     // CAD toolbar left:
     QToolBar* t = new QToolBar("CAD Tools", this);
-	t->setMinimumSize(59,250);
+    t->setMinimumSize(56,400);
 	QSizePolicy policy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding); 
 	t->setSizePolicy(policy);
 	t->setObjectName ( "CADTB" );
-   // t->setFixedExtentWidth(59);
+    t->setFixedWidth(56);
+    t->setFloatable(false);
+    t->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    // t->setVerticallyStretchable(true);
 	addToolBar(Qt::LeftToolBarArea, t); 
 
@@ -1637,7 +1673,7 @@ void QC_ApplicationWindow::initView() {
  * Implementation from QG_MainWindowInterface.
  * Can be called from scripts to add individual GUI elements.
  */
-/*QToolBar* QC_ApplicationWindow::createToolBar(const RS_String& name) {
+/*QToolBar* QC_ApplicationWindow::createToolBar(const QString& name) {
     QToolBar* tb = new QToolBar(name, this);
 	tb->setLabel(name);
 	return tb;
@@ -1779,7 +1815,6 @@ void QC_ApplicationWindow::slotWindowActivated(QWidget*) {
     QC_MDIWindow* m = getMDIWindow();
 
     if (m!=NULL && m->getDocument()!=NULL) {
-		m->setWindowState(Qt::WindowMaximized);
 
         RS_DEBUG->print("QC_ApplicationWindow::slotWindowActivated: "
 			"document: %d", m->getDocument()->getId());
@@ -1789,10 +1824,8 @@ void QC_ApplicationWindow::slotWindowActivated(QWidget*) {
         layerWidget->setLayerList(m->getDocument()->getLayerList(),
                                   showByBlock);
 
-
         coordinateWidget->setGraphic(m->getGraphic());
 
-
         // Only graphics show blocks. (blocks don't)
         if (m->getDocument()->rtti()==RS2::EntityGraphic) {
             blockWidget->setBlockList(m->getDocument()->getBlockList());
@@ -1947,29 +1980,6 @@ void QC_ApplicationWindow::slotTileVertical() {
     */
 }
 
-
-
-/**
- * CAM
- */
-/*
-#ifdef RS_CAM
-void QC_ApplicationWindow::slotCamExportAuto() {
-    printf("CAM export..\n");
-    
-    RS_Document* d = getDocument();
-    if (d!=NULL) {
-        RS_Graphic* graphic = (RS_Graphic*)d;
- 
-        RS_CamDialog dlg(graphic, this);
-        dlg.exec();
-    }
-}
-#endif
-*/
-
-
-
 /**
  * Called when something changed in the pen tool bar 
  * (e.g. color, width, style).
@@ -2107,8 +2117,8 @@ void QC_ApplicationWindow::slotFileOpen(const QString& fileName,
         RS_DEBUG->print("QC_ApplicationWindow::slotFileOpen: creating new doc window");
         // Create new document window:
         QC_MDIWindow* w = slotFileNew();
-        // RVT_PORT RS_APP->processEvents(1000);
-        RS_APP->processEvents(QEventLoop::AllEvents, 1000);
+        // RVT_PORT qApp->processEvents(1000);
+        qApp->processEvents(QEventLoop::AllEvents, 1000);
 
         RS_DEBUG->print("QC_ApplicationWindow::slotFileOpen: linking layer list");
         // link the layer widget to the new document:
@@ -2120,7 +2130,7 @@ void QC_ApplicationWindow::slotFileOpen(const QString& fileName,
 
         RS_DEBUG->print("QC_ApplicationWindow::slotFileOpen: open file");
         
-        RS_APP->processEvents(QEventLoop::AllEvents, 1000);
+        qApp->processEvents(QEventLoop::AllEvents, 1000);
 
         // open the file in the new view:
         if (w->slotFileOpen(fileName, type)==false) {
@@ -2293,8 +2303,8 @@ void QC_ApplicationWindow::slotFileExport() {
 
         // read default settings:
         RS_SETTINGS->beginGroup("/Paths");
-        RS_String defDir = RS_SETTINGS->readEntry("/ExportImage", RS_SYSTEM->getHomeDir());
-        RS_String defFilter = RS_SETTINGS->readEntry("/ExportImageFilter",
+        QString defDir = RS_SETTINGS->readEntry("/ExportImage", RS_SYSTEM->getHomeDir());
+        QString defFilter = RS_SETTINGS->readEntry("/ExportImageFilter",
                                                      QString("%1 (*.%2)").arg(QG_DialogFactory::extToFormat("png")).arg("png"));
         RS_SETTINGS->endGroup();
 
@@ -2403,25 +2413,25 @@ bool QC_ApplicationWindow::slotFileExport(const QString& name,
 
     bool ret = false;
     QPixmap* buffer = new QPixmap(size);
-    RS_PainterQt* painter = new RS_PainterQt(buffer);
+    RS_PainterQt painter(buffer);
 
     // black background:
     if (black) {
-        painter->setBackgroundColor(RS_Color(0,0,0));
+        painter.setBackgroundColor(RS_Color(0,0,0));
     }
     // white background:
     else {
-        painter->setBackgroundColor(RS_Color(255,255,255));
+        painter.setBackgroundColor(RS_Color(255,255,255));
     }
 
     // black/white:
     if (bw) {
-        painter->setDrawingMode(RS2::ModeBW);
+        painter.setDrawingMode(RS2::ModeBW);
     }
 
-    painter->eraseRect(0,0, size.width(), size.height());
+    painter.eraseRect(0,0, size.width(), size.height());
 
-    RS_StaticGraphicView gv(size.width(), size.height(), painter);
+    RS_StaticGraphicView gv(size.width(), size.height(), &painter);
     if (black) {
         gv.setBackground(RS_Color(0,0,0));
     } else {
@@ -2431,7 +2441,7 @@ bool QC_ApplicationWindow::slotFileExport(const QString& name,
     gv.zoomAuto(false);
     for (RS_Entity* e=graphic->firstEntity(RS2::ResolveAll);
             e!=NULL; e=graphic->nextEntity(RS2::ResolveAll)) {
-        gv.drawEntity(painter, e);
+        gv.drawEntity(&painter, e);
     }
 
     // RVT_PORT QImageIO iio;
@@ -2449,7 +2459,7 @@ bool QC_ApplicationWindow::slotFileExport(const QString& name,
     QApplication::restoreOverrideCursor();
 
     // GraphicView deletes painter
-    painter->end();
+    painter.end();
     delete buffer;
 
     if (ret) {
@@ -2522,44 +2532,50 @@ void QC_ApplicationWindow::slotFilePrint() {
     }
 
     statusBar()->showMessage(tr("Printing..."));
-    QPrinter* printer;
-    printer = new QPrinter(QPrinter::HighResolution);
+    QPrinter printer(QPrinter::HighResolution);
+
+    // Try to set the printer to teh highest resolution
+    QList<int> res=printer.supportedResolutions ();
+    if (res.size()>0)
+        printer.setResolution(res.last());
+
     bool landscape = false;
-    printer->setPageSize(RS2::rsToQtPaperFormat(graphic->getPaperFormat(&landscape)));
+    printer.setPaperSize(RS2::rsToQtPaperFormat(graphic->getPaperFormat(&landscape)));
     if (landscape) {
-        printer->setOrientation(QPrinter::Landscape);
+        printer.setOrientation(QPrinter::Landscape);
     } else {
-        printer->setOrientation(QPrinter::Portrait);
+        printer.setOrientation(QPrinter::Portrait);
     }
 
     RS_SETTINGS->beginGroup("/Print");
-    printer->setOutputFileName(RS_SETTINGS->readEntry("/FileName", ""));
-    printer->setColorMode((QPrinter::ColorMode)RS_SETTINGS->readNumEntry("/ColorMode", (int)QPrinter::Color));
-    printer->setOutputToFile((bool)RS_SETTINGS->readNumEntry("/PrintToFile",
+    printer.setOutputFileName(RS_SETTINGS->readEntry("/FileName", ""));
+    printer.setColorMode((QPrinter::ColorMode)RS_SETTINGS->readNumEntry("/ColorMode", (int)QPrinter::Color));
+    printer.setOutputToFile((bool)RS_SETTINGS->readNumEntry("/PrintToFile",
                              0));
     RS_SETTINGS->endGroup();
 
     // printer setup:
-    if (printer->setup(this)) {
-        //printer->setOutputToFile(true);
-        //printer->setOutputFileName(outputFile);
+    QPrintDialog printDialog(&printer, this);
+    if (printDialog.exec() == QDialog::Accepted) {
+        //printer.setOutputToFile(true);
+        //printer.setOutputFileName(outputFile);
 
         QApplication::setOverrideCursor( QCursor(Qt::WaitCursor) );
-        printer->setFullPage(true);
+        printer.setFullPage(true);
 
-        RS_PainterQt* painter = new RS_PainterQt(printer);
-        painter->setDrawingMode(w->getGraphicView()->getDrawingMode());
+        RS_PainterQt painter(&printer);
+        painter.setDrawingMode(w->getGraphicView()->getDrawingMode());
 
-        RS_StaticGraphicView gv(printer->width(), printer->height(), painter);
+        RS_StaticGraphicView gv(printer.width(), printer.height(), &painter);
         gv.setPrinting(true);
         gv.setBorders(0,0,0,0);
 
-        double fx = (double)printer->width() / printer->widthMM()
+        double fx = (double)printer.width() / printer.widthMM()
                     * RS_Units::getFactorToMM(graphic->getUnit());
-        double fy = (double)printer->height() / printer->heightMM()
+        double fy = (double)printer.height() / printer.heightMM()
                     * RS_Units::getFactorToMM(graphic->getUnit());
 
-        double f = (fx+fy)/2;
+        double f = (fx+fy)/2.0;
 
         double scale = graphic->getPaperScale();
 
@@ -2569,21 +2585,19 @@ void QC_ApplicationWindow::slotFilePrint() {
 
         gv.setContainer(graphic);
 
-        gv.drawEntity(painter, graphic, true);
+        gv.drawEntity(&painter, graphic, true);
 
         // GraphicView deletes painter
-        painter->end();
+        painter.end();
 
         RS_SETTINGS->beginGroup("/Print");
-        RS_SETTINGS->writeEntry("/PrintToFile", (int)printer->outputToFile());
-        RS_SETTINGS->writeEntry("/ColorMode", (int)printer->colorMode());
-        RS_SETTINGS->writeEntry("/FileName", printer->outputFileName());
+        RS_SETTINGS->writeEntry("/PrintToFile", (int)printer.outputToFile());
+        RS_SETTINGS->writeEntry("/ColorMode", (int)printer.colorMode());
+        RS_SETTINGS->writeEntry("/FileName", printer.outputFileName());
         RS_SETTINGS->endGroup();
         QApplication::restoreOverrideCursor();
     }
 
-    delete printer;
-
     statusBar()->showMessage(tr("Printing complete"), 2000);
 }
 
@@ -2630,8 +2644,8 @@ void QC_ApplicationWindow::slotFilePrintPreview(bool on) {
 				workspace->addWindow(w);
 				w->setWindowState(Qt::WindowMaximized);
                 parent->addChildWindow(w);
-                //connect(w, SIGNAL(signalClosing()),
-                //        this, SLOT(slotFileClosing()));
+                connect(w, SIGNAL(signalClosing()),
+                         this, SLOT(slotFileClose()));
 
                 w->setCaption(tr("Print preview for %1").arg(parent->caption()));
                 w->setIcon(qPixmapFromMimeSource("document.png"));
@@ -2889,12 +2903,15 @@ void QC_ApplicationWindow::slotHelpAbout() {
 
     QStringList modules;
 
-    QString modulesString;
+    /**
+      * Show all plugin that has been loaded
+      */
+    foreach (QC_PluginInterface *pluginInterface, loadedPlugins)
+        modules.append(pluginInterface->name());
 
+    QString modulesString=tr("None");
     if (modules.empty()==false) {
         modulesString = modules.join(", ");
-    } else {
-        modulesString = tr("None");
     }
 
     QMessageBox box(this);
@@ -2907,7 +2924,7 @@ void QC_ApplicationWindow::slotHelpAbout() {
 #endif
                        tr("Compiled on: %1").arg(__DATE__) + "<br>" +
                        "Portions (c) 2011 by R. van Twisk" + "<br>" +
-                       tr("Program Icons Supplied by") +"<br>   Pablo: " + "<a href=\"http://www.librecad.com.ar/\">LibreCAD Argentinie</a>" + "<br/>" +
+                       tr("Program Icons Supplied by") +"<br>   Pablo: LibreCAD Argentine<br/>" +
                        tr("Splash and Logo supplied by") + "<br>   Diego " + "<a href=\"http://daltom.2082studio.com/\">Daltom Designer</a>" + "<br/>" +
                        "<br />" +
                        tr("Modules: %1").arg(modulesString) + "<br>" +
@@ -2920,7 +2937,7 @@ void QC_ApplicationWindow::slotHelpAbout() {
                        tr("Please donate to LibreCAD to help maintain the sourcecode and it's website.") +
                        "<br>" +
                        "<br>" +
-                       "<a href=\"http://www.librecad.org/donate.html\" alt=\"Donate to LibreCAD\">" +
+                       "<a href=\"http://librecad.org/donate.html\" alt=\"Donate to LibreCAD\">" +
                        "<img src=':/main/donate.png' />" +
                        "</a></center>"
                        );
@@ -2952,18 +2969,22 @@ void QC_ApplicationWindow::slotHelpManual() {
 
             helpEngine->setupData();
 
-            helpWindow = new QDockWidget(tr("Help"), this);
-            QSplitter *helpPanel = new QSplitter(Qt::Horizontal);
+            QHelpContentModel *contentModel = helpEngine->contentModel();
+            QHelpContentWidget *contentWidget = helpEngine->contentWidget();
             HelpBrowser *helpBrowser = new HelpBrowser(helpEngine);
 
-            helpPanel->insertWidget(0, helpEngine->contentWidget());
-            helpPanel->insertWidget(1, helpBrowser);
-            helpPanel->setStretchFactor(1, 1);
-            helpWindow->setWidget(helpPanel);
+            QSplitter* splitter = new QSplitter();
+            splitter->addWidget(contentWidget);
+            splitter->addWidget(helpBrowser);
+            contentWidget->setModel(contentModel);
 
-            addDockWidget(Qt::TopDockWidgetArea, helpWindow);
+            helpWindow = new QDockWidget(tr("Help"), this);
+            helpWindow->setWidget(splitter);
 
+            // Enable single clicking of the index
+            connect(helpEngine->contentWidget(), SIGNAL(clicked(QModelIndex)), helpEngine->contentWidget(), SLOT(showLink(QModelIndex)));
             connect(helpEngine->contentWidget(), SIGNAL(linkActivated(const QUrl &)), helpBrowser, SLOT(setSource(const QUrl &)));
+            addDockWidget(Qt::TopDockWidgetArea, helpWindow);
         } else {
             QMessageBox::information(this, "Helpfiles not found", tr("Bugger, I couldn't find the helpfiles on the filesystem."));
         }
@@ -3011,7 +3032,7 @@ void QC_ApplicationWindow::slotTestDumpEntities(RS_EntityContainer* d) {
             << "<td>UND:" << e->isUndone() << "</td>"
             << "<td>SEL:" << e->isSelected() << "</td>"
             << "<td>TMP:" << e->getFlag(RS2::FlagTemp) << "</td>";
-            RS_String lay = "NULL";
+            QString lay = "NULL";
             if (e->getLayer()!=NULL) {
                 lay = e->getLayer()->getName();
             }
@@ -3299,8 +3320,8 @@ void QC_ApplicationWindow::slotTestDrawFreehand() {
            int posx = (random()%600);
            int posy = (random()%400);
 
-           //RS_MouseEvent rsm1(posx, posy, LEFT);
-        RS_MouseEvent rsm1(QEvent::MouseButtonPress, 
+           //QMouseEvent rsm1(posx, posy, LEFT);
+        QMouseEvent rsm1(QEvent::MouseButtonPress,
                            QPoint(posx,posy), 
                            RS2::LeftButton,
                            RS2::LeftButton);
@@ -3319,9 +3340,9 @@ void QC_ApplicationWindow::slotTestDrawFreehand() {
                posx+=speedx;
                posy+=speedy;
 
-               //RS_MouseEvent rsm2(posx, posy, LEFT);
+               //QMouseEvent rsm2(posx, posy, LEFT);
             
-            RS_MouseEvent rsm2(QEvent::MouseMove, 
+            QMouseEvent rsm2(QEvent::MouseMove,
                            QPoint(posx,posy), 
                            RS2::LeftButton,
                            RS2::LeftButton);
@@ -3809,8 +3830,8 @@ void QC_ApplicationWindow::slotTestUnicode() {
 
         int col;
         int row;
-        RS_Char uCode;       // e.g. 65 (or 'A')
-        RS_String strCode;   // unicde as string e.g. '[0041] A'
+        QChar uCode;       // e.g. 65 (or 'A')
+        QString strCode;   // unicde as string e.g. '[0041] A'
 
         graphic->setAutoUpdateBorders(false);
 
@@ -3819,7 +3840,7 @@ void QC_ApplicationWindow::slotTestUnicode() {
             for (row=0x0; row<=0xF; row++) {
                 //printf("  row: %X\n", row);
 
-                uCode = RS_Char(col+row);
+                uCode = QChar(col+row);
                 //printf("  code: %X\n", uCode.unicode());
 
                 strCode.setNum(uCode.unicode(), 16);
@@ -3990,7 +4011,8 @@ void QC_ApplicationWindow::keyPressEvent(QKeyEvent* e) {
     QTime now = QTime::currentTime();
     bool actionProcessed=false;
     doubleCharacters << e->key();
-    doubleCharacters=doubleCharacters.mid(doubleCharacters.size()-2,2);
+    if (doubleCharacters.size()>2)
+        doubleCharacters=doubleCharacters.mid(doubleCharacters.size()-2,2);
     if (ts.msecsTo(now)<2000) {
 
         QString code="";
diff --git a/src/main/qc_applicationwindow.h b/src/main/qc_applicationwindow.h
index d967afc..69a6987 100644
--- a/src/main/qc_applicationwindow.h
+++ b/src/main/qc_applicationwindow.h
@@ -257,10 +257,10 @@ public:
 	 * Creates a new document. Implementation from RS_MainWindowInterface.
 	 */
 	virtual void createNewDocument(
-		const RS_String& fileName = RS_String::null, RS_Document* doc=NULL) {
+                const QString& fileName = QString::null, RS_Document* doc=NULL) {
 		
 		slotFileNew(doc);
-		if (fileName!=RS_String::null && getDocument()!=NULL) {
+                if (fileName!=QString::null && getDocument()!=NULL) {
 			getDocument()->setFilename(fileName);
 		}
 	}
@@ -283,7 +283,7 @@ public:
 
 
 
-	//virtual QToolBar* createToolBar(const RS_String& name);
+        //virtual QToolBar* createToolBar(const QString& name);
 	//virtual void addToolBarButton(QToolBar* tb);
 	
     /**
@@ -409,9 +409,8 @@ private:
 //Plugin support
 private:
     void loadPlugins();
-    QMenu *findMenu(QStringList *treemenu);
-    QC_PluginInterface *pluginInterface;
-    QMenu* pluginMenu;
+    QMenu *findMenu(const QString &searchMenu, const QObjectList thisMenuList, const QString& currentEntry);
+    QList<QC_PluginInterface*> loadedPlugins;
 public slots:
     void execPlug();
 
diff --git a/src/main/qc_dialogfactory.cpp b/src/main/qc_dialogfactory.cpp
index 9eceeea..f49f985 100644
--- a/src/main/qc_dialogfactory.cpp
+++ b/src/main/qc_dialogfactory.cpp
@@ -27,7 +27,7 @@
 #include "qc_dialogfactory.h"
 
 #include "qc_applicationwindow.h"
-
+#include "rs_blocklist.h"
 
 
 /**
diff --git a/src/main/qc_mdiwindow.cpp b/src/main/qc_mdiwindow.cpp
index 808b3d6..9e95ac8 100644
--- a/src/main/qc_mdiwindow.cpp
+++ b/src/main/qc_mdiwindow.cpp
@@ -30,8 +30,7 @@
 //Added by qt3to4:
 #include <QCloseEvent>
 
-#include "rs_application.h"
-
+#include "rs_graphic.h"
 #include "qg_exitdialog.h"
 #include "qg_filedialog.h"
 
@@ -295,8 +294,8 @@ bool QC_MDIWindow::slotFileOpen(const QString& fileName, RS2::FormatType type) {
         document->newDoc();
 
 		// cosmetics..
-		// RVT_PORT RS_APP->processEvents(1000);
-		RS_APP->processEvents(QEventLoop::AllEvents, 1000);
+                // RVT_PORT qApp->processEvents(1000);
+                qApp->processEvents(QEventLoop::AllEvents, 1000);
 		
         ret = document->open(fileName, type);
 
diff --git a/src/plugins/document_interface.h b/src/plugins/document_interface.h
index 817c62d..732d080 100644
--- a/src/plugins/document_interface.h
+++ b/src/plugins/document_interface.h
@@ -27,42 +27,317 @@
 #define DOCUMENT_INTERFACE_H
 
 #include <QPointF>
+#include <QHash>
+#include <QString>
 
 namespace DPI {
-    /**
-     * Vertical alignments.
-     */
+    //! Vertical alignments.
     enum VAlign {
-        VAlignTop,      /**< Top. */
-        VAlignMiddle,   /**< Middle */
-        VAlignBottom    /**< Bottom */
+        VAlignTop,      /*!< Top. */
+        VAlignMiddle,   /*!< Middle */
+        VAlignBottom    /*!< Bottom */
     };
 
-    /**
-     * Horizontal alignments.
-     */
+    //! Horizontal alignments.
     enum HAlign {
-        HAlignLeft,     /**< Left */
-        HAlignCenter,   /**< Centered */
-        HAlignRight     /**< Right */
+        HAlignLeft,     /*!< Left */
+        HAlignCenter,   /*!< Centered */
+        HAlignRight     /*!< Right */
     };
+
+
+   //! Entity's type.
+    enum ETYPE {
+        POINT,
+        LINE,
+        CONSTRUCTIONLINE,
+        CIRCLE,
+        ARC,
+        ELLIPSE,
+        IMAGE,
+        OVERLAYBOX,
+        SOLID,/*end atomicEntity, start entityContainer*/
+        TEXT,
+        INSERT,
+        POLYLINE,
+        SPLINE,
+        HATCH,
+        DIMLEADER,
+        DIMALIGNED,
+        DIMLINEAR,
+        DIMRADIAL,
+        DIMDIAMETRIC,
+        DIMANGULAR,
+        UNKNOWN
+    };
+
+    //! Entity's data (dxf like).
+
+    enum EDATA {
+        ETYPE=0,        /*!< enum: entity type */
+        TEXTCONTENT=1,  /*!< QString: text string */
+        BLKNAME=2,      /*!< QString: block name */
+        EID=5,          /*!< qulonglong: entity identifier */
+        LTYPE=6,        /*!< QString: line type */
+        TXTSTYLE=7,     /*!< QString: text style */
+        LAYER=8,        /*!< QString: layer */
+        STARTX=10,      /*!< double: start x coordinate */
+        ENDX=11,        /*!< double: end x coordinate */
+        STARTY=20,      /*!< double: start y coordinate */
+        ENDY=21,        /*!< double: end y coordinate */
+        STARTZ=30,      /*!< double: start z coordinate always 0 */
+        ENDZ=30,        /*!< double: end z coordinate always 0 */
+        LWIDTH=38,      /*!< QString: line width */  //verify number
+        RADIUS=39,      /*!< double: radius */
+        HEIGHT=40,      /*!< double: text heigt or ellipse ratio*/
+        XSCALE=41,      /*!< double: x insert scale */
+        YSCALE=42,      /*!< double: y insert scale */
+        ZSCALE=43,      /*!< double: z insert scale always 1? */
+        LTSCALE=48,     /*!< line type scale (not in LibreCAD) */
+        STARTANGLE=50,  /*!< double: arc start angle or rotation angle for insert and text */
+        ENDANGLE=51,    /*!< double: arc end angle */
+        COLOR=62,       /*!< QColor: entity color */
+        CLOSEPOLY=70,   /*!< int: closed polyline 0=open, 1=closed */
+        TXTALIGNH=72,   /*!< enum: horizontal alignment for text */
+        TXTALIGNV=73    /*!< enum: vertical alignment for text */
+    };
+
 }
-/**
- * Interface for comunicate plugins.
- *
+
+class Plug_VertexData
+{
+public:
+    Plug_VertexData(QPointF p, double b){
+        point = p;
+        bulge = b;
+    }
+    QPointF point;
+    double bulge;
+};
+
+//! Wrapper for acces entities from plugins.
+ /*!
+ *  Wrapper class for create, acces and modify entities from plugins.
+ *  TODO: terminate acces function -> getData()
+ *        terminate implementation of modify function -> updateData()
+ *        terminate implementation of create function (ctor called from document)
+ *           can't create entities:
+ *           - atomic = CONSTRUCTIONLINE, OVERLAYBOX, SOLID,
+ *           - container = INSERT, POLYLINE, SPLINE, HATCH, DIMLEADER,
+ *             DIMALIGNED, DIMLINEAR, DIMRADIAL, DIMDIAMETRIC, DIMANGULAR,
+ *        verify destructor if needed or not to delete entity
+ * @author Rallaz
+ */
+class Plug_Entity
+{
+public:
+    virtual ~Plug_Entity() {}
+
+    //! Obtain the entity data.
+    /*!
+    * The data is a QHash with the EDATA keys relevant to the type of entity
+    *  \param data pointer to a QHash<int, QVariant> to store the entity data.
+    */
+    virtual void getData(QHash<int, QVariant> *data) = 0;
+
+    //! Update the entity data.
+    /*!
+    * The data is a QHash with the EDATA keys relevant to the type of entity
+    *  \param data pointer to a QHash<int, QVariant> with the entity data.
+    */
+    virtual void updateData(QHash<int, QVariant> *data) = 0;
+
+    //! Obtain the polyline list of vertex.
+    /*!
+    * The data is a QList to store a Plug_VertexData for heach vertex form the polyline
+    *  \param data pointer to a QList<Plug_VertexData> to store the vertex list.
+    */
+    virtual void getPolylineData(QList<Plug_VertexData> *data) = 0;
+
+    //! Update the polyline list of vertex.
+    /*!
+    * The data is a QList of Plug_VertexData with the coordinates of each vertex to the
+    * polyline the cuurent vertex are removed and replaced for the new list.
+    *  \param data pointer to a QList<Plug_VertexData> with the coordinates vertex's.
+    */
+    virtual void updatePolylineData(QList<Plug_VertexData> *data) = 0;
+
+    //! Move the entity.
+    /*!
+    *  \param offset move the entity by the given QPointF.
+    */
+    virtual void move(QPointF offset) = 0;
+
+    //! rotate the entity.
+    /*!
+    *  \param center center of rotation.
+    *  \param angle angle to rotate.
+    */
+    virtual void rotate(QPointF center, double angle) = 0;
+
+    //! Scale the entity.
+    /*!
+    *  \param center base point for scale.
+    *  \param factor scale factor.
+    */
+    virtual void scale(QPointF center, QPointF factor) = 0;
+
+};
+
+//! Interface for comunicate plugins.
+ /*!
+ * Class for comunicate plugins with document (drawing).
+ * entities whitout add*() function:
+ * atomic = CONSTRUCTIONLINE, OVERLAYBOX, SOLID,
+ * container = INSERT, POLYLINE, SPLINE, HATCH, DIMLEADER,
+ * DIMALIGNED, DIMLINEAR, DIMRADIAL, DIMDIAMETRIC, DIMANGULAR,
+ * TODO: memory assignation and cleanup in plugin
+ *   added----    implementation of function -> deleteEntity()
  * @author Rallaz
  */
 class Document_Interface
 {
 public:
     virtual ~Document_Interface() {}
+    //! Force to update the graphic view.
+    /*! Force to update the graphic view.
+    */
+    virtual void updateView() = 0;
+
+    //! Add point entity to current document.
+    /*! Add point entity to current document with current attributes.
+    *  \param start point coordinate.
+    */
     virtual void addPoint(QPointF *start) = 0;
+
+    //! Add line entity to current document.
+    /*! Add line entity to current document with current attributes.
+    *  \param start start point coordinate.
+    *  \param end end point coordinate.
+    */
     virtual void addLine(QPointF *start, QPointF *end) = 0;
+
+    //! Add text entity to current document.
+    /*! Add text entity to current document with current attributes
+    *  \param txt a QString with text content
+    *  \param sty a QString with text style name
+    *  \param start insertion point coordinate
+    *  \param height height of text
+    *  \param angle rotation angle of text
+    *  \param ha horizontal alignement of text
+    *  \param va vertical alignement of text
+    */
     virtual void addText(QString txt, QString sty, QPointF *start, double height,
                 double angle, DPI::HAlign ha,  DPI::VAlign va) = 0;
 
+    //! Add circle entity to current document.
+    /*! Add circle entity to current document with current attributes.
+    *  \param start center point coordinate.
+    *  \param radius radius for circle.
+    */
+    virtual void addCircle(QPointF *start, qreal radius) = 0;
+
+    //! Add arc entity to current document.
+    /*! Add arc of circumference entity to current document with current attributes.
+    *  \param start center point coordinate.
+    *  \param radius radius for circle.
+    */
+    virtual void addArc(QPointF *start, qreal radius, qreal a1, qreal a2) = 0;
+
+    //! Add ellipse entity to current document.
+    /*! Add ellipse entity to current document with current attributes.
+    *  \param start center point coordinate.
+    *  \param radius radius for arc.
+    */
+    virtual void addEllipse(QPointF *start, QPointF *end, qreal ratio, qreal a1, qreal a2) = 0;
+
+    //! Add image entity to current document.
+    /*! Add image entity to current document with current attributes.
+    *  \param start start point coordinate.
+    *  \param end end point coordinate.
+    */
+    virtual void addImage(int handle, QPointF *start, QPointF *uvr, QPointF *vvr,
+                  int w, int h, QString name, int br, int con, int fade) = 0;
+
+    //! Add a entity to current document.
+    /*! Add a entity to current document with the data sets with Plug_Entity.updateData().
+    *  \param handle a pointer to Plug_Entity.
+    */
+    virtual void addEntity(Plug_Entity *handle) = 0;
+
+    //! Create a new Plug_Entity.
+    /*! Create a new Plug_Entity of type ETYPE with default data.
+    * sets the data with Plug_Entity.updateData().
+    * if fail (unknoun or unhandled entity) return NULL
+    *  \param type an DPI::ETYPE type.
+    *  \return handle to pointer of Plug_Entity with type DPI::ETYPE or NULL if fail.
+    */
+    virtual Plug_Entity *newEntity(enum DPI::ETYPE type) = 0;
+
+    //! Remove a Entity.
+    /*! Remove a entity from current drawing.
+    *  \param ent handle to pointer of Plug_Entity.
+    */
+    virtual void removeEntity(Plug_Entity *ent) = 0;
+
+    //! Set the current layer in current document.
+    /*! Set the current layer in current document, if not exist create it.
+    *  \param name a QString with the name of the layer.
+    */
     virtual void setLayer(QString name) = 0;
+
+    //! Get the current layer in current document.
+    /*! Get the current layer in current document.
+    *  \return The name of the current layer.
+    */
     virtual QString getCurrentLayer() = 0;
+
+    //! Gets the layers list in current document.
+    /*! Gets the list of manes of all layers in current document.
+    *  \return A list with the name of all layers in document.
+    */
+    virtual QStringList getAllLayer() = 0;
+
+    //! Delete a layer in current document.
+    /*! Delete the layer "name" in current document if it exist.
+    *  \return The name of the current layer.
+    */
+    virtual bool deleteLayer(QString name) = 0;
+
+
+    //! Gets a point.
+    /*! Prompt message or an default message to the user asking for a point.
+    *   If base is present draw a line from base to cursor position.
+    * \param point a pointer to QPointF to store the obtained point.
+    * \param mesage an optional QString with prompt message.
+    * \param base visual helper point, if present.
+    * \return true if succes.
+    * \return false if fail, i.e. user cancel.
+    */
+    virtual bool getPoint(QPointF *point, const QString& mesage = "", QPointF *base = 0) = 0;
+
+    //! Select a entity.
+    /*! Prompt message or a default message to the user asking for a sigle selection.
+    * You can delete the Plug_Entity wen no more needed.
+    * \param mesage an optional QString with prompt message.
+    * \return a Plug_Entity handle the selected entity or NULL.
+    */
+    virtual Plug_Entity *getEnt(const QString& mesage = "") = 0;
+
+    //! Gets a entities selection.
+    /*! Prompt message or an default message to the user asking for a selection.
+    * You can delete all, the Plug_Entity and the returned QList wen no more needed.
+    * \param sel a QList of poiters to Plug_Entity handled the selected entites.
+    * \param mesage an optional QString with prompt message.
+    * \return true if succes.
+    * \return false if fail, i.e. user cancel.
+    */
+    virtual bool getSelect(QList<Plug_Entity *> *sel, const QString& mesage = "") = 0;
+
+    virtual bool getInt(int *num, const QString& mesage = "", const QString& title = "") = 0;
+    virtual bool getReal(qreal *num, const QString& mesage = "", const QString& title = "") = 0;
+    virtual bool getString(QString *txt, const QString& mesage = "", const QString& title = "") = 0;
+
 };
 
 
diff --git a/src/plugins/intern/qc_actiongetent.cpp b/src/plugins/intern/qc_actiongetent.cpp
new file mode 100644
index 0000000..7c27cec
--- /dev/null
+++ b/src/plugins/intern/qc_actiongetent.cpp
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** This file is part of the LibreCAD project, a 2D CAD program
+**
+** Copyright (C) 2011 Rallaz (rallazz at gmail.com)
+** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
+**
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by 
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** This copyright notice MUST APPEAR in all copies of the script!  
+**
+**********************************************************************/
+
+#include "doc_plugin_interface.h"
+#include "qc_actiongetent.h"
+#include "rs_dialogfactory.h"
+#include "rs_selection.h"
+#include "rs_snapper.h"
+
+
+QC_ActionGetEnt::QC_ActionGetEnt(RS_EntityContainer& container,
+                                 RS_GraphicView& graphicView)
+        :RS_ActionInterface("Get Entity", container, graphicView) {
+    completed = false;
+    mesage = tr("Select object:");
+    en = NULL;
+}
+
+
+void QC_ActionGetEnt::updateMouseButtonHints() {
+    if (!completed)
+        RS_DIALOGFACTORY->updateMouseWidget(mesage, tr("Cancel"));
+    else
+        RS_DIALOGFACTORY->updateMouseWidget("", "");
+}
+
+
+void QC_ActionGetEnt::updateMouseCursor() {
+    graphicView->setMouseCursor(RS2::SelectCursor);
+}
+
+void QC_ActionGetEnt::setMesage(QString msg){
+    mesage = msg;
+}
+
+void QC_ActionGetEnt::trigger() {
+    if (en!=NULL) {
+        RS_Selection s(*container, graphicView);
+        s.selectSingle(en);
+        completed = true;
+        updateMouseButtonHints();
+    } else {
+        RS_DEBUG->print("QC_ActionGetEnt::trigger: Entity is NULL\n");
+    }
+}
+
+void QC_ActionGetEnt::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
+        init(getStatus()-1);
+    } else {
+        en = catchEntity(e);
+        trigger();
+    }
+}
+
+/**
+ * Add selected entity from 'container' to the selection.
+ */
+Plugin_Entity *QC_ActionGetEnt::getSelected() {
+    Plugin_Entity *pe = new Plugin_Entity(en);
+    return pe;
+}
+
+// EOF
diff --git a/src/plugins/intern/qc_actiongetent.h b/src/plugins/intern/qc_actiongetent.h
new file mode 100644
index 0000000..acd602a
--- /dev/null
+++ b/src/plugins/intern/qc_actiongetent.h
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** This file is part of the LibreCAD project, a 2D CAD program
+**
+** Copyright (C) 2011 Rallaz (rallazz at gmail.com)
+** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
+**
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by 
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** This copyright notice MUST APPEAR in all copies of the script!  
+**
+**********************************************************************/
+
+#ifndef QC_ACTIONGETENT_H
+#define QC_ACTIONGETENT_H
+
+#include "rs_previewactioninterface.h"
+#include "rs_modification.h"
+#include "document_interface.h"
+
+ class Plugin_Entity;
+
+/**
+ * This action class can handle user events to select entities from plugin.
+ *
+ * @author  Rallaz
+ */
+
+class QC_ActionGetEnt : public RS_ActionInterface {
+	Q_OBJECT
+//public:
+    /**
+     * Action States.
+     */
+/*    enum Status {
+        Select
+    };*/
+
+public:
+    QC_ActionGetEnt(RS_EntityContainer& container,
+                        RS_GraphicView& graphicView);
+    ~QC_ActionGetEnt() {}
+
+    virtual void updateMouseButtonHints();
+
+/*    virtual void init(int status=0);
+	
+    virtual void mouseReleaseEvent(QMouseEvent* e);
+	
+    virtual void updateMouseCursor();
+    virtual void updateToolBar();*/
+
+    virtual void trigger();
+//    virtual void keyPressEvent(QKeyEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
+    virtual void updateMouseCursor();
+
+    void setMesage(QString msg);
+    bool isCompleted(){return completed;}
+    Plugin_Entity *getSelected();
+
+private:
+    bool completed;
+    QString mesage;
+    RS_Entity* en;
+
+};
+
+#endif
diff --git a/src/plugins/intern/qc_actiongetpoint.cpp b/src/plugins/intern/qc_actiongetpoint.cpp
new file mode 100644
index 0000000..f9de7f2
--- /dev/null
+++ b/src/plugins/intern/qc_actiongetpoint.cpp
@@ -0,0 +1,179 @@
+/****************************************************************************
+**
+** This file is part of the LibreCAD project, a 2D CAD program
+**
+** Copyright (C) 2011 Rallaz (rallazz at gmail.com)
+** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
+**
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by 
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** This copyright notice MUST APPEAR in all copies of the script!  
+**
+**********************************************************************/
+
+#include "qc_actiongetpoint.h"
+
+#include "rs_snapper.h"
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+
+
+
+QC_ActionGetPoint::QC_ActionGetPoint(RS_EntityContainer& container,
+        RS_GraphicView& graphicView)
+        :RS_PreviewActionInterface("Get Point",
+                           container, graphicView) {
+    completed = false;
+    mesage = tr("Specify a point");
+
+}
+
+
+void QC_ActionGetPoint::init(int status) {
+    RS_ActionInterface::init(status);
+}
+
+
+void QC_ActionGetPoint::trigger() {
+
+    RS_DEBUG->print("QC_ActionGetPoint::trigger()");
+    completed = true;
+}
+
+
+void QC_ActionGetPoint::mouseMoveEvent(QMouseEvent* e) {
+    RS_DEBUG->print("QC_ActionGetPoint::mouseMoveEvent begin");
+    if (getStatus()==SetReferencePoint ||
+            getStatus()==SetTargetPoint) {
+
+        RS_Vector mouse = snapPoint(e);
+        switch (getStatus()) {
+        case SetReferencePoint:
+            targetPoint = mouse;
+            break;
+
+        case SetTargetPoint:
+            if (referencePoint.valid) {
+                targetPoint = mouse;
+                deletePreview();
+                RS_Line *line =new RS_Line(preview,
+                                       RS_LineData(referencePoint, mouse));
+                line->setPen(RS_Pen(RS_Color(0,0,0), RS2::Width00, RS2::DotLine ));
+                preview->addEntity(line);
+                RS_DEBUG->print("QC_ActionGetPoint::mouseMoveEvent: draw preview");
+                drawPreview();
+                preview->addSelectionFrom(*container);
+            }
+            break;
+
+        default:
+            break;
+        }
+    }
+
+    RS_DEBUG->print("QC_ActionGetPoint::mouseMoveEvent end");
+}
+
+
+
+void QC_ActionGetPoint::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::LeftButton) {
+        RS_CoordinateEvent ce(snapPoint(e));
+        coordinateEvent(&ce);
+    } else if (e->button()==Qt::RightButton) {
+        deletePreview();
+        init(getStatus()-1);
+    }
+}
+
+void QC_ActionGetPoint::coordinateEvent(RS_CoordinateEvent* e) {
+
+    if (e==NULL) {
+        return;
+    }
+
+    RS_Vector pos = e->getCoordinate();
+
+    switch (getStatus()) {
+    case SetReferencePoint:
+    case SetTargetPoint:
+        targetPoint = pos;
+        graphicView->moveRelativeZero(targetPoint);
+        trigger();
+        finish();
+        break;
+
+    default:
+        break;
+    }
+}
+
+
+void QC_ActionGetPoint::updateMouseButtonHints() {
+    switch (getStatus()) {
+    case SetReferencePoint:
+    case SetTargetPoint:
+        RS_DIALOGFACTORY->updateMouseWidget(mesage, tr("Cancel"));
+        break;
+    default:
+        RS_DIALOGFACTORY->updateMouseWidget("", "");
+        break;
+    }
+}
+
+
+void QC_ActionGetPoint::updateMouseCursor() {
+    graphicView->setMouseCursor(RS2::CadCursor);
+}
+
+
+void QC_ActionGetPoint::updateToolBar() {
+    switch (getStatus()) {
+    case SetReferencePoint:
+    case SetTargetPoint:
+        RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarSnap);
+        break;
+    default:
+        RS_DIALOGFACTORY->requestPreviousMenu();
+        RS_DIALOGFACTORY->updateMouseWidget("", "");
+        break;
+    }
+}
+
+
+void QC_ActionGetPoint::setBasepoint(QPointF* basepoint){
+    referencePoint.x = basepoint->x();
+    referencePoint.y = basepoint->y();
+    setStatus(SetTargetPoint);
+}
+
+
+void QC_ActionGetPoint::setMesage(QString msg){
+    mesage = msg;
+}
+
+
+void QC_ActionGetPoint::getPoint(QPointF *point) {
+    if (completed) {
+        point->setX(targetPoint.x);
+        point->setY(targetPoint.y);
+    } else {
+        point->setX(0.0);
+        point->setY(0.0);
+    }
+}
+
+// EOF
diff --git a/src/plugins/intern/qc_actiongetpoint.h b/src/plugins/intern/qc_actiongetpoint.h
new file mode 100644
index 0000000..386a229
--- /dev/null
+++ b/src/plugins/intern/qc_actiongetpoint.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** This file is part of the LibreCAD project, a 2D CAD program
+**
+** Copyright (C) 2011 Rallaz (rallazz at gmail.com)
+** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
+**
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by 
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** This copyright notice MUST APPEAR in all copies of the script!  
+**
+**********************************************************************/
+
+#ifndef QC_ACTIONGETPOINT_H
+#define QC_ACTIONGETPOINT_H
+
+#include "rs_previewactioninterface.h"
+#include "rs_modification.h"
+
+
+/**
+ * This action class can handle user events to get a point from plugin.
+ *
+ * @author  Rallaz
+ */
+class QC_ActionGetPoint : public RS_PreviewActionInterface {
+	Q_OBJECT
+public:
+    /**
+     * Action States.
+     */
+    enum Status {
+        SetReferencePoint,    /**< Setting the reference point. */
+        SetTargetPoint       /**< Setting the target point. */
+    };
+
+public:
+    QC_ActionGetPoint(RS_EntityContainer& container,
+                        RS_GraphicView& graphicView);
+    ~QC_ActionGetPoint() {}
+
+    virtual void init(int status=0);
+	
+    virtual void trigger();
+	
+    virtual void mouseMoveEvent(QMouseEvent* e);
+    virtual void mouseReleaseEvent(QMouseEvent* e);
+	
+	virtual void coordinateEvent(RS_CoordinateEvent* e);
+
+    virtual void updateMouseButtonHints();
+    virtual void updateMouseCursor();
+    virtual void updateToolBar();
+
+    void getPoint(QPointF *point);
+    void setBasepoint(QPointF* basepoint);
+    void setMesage(QString msg);
+
+private:
+    RS_MoveData data;
+    RS_Vector referencePoint;
+    RS_Vector targetPoint;
+    bool completed;
+    QString mesage;
+};
+
+#endif
diff --git a/src/plugins/intern/qc_actiongetselect.cpp b/src/plugins/intern/qc_actiongetselect.cpp
new file mode 100644
index 0000000..77dab77
--- /dev/null
+++ b/src/plugins/intern/qc_actiongetselect.cpp
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** This file is part of the LibreCAD project, a 2D CAD program
+**
+** Copyright (C) 2011 Rallaz (rallazz at gmail.com)
+** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
+**
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by 
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** This copyright notice MUST APPEAR in all copies of the script!  
+**
+**********************************************************************/
+
+#include "doc_plugin_interface.h"
+#include "qc_actiongetselect.h"
+#include "rs_dialogfactory.h"
+#include "rs_graphicview.h"
+#include "rs_actionselectsingle.h"
+
+#include "rs_snapper.h"
+
+
+QC_ActionGetSelect::QC_ActionGetSelect(RS_EntityContainer& container,
+                                 RS_GraphicView& graphicView)
+        :RS_ActionInterface("Get Select", container, graphicView) {
+    completed = false;
+    mesage = tr("Select objects:");
+}
+
+
+void QC_ActionGetSelect::updateMouseButtonHints() {
+    switch (getStatus()) {
+    case Select:
+        RS_DIALOGFACTORY->updateMouseWidget(mesage, tr("Cancel"));
+            break;
+    default:
+        RS_DIALOGFACTORY->updateMouseWidget("", "");
+        break;
+    }
+}
+
+
+void QC_ActionGetSelect::updateMouseCursor() {
+    graphicView->setMouseCursor(RS2::SelectCursor);
+}
+
+void QC_ActionGetSelect::setMesage(QString msg){
+    mesage = msg;
+}
+
+
+void QC_ActionGetSelect::init(int status) {
+        RS_ActionInterface::init(status);
+        graphicView->setCurrentAction(
+                new RS_ActionSelectSingle(*container, *graphicView));
+}
+
+
+
+void QC_ActionGetSelect::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
+        RS_DIALOGFACTORY->updateMouseWidget("", "");
+        completed = true;
+    }
+}
+
+
+
+void QC_ActionGetSelect::updateToolBar() {
+    if (RS_DIALOGFACTORY!=NULL) {
+        if (!isFinished()) {
+            RS_DIALOGFACTORY->requestToolBarSelect(this, RS2::ActionDefault);
+        } else {
+            RS_DIALOGFACTORY->requestToolBar(RS2::ToolBarMain);
+            RS_DIALOGFACTORY->updateMouseWidget("", "");
+            completed = true;
+        }
+    }
+}
+
+/**
+ * Adds all selected entities from 'container' to the selection.
+ */
+void QC_ActionGetSelect::getSelected(QList<Plug_Entity *> *se) {
+    for (RS_Entity* e= container->firstEntity();
+            e!=NULL; e= container->nextEntity()) {
+
+        if (e->isSelected()) {
+            Plugin_Entity *pe = new Plugin_Entity(e);
+            se->append(reinterpret_cast<Plug_Entity*>(pe));
+        }
+    }
+}
+
+
+// EOF
diff --git a/src/plugins/intern/qc_actiongetselect.h b/src/plugins/intern/qc_actiongetselect.h
new file mode 100644
index 0000000..490e8da
--- /dev/null
+++ b/src/plugins/intern/qc_actiongetselect.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** This file is part of the LibreCAD project, a 2D CAD program
+**
+** Copyright (C) 2011 Rallaz (rallazz at gmail.com)
+** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
+**
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by 
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** This copyright notice MUST APPEAR in all copies of the script!  
+**
+**********************************************************************/
+
+#ifndef QC_ACTIONGETSELECT_H
+#define QC_ACTIONGETSELECT_H
+
+#include "rs_previewactioninterface.h"
+#include "rs_modification.h"
+#include "document_interface.h"
+
+
+/**
+ * This action class can handle user events to select entities from plugin.
+ *
+ * @author  Rallaz
+ */
+class QC_ActionGetSelect : public RS_ActionInterface {
+	Q_OBJECT
+public:
+    /**
+     * Action States.
+     */
+    enum Status {
+        Select
+    };
+
+public:
+    QC_ActionGetSelect(RS_EntityContainer& container,
+                        RS_GraphicView& graphicView);
+    ~QC_ActionGetSelect() {}
+
+
+    virtual void init(int status=0);
+	
+    virtual void mouseReleaseEvent(QMouseEvent* e);
+	
+    virtual void updateMouseButtonHints();
+    virtual void updateMouseCursor();
+    virtual void updateToolBar();
+
+    void setMesage(QString msg);
+    bool isCompleted(){return completed;}
+    void getSelected(QList<Plug_Entity *> *se);
+
+private:
+    bool completed;
+    QString mesage;
+
+};
+
+#endif
diff --git a/src/plugins/qc_plugininterface.h b/src/plugins/qc_plugininterface.h
index 644bc08..189a369 100755
--- a/src/plugins/qc_plugininterface.h
+++ b/src/plugins/qc_plugininterface.h
@@ -2,7 +2,7 @@
 **
 ** This file is part of the LibreCAD project, a 2D CAD program
 **
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
+** Copyright (C) 2011 R. van Twisk (librecad at rvt.dds.nl)
 ** Copyright (C) 2011 Rallaz (rallazz at gmail.com)
 **
 **
@@ -30,6 +30,31 @@
 #include <QtPlugin>
 
 class Document_Interface;
+
+/**
+  * Menu locations for Plugins
+  */
+class PluginMenuLocation
+{
+    public:
+        PluginMenuLocation(QString menuEntryPoint, QString menuEntryActionName) {
+            this->menuEntryActionName=menuEntryActionName;
+            this->menuEntryPoint=menuEntryPoint;
+        }
+
+    QString menuEntryPoint;
+    QString menuEntryActionName;
+};
+
+class PluginCapabilities {
+    public:
+        QList<PluginMenuLocation> menuEntryPoints;
+        QList<int> paintEventPriorities;    // if set, this plugin will get it's paintEvent function called
+                                        // lower numbers are drawn first
+
+};
+
+
 /**
  * Interface for create plugins.
  *
@@ -40,8 +65,9 @@ class QC_PluginInterface
 public:
     virtual ~QC_PluginInterface() {}
     virtual QString name() const = 0;
-    virtual QString menu() const = 0;
-    virtual void execComm(Document_Interface *doc, QWidget *parent) = 0;
+    virtual PluginCapabilities getCapabilities() const = 0;
+    virtual void execComm(Document_Interface *doc, QWidget *parent, QString cmd) = 0;
+//    virtual void paintEvent(Document_Interface *doc) = 0;
 
 };
 
diff --git a/src/ui/forms/qg_arcoptions.cpp b/src/ui/forms/qg_arcoptions.cpp
index e13257e..5f1bceb 100644
--- a/src/ui/forms/qg_arcoptions.cpp
+++ b/src/ui/forms/qg_arcoptions.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_arcoptions.h"
 
-#include <qvariant.h>
 #include "rs_settings.h"
-#include "qg_arcoptions.ui.h"
+
 /*
  *  Constructs a QG_ArcOptions as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_ArcOptions::QG_ArcOptions(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_ArcOptions::QG_ArcOptions(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,52 @@ void QG_ArcOptions::languageChange()
     retranslateUi(this);
 }
 
+void QG_ArcOptions::destroy() {
+    RS_SETTINGS->beginGroup("/Draw");
+    RS_SETTINGS->writeEntry("/ArcReversed", (int)rbNeg->isChecked());
+    RS_SETTINGS->endGroup();
+}
+
+void QG_ArcOptions::setAction(RS_ActionInterface* a, bool update) {
+    if (a!=NULL && a->rtti()==RS2::ActionDrawArc) {
+        action = (RS_ActionDrawArc*)a;
+
+        bool reversed;
+        if (update) {
+            reversed = action->isReversed();
+        } else {
+            RS_SETTINGS->beginGroup("/Draw");
+            reversed = RS_SETTINGS->readNumEntry("/ArcReversed", 0);
+            RS_SETTINGS->endGroup();
+            action->setReversed(reversed);
+        }
+        rbNeg->setChecked(reversed);
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR, "QG_ArcOptions::setAction: wrong action type");
+        action = NULL;
+    }
+
+}
+
+
+/*void QG_ArcOptions::init() {
+    data = NULL;
+    RS_SETTINGS->beginGroup("/Draw");
+    bool reversed = RS_SETTINGS->readNumEntry("/ArcReversed", 0);
+    RS_SETTINGS->endGroup();
+
+    rbNeg->setChecked(reversed);
+}*/
+
+
+
+/*void QG_ArcOptions::setData(RS_ArcData* d) {
+    data = d;
+    updateDirection(false);
+}*/
+
+void QG_ArcOptions::updateDirection(bool /*pos*/) {
+    if (action!=NULL) {
+        action->setReversed(!(rbPos->isChecked()));
+    }
+}
diff --git a/src/ui/forms/qg_arcoptions.h b/src/ui/forms/qg_arcoptions.h
index 5d6e1aa..b431f47 100644
--- a/src/ui/forms/qg_arcoptions.h
+++ b/src/ui/forms/qg_arcoptions.h
@@ -26,15 +26,15 @@
 #ifndef QG_ARCOPTIONS_H
 #define QG_ARCOPTIONS_H
 
-#include "rs_actiondrawarc.h"
 #include "ui_qg_arcoptions.h"
+#include "rs_actiondrawarc.h"
 
 class QG_ArcOptions : public QWidget, public Ui::QG_ArcOptions
 {
     Q_OBJECT
 
 public:
-    QG_ArcOptions(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_ArcOptions(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_ArcOptions();
 
 public slots:
diff --git a/src/ui/forms/qg_arcoptions.ui b/src/ui/forms/qg_arcoptions.ui
index 9bafa26..ba7d549 100644
--- a/src/ui/forms/qg_arcoptions.ui
+++ b/src/ui/forms/qg_arcoptions.ui
@@ -25,22 +25,28 @@
   <property name="windowTitle">
    <string>Arc Options</string>
   </property>
-  <widget class="Q3ButtonGroup" name="buttonGroup1">
+  <widget class="QGroupBox" name="buttonGroup1">
    <property name="geometry">
     <rect>
      <x>0</x>
      <y>0</y>
-     <width>78</width>
-     <height>19</height>
+     <width>76</width>
+     <height>23</height>
     </rect>
    </property>
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
    <property name="title">
     <string/>
    </property>
    <property name="flat">
     <bool>true</bool>
    </property>
-   <property name="lineWidth">
+   <property name="lineWidth" stdset="0">
     <number>0</number>
    </property>
    <widget class="QRadioButton" name="rbNeg">
@@ -79,7 +85,7 @@
      <string/>
     </property>
     <property name="icon">
-     <iconset resource="../../res/extui/extui.qrc">
+     <iconset resource="../../../res/extui/extui.qrc">
       <normaloff>:/extui/dirneg.png</normaloff>:/extui/dirneg.png</iconset>
     </property>
     <property name="checked">
@@ -111,24 +117,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <customwidgets>
-  <customwidget>
-   <class>Q3GroupBox</class>
-   <extends>QGroupBox</extends>
-   <header>Qt3Support/Q3GroupBox</header>
-   <container>1</container>
-  </customwidget>
-  <customwidget>
-   <class>Q3ButtonGroup</class>
-   <extends>Q3GroupBox</extends>
-   <header>Qt3Support/Q3ButtonGroup</header>
-   <container>1</container>
-  </customwidget>
- </customwidgets>
- <includes>
-  <include location="local">rs_arc.h</include>
-  <include location="local">rs_actiondrawarc.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_arcoptions.ui.h b/src/ui/forms/qg_arcoptions.ui.h
deleted file mode 100644
index 4fc34d0..0000000
--- a/src/ui/forms/qg_arcoptions.ui.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_ArcOptions::destroy() {
-    RS_SETTINGS->beginGroup("/Draw");
-    RS_SETTINGS->writeEntry("/ArcReversed", (int)rbNeg->isChecked());
-    RS_SETTINGS->endGroup();
-}
-
-void QG_ArcOptions::setAction(RS_ActionInterface* a, bool update) {
-    if (a!=NULL && a->rtti()==RS2::ActionDrawArc) {
-        action = (RS_ActionDrawArc*)a;
-
-        bool reversed;
-        if (update) {
-            reversed = action->isReversed();
-        } else {
-            RS_SETTINGS->beginGroup("/Draw");
-            reversed = RS_SETTINGS->readNumEntry("/ArcReversed", 0);
-            RS_SETTINGS->endGroup();
-            action->setReversed(reversed);
-        }
-        rbNeg->setChecked(reversed);
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, "QG_ArcOptions::setAction: wrong action type");
-        action = NULL;
-    }
-
-}
-
-
-/*void QG_ArcOptions::init() {
-    data = NULL;
-    RS_SETTINGS->beginGroup("/Draw");
-    bool reversed = RS_SETTINGS->readNumEntry("/ArcReversed", 0);
-    RS_SETTINGS->endGroup();
-    
-    rbNeg->setChecked(reversed);
-}*/
-
-
-
-/*void QG_ArcOptions::setData(RS_ArcData* d) {
-    data = d;
-    updateDirection(false);
-}*/
-
-void QG_ArcOptions::updateDirection(bool /*pos*/) {
-    if (action!=NULL) {
-        action->setReversed(!(rbPos->isChecked()));
-    }
-}
diff --git a/src/ui/forms/qg_arctangentialoptions.cpp b/src/ui/forms/qg_arctangentialoptions.cpp
index 36f32d8..a1b396e 100644
--- a/src/ui/forms/qg_arctangentialoptions.cpp
+++ b/src/ui/forms/qg_arctangentialoptions.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_arctangentialoptions.h"
 
-#include <qvariant.h>
 #include "rs_settings.h"
-#include "qg_arctangentialoptions.ui.h"
+
 /*
  *  Constructs a QG_ArcTangentialOptions as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_ArcTangentialOptions::QG_ArcTangentialOptions(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_ArcTangentialOptions::QG_ArcTangentialOptions(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,53 @@ void QG_ArcTangentialOptions::languageChange()
     retranslateUi(this);
 }
 
+void QG_ArcTangentialOptions::destroy() {
+    RS_SETTINGS->beginGroup("/Draw");
+    RS_SETTINGS->writeEntry("/ArcTangentialRadius", leRadius->text());
+    RS_SETTINGS->endGroup();
+}
+
+void QG_ArcTangentialOptions::setAction(RS_ActionInterface* a, bool update) {
+    if (a!=NULL && a->rtti()==RS2::ActionDrawArcTangential) {
+        action = (RS_ActionDrawArcTangential*)a;
+
+        QString sr;
+        if (update) {
+            sr = QString("%1").arg(action->getRadius());
+        } else {
+            RS_SETTINGS->beginGroup("/Draw");
+            sr = RS_SETTINGS->readEntry("/ArcTangentialRadius", "1.0");
+            RS_SETTINGS->endGroup();
+            action->setRadius(sr.toDouble());
+        }
+        leRadius->setText(sr);
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_ArcTangentialOptions::setAction: wrong action type");
+        action = NULL;
+    }
+
+}
+
+
+/*void QG_ArcTangentialOptions::init() {
+    data = NULL;
+    RS_SETTINGS->beginGroup("/Draw");
+    bool reversed = RS_SETTINGS->readNumEntry("/ArcReversed", 0);
+    RS_SETTINGS->endGroup();
+
+    rbNeg->setChecked(reversed);
+}*/
+
+
+
+/*void QG_ArcTangentialOptions::setData(RS_ArcData* d) {
+    data = d;
+    updateDirection(false);
+}*/
+
+void QG_ArcTangentialOptions::updateRadius(const QString& s) {
+    if (action!=NULL) {
+        action->setRadius(RS_Math::eval(s));
+    }
+}
diff --git a/src/ui/forms/qg_arctangentialoptions.h b/src/ui/forms/qg_arctangentialoptions.h
index d7c2d6a..a4de7c1 100644
--- a/src/ui/forms/qg_arctangentialoptions.h
+++ b/src/ui/forms/qg_arctangentialoptions.h
@@ -26,15 +26,15 @@
 #ifndef QG_ARCTANGENTIALOPTIONS_H
 #define QG_ARCTANGENTIALOPTIONS_H
 
-#include "rs_actiondrawarctangential.h"
 #include "ui_qg_arctangentialoptions.h"
+#include "rs_actiondrawarctangential.h"
 
 class QG_ArcTangentialOptions : public QWidget, public Ui::QG_ArcTangentialOptions
 {
     Q_OBJECT
 
 public:
-    QG_ArcTangentialOptions(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_ArcTangentialOptions(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_ArcTangentialOptions();
 
 public slots:
diff --git a/src/ui/forms/qg_arctangentialoptions.ui b/src/ui/forms/qg_arctangentialoptions.ui
index 5475fca..ec4741e 100644
--- a/src/ui/forms/qg_arctangentialoptions.ui
+++ b/src/ui/forms/qg_arctangentialoptions.ui
@@ -1,93 +1,90 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0" stdsetdef="1">
-  <resources><include location="../../../res/extui/extui.qrc"/></resources><author></author>
-  <comment></comment>
-  <exportmacro></exportmacro>
-  <class>QG_ArcTangentialOptions</class>
-  <widget class="QWidget" name="QG_ArcTangentialOptions">
-    <property name="geometry">
-      <rect>
-        <x>0</x>
-        <y>0</y>
-        <width>160</width>
-        <height>24</height>
-      </rect>
-    </property>
-    <property name="sizePolicy">
-      <sizepolicy>
-        <hsizetype>0</hsizetype>
-        <vsizetype>0</vsizetype>
-        <horstretch>0</horstretch>
-        <verstretch>0</verstretch>
+<ui version="4.0">
+ <class>QG_ArcTangentialOptions</class>
+ <widget class="QWidget" name="QG_ArcTangentialOptions">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>160</width>
+    <height>24</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>160</width>
+    <height>22</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Tangential Arc Options</string>
+  </property>
+  <layout class="QHBoxLayout">
+   <property name="margin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QLabel" name="lRadius">
+     <property name="text">
+      <string>Radius:</string>
+     </property>
+     <property name="wordWrap">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLineEdit" name="leRadius">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Ignored" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
       </sizepolicy>
-    </property>
-    <property name="minimumSize">
-      <size>
-        <width>160</width>
-        <height>22</height>
-      </size>
-    </property>
-    <property name="windowTitle">
-      <string>Tangential Arc Options</string>
-    </property>
-    <layout class="QHBoxLayout">
-      <property name="margin">
-        <number>0</number>
-      </property>
-      <item>
-        <widget class="QLabel" name="lRadius">
-          <property name="text">
-            <string>Radius:</string>
-          </property>
-          <property name="wordWrap">
-            <bool>false</bool>
-          </property>
-        </widget>
-      </item>
-      <item>
-        <widget class="QLineEdit" name="leRadius">
-          <property name="sizePolicy">
-            <sizepolicy>
-              <hsizetype>13</hsizetype>
-              <vsizetype>0</vsizetype>
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-            </sizepolicy>
-          </property>
-        </widget>
-      </item>
-      <item>
-        <widget class="Line" name="sep1">
-          <property name="sizePolicy">
-            <sizepolicy>
-              <hsizetype>0</hsizetype>
-              <vsizetype>1</vsizetype>
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-            </sizepolicy>
-          </property>
-          <property name="frameShape">
-            <enum>QFrame::VLine</enum>
-          </property>
-          <property name="frameShadow">
-            <enum>QFrame::Sunken</enum>
-          </property>
-        </widget>
-      </item>
-    </layout>
-  </widget>
-  <layoutdefault spacing="6" margin="11"/>
-  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
-  <includes>
-    <include location="local">rs_arc.h</include>
-    <include location="local">rs_actiondrawarctangential.h</include>
-  </includes>
-  <connections>
-    <connection>
-      <sender>leRadius</sender>
-      <signal>textChanged(QString)</signal>
-      <receiver>QG_ArcTangentialOptions</receiver>
-      <slot>updateRadius(QString)</slot>
-    </connection>
-  </connections>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="sep1">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::VLine</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Sunken</enum>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>leRadius</sender>
+   <signal>textChanged(QString)</signal>
+   <receiver>QG_ArcTangentialOptions</receiver>
+   <slot>updateRadius(QString)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
 </ui>
diff --git a/src/ui/forms/qg_arctangentialoptions.ui.h b/src/ui/forms/qg_arctangentialoptions.ui.h
deleted file mode 100644
index ad8b7db..0000000
--- a/src/ui/forms/qg_arctangentialoptions.ui.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_ArcTangentialOptions::destroy() {
-    RS_SETTINGS->beginGroup("/Draw");
-    RS_SETTINGS->writeEntry("/ArcTangentialRadius", leRadius->text());    
-    RS_SETTINGS->endGroup();
-}
-
-void QG_ArcTangentialOptions::setAction(RS_ActionInterface* a, bool update) {
-    if (a!=NULL && a->rtti()==RS2::ActionDrawArcTangential) {
-        action = (RS_ActionDrawArcTangential*)a;
-
-        QString sr;
-        if (update) {
-            sr = QString("%1").arg(action->getRadius());
-        } else {
-            RS_SETTINGS->beginGroup("/Draw");
-            sr = RS_SETTINGS->readEntry("/ArcTangentialRadius", "1.0");
-            RS_SETTINGS->endGroup();
-            action->setRadius(sr.toDouble());
-        }
-        leRadius->setText(sr);
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_ArcTangentialOptions::setAction: wrong action type");
-        action = NULL;
-    }
-
-}
-
-
-/*void QG_ArcTangentialOptions::init() {
-    data = NULL;
-    RS_SETTINGS->beginGroup("/Draw");
-    bool reversed = RS_SETTINGS->readNumEntry("/ArcReversed", 0);
-    RS_SETTINGS->endGroup();
-    
-    rbNeg->setChecked(reversed);
-}*/
-
-
-
-/*void QG_ArcTangentialOptions::setData(RS_ArcData* d) {
-    data = d;
-    updateDirection(false);
-}*/
-
-void QG_ArcTangentialOptions::updateRadius(const QString& s) {
-    if (action!=NULL) {
-        action->setRadius(RS_Math::eval(s));
-    }
-}
diff --git a/src/ui/forms/qg_beveloptions.cpp b/src/ui/forms/qg_beveloptions.cpp
index adf04c3..9a87088 100644
--- a/src/ui/forms/qg_beveloptions.cpp
+++ b/src/ui/forms/qg_beveloptions.cpp
@@ -25,14 +25,14 @@
 **********************************************************************/
 #include "qg_beveloptions.h"
 
-#include <qvariant.h>
-#include "qg_beveloptions.ui.h"
+#include "rs_settings.h"
+
 /*
  *  Constructs a QG_BevelOptions as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_BevelOptions::QG_BevelOptions(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_BevelOptions::QG_BevelOptions(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -56,3 +56,46 @@ void QG_BevelOptions::languageChange()
     retranslateUi(this);
 }
 
+void QG_BevelOptions::destroy() {
+    RS_SETTINGS->beginGroup("/Modify");
+    RS_SETTINGS->writeEntry("/BevelLength1", leLength1->text());
+    RS_SETTINGS->writeEntry("/BevelLength2", leLength2->text());
+    RS_SETTINGS->writeEntry("/BevelTrim", (int)cbTrim->isChecked());
+    RS_SETTINGS->endGroup();
+}
+
+void QG_BevelOptions::setAction(RS_ActionInterface* a, bool update) {
+    if (a!=NULL && a->rtti()==RS2::ActionModifyBevel) {
+        action = (RS_ActionModifyBevel*)a;
+
+        QString sd1;
+        QString sd2;
+                QString st;
+        if (update) {
+            sd1 = QString("%1").arg(action->getLength1());
+            sd2 = QString("%1").arg(action->getLength2());
+            st = QString("%1").arg((int)action->isTrimOn());
+        } else {
+            RS_SETTINGS->beginGroup("/Modify");
+            sd1 = RS_SETTINGS->readEntry("/BevelLength1", "1.0");
+            sd2 = RS_SETTINGS->readEntry("/BevelLength2", "1.0");
+            st = RS_SETTINGS->readEntry("/BevelTrim", "1");
+            RS_SETTINGS->endGroup();
+        }
+                leLength1->setText(sd1);
+                leLength2->setText(sd2);
+        cbTrim->setChecked(st=="1");
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_BevelOptions::setAction: wrong action type");
+        action = NULL;
+    }
+}
+
+void QG_BevelOptions::updateData() {
+    if (action!=NULL) {
+        action->setTrim(cbTrim->isChecked());
+        action->setLength1(RS_Math::eval(leLength1->text()));
+        action->setLength2(RS_Math::eval(leLength2->text()));
+    }
+}
diff --git a/src/ui/forms/qg_beveloptions.h b/src/ui/forms/qg_beveloptions.h
index 83c40ad..21caa67 100644
--- a/src/ui/forms/qg_beveloptions.h
+++ b/src/ui/forms/qg_beveloptions.h
@@ -34,7 +34,7 @@ class QG_BevelOptions : public QWidget, public Ui::QG_BevelOptions
     Q_OBJECT
 
 public:
-    QG_BevelOptions(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_BevelOptions(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_BevelOptions();
 
 public slots:
diff --git a/src/ui/forms/qg_beveloptions.ui b/src/ui/forms/qg_beveloptions.ui
index 7e3efc3..71c1131 100644
--- a/src/ui/forms/qg_beveloptions.ui
+++ b/src/ui/forms/qg_beveloptions.ui
@@ -118,13 +118,6 @@
     </layout>
   </widget>
   <layoutdefault spacing="6" margin="11"/>
-  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
-  <includes>
-    <include location="local">rs_line.h</include>
-    <include location="local">rs_settings.h</include>
-    <include location="local">rs_modification.h</include>
-    <include location="local">rs_actionmodifybevel.h</include>
-  </includes>
   <connections>
     <connection>
       <sender>leLength1</sender>
diff --git a/src/ui/forms/qg_beveloptions.ui.h b/src/ui/forms/qg_beveloptions.ui.h
deleted file mode 100644
index f9698a9..0000000
--- a/src/ui/forms/qg_beveloptions.ui.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_BevelOptions::destroy() {
-    RS_SETTINGS->beginGroup("/Modify");
-    RS_SETTINGS->writeEntry("/BevelLength1", leLength1->text());
-    RS_SETTINGS->writeEntry("/BevelLength2", leLength2->text());
-    RS_SETTINGS->writeEntry("/BevelTrim", (int)cbTrim->isChecked());
-    RS_SETTINGS->endGroup();
-}
-
-void QG_BevelOptions::setAction(RS_ActionInterface* a, bool update) {
-    if (a!=NULL && a->rtti()==RS2::ActionModifyBevel) {
-        action = (RS_ActionModifyBevel*)a;
-
-        QString sd1;
-        QString sd2;
-		QString st;
-        if (update) {
-            sd1 = QString("%1").arg(action->getLength1());
-            sd2 = QString("%1").arg(action->getLength2());
-            st = QString("%1").arg((int)action->isTrimOn());
-        } else {
-            RS_SETTINGS->beginGroup("/Modify");
-            sd1 = RS_SETTINGS->readEntry("/BevelLength1", "1.0");
-            sd2 = RS_SETTINGS->readEntry("/BevelLength2", "1.0");
-            st = RS_SETTINGS->readEntry("/BevelTrim", "1");
-            RS_SETTINGS->endGroup();
-        }
-		leLength1->setText(sd1);
-		leLength2->setText(sd2);
-    	cbTrim->setChecked(st=="1");
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_BevelOptions::setAction: wrong action type");
-        action = NULL;
-    }
-}
-
-void QG_BevelOptions::updateData() {
-    if (action!=NULL) {
-        action->setTrim(cbTrim->isChecked());
-        action->setLength1(RS_Math::eval(leLength1->text()));
-        action->setLength2(RS_Math::eval(leLength2->text()));
-    }
-}
diff --git a/src/ui/forms/qg_blockdialog.cpp b/src/ui/forms/qg_blockdialog.cpp
index 6585327..93233dc 100644
--- a/src/ui/forms/qg_blockdialog.cpp
+++ b/src/ui/forms/qg_blockdialog.cpp
@@ -25,9 +25,8 @@
 **********************************************************************/
 #include "qg_blockdialog.h"
 
-#include <qvariant.h>
-#include <qmessagebox.h>
-#include "qg_blockdialog.ui.h"
+#include <QMessageBox>
+
 /*
  *  Constructs a QG_BlockDialog as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
@@ -35,9 +34,10 @@
  *  The dialog will by default be modeless, unless you set 'modal' to
  *  true to construct a modal dialog.
  */
-QG_BlockDialog::QG_BlockDialog(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl)
-    : QDialog(parent, name, modal, fl)
+QG_BlockDialog::QG_BlockDialog(QWidget* parent, bool modal, Qt::WindowFlags fl)
+    : QDialog(parent, fl)
 {
+    setModal(modal);
     setupUi(this);
 
 }
@@ -59,3 +59,54 @@ void QG_BlockDialog::languageChange()
     retranslateUi(this);
 }
 
+void QG_BlockDialog::setBlockList(RS_BlockList* l) {
+        RS_DEBUG->print("QG_BlockDialog::setBlockList");
+
+    blockList = l;
+    if (blockList!=NULL) {
+        RS_Block* block = blockList->getActive();
+        if (block!=NULL) {
+            leName->setText(block->getName());
+        } else {
+            RS_DEBUG->print(RS_Debug::D_ERROR,
+                                "QG_BlockDialog::setBlockList: No block active.");
+        }
+    }
+}
+
+RS_BlockData QG_BlockDialog::getBlockData() {
+    /*if (blockList!=NULL) {
+      RS_Block* block = blockList->getActive();
+        if (block!=NULL) {
+           return blockList->rename(block, leName->text().latin1());
+        }
+}
+
+    return false;*/
+
+    return RS_BlockData(leName->text(), RS_Vector(0.0,0.0), false);
+}
+
+void QG_BlockDialog::validate() {
+    QString name = leName->text();
+
+    if (!name.isEmpty()) {
+        if (blockList!=NULL && blockList->find(name)==NULL) {
+            accept();
+        } else {
+            QMessageBox::warning( this, tr("Renaming Block"),
+                                  tr("Could not name block. A block named \"%1\" "
+                                     "already exists.").arg(leName->text()),
+                                  QMessageBox::Ok,
+                                  Qt::NoButton);
+        }
+    }
+    //else {
+    //reject();
+    //}
+}
+
+void QG_BlockDialog::cancel() {
+    leName->setText("");
+    reject();
+}
diff --git a/src/ui/forms/qg_blockdialog.h b/src/ui/forms/qg_blockdialog.h
index 528818d..99f05cf 100644
--- a/src/ui/forms/qg_blockdialog.h
+++ b/src/ui/forms/qg_blockdialog.h
@@ -26,6 +26,7 @@
 #ifndef QG_BLOCKDIALOG_H
 #define QG_BLOCKDIALOG_H
 
+#include "rs_block.h"
 #include "rs_blocklist.h"
 #include "ui_qg_blockdialog.h"
 
@@ -34,7 +35,7 @@ class QG_BlockDialog : public QDialog, public Ui::QG_BlockDialog
     Q_OBJECT
 
 public:
-    QG_BlockDialog(QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WindowFlags fl = 0);
+    QG_BlockDialog(QWidget* parent = 0, bool modal = false, Qt::WindowFlags fl = 0);
     ~QG_BlockDialog();
 
     virtual RS_BlockData getBlockData();
diff --git a/src/ui/forms/qg_blockdialog.ui b/src/ui/forms/qg_blockdialog.ui
index 04299b3..0882aa0 100644
--- a/src/ui/forms/qg_blockdialog.ui
+++ b/src/ui/forms/qg_blockdialog.ui
@@ -127,12 +127,6 @@
     </layout>
   </widget>
   <layoutdefault spacing="6" margin="11"/>
-  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
-  <includes>
-    <include location="local">rs_blocklist.h</include>
-    <include location="local">rs.h</include>
-    <include location="local">rs_block.h</include>
-  </includes>
   <connections>
     <connection>
       <sender>bCancel</sender>
diff --git a/src/ui/forms/qg_blockdialog.ui.h b/src/ui/forms/qg_blockdialog.ui.h
deleted file mode 100644
index 7f37759..0000000
--- a/src/ui/forms/qg_blockdialog.ui.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_BlockDialog::setBlockList(RS_BlockList* l) {
-	RS_DEBUG->print("QG_BlockDialog::setBlockList");
-	
-    blockList = l;
-    if (blockList!=NULL) {
-        RS_Block* block = blockList->getActive();
-        if (block!=NULL) {
-            leName->setText(block->getName());
-        } else {
-            RS_DEBUG->print(RS_Debug::D_ERROR, 
-				"QG_BlockDialog::setBlockList: No block active.");
-        }
-    }
-}
-
-RS_BlockData QG_BlockDialog::getBlockData() {
-    /*if (blockList!=NULL) {
-      RS_Block* block = blockList->getActive();
-        if (block!=NULL) {
-           return blockList->rename(block, leName->text().latin1());
-        }
-}
-
-    return false;*/
-
-    return RS_BlockData(leName->text(), RS_Vector(0.0,0.0), false);
-}
-
-void QG_BlockDialog::validate() {
-    QString name = leName->text();
-
-    if (!name.isEmpty()) {
-        if (blockList!=NULL && blockList->find(name)==NULL) {
-            accept();
-        } else {
-            QMessageBox::warning( this, tr("Renaming Block"),
-                                  tr("Could not name block. A block named \"%1\" "
-                                     "already exists.").arg(leName->text()),
-                                  QMessageBox::Ok,
-                                  Qt::NoButton);
-        }
-    }
-    //else {
-    //reject();
-    //}
-}
-
-void QG_BlockDialog::cancel() {
-    leName->setText("");
-    reject();
-}
diff --git a/src/ui/forms/qg_cadtoolbar.cpp b/src/ui/forms/qg_cadtoolbar.cpp
index c0364ca..5c863c0 100644
--- a/src/ui/forms/qg_cadtoolbar.cpp
+++ b/src/ui/forms/qg_cadtoolbar.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbar.h"
 
-#include <qvariant.h>
-#include "qg_cadtoolbar.ui.h"
 /*
  *  Constructs a QG_CadToolBar as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
 QG_CadToolBar::QG_CadToolBar(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+    : QWidget(parent, fl)
 {
+    setObjectName(name);
     setupUi(this);
 
     init();
@@ -56,3 +55,241 @@ void QG_CadToolBar::languageChange()
     retranslateUi(this);
 }
 
+
+void QG_CadToolBar::init() {
+    actionHandler = NULL;
+    currentTb = NULL;
+
+    tbMain = NULL;
+
+    tbPoints = NULL;
+    tbLines = NULL;
+    tbArcs = NULL;
+    tbCircles = NULL;
+    tbEllipses = NULL;
+    tbSplines = NULL;
+    tbPolylines = NULL;
+
+    tbDim = NULL;
+
+    tbModify = NULL;
+    tbInfo = NULL;
+    tbSelect = NULL;
+
+    tbSnap = NULL;
+}
+
+/**
+ * @return Pointer to action handler or NULL.
+ */
+QG_ActionHandler* QG_CadToolBar::getActionHandler() {
+    return actionHandler;
+}
+
+/**
+ * Called from the sub toolbar
+ */
+void QG_CadToolBar::back() {
+    emit(signalBack());
+}
+
+/**
+ * Called from the application.
+ */
+void QG_CadToolBar::forceNext() {
+    if (currentTb!=NULL && currentTb==tbSelect) {
+        tbSelect->runNextAction();
+    }
+}
+
+void QG_CadToolBar::mouseReleaseEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton) {
+        back();
+        e->accept();
+    }
+}
+
+void QG_CadToolBar::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+/**
+ * Creates all tool bars and shows the main toolbar.
+ *
+ * @param ah Pointer to action handler which will deal with the actions in this tool bar.
+ */
+void QG_CadToolBar::createSubToolBars(QG_ActionHandler* ah) {
+    actionHandler = ah;
+    tbMain = new QG_CadToolBarMain(this);
+    tbMain->setCadToolBar(this);
+
+    tbPoints = new QG_CadToolBarPoints(this);
+    tbPoints->setCadToolBar(this);
+    tbPoints->hide();
+
+    tbLines = new QG_CadToolBarLines(this);
+    tbLines->setCadToolBar(this);
+    tbLines->hide();
+
+    tbArcs = new QG_CadToolBarArcs(this);
+    tbArcs->setCadToolBar(this);
+    tbArcs->hide();
+
+    tbCircles = new QG_CadToolBarCircles(this);
+    tbCircles->setCadToolBar(this);
+    tbCircles->hide();
+
+    tbEllipses = new QG_CadToolBarEllipses(this);
+    tbEllipses->setCadToolBar(this);
+    tbEllipses->hide();
+
+    tbSplines = new QG_CadToolBarSplines(this);
+    tbSplines->setCadToolBar(this);
+    tbSplines->hide();
+
+    tbPolylines = new QG_CadToolBarPolylines(this);
+    tbPolylines->setCadToolBar(this);
+    tbPolylines->hide();
+
+    tbDim = new QG_CadToolBarDim(this);
+    tbDim->setCadToolBar(this);
+    tbDim->hide();
+
+    tbInfo = new QG_CadToolBarInfo(this);
+    tbInfo->setCadToolBar(this);
+    tbInfo->hide();
+
+    tbModify = new QG_CadToolBarModify(this);
+    tbModify->setCadToolBar(this);
+    tbModify->hide();
+
+    tbSnap = new QG_CadToolBarSnap(this);
+    tbSnap->setCadToolBar(this);
+    tbSnap->hide();
+
+    tbSelect = new QG_CadToolBarSelect(this);
+    tbSelect->setCadToolBar(this);
+    tbSelect->hide();
+
+    showToolBarMain();
+}
+
+
+void QG_CadToolBar::showToolBar(int id) {
+    QWidget* newTb = NULL;
+
+    switch (id) {
+    default:
+    case RS2::ToolBarMain:
+        newTb = tbMain;
+        break;
+    case RS2::ToolBarPoints:
+        newTb = tbPoints;
+        break;
+    case RS2::ToolBarLines:
+        newTb = tbLines;
+        break;
+    case RS2::ToolBarArcs:
+        newTb = tbArcs;
+        break;
+    case RS2::ToolBarEllipses:
+        newTb = tbEllipses;
+        break;
+    case RS2::ToolBarSplines:
+        newTb = tbSplines;
+        break;
+    case RS2::ToolBarPolylines:
+        newTb = tbPolylines;
+        break;
+    case RS2::ToolBarCircles:
+        newTb = tbCircles;
+        break;
+    case RS2::ToolBarInfo:
+        newTb = tbInfo;
+        break;
+    case RS2::ToolBarModify:
+        newTb = tbModify;
+        break;
+    case RS2::ToolBarDim:
+        newTb = tbDim;
+        break;
+    case RS2::ToolBarSnap:
+        newTb = tbSnap;
+        break;
+    case RS2::ToolBarSelect:
+        newTb = tbSelect;
+        break;
+    }
+
+    if (currentTb==newTb) {
+        return;
+    }
+    if (currentTb!=NULL) {
+        currentTb->hide();
+    }
+    currentTb = newTb;
+    if (currentTb!=NULL) {
+        currentTb->move(0,20);
+        currentTb->show();
+    }
+}
+
+void QG_CadToolBar::showToolBarMain() {
+    showToolBar(RS2::ToolBarMain);
+}
+
+void QG_CadToolBar::showToolBarPoints() {
+    showToolBar(RS2::ToolBarPoints);
+}
+
+void QG_CadToolBar::showToolBarLines() {
+    showToolBar(RS2::ToolBarLines);
+}
+
+void QG_CadToolBar::showToolBarArcs() {
+    showToolBar(RS2::ToolBarArcs);
+}
+
+void QG_CadToolBar::showToolBarEllipses() {
+    showToolBar(RS2::ToolBarEllipses);
+}
+
+void QG_CadToolBar::showToolBarSplines() {
+    showToolBar(RS2::ToolBarSplines);
+}
+
+void QG_CadToolBar::showToolBarPolylines() {
+    showToolBar(RS2::ToolBarPolylines);
+}
+
+void QG_CadToolBar::showToolBarCircles() {
+    showToolBar(RS2::ToolBarCircles);
+}
+
+void QG_CadToolBar::showToolBarInfo() {
+    showToolBar(RS2::ToolBarInfo);
+}
+
+void QG_CadToolBar::showToolBarModify() {
+    showToolBar(RS2::ToolBarModify);
+}
+
+void QG_CadToolBar::showToolBarSnap() {
+    showToolBar(RS2::ToolBarSnap);
+}
+
+void QG_CadToolBar::showToolBarDim() {
+    showToolBar(RS2::ToolBarDim);
+}
+
+void QG_CadToolBar::showToolBarSelect() {
+    showToolBarSelect(NULL, -1);
+}
+
+void QG_CadToolBar::showToolBarSelect(RS_ActionInterface* selectAction,
+                                      int nextAction) {
+
+    tbSelect->setNextAction(nextAction);
+    tbSelect->setSelectAction(selectAction);
+    showToolBar(RS2::ToolBarSelect);
+}
diff --git a/src/ui/forms/qg_cadtoolbar.h b/src/ui/forms/qg_cadtoolbar.h
index a3febb4..7fca4a1 100644
--- a/src/ui/forms/qg_cadtoolbar.h
+++ b/src/ui/forms/qg_cadtoolbar.h
@@ -28,6 +28,7 @@
 
 class QG_ActionHandler;
 
+#include "rs_actioninterface.h"
 #include "qg_cadtoolbararcs.h"
 #include "qg_cadtoolbarcircles.h"
 #include "qg_cadtoolbardim.h"
diff --git a/src/ui/forms/qg_cadtoolbar.ui b/src/ui/forms/qg_cadtoolbar.ui
index 8c7b5a9..fb86a87 100644
--- a/src/ui/forms/qg_cadtoolbar.ui
+++ b/src/ui/forms/qg_cadtoolbar.ui
@@ -1,51 +1,32 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0" stdsetdef="1">
-  <resources><include location="../../../res/extui/extui.qrc"/></resources><author></author>
-  <comment></comment>
-  <exportmacro></exportmacro>
-  <class>QG_CadToolBar</class>
-  <widget class="QWidget" name="QG_CadToolBar">
-    <property name="geometry">
-      <rect>
-        <x>34</x>
-        <y>0</y>
-        <width>56</width>
-        <height>336</height>
-      </rect>
-    </property>
-    <property name="sizePolicy">
-      <sizepolicy>
-        <hsizetype>0</hsizetype>
-        <vsizetype>3</vsizetype>
-        <horstretch>0</horstretch>
-        <verstretch>0</verstretch>
-      </sizepolicy>
-    </property>
-    <property name="minimumSize">
-      <size>
-        <width>56</width>
-        <height>336</height>
-      </size>
-    </property>
-    <property name="windowTitle">
-      <string>CAD Tools</string>
-    </property>
-  </widget>
-  <layoutdefault spacing="6" margin="11"/>
-  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
-  <includes>
-    <include location="local">qg_cadtoolbararcs.h</include>
-    <include location="local">qg_cadtoolbarcircles.h</include>
-    <include location="local">qg_cadtoolbarmodify.h</include>
-    <include location="local">qg_cadtoolbarellipses.h</include>
-    <include location="local">qg_cadtoolbarlines.h</include>
-    <include location="local">qg_cadtoolbarpoints.h</include>
-    <include location="local">qg_cadtoolbardim.h</include>
-    <include location="local">qg_cadtoolbarsnap.h</include>
-    <include location="local">qg_cadtoolbarselect.h</include>
-    <include location="local">qg_cadtoolbarmain.h</include>
-    <include location="local">qg_cadtoolbarinfo.h</include>
-    <include location="local">qg_cadtoolbarsplines.h</include>
-    <include location="local">qg_cadtoolbarpolylines.h</include>
-  </includes>
+<ui version="4.0">
+ <class>QG_CadToolBar</class>
+ <widget class="QWidget" name="QG_CadToolBar">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>56</width>
+    <height>400</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>56</width>
+    <height>336</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>CAD Tools</string>
+  </property>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
 </ui>
diff --git a/src/ui/forms/qg_cadtoolbar.ui.h b/src/ui/forms/qg_cadtoolbar.ui.h
deleted file mode 100644
index da30a5d..0000000
--- a/src/ui/forms/qg_cadtoolbar.ui.h
+++ /dev/null
@@ -1,272 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QMouseEvent>
-#include <QContextMenuEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBar::init() {
-    actionHandler = NULL;
-    currentTb = NULL;
-
-    tbMain = NULL;
-
-    tbPoints = NULL;
-    tbLines = NULL;
-    tbArcs = NULL;
-    tbCircles = NULL;
-    tbEllipses = NULL;
-    tbSplines = NULL;
-    tbPolylines = NULL;
-
-    tbDim = NULL;
-
-    tbModify = NULL;
-    tbInfo = NULL;
-    tbSelect = NULL;
-
-    tbSnap = NULL;
-}
-
-/**
- * @return Pointer to action handler or NULL.
- */
-QG_ActionHandler* QG_CadToolBar::getActionHandler() {
-    return actionHandler;
-}
-
-/**
- * Called from the sub toolbar
- */
-void QG_CadToolBar::back() {
-    emit(signalBack());
-}
-
-/**
- * Called from the application.
- */
-void QG_CadToolBar::forceNext() {
-    if (currentTb!=NULL && currentTb==tbSelect) {
-        tbSelect->runNextAction();
-    }
-}
-
-void QG_CadToolBar::mouseReleaseEvent(QMouseEvent* e) {
-    if (e->button()==Qt::RightButton) {
-        back();
-        e->accept();
-    }
-}
-
-void QG_CadToolBar::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-/**
- * Creates all tool bars and shows the main toolbar.
- *
- * @param ah Pointer to action handler which will deal with the actions in this tool bar.
- */
-void QG_CadToolBar::createSubToolBars(QG_ActionHandler* ah) {
-    actionHandler = ah;
-    tbMain = new QG_CadToolBarMain(this);
-    tbMain->setCadToolBar(this);
-
-    tbPoints = new QG_CadToolBarPoints(this);
-    tbPoints->setCadToolBar(this);
-    tbPoints->hide();
-
-    tbLines = new QG_CadToolBarLines(this);
-    tbLines->setCadToolBar(this);
-    tbLines->hide();
-
-    tbArcs = new QG_CadToolBarArcs(this);
-    tbArcs->setCadToolBar(this);
-    tbArcs->hide();
-
-    tbCircles = new QG_CadToolBarCircles(this);
-    tbCircles->setCadToolBar(this);
-    tbCircles->hide();
-
-    tbEllipses = new QG_CadToolBarEllipses(this);
-    tbEllipses->setCadToolBar(this);
-    tbEllipses->hide();
-
-    tbSplines = new QG_CadToolBarSplines(this);
-    tbSplines->setCadToolBar(this);
-    tbSplines->hide();
-
-    tbPolylines = new QG_CadToolBarPolylines(this);
-    tbPolylines->setCadToolBar(this);
-    tbPolylines->hide();
-
-    tbDim = new QG_CadToolBarDim(this);
-    tbDim->setCadToolBar(this);
-    tbDim->hide();
-
-    tbInfo = new QG_CadToolBarInfo(this);
-    tbInfo->setCadToolBar(this);
-    tbInfo->hide();
-
-    tbModify = new QG_CadToolBarModify(this);
-    tbModify->setCadToolBar(this);
-    tbModify->hide();
-
-    tbSnap = new QG_CadToolBarSnap(this);
-    tbSnap->setCadToolBar(this);
-    tbSnap->hide();
-
-    tbSelect = new QG_CadToolBarSelect(this);
-    tbSelect->setCadToolBar(this);
-    tbSelect->hide();
-
-    showToolBarMain();
-}
-
-
-void QG_CadToolBar::showToolBar(int id) {
-    QWidget* newTb = NULL;
-
-    switch (id) {
-    default:
-    case RS2::ToolBarMain:
-        newTb = tbMain;
-        break;
-    case RS2::ToolBarPoints:
-        newTb = tbPoints;
-        break;
-    case RS2::ToolBarLines:
-        newTb = tbLines;
-        break;
-    case RS2::ToolBarArcs:
-        newTb = tbArcs;
-        break;
-    case RS2::ToolBarEllipses:
-        newTb = tbEllipses;
-        break;
-    case RS2::ToolBarSplines:
-        newTb = tbSplines;
-        break;
-    case RS2::ToolBarPolylines:
-        newTb = tbPolylines;
-        break;
-    case RS2::ToolBarCircles:
-        newTb = tbCircles;
-        break;
-    case RS2::ToolBarInfo:
-        newTb = tbInfo;
-        break;
-    case RS2::ToolBarModify:
-        newTb = tbModify;
-        break;
-    case RS2::ToolBarDim:
-        newTb = tbDim;
-        break;
-    case RS2::ToolBarSnap:
-        newTb = tbSnap;
-        break;
-    case RS2::ToolBarSelect:
-        newTb = tbSelect;
-        break;
-    }
-
-    if (currentTb==newTb) {
-        return;
-    }
-    if (currentTb!=NULL) {
-        currentTb->hide();
-    }
-    currentTb = newTb;
-    if (currentTb!=NULL) {
-        currentTb->show();
-    }
-}
-
-void QG_CadToolBar::showToolBarMain() {
-    showToolBar(RS2::ToolBarMain);
-}
-
-void QG_CadToolBar::showToolBarPoints() {
-    showToolBar(RS2::ToolBarPoints);
-}
-
-void QG_CadToolBar::showToolBarLines() {
-    showToolBar(RS2::ToolBarLines);
-}
-
-void QG_CadToolBar::showToolBarArcs() {
-    showToolBar(RS2::ToolBarArcs);
-}
-
-void QG_CadToolBar::showToolBarEllipses() {
-    showToolBar(RS2::ToolBarEllipses);
-}
-
-void QG_CadToolBar::showToolBarSplines() {
-    showToolBar(RS2::ToolBarSplines);
-}
-
-void QG_CadToolBar::showToolBarPolylines() {
-    showToolBar(RS2::ToolBarPolylines);
-}
-
-void QG_CadToolBar::showToolBarCircles() {
-    showToolBar(RS2::ToolBarCircles);
-}
-
-void QG_CadToolBar::showToolBarInfo() {
-    showToolBar(RS2::ToolBarInfo);
-}
-
-void QG_CadToolBar::showToolBarModify() {
-    showToolBar(RS2::ToolBarModify);
-}
-
-void QG_CadToolBar::showToolBarSnap() {
-    showToolBar(RS2::ToolBarSnap);
-}
-
-void QG_CadToolBar::showToolBarDim() {
-    showToolBar(RS2::ToolBarDim);
-}
-
-void QG_CadToolBar::showToolBarSelect() {
-    showToolBarSelect(NULL, -1);
-}
-
-void QG_CadToolBar::showToolBarSelect(RS_ActionInterface* selectAction,
-                                      int nextAction) {
-
-    tbSelect->setNextAction(nextAction);
-    tbSelect->setSelectAction(selectAction);
-    showToolBar(RS2::ToolBarSelect);
-}
diff --git a/src/ui/forms/qg_cadtoolbararcs.cpp b/src/ui/forms/qg_cadtoolbararcs.cpp
index 186fe1b..a0357c9 100644
--- a/src/ui/forms/qg_cadtoolbararcs.cpp
+++ b/src/ui/forms/qg_cadtoolbararcs.cpp
@@ -25,15 +25,15 @@
 **********************************************************************/
 #include "qg_cadtoolbararcs.h"
 
-#include <qvariant.h>
+
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbararcs.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarArcs as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarArcs::QG_CadToolBarArcs(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarArcs::QG_CadToolBarArcs(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +57,60 @@ void QG_CadToolBarArcs::languageChange()
     retranslateUi(this);
 }
 
+#include <QContextMenuEvent>
+
+void QG_CadToolBarArcs::init() {
+    actionHandler = NULL;
+    cadToolBar = NULL;
+}
+
+/*void QG_CadToolBarArcs::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}*/
+
+void QG_CadToolBarArcs::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarArcs::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarArcs::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarArcs::drawArc() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawArc();
+    }
+}
+
+void QG_CadToolBarArcs::drawArc3P() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawArc3P();
+    }
+}
+
+void QG_CadToolBarArcs::drawArcParallel() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawArcParallel();
+    }
+}
+
+void QG_CadToolBarArcs::drawArcTangential() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawArcTangential();
+    }
+}
+
+void QG_CadToolBarArcs::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbararcs.h b/src/ui/forms/qg_cadtoolbararcs.h
index 373ead8..b64c777 100644
--- a/src/ui/forms/qg_cadtoolbararcs.h
+++ b/src/ui/forms/qg_cadtoolbararcs.h
@@ -36,7 +36,7 @@ class QG_CadToolBarArcs : public QWidget, public Ui::QG_CadToolBarArcs
     Q_OBJECT
 
 public:
-    QG_CadToolBarArcs(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarArcs(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarArcs();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbararcs.ui b/src/ui/forms/qg_cadtoolbararcs.ui
index e887683..8b2e0ed 100644
--- a/src/ui/forms/qg_cadtoolbararcs.ui
+++ b/src/ui/forms/qg_cadtoolbararcs.ui
@@ -133,9 +133,6 @@
   <tabstop>bArc3P</tabstop>
   <tabstop>bArcParallel</tabstop>
  </tabstops>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbararcs.ui.h b/src/ui/forms/qg_cadtoolbararcs.ui.h
deleted file mode 100644
index a2785a7..0000000
--- a/src/ui/forms/qg_cadtoolbararcs.ui.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QContextMenuEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarArcs::init() {
-    actionHandler = NULL;
-    cadToolBar = NULL;
-}
-
-/*void QG_CadToolBarArcs::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}*/
-
-void QG_CadToolBarArcs::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarArcs::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarArcs::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarArcs::drawArc() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawArc();
-    }
-}
-
-void QG_CadToolBarArcs::drawArc3P() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawArc3P();
-    }
-}
-
-void QG_CadToolBarArcs::drawArcParallel() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawArcParallel();
-    }
-}
-
-void QG_CadToolBarArcs::drawArcTangential() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawArcTangential();
-    }
-}
-
-void QG_CadToolBarArcs::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarcircles.cpp b/src/ui/forms/qg_cadtoolbarcircles.cpp
index 5de06c3..3712590 100644
--- a/src/ui/forms/qg_cadtoolbarcircles.cpp
+++ b/src/ui/forms/qg_cadtoolbarcircles.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarcircles.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarcircles.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarCircles as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarCircles::QG_CadToolBarCircles(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarCircles::QG_CadToolBarCircles(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,64 @@ void QG_CadToolBarCircles::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarCircles::init() {
+    actionHandler = NULL;
+    cadToolBar = NULL;
+}
+
+void QG_CadToolBarCircles::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}
+
+void QG_CadToolBarCircles::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarCircles::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarCircles::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarCircles::drawCircle() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawCircle();
+    }
+}
+
+void QG_CadToolBarCircles::drawCircleCR() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawCircleCR();
+    }
+}
+
+void QG_CadToolBarCircles::drawCircle2P() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawCircle2P();
+    }
+}
+
+void QG_CadToolBarCircles::drawCircle3P() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawCircle3P();
+    }
+}
+
+void QG_CadToolBarCircles::drawCircleParallel() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawCircleParallel();
+    }
+}
+
+void QG_CadToolBarCircles::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarcircles.h b/src/ui/forms/qg_cadtoolbarcircles.h
index bf1e002..3820e97 100644
--- a/src/ui/forms/qg_cadtoolbarcircles.h
+++ b/src/ui/forms/qg_cadtoolbarcircles.h
@@ -36,7 +36,7 @@ class QG_CadToolBarCircles : public QWidget, public Ui::QG_CadToolBarCircles
     Q_OBJECT
 
 public:
-    QG_CadToolBarCircles(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarCircles(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarCircles();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarcircles.ui b/src/ui/forms/qg_cadtoolbarcircles.ui
index 1fc6153..e31092d 100644
--- a/src/ui/forms/qg_cadtoolbarcircles.ui
+++ b/src/ui/forms/qg_cadtoolbarcircles.ui
@@ -155,9 +155,6 @@
   <tabstop>bCircle3P</tabstop>
   <tabstop>bCircleParallel</tabstop>
  </tabstops>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarcircles.ui.h b/src/ui/forms/qg_cadtoolbarcircles.ui.h
deleted file mode 100644
index 342d47a..0000000
--- a/src/ui/forms/qg_cadtoolbarcircles.ui.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QContextMenuEvent>
-#include <QMouseEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarCircles::init() {
-    actionHandler = NULL;
-    cadToolBar = NULL;
-}
-
-void QG_CadToolBarCircles::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}
-
-void QG_CadToolBarCircles::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarCircles::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarCircles::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarCircles::drawCircle() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawCircle();
-    }
-}
-
-void QG_CadToolBarCircles::drawCircleCR() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawCircleCR();
-    }
-}
-
-void QG_CadToolBarCircles::drawCircle2P() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawCircle2P();
-    }
-}
-
-void QG_CadToolBarCircles::drawCircle3P() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawCircle3P();
-    }
-}
-
-void QG_CadToolBarCircles::drawCircleParallel() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawCircleParallel();
-    }
-}
-
-void QG_CadToolBarCircles::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbardim.cpp b/src/ui/forms/qg_cadtoolbardim.cpp
index 0a84697..a01392e 100644
--- a/src/ui/forms/qg_cadtoolbardim.cpp
+++ b/src/ui/forms/qg_cadtoolbardim.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbardim.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbardim.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarDim as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarDim::QG_CadToolBarDim(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarDim::QG_CadToolBarDim(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,82 @@ void QG_CadToolBarDim::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarDim::init() {
+    actionHandler = NULL;
+    cadToolBar = NULL;
+}
+
+void QG_CadToolBarDim::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}
+
+void QG_CadToolBarDim::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarDim::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarDim::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarDim::drawDimAligned() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDimAligned();
+    }
+}
+
+void QG_CadToolBarDim::drawDimLinear() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDimLinear();
+    }
+}
+
+void QG_CadToolBarDim::drawDimLinearHor() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDimLinearHor();
+    }
+}
+
+void QG_CadToolBarDim::drawDimLinearVer() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDimLinearVer();
+    }
+}
+
+void QG_CadToolBarDim::drawDimRadial() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDimRadial();
+    }
+}
+
+void QG_CadToolBarDim::drawDimDiametric() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDimDiametric();
+    }
+}
+
+void QG_CadToolBarDim::drawDimAngular() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDimAngular();
+    }
+}
+
+void QG_CadToolBarDim::drawDimLeader() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDimLeader();
+    }
+}
+
+void QG_CadToolBarDim::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbardim.h b/src/ui/forms/qg_cadtoolbardim.h
index 1f0efe3..fc2419c 100644
--- a/src/ui/forms/qg_cadtoolbardim.h
+++ b/src/ui/forms/qg_cadtoolbardim.h
@@ -36,7 +36,7 @@ class QG_CadToolBarDim : public QWidget, public Ui::QG_CadToolBarDim
     Q_OBJECT
 
 public:
-    QG_CadToolBarDim(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarDim(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarDim();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbardim.ui b/src/ui/forms/qg_cadtoolbardim.ui
index 96fa067..8c8e949 100644
--- a/src/ui/forms/qg_cadtoolbardim.ui
+++ b/src/ui/forms/qg_cadtoolbardim.ui
@@ -207,9 +207,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbardim.ui.h b/src/ui/forms/qg_cadtoolbardim.ui.h
deleted file mode 100644
index 9af1615..0000000
--- a/src/ui/forms/qg_cadtoolbardim.ui.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QMouseEvent>
-#include <QContextMenuEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarDim::init() {
-    actionHandler = NULL;
-    cadToolBar = NULL;
-}
-
-void QG_CadToolBarDim::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}
-
-void QG_CadToolBarDim::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarDim::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarDim::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarDim::drawDimAligned() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDimAligned();
-    }
-}
-
-void QG_CadToolBarDim::drawDimLinear() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDimLinear();
-    }
-}
-
-void QG_CadToolBarDim::drawDimLinearHor() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDimLinearHor();
-    }
-}
-
-void QG_CadToolBarDim::drawDimLinearVer() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDimLinearVer();
-    }
-}
-
-void QG_CadToolBarDim::drawDimRadial() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDimRadial();
-    }
-}
-
-void QG_CadToolBarDim::drawDimDiametric() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDimDiametric();
-    }
-}
-
-void QG_CadToolBarDim::drawDimAngular() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDimAngular();
-    }
-}
-
-void QG_CadToolBarDim::drawDimLeader() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDimLeader();
-    }
-}
-
-void QG_CadToolBarDim::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarellipses.cpp b/src/ui/forms/qg_cadtoolbarellipses.cpp
index 8a76d43..f5e4700 100644
--- a/src/ui/forms/qg_cadtoolbarellipses.cpp
+++ b/src/ui/forms/qg_cadtoolbarellipses.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarellipses.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarellipses.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarEllipses as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarEllipses::QG_CadToolBarEllipses(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarEllipses::QG_CadToolBarEllipses(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,46 @@ void QG_CadToolBarEllipses::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarEllipses::init() {
+    actionHandler = NULL;
+    cadToolBar = NULL;
+}
+
+void QG_CadToolBarEllipses::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}
+
+void QG_CadToolBarEllipses::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarEllipses::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarEllipses::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarEllipses::drawEllipseAxis() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawEllipseAxis();
+    }
+}
+
+void QG_CadToolBarEllipses::drawEllipseArcAxis() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawEllipseArcAxis();
+    }
+}
+
+void QG_CadToolBarEllipses::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarellipses.h b/src/ui/forms/qg_cadtoolbarellipses.h
index 8c0e081..d492ec7 100644
--- a/src/ui/forms/qg_cadtoolbarellipses.h
+++ b/src/ui/forms/qg_cadtoolbarellipses.h
@@ -36,7 +36,7 @@ class QG_CadToolBarEllipses : public QWidget, public Ui::QG_CadToolBarEllipses
     Q_OBJECT
 
 public:
-    QG_CadToolBarEllipses(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarEllipses(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarEllipses();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarellipses.ui b/src/ui/forms/qg_cadtoolbarellipses.ui
index 68359e5..4ccb5c7 100644
--- a/src/ui/forms/qg_cadtoolbarellipses.ui
+++ b/src/ui/forms/qg_cadtoolbarellipses.ui
@@ -87,9 +87,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarellipses.ui.h b/src/ui/forms/qg_cadtoolbarellipses.ui.h
deleted file mode 100644
index 6181cfe..0000000
--- a/src/ui/forms/qg_cadtoolbarellipses.ui.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QContextMenuEvent>
-#include <QMouseEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarEllipses::init() {
-    actionHandler = NULL;
-    cadToolBar = NULL;
-}
-
-void QG_CadToolBarEllipses::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}
-
-void QG_CadToolBarEllipses::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarEllipses::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarEllipses::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarEllipses::drawEllipseAxis() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawEllipseAxis();
-    }
-}
-
-void QG_CadToolBarEllipses::drawEllipseArcAxis() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawEllipseArcAxis();
-    }
-}
-
-void QG_CadToolBarEllipses::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarinfo.cpp b/src/ui/forms/qg_cadtoolbarinfo.cpp
index f7d49fe..efdc565 100644
--- a/src/ui/forms/qg_cadtoolbarinfo.cpp
+++ b/src/ui/forms/qg_cadtoolbarinfo.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarinfo.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarinfo.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarInfo as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarInfo::QG_CadToolBarInfo(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarInfo::QG_CadToolBarInfo(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,64 @@ void QG_CadToolBarInfo::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarInfo::init() {
+    actionHandler = NULL;
+    cadToolBar = NULL;
+}
+
+void QG_CadToolBarInfo::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}
+
+void QG_CadToolBarInfo::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarInfo::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarInfo::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarInfo::infoDist() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotInfoDist();
+    }
+}
+
+void QG_CadToolBarInfo::infoDist2() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotInfoDist2();
+    }
+}
+
+void QG_CadToolBarInfo::infoAngle() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotInfoAngle();
+    }
+}
+
+void QG_CadToolBarInfo::infoTotalLength() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotInfoTotalLength();
+    }
+}
+
+void QG_CadToolBarInfo::infoArea() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotInfoArea();
+    }
+}
+
+void QG_CadToolBarInfo::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarinfo.h b/src/ui/forms/qg_cadtoolbarinfo.h
index 508e638..58e30ae 100644
--- a/src/ui/forms/qg_cadtoolbarinfo.h
+++ b/src/ui/forms/qg_cadtoolbarinfo.h
@@ -36,7 +36,7 @@ class QG_CadToolBarInfo : public QWidget, public Ui::QG_CadToolBarInfo
     Q_OBJECT
 
 public:
-    QG_CadToolBarInfo(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarInfo(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarInfo();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarinfo.ui b/src/ui/forms/qg_cadtoolbarinfo.ui
index 00b8077..35d1236 100644
--- a/src/ui/forms/qg_cadtoolbarinfo.ui
+++ b/src/ui/forms/qg_cadtoolbarinfo.ui
@@ -147,9 +147,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarinfo.ui.h b/src/ui/forms/qg_cadtoolbarinfo.ui.h
deleted file mode 100644
index 269fdd2..0000000
--- a/src/ui/forms/qg_cadtoolbarinfo.ui.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QContextMenuEvent>
-#include <QMouseEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarInfo::init() {
-    actionHandler = NULL;
-    cadToolBar = NULL;
-}
-
-void QG_CadToolBarInfo::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}
-
-void QG_CadToolBarInfo::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarInfo::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarInfo::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarInfo::infoDist() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotInfoDist();
-    }
-}
-
-void QG_CadToolBarInfo::infoDist2() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotInfoDist2();
-    }
-}
-
-void QG_CadToolBarInfo::infoAngle() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotInfoAngle();
-    }
-}
-
-void QG_CadToolBarInfo::infoTotalLength() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotInfoTotalLength();
-    }
-}
-
-void QG_CadToolBarInfo::infoArea() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotInfoArea();
-    }
-}
-
-void QG_CadToolBarInfo::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarlines.cpp b/src/ui/forms/qg_cadtoolbarlines.cpp
index ff3d4e8..85fc316 100644
--- a/src/ui/forms/qg_cadtoolbarlines.cpp
+++ b/src/ui/forms/qg_cadtoolbarlines.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarlines.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarlines.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarLines as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarLines::QG_CadToolBarLines(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarLines::QG_CadToolBarLines(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,132 @@ void QG_CadToolBarLines::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarLines::init() {
+    actionHandler = NULL;
+    cadToolBar = NULL;
+}
+
+/*void QG_CadToolBarLines::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}*/
+
+
+
+void QG_CadToolBarLines::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarLines::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarLines::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarLines::drawLine() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLine();
+    }
+}
+
+void QG_CadToolBarLines::drawLineAngle() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineAngle();
+    }
+}
+
+void QG_CadToolBarLines::drawLineHorizontal() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineHorizontal();
+    }
+}
+
+void QG_CadToolBarLines::drawLineHorVert() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineHorVert();
+    }
+}
+
+void QG_CadToolBarLines::drawLineVertical() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineVertical();
+    }
+}
+
+void QG_CadToolBarLines::drawLineParallel() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineParallel();
+    }
+}
+
+void QG_CadToolBarLines::drawLineParallelThrough() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineParallelThrough();
+    }
+}
+
+void QG_CadToolBarLines::drawLineRectangle() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineRectangle();
+    }
+}
+
+void QG_CadToolBarLines::drawLineBisector() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineBisector();
+    }
+}
+
+void QG_CadToolBarLines::drawLineTangent1() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineTangent1();
+    }
+}
+
+void QG_CadToolBarLines::drawLineTangent2() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineTangent2();
+    }
+}
+
+void QG_CadToolBarLines::drawLineOrthogonal() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineOrthogonal();
+    }
+}
+
+void QG_CadToolBarLines::drawLineRelAngle() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineRelAngle();
+    }
+}
+
+void QG_CadToolBarLines::drawLineFree() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLineFree();
+    }
+}
+
+void QG_CadToolBarLines::drawLinePolygon() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLinePolygon();
+    }
+}
+
+void QG_CadToolBarLines::drawLinePolygon2() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawLinePolygon2();
+    }
+}
+
+void QG_CadToolBarLines::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarlines.h b/src/ui/forms/qg_cadtoolbarlines.h
index 62b8851..29b90af 100644
--- a/src/ui/forms/qg_cadtoolbarlines.h
+++ b/src/ui/forms/qg_cadtoolbarlines.h
@@ -36,7 +36,7 @@ class QG_CadToolBarLines : public QWidget, public Ui::QG_CadToolBarLines
     Q_OBJECT
 
 public:
-    QG_CadToolBarLines(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarLines(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarLines();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarlines.ui b/src/ui/forms/qg_cadtoolbarlines.ui
index 8faf0c0..5edc36f 100644
--- a/src/ui/forms/qg_cadtoolbarlines.ui
+++ b/src/ui/forms/qg_cadtoolbarlines.ui
@@ -11,7 +11,7 @@
    </rect>
   </property>
   <property name="sizePolicy">
-   <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+   <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
     <horstretch>0</horstretch>
     <verstretch>0</verstretch>
    </sizepolicy>
@@ -347,9 +347,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarlines.ui.h b/src/ui/forms/qg_cadtoolbarlines.ui.h
deleted file mode 100644
index 1042924..0000000
--- a/src/ui/forms/qg_cadtoolbarlines.ui.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QContextMenuEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarLines::init() {
-    actionHandler = NULL;
-    cadToolBar = NULL;
-}
-
-/*void QG_CadToolBarLines::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}*/
-
-
-
-void QG_CadToolBarLines::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarLines::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarLines::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarLines::drawLine() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLine();
-    }
-}
-
-void QG_CadToolBarLines::drawLineAngle() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineAngle();
-    }
-}
-
-void QG_CadToolBarLines::drawLineHorizontal() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineHorizontal();
-    }
-}
-
-void QG_CadToolBarLines::drawLineHorVert() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineHorVert();
-    }
-}
-
-void QG_CadToolBarLines::drawLineVertical() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineVertical();
-    }
-}
-
-void QG_CadToolBarLines::drawLineParallel() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineParallel();
-    }
-}
-
-void QG_CadToolBarLines::drawLineParallelThrough() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineParallelThrough();
-    }
-}
-
-void QG_CadToolBarLines::drawLineRectangle() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineRectangle();
-    }
-}
-
-void QG_CadToolBarLines::drawLineBisector() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineBisector();
-    }
-}
-
-void QG_CadToolBarLines::drawLineTangent1() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineTangent1();
-    }
-}
-
-void QG_CadToolBarLines::drawLineTangent2() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineTangent2();
-    }
-}
-
-void QG_CadToolBarLines::drawLineOrthogonal() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineOrthogonal();
-    }
-}
-
-void QG_CadToolBarLines::drawLineRelAngle() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineRelAngle();
-    }
-}
-
-void QG_CadToolBarLines::drawLineFree() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLineFree();
-    }
-}
-
-void QG_CadToolBarLines::drawLinePolygon() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLinePolygon();
-    }
-}
-
-void QG_CadToolBarLines::drawLinePolygon2() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawLinePolygon2();
-    }
-}
-
-void QG_CadToolBarLines::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarmain.cpp b/src/ui/forms/qg_cadtoolbarmain.cpp
index 83fd49b..eac8437 100644
--- a/src/ui/forms/qg_cadtoolbarmain.cpp
+++ b/src/ui/forms/qg_cadtoolbarmain.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarmain.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarmain.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarMain as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarMain::QG_CadToolBarMain(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarMain::QG_CadToolBarMain(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,53 @@ void QG_CadToolBarMain::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarMain::init() {
+}
+
+void QG_CadToolBarMain::setCadToolBar(QG_CadToolBar* tb) {
+    QG_ActionHandler* ah = NULL;
+    if (tb!=NULL) {
+        ah = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarMain::setCadToolBar(): No valid toolbar set.");
+    }
+    if (ah!=NULL) {
+        connect(bMenuPoint, SIGNAL(clicked()),
+                ah, SLOT(slotDrawPoint()));
+        connect(bMenuLine, SIGNAL(clicked()),
+                tb, SLOT(showToolBarLines()));
+        connect(bMenuArc, SIGNAL(clicked()),
+                tb, SLOT(showToolBarArcs()));
+        connect(bMenuCircle, SIGNAL(clicked()),
+                tb, SLOT(showToolBarCircles()));
+        connect(bMenuEllipse, SIGNAL(clicked()),
+                tb, SLOT(showToolBarEllipses()));
+        connect(bMenuSpline, SIGNAL(clicked()),
+                ah, SLOT(slotDrawSpline()));
+        connect(bMenuPolyline, SIGNAL(clicked()),
+                tb, SLOT(showToolBarPolylines()));
+
+        connect(bMenuText, SIGNAL(clicked()),
+                ah, SLOT(slotDrawText()));
+        connect(bMenuDim, SIGNAL(clicked()),
+                tb, SLOT(showToolBarDim()));
+        connect(bMenuHatch, SIGNAL(clicked()),
+                ah, SLOT(slotDrawHatch()));
+        connect(bMenuImage, SIGNAL(clicked()),
+                ah, SLOT(slotDrawImage()));
+
+        connect(bMenuModify, SIGNAL(clicked()),
+                tb, SLOT(showToolBarModify()));
+        connect(bMenuInfo, SIGNAL(clicked()),
+                tb, SLOT(showToolBarInfo()));
+
+        connect(bMenuBlock, SIGNAL(clicked()),
+                ah, SLOT(slotBlocksCreate()));
+        connect(bMenuSelect, SIGNAL(clicked()),
+                tb, SLOT(showToolBarSelect()));
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarMain::setCadToolBar(): No valid action handler set.");
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarmain.h b/src/ui/forms/qg_cadtoolbarmain.h
index 5aa5b74..87bd532 100644
--- a/src/ui/forms/qg_cadtoolbarmain.h
+++ b/src/ui/forms/qg_cadtoolbarmain.h
@@ -35,7 +35,7 @@ class QG_CadToolBarMain : public QWidget, public Ui::QG_CadToolBarMain
     Q_OBJECT
 
 public:
-    QG_CadToolBarMain(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarMain(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarMain();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarmain.ui b/src/ui/forms/qg_cadtoolbarmain.ui
index 70548b5..fdb8c14 100644
--- a/src/ui/forms/qg_cadtoolbarmain.ui
+++ b/src/ui/forms/qg_cadtoolbarmain.ui
@@ -155,7 +155,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>Texts</string>
+    <string>Text</string>
    </property>
    <property name="text">
     <string/>
@@ -195,7 +195,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>Hatches / Solid Fills</string>
+    <string>Hatch</string>
    </property>
    <property name="text">
     <string/>
@@ -215,7 +215,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>Raster Image</string>
+    <string>Image</string>
    </property>
    <property name="text">
     <string/>
@@ -235,7 +235,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>Show menu "Edit"</string>
+    <string>Show menu "Modify"</string>
    </property>
    <property name="text">
     <string/>
@@ -315,7 +315,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>Polylines</string>
+    <string>Show menu "Polylines"</string>
    </property>
    <property name="text">
     <string/>
@@ -327,9 +327,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarmain.ui.h b/src/ui/forms/qg_cadtoolbarmain.ui.h
deleted file mode 100644
index d0bbc7f..0000000
--- a/src/ui/forms/qg_cadtoolbarmain.ui.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_CadToolBarMain::init() {
-}
-
-void QG_CadToolBarMain::setCadToolBar(QG_CadToolBar* tb) {
-    QG_ActionHandler* ah = NULL;
-    if (tb!=NULL) {
-        ah = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarMain::setCadToolBar(): No valid toolbar set.");
-    }
-    if (ah!=NULL) {
-        connect(bMenuPoint, SIGNAL(clicked()),
-                ah, SLOT(slotDrawPoint()));
-        connect(bMenuLine, SIGNAL(clicked()),
-                tb, SLOT(showToolBarLines()));
-        connect(bMenuArc, SIGNAL(clicked()),
-                tb, SLOT(showToolBarArcs()));
-        connect(bMenuCircle, SIGNAL(clicked()),
-                tb, SLOT(showToolBarCircles()));
-        connect(bMenuEllipse, SIGNAL(clicked()),
-                tb, SLOT(showToolBarEllipses()));
-        connect(bMenuSpline, SIGNAL(clicked()),
-                ah, SLOT(slotDrawSpline()));
-        connect(bMenuPolyline, SIGNAL(clicked()),
-                tb, SLOT(showToolBarPolylines()));
-        
-        connect(bMenuText, SIGNAL(clicked()),
-                ah, SLOT(slotDrawText()));
-        connect(bMenuDim, SIGNAL(clicked()),
-                tb, SLOT(showToolBarDim()));
-        connect(bMenuHatch, SIGNAL(clicked()),
-                ah, SLOT(slotDrawHatch()));
-        connect(bMenuImage, SIGNAL(clicked()),
-                ah, SLOT(slotDrawImage()));
-        
-        connect(bMenuModify, SIGNAL(clicked()),
-                tb, SLOT(showToolBarModify()));
-        connect(bMenuInfo, SIGNAL(clicked()),
-                tb, SLOT(showToolBarInfo()));
-
-        connect(bMenuBlock, SIGNAL(clicked()),
-                ah, SLOT(slotBlocksCreate()));
-        connect(bMenuSelect, SIGNAL(clicked()),
-                tb, SLOT(showToolBarSelect()));
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarMain::setCadToolBar(): No valid action handler set.");
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarmodify.cpp b/src/ui/forms/qg_cadtoolbarmodify.cpp
index 5bd601a..4798994 100644
--- a/src/ui/forms/qg_cadtoolbarmodify.cpp
+++ b/src/ui/forms/qg_cadtoolbarmodify.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarmodify.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarmodify.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarModify as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarModify::QG_CadToolBarModify(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarModify::QG_CadToolBarModify(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,142 @@ void QG_CadToolBarModify::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarModify::init() {
+    actionHandler = NULL;
+    cadToolBar = NULL;
+}
+
+void QG_CadToolBarModify::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}
+
+void QG_CadToolBarModify::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarModify::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarModify::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarModify::modifyMove() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyMove();
+    }
+}
+
+void QG_CadToolBarModify::modifyRotate() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyRotate();
+    }
+}
+
+void QG_CadToolBarModify::modifyScale() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyScale();
+    }
+}
+
+void QG_CadToolBarModify::modifyMirror() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyMirror();
+    }
+}
+
+void QG_CadToolBarModify::modifyMoveRotate() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyMoveRotate();
+    }
+}
+
+void QG_CadToolBarModify::modifyRotate2() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyRotate2();
+    }
+}
+
+void QG_CadToolBarModify::modifyTrim() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyTrim();
+    }
+}
+
+void QG_CadToolBarModify::modifyTrim2() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyTrim2();
+    }
+}
+
+void QG_CadToolBarModify::modifyTrimAmount() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyTrimAmount();
+    }
+}
+
+void QG_CadToolBarModify::modifyCut() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyCut();
+    }
+}
+
+void QG_CadToolBarModify::modifyBevel() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyBevel();
+    }
+}
+
+void QG_CadToolBarModify::modifyRound() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyRound();
+    }
+}
+
+void QG_CadToolBarModify::modifyEntity() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyEntity();
+    }
+}
+
+void QG_CadToolBarModify::modifyDelete() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyDelete();
+    }
+}
+
+void QG_CadToolBarModify::modifyAttributes() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyAttributes();
+    }
+}
+
+void QG_CadToolBarModify::modifyStretch() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyStretch();
+    }
+}
+
+void QG_CadToolBarModify::modifyExplode() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotBlocksExplode();
+    }
+}
+
+void QG_CadToolBarModify::modifyExplodeText() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotModifyExplodeText();
+    }
+}
+
+void QG_CadToolBarModify::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarmodify.h b/src/ui/forms/qg_cadtoolbarmodify.h
index 0bebd91..e2b2d2d 100644
--- a/src/ui/forms/qg_cadtoolbarmodify.h
+++ b/src/ui/forms/qg_cadtoolbarmodify.h
@@ -27,6 +27,7 @@
 #define QG_CADTOOLBARMODIFY_H
 
 class QG_CadToolBar;
+class QG_ActionHandler;
 
 #include "ui_qg_cadtoolbarmodify.h"
 
@@ -35,7 +36,7 @@ class QG_CadToolBarModify : public QWidget, public Ui::QG_CadToolBarModify
     Q_OBJECT
 
 public:
-    QG_CadToolBarModify(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarModify(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarModify();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarmodify.ui b/src/ui/forms/qg_cadtoolbarmodify.ui
index c3549d8..c175a2e 100644
--- a/src/ui/forms/qg_cadtoolbarmodify.ui
+++ b/src/ui/forms/qg_cadtoolbarmodify.ui
@@ -255,7 +255,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>Move</string>
+	 <string>Move / Copy</string>
    </property>
    <property name="text">
     <string/>
@@ -295,7 +295,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>Rotate around two centers</string>
+    <string>Rotate Two</string>
    </property>
    <property name="text">
     <string/>
@@ -427,9 +427,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarmodify.ui.h b/src/ui/forms/qg_cadtoolbarmodify.ui.h
deleted file mode 100644
index 9d5ba4f..0000000
--- a/src/ui/forms/qg_cadtoolbarmodify.ui.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QMouseEvent>
-#include <QContextMenuEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarModify::init() {
-    actionHandler = NULL;
-    cadToolBar = NULL;
-}
-
-void QG_CadToolBarModify::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}
-
-void QG_CadToolBarModify::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarModify::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarModify::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarModify::modifyMove() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyMove();
-    }
-}
-
-void QG_CadToolBarModify::modifyRotate() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyRotate();
-    }
-}
-
-void QG_CadToolBarModify::modifyScale() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyScale();
-    }
-}
-
-void QG_CadToolBarModify::modifyMirror() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyMirror();
-    }
-}
-
-void QG_CadToolBarModify::modifyMoveRotate() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyMoveRotate();
-    }
-}
-
-void QG_CadToolBarModify::modifyRotate2() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyRotate2();
-    }
-}
-
-void QG_CadToolBarModify::modifyTrim() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyTrim();
-    }
-}
-
-void QG_CadToolBarModify::modifyTrim2() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyTrim2();
-    }
-}
-
-void QG_CadToolBarModify::modifyTrimAmount() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyTrimAmount();
-    }
-}
-
-void QG_CadToolBarModify::modifyCut() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyCut();
-    }
-}
-
-void QG_CadToolBarModify::modifyBevel() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyBevel();
-    }
-}
-
-void QG_CadToolBarModify::modifyRound() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyRound();
-    }
-}
-
-void QG_CadToolBarModify::modifyEntity() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyEntity();
-    }
-}
-
-void QG_CadToolBarModify::modifyDelete() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyDelete();
-    }
-}
-
-void QG_CadToolBarModify::modifyAttributes() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyAttributes();
-    }
-}
-
-void QG_CadToolBarModify::modifyStretch() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyStretch();
-    }
-}
-
-void QG_CadToolBarModify::modifyExplode() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotBlocksExplode();
-    }
-}
-
-void QG_CadToolBarModify::modifyExplodeText() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotModifyExplodeText();
-    }
-}
-
-void QG_CadToolBarModify::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarpoints.cpp b/src/ui/forms/qg_cadtoolbarpoints.cpp
index 79499de..57c7b99 100644
--- a/src/ui/forms/qg_cadtoolbarpoints.cpp
+++ b/src/ui/forms/qg_cadtoolbarpoints.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarpoints.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarpoints.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarPoints as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarPoints::QG_CadToolBarPoints(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarPoints::QG_CadToolBarPoints(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,40 @@ void QG_CadToolBarPoints::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarPoints::init() {
+    actionHandler = NULL;
+    cadToolBar = NULL;
+}
+
+void QG_CadToolBarPoints::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}
+
+void QG_CadToolBarPoints::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarPoints::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarPoints::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarPoints::drawPoint() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawPoint();
+    }
+}
+
+void QG_CadToolBarPoints::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarpoints.h b/src/ui/forms/qg_cadtoolbarpoints.h
index da9bfed..169380f 100644
--- a/src/ui/forms/qg_cadtoolbarpoints.h
+++ b/src/ui/forms/qg_cadtoolbarpoints.h
@@ -27,6 +27,7 @@
 #define QG_CADTOOLBARPOINTS_H
 
 class QG_CadToolBar;
+class QG_ActionHandler;
 
 #include "ui_qg_cadtoolbarpoints.h"
 
@@ -35,7 +36,7 @@ class QG_CadToolBarPoints : public QWidget, public Ui::QG_CadToolBarPoints
     Q_OBJECT
 
 public:
-    QG_CadToolBarPoints(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarPoints(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarPoints();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarpoints.ui b/src/ui/forms/qg_cadtoolbarpoints.ui
index dc24af0..924edd3 100644
--- a/src/ui/forms/qg_cadtoolbarpoints.ui
+++ b/src/ui/forms/qg_cadtoolbarpoints.ui
@@ -67,9 +67,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarpoints.ui.h b/src/ui/forms/qg_cadtoolbarpoints.ui.h
deleted file mode 100644
index 04d017b..0000000
--- a/src/ui/forms/qg_cadtoolbarpoints.ui.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QContextMenuEvent>
-#include <QMouseEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarPoints::init() {
-    actionHandler = NULL;
-    cadToolBar = NULL;
-}
-
-void QG_CadToolBarPoints::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}
-
-void QG_CadToolBarPoints::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarPoints::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarPoints::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarPoints::drawPoint() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawPoint();
-    }
-}
-
-void QG_CadToolBarPoints::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarpolylines.cpp b/src/ui/forms/qg_cadtoolbarpolylines.cpp
index 20f50ab..4d0f3c1 100644
--- a/src/ui/forms/qg_cadtoolbarpolylines.cpp
+++ b/src/ui/forms/qg_cadtoolbarpolylines.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarpolylines.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarpolylines.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarPolylines as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarPolylines::QG_CadToolBarPolylines(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarPolylines::QG_CadToolBarPolylines(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,70 @@ void QG_CadToolBarPolylines::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarPolylines::init() {
+    actionHandler = NULL;
+    cadToolBar = NULL;
+}
+
+void QG_CadToolBarPolylines::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}
+
+void QG_CadToolBarPolylines::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarPolylines::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarPolylines::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarPolylines::drawPolyline() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawPolyline();
+    }
+}
+
+void QG_CadToolBarPolylines::polylineAdd() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotPolylineAdd();
+    }
+}
+
+void QG_CadToolBarPolylines::polylineAppend() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotPolylineAppend();
+    }
+}
+
+void QG_CadToolBarPolylines::polylineDel() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotPolylineDel();
+    }
+}
+
+void QG_CadToolBarPolylines::polylineDelBetween() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotPolylineDelBetween();
+    }
+}
+
+void QG_CadToolBarPolylines::polylineTrim() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotPolylineTrim();
+    }
+}
+
+void QG_CadToolBarPolylines::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarpolylines.h b/src/ui/forms/qg_cadtoolbarpolylines.h
index a107d18..c0c7ef5 100644
--- a/src/ui/forms/qg_cadtoolbarpolylines.h
+++ b/src/ui/forms/qg_cadtoolbarpolylines.h
@@ -27,6 +27,7 @@
 #define QG_CADTOOLBARPOLYLINES_H
 
 class QG_CadToolBar;
+class QG_ActionHandler;
 
 #include "ui_qg_cadtoolbarpolylines.h"
 
@@ -35,7 +36,7 @@ class QG_CadToolBarPolylines : public QWidget, public Ui::QG_CadToolBarPolylines
     Q_OBJECT
 
 public:
-    QG_CadToolBarPolylines(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarPolylines(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarPolylines();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarpolylines.ui b/src/ui/forms/qg_cadtoolbarpolylines.ui
index e5e587b..a96e134 100644
--- a/src/ui/forms/qg_cadtoolbarpolylines.ui
+++ b/src/ui/forms/qg_cadtoolbarpolylines.ui
@@ -167,9 +167,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarpolylines.ui.h b/src/ui/forms/qg_cadtoolbarpolylines.ui.h
deleted file mode 100644
index af32c6c..0000000
--- a/src/ui/forms/qg_cadtoolbarpolylines.ui.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QMouseEvent>
-#include <QContextMenuEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarPolylines::init() {
-    actionHandler = NULL;
-    cadToolBar = NULL;
-}
-
-void QG_CadToolBarPolylines::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}
-
-void QG_CadToolBarPolylines::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarPolylines::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarPolylines::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarPolylines::drawPolyline() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawPolyline();
-    }
-}
-
-void QG_CadToolBarPolylines::polylineAdd() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotPolylineAdd();
-    }
-}
-
-void QG_CadToolBarPolylines::polylineAppend() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotPolylineAppend();
-    }
-}
-
-void QG_CadToolBarPolylines::polylineDel() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotPolylineDel();
-    }
-}
-
-void QG_CadToolBarPolylines::polylineDelBetween() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotPolylineDelBetween();
-    }
-}
-
-void QG_CadToolBarPolylines::polylineTrim() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotPolylineTrim();
-    }
-}
-
-void QG_CadToolBarPolylines::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarselect.cpp b/src/ui/forms/qg_cadtoolbarselect.cpp
index 362a83a..8f974a1 100644
--- a/src/ui/forms/qg_cadtoolbarselect.cpp
+++ b/src/ui/forms/qg_cadtoolbarselect.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarselect.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarselect.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarSelect as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarSelect::QG_CadToolBarSelect(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarSelect::QG_CadToolBarSelect(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,122 @@ void QG_CadToolBarSelect::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarSelect::init() {
+    cadToolBar = NULL;
+    actionHandler = NULL;
+    selectAction = NULL;
+    nextAction = -1;
+}
+
+void QG_CadToolBarSelect::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}
+
+void QG_CadToolBarSelect::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarSelect::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+        //actionHandler->setCadToolBarSelect(this);
+    }
+    else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarSelect::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarSelect::selectSingle() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSelectSingle();
+    }
+}
+
+void QG_CadToolBarSelect::selectContour() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSelectContour();
+    }
+}
+
+void QG_CadToolBarSelect::deselectAll() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotDeselectAll();
+    }
+}
+
+void QG_CadToolBarSelect::selectAll() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSelectAll();
+    }
+}
+
+void QG_CadToolBarSelect::selectWindow() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSelectWindow();
+    }
+}
+
+void QG_CadToolBarSelect::deselectWindow() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotDeselectWindow();
+    }
+}
+
+void QG_CadToolBarSelect::selectIntersected() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSelectIntersected();
+    }
+}
+
+void QG_CadToolBarSelect::deselectIntersected() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotDeselectIntersected();
+    }
+}
+
+void QG_CadToolBarSelect::selectInvert() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSelectInvert();
+    }
+}
+
+void QG_CadToolBarSelect::selectLayer() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSelectLayer();
+    }
+}
+
+void QG_CadToolBarSelect::setSelectAction(RS_ActionInterface* selectAction) {
+    this->selectAction = selectAction;
+}
+
+void QG_CadToolBarSelect::setNextAction(int nextAction) {
+    this->nextAction = nextAction;
+    if (nextAction==-1) {
+        bDoit->hide();
+    } else {
+        bDoit->show();
+    }
+}
+
+void QG_CadToolBarSelect::runNextAction() {
+    if (selectAction!=NULL) {
+        selectAction->finish();
+        selectAction = NULL;
+    }
+    if (nextAction!=-1) {
+        actionHandler->killSelectActions();
+        actionHandler->setCurrentAction((RS2::ActionType)nextAction);
+    }
+}
+
+void QG_CadToolBarSelect::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarselect.h b/src/ui/forms/qg_cadtoolbarselect.h
index 59db694..7cd00d2 100644
--- a/src/ui/forms/qg_cadtoolbarselect.h
+++ b/src/ui/forms/qg_cadtoolbarselect.h
@@ -27,6 +27,8 @@
 #define QG_CADTOOLBARSELECT_H
 
 class QG_CadToolBar;
+class QG_ActionHandler;
+class RS_ActionInterface;
 
 #include "ui_qg_cadtoolbarselect.h"
 
@@ -35,7 +37,7 @@ class QG_CadToolBarSelect : public QWidget, public Ui::QG_CadToolBarSelect
     Q_OBJECT
 
 public:
-    QG_CadToolBarSelect(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarSelect(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarSelect();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarselect.ui b/src/ui/forms/qg_cadtoolbarselect.ui
index cd63a7a..91a1ae1 100644
--- a/src/ui/forms/qg_cadtoolbarselect.ui
+++ b/src/ui/forms/qg_cadtoolbarselect.ui
@@ -267,10 +267,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">rs_actioninterface.h</include>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarselect.ui.h b/src/ui/forms/qg_cadtoolbarselect.ui.h
deleted file mode 100644
index cde0cf0..0000000
--- a/src/ui/forms/qg_cadtoolbarselect.ui.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QMouseEvent>
-#include <QContextMenuEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarSelect::init() {
-    cadToolBar = NULL;
-    actionHandler = NULL;
-    selectAction = NULL;
-    nextAction = -1;
-}
-
-void QG_CadToolBarSelect::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}
-
-void QG_CadToolBarSelect::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarSelect::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-        //actionHandler->setCadToolBarSelect(this);
-    }
-    else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarSelect::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarSelect::selectSingle() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSelectSingle();
-    }
-}
-
-void QG_CadToolBarSelect::selectContour() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSelectContour();
-    }
-}
-
-void QG_CadToolBarSelect::deselectAll() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotDeselectAll();
-    }
-}
-
-void QG_CadToolBarSelect::selectAll() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSelectAll();
-    }
-}
-
-void QG_CadToolBarSelect::selectWindow() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSelectWindow();
-    }
-}
-
-void QG_CadToolBarSelect::deselectWindow() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotDeselectWindow();
-    }
-}
-
-void QG_CadToolBarSelect::selectIntersected() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSelectIntersected();
-    }
-}
-
-void QG_CadToolBarSelect::deselectIntersected() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotDeselectIntersected();
-    }
-}
-
-void QG_CadToolBarSelect::selectInvert() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSelectInvert();
-    }
-}
-
-void QG_CadToolBarSelect::selectLayer() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSelectLayer();
-    }
-}
-
-void QG_CadToolBarSelect::setSelectAction(RS_ActionInterface* selectAction) {
-    this->selectAction = selectAction;
-}
-
-void QG_CadToolBarSelect::setNextAction(int nextAction) {
-    this->nextAction = nextAction;
-    if (nextAction==-1) {
-        bDoit->hide();
-    } else {
-        bDoit->show();
-    }
-}
-
-void QG_CadToolBarSelect::runNextAction() {
-    if (selectAction!=NULL) {
-        selectAction->finish();
-        selectAction = NULL;
-    }
-    if (nextAction!=-1) {
-        actionHandler->killSelectActions();
-    	actionHandler->setCurrentAction((RS2::ActionType)nextAction);
-    }
-}
-
-void QG_CadToolBarSelect::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarsnap.cpp b/src/ui/forms/qg_cadtoolbarsnap.cpp
index f8ab228..4cc0993 100644
--- a/src/ui/forms/qg_cadtoolbarsnap.cpp
+++ b/src/ui/forms/qg_cadtoolbarsnap.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarsnap.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarsnap.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarSnap as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarSnap::QG_CadToolBarSnap(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarSnap::QG_CadToolBarSnap(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,249 @@ void QG_CadToolBarSnap::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarSnap::init() {
+    cadToolBar = NULL;
+    actionHandler = NULL;
+}
+
+//void QG_CadToolBarSnap::mousePressEvent(QMouseEvent* e) {
+//    if (e->button()==RightButton && cadToolBar!=NULL) {
+//cadToolBar->back();
+//        e->accept();
+//    }
+//}
+
+void QG_CadToolBarSnap::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarSnap::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+        actionHandler->setCadToolBarSnap(this);
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarSnap::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarSnap::snapFree() {
+    if (actionHandler!=NULL) {
+        disableSnaps();
+        bFree->setChecked(true);
+        actionHandler->slotSnapFree();
+    }
+}
+
+void QG_CadToolBarSnap::snapGrid() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSnapGrid();
+        disableSnaps();
+        bGrid->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::snapEndpoint() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSnapEndpoint();
+        disableSnaps();
+        bEndpoint->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::snapOnEntity() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSnapOnEntity();
+        disableSnaps();
+        bOnEntity->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::snapCenter() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSnapCenter();
+        disableSnaps();
+        bCenter->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::snapMiddle() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSnapMiddle();
+        disableSnaps();
+        bMiddle->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::snapDist() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSnapDist();
+        disableSnaps();
+        bDist->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::snapIntersection() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSnapIntersection();
+        disableSnaps();
+        bIntersection->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::snapIntersectionManual() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotSnapIntersectionManual();
+        //disableSnaps();
+        //bIntersectionManual->setOn(true);
+    }
+}
+
+void QG_CadToolBarSnap::restrictNothing() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotRestrictNothing();
+        disableRestrictions();
+        bResNothing->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::restrictOrthogonal() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotRestrictOrthogonal();
+        disableRestrictions();
+        bResOrthogonal->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::restrictHorizontal() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotRestrictHorizontal();
+        disableRestrictions();
+        bResHorizontal->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::restrictVertical() {
+    if (actionHandler!=NULL) {
+        actionHandler->slotRestrictVertical();
+        disableRestrictions();
+        bResVertical->setChecked(true);
+    }
+}
+
+void QG_CadToolBarSnap::disableSnaps() {
+    if (bFree->isChecked()) {
+        bFree->setChecked(false);
+    }
+    if (bGrid->isChecked()) {
+        bGrid->setChecked(false);
+    }
+    if (bEndpoint->isChecked()) {
+        bEndpoint->setChecked(false);
+    }
+    if (bOnEntity->isChecked()) {
+        bOnEntity->setChecked(false);
+    }
+    if (bCenter->isChecked()) {
+        bCenter->setChecked(false);
+    }
+    if (bMiddle->isChecked()) {
+        bMiddle->setChecked(false);
+    }
+    if (bDist->isChecked()) {
+        bDist->setChecked(false);
+    }
+    if (bIntersection->isChecked()) {
+        bIntersection->setChecked(false);
+    }
+    if (bIntersectionManual->isChecked()) {
+        bIntersectionManual->setChecked(false);
+    }
+}
+
+void QG_CadToolBarSnap::disableRestrictions() {
+    if (bResNothing->isChecked()) {
+        bResNothing->setChecked(false);
+    }
+    if (bResOrthogonal->isChecked()) {
+        bResOrthogonal->setChecked(false);
+    }
+    if (bResHorizontal->isChecked()) {
+        bResHorizontal->setChecked(false);
+    }
+    if (bResVertical->isChecked()) {
+        bResVertical->setChecked(false);
+    }
+}
+
+void QG_CadToolBarSnap::setSnapMode(int sm) {
+    switch (sm) {
+    case RS2::SnapFree:
+        bFree->setChecked(true);
+        break;
+    case RS2::SnapEndpoint:
+        bEndpoint->setChecked(true);
+        break;
+    case RS2::SnapGrid:
+        bGrid->setChecked(true);
+        break;
+    case RS2::SnapOnEntity:
+        bOnEntity->setChecked(true);
+        break;
+    case RS2::SnapCenter:
+        bCenter->setChecked(true);
+        break;
+    case RS2::SnapMiddle:
+        bMiddle->setChecked(true);
+        break;
+    case RS2::SnapDist:
+        bDist->setChecked(true);
+        break;
+    case RS2::SnapIntersection:
+        bIntersection->setChecked(true);
+        break;
+    default:
+        break;
+    }
+}
+
+void QG_CadToolBarSnap::setSnapRestriction(int sr) {
+    switch (sr) {
+    default:
+    case RS2::RestrictNothing:
+        bResNothing->setChecked(true);
+        break;
+    case RS2::RestrictOrthogonal:
+        bResOrthogonal->setChecked(true);
+        break;
+    case RS2::RestrictHorizontal:
+        bResHorizontal->setChecked(true);
+        break;
+    case RS2::RestrictVertical:
+        bResVertical->setChecked(true);
+        break;
+    }
+}
+
+void QG_CadToolBarSnap::setRelativeZero() {
+     if (cadToolBar!=NULL && actionHandler!=NULL) {
+         actionHandler->slotSetRelativeZero();
+     }
+}
+
+void QG_CadToolBarSnap::lockRelativeZero(bool on) {
+     if (cadToolBar!=NULL && actionHandler!=NULL) {
+         actionHandler->slotLockRelativeZero(on);
+     }
+}
+
+void QG_CadToolBarSnap::setLockRelativeZero(bool on) {
+    bLockRelZero->setChecked(on);
+}
+
+void QG_CadToolBarSnap::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarsnap.h b/src/ui/forms/qg_cadtoolbarsnap.h
index 8fdb04b..a5398ea 100644
--- a/src/ui/forms/qg_cadtoolbarsnap.h
+++ b/src/ui/forms/qg_cadtoolbarsnap.h
@@ -36,7 +36,7 @@ class QG_CadToolBarSnap : public QWidget, public Ui::QG_CadToolBarSnap
     Q_OBJECT
 
 public:
-    QG_CadToolBarSnap(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarSnap(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarSnap();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarsnap.ui b/src/ui/forms/qg_cadtoolbarsnap.ui
index d6af152..3cc5ecf 100644
--- a/src/ui/forms/qg_cadtoolbarsnap.ui
+++ b/src/ui/forms/qg_cadtoolbarsnap.ui
@@ -239,7 +239,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>No Restriction</string>
+    <string>Restrict Nothing</string>
    </property>
    <property name="text">
     <string/>
@@ -262,7 +262,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>Orthogonal Restriction</string>
+    <string>Restrict Orthogonally</string>
    </property>
    <property name="text">
     <string/>
@@ -285,7 +285,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>Horizontal Restriction</string>
+    <string>Restrict Horizontally</string>
    </property>
    <property name="text">
     <string/>
@@ -308,7 +308,7 @@
     </rect>
    </property>
    <property name="toolTip">
-    <string>Vertical Restriction</string>
+    <string>Restrict Vertically</string>
    </property>
    <property name="text">
     <string/>
@@ -392,9 +392,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarsnap.ui.h b/src/ui/forms/qg_cadtoolbarsnap.ui.h
deleted file mode 100644
index d2eb27c..0000000
--- a/src/ui/forms/qg_cadtoolbarsnap.ui.h
+++ /dev/null
@@ -1,281 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QContextMenuEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarSnap::init() {
-    cadToolBar = NULL;
-    actionHandler = NULL;
-}
-
-//void QG_CadToolBarSnap::mousePressEvent(QMouseEvent* e) {
-//    if (e->button()==RightButton && cadToolBar!=NULL) {
-//cadToolBar->back();
-//        e->accept();
-//    }
-//}
-
-void QG_CadToolBarSnap::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarSnap::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-        actionHandler->setCadToolBarSnap(this);
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarSnap::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarSnap::snapFree() {
-    if (actionHandler!=NULL) {
-        disableSnaps();
-        bFree->setOn(true);
-        actionHandler->slotSnapFree();
-    }
-}
-
-void QG_CadToolBarSnap::snapGrid() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSnapGrid();
-        disableSnaps();
-        bGrid->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::snapEndpoint() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSnapEndpoint();
-        disableSnaps();
-        bEndpoint->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::snapOnEntity() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSnapOnEntity();
-        disableSnaps();
-        bOnEntity->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::snapCenter() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSnapCenter();
-        disableSnaps();
-        bCenter->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::snapMiddle() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSnapMiddle();
-        disableSnaps();
-        bMiddle->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::snapDist() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSnapDist();
-        disableSnaps();
-        bDist->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::snapIntersection() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSnapIntersection();
-        disableSnaps();
-        bIntersection->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::snapIntersectionManual() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotSnapIntersectionManual();
-        //disableSnaps();
-        //bIntersectionManual->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::restrictNothing() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotRestrictNothing();
-        disableRestrictions();
-        bResNothing->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::restrictOrthogonal() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotRestrictOrthogonal();
-        disableRestrictions();
-        bResOrthogonal->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::restrictHorizontal() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotRestrictHorizontal();
-        disableRestrictions();
-        bResHorizontal->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::restrictVertical() {
-    if (actionHandler!=NULL) {
-        actionHandler->slotRestrictVertical();
-        disableRestrictions();
-        bResVertical->setOn(true);
-    }
-}
-
-void QG_CadToolBarSnap::disableSnaps() {
-    if (bFree->isOn()) {
-        bFree->setOn(false);
-    }
-    if (bGrid->isOn()) {
-        bGrid->setOn(false);
-    }
-    if (bEndpoint->isOn()) {
-        bEndpoint->setOn(false);
-    }
-    if (bOnEntity->isOn()) {
-        bOnEntity->setOn(false);
-    }
-    if (bCenter->isOn()) {
-        bCenter->setOn(false);
-    }
-    if (bMiddle->isOn()) {
-        bMiddle->setOn(false);
-    }
-    if (bDist->isOn()) {
-        bDist->setOn(false);
-    }
-    if (bIntersection->isOn()) {
-        bIntersection->setOn(false);
-    }
-    if (bIntersectionManual->isOn()) {
-        bIntersectionManual->setOn(false);
-    }
-}
-
-void QG_CadToolBarSnap::disableRestrictions() {
-    if (bResNothing->isOn()) {
-        bResNothing->setOn(false);
-    }
-    if (bResOrthogonal->isOn()) {
-        bResOrthogonal->setOn(false);
-    }
-    if (bResHorizontal->isOn()) {
-        bResHorizontal->setOn(false);
-    }
-    if (bResVertical->isOn()) {
-        bResVertical->setOn(false);
-    }
-}
-
-void QG_CadToolBarSnap::setSnapMode(int sm) {
-    switch (sm) {
-    case RS2::SnapFree:
-        bFree->setOn(true);
-        break;
-    case RS2::SnapEndpoint:
-        bEndpoint->setOn(true);
-        break;
-    case RS2::SnapGrid:
-        bGrid->setOn(true);
-        break;
-    case RS2::SnapOnEntity:
-        bOnEntity->setOn(true);
-        break;
-    case RS2::SnapCenter:
-        bCenter->setOn(true);
-        break;
-    case RS2::SnapMiddle:
-        bMiddle->setOn(true);
-        break;
-    case RS2::SnapDist:
-        bDist->setOn(true);
-        break;
-    case RS2::SnapIntersection:
-        bIntersection->setOn(true);
-        break;
-    default:
-        break;
-    }
-}
-
-void QG_CadToolBarSnap::setSnapRestriction(int sr) {
-    switch (sr) {
-    default:
-    case RS2::RestrictNothing:
-        bResNothing->setOn(true);
-        break;
-    case RS2::RestrictOrthogonal:
-        bResOrthogonal->setOn(true);
-        break;
-    case RS2::RestrictHorizontal:
-        bResHorizontal->setOn(true);
-        break;
-    case RS2::RestrictVertical:
-        bResVertical->setOn(true);
-        break;
-    }
-}
-
-void QG_CadToolBarSnap::setRelativeZero() {
-     if (cadToolBar!=NULL && actionHandler!=NULL) {
-         actionHandler->slotSetRelativeZero();
-     }
-}
-
-void QG_CadToolBarSnap::lockRelativeZero(bool on) {
-     if (cadToolBar!=NULL && actionHandler!=NULL) {
-         actionHandler->slotLockRelativeZero(on);
-     }
-}
-
-void QG_CadToolBarSnap::setLockRelativeZero(bool on) {
-    bLockRelZero->setOn(on);
-}
-
-void QG_CadToolBarSnap::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_cadtoolbarsplines.cpp b/src/ui/forms/qg_cadtoolbarsplines.cpp
index 0a68ae2..8912d77 100644
--- a/src/ui/forms/qg_cadtoolbarsplines.cpp
+++ b/src/ui/forms/qg_cadtoolbarsplines.cpp
@@ -25,15 +25,14 @@
 **********************************************************************/
 #include "qg_cadtoolbarsplines.h"
 
-#include <qvariant.h>
 #include "qg_cadtoolbar.h"
-#include "qg_cadtoolbarsplines.ui.h"
+
 /*
  *  Constructs a QG_CadToolBarSplines as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CadToolBarSplines::QG_CadToolBarSplines(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CadToolBarSplines::QG_CadToolBarSplines(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -57,3 +56,40 @@ void QG_CadToolBarSplines::languageChange()
     retranslateUi(this);
 }
 
+void QG_CadToolBarSplines::init() {
+    actionHandler = NULL;
+    cadToolBar = NULL;
+}
+
+void QG_CadToolBarSplines::mousePressEvent(QMouseEvent* e) {
+    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
+        cadToolBar->back();
+        e->accept();
+    }
+}
+
+void QG_CadToolBarSplines::contextMenuEvent(QContextMenuEvent *e) {
+    e->accept();
+}
+
+void QG_CadToolBarSplines::setCadToolBar(QG_CadToolBar* tb) {
+    cadToolBar = tb;
+    if (tb!=NULL) {
+        actionHandler = tb->getActionHandler();
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CadToolBarSplines::setCadToolBar(): No valid toolbar set.");
+    }
+}
+
+void QG_CadToolBarSplines::drawSpline() {
+    if (cadToolBar!=NULL && actionHandler!=NULL) {
+        actionHandler->slotDrawSpline();
+    }
+}
+
+void QG_CadToolBarSplines::back() {
+    if (cadToolBar!=NULL) {
+        cadToolBar->back();
+    }
+}
diff --git a/src/ui/forms/qg_cadtoolbarsplines.h b/src/ui/forms/qg_cadtoolbarsplines.h
index ac73eed..2d6833a 100644
--- a/src/ui/forms/qg_cadtoolbarsplines.h
+++ b/src/ui/forms/qg_cadtoolbarsplines.h
@@ -27,6 +27,7 @@
 #define QG_CADTOOLBARSPLINES_H
 
 class QG_CadToolBar;
+class QG_ActionHandler;
 
 #include "ui_qg_cadtoolbarsplines.h"
 
@@ -35,7 +36,7 @@ class QG_CadToolBarSplines : public QWidget, public Ui::QG_CadToolBarSplines
     Q_OBJECT
 
 public:
-    QG_CadToolBarSplines(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CadToolBarSplines(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CadToolBarSplines();
 
 public slots:
diff --git a/src/ui/forms/qg_cadtoolbarsplines.ui b/src/ui/forms/qg_cadtoolbarsplines.ui
index 841049a..0e1afd3 100644
--- a/src/ui/forms/qg_cadtoolbarsplines.ui
+++ b/src/ui/forms/qg_cadtoolbarsplines.ui
@@ -67,9 +67,6 @@
   </widget>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">qg_actionhandler.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_cadtoolbarsplines.ui.h b/src/ui/forms/qg_cadtoolbarsplines.ui.h
deleted file mode 100644
index 6d8e2cd..0000000
--- a/src/ui/forms/qg_cadtoolbarsplines.ui.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QContextMenuEvent>
-#include <QMouseEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_CadToolBarSplines::init() {
-    actionHandler = NULL;
-    cadToolBar = NULL;
-}
-
-void QG_CadToolBarSplines::mousePressEvent(QMouseEvent* e) {
-    if (e->button()==Qt::RightButton && cadToolBar!=NULL) {
-        cadToolBar->back();
-        e->accept();
-    }
-}
-
-void QG_CadToolBarSplines::contextMenuEvent(QContextMenuEvent *e) {
-    e->accept();
-}
-
-void QG_CadToolBarSplines::setCadToolBar(QG_CadToolBar* tb) {
-    cadToolBar = tb;
-    if (tb!=NULL) {
-        actionHandler = tb->getActionHandler();
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CadToolBarSplines::setCadToolBar(): No valid toolbar set.");
-    }
-}
-
-void QG_CadToolBarSplines::drawSpline() {
-    if (cadToolBar!=NULL && actionHandler!=NULL) {
-        actionHandler->slotDrawSpline();
-    }
-}
-
-void QG_CadToolBarSplines::back() {
-    if (cadToolBar!=NULL) {
-        cadToolBar->back();
-    }
-}
diff --git a/src/ui/forms/qg_circleoptions.cpp b/src/ui/forms/qg_circleoptions.cpp
index f09c865..2db46b1 100644
--- a/src/ui/forms/qg_circleoptions.cpp
+++ b/src/ui/forms/qg_circleoptions.cpp
@@ -25,14 +25,14 @@
 **********************************************************************/
 #include "qg_circleoptions.h"
 
-#include <qvariant.h>
-#include "qg_circleoptions.ui.h"
+#include "rs_settings.h"
+
 /*
  *  Constructs a QG_CircleOptions as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_CircleOptions::QG_CircleOptions(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_CircleOptions::QG_CircleOptions(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -56,3 +56,47 @@ void QG_CircleOptions::languageChange()
     retranslateUi(this);
 }
 
+void QG_CircleOptions::destroy() {
+    RS_SETTINGS->beginGroup("/Draw");
+    RS_SETTINGS->writeEntry("/CircleRadius", leRadius->text());
+    RS_SETTINGS->endGroup();
+}
+
+void QG_CircleOptions::setAction(RS_ActionInterface* a, bool update) {
+    if (a!=NULL && a->rtti()==RS2::ActionDrawCircleCR) {
+        action = (RS_ActionDrawCircleCR*)a;
+
+        QString sr;
+        if (update) {
+            sr = QString("%1").arg(action->getRadius());
+        } else {
+            RS_SETTINGS->beginGroup("/Draw");
+            sr = RS_SETTINGS->readEntry("/CircleRadius", "1.0");
+            RS_SETTINGS->endGroup();
+            action->setRadius(sr.toDouble());
+        }
+        leRadius->setText(sr);
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_CircleOptions::setAction: wrong action type");
+        action = NULL;
+    }
+
+}
+
+
+/*void QG_CircleOptions::setData(RS_CircleData* d) {
+    data = d;
+
+    RS_SETTINGS->beginGroup("/Draw");
+    QString r = RS_SETTINGS->readEntry("/CircleRadius", "1.0");
+    RS_SETTINGS->endGroup();
+
+    leRadius->setText(r);
+}*/
+
+void QG_CircleOptions::updateRadius(const QString& r) {
+    if (action!=NULL) {
+        action->setRadius(RS_Math::eval(r));
+    }
+}
diff --git a/src/ui/forms/qg_circleoptions.h b/src/ui/forms/qg_circleoptions.h
index e773149..afb2179 100644
--- a/src/ui/forms/qg_circleoptions.h
+++ b/src/ui/forms/qg_circleoptions.h
@@ -34,7 +34,7 @@ class QG_CircleOptions : public QWidget, public Ui::QG_CircleOptions
     Q_OBJECT
 
 public:
-    QG_CircleOptions(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_CircleOptions(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_CircleOptions();
 
 public slots:
diff --git a/src/ui/forms/qg_circleoptions.ui b/src/ui/forms/qg_circleoptions.ui
index 9a56f58..a434a6e 100644
--- a/src/ui/forms/qg_circleoptions.ui
+++ b/src/ui/forms/qg_circleoptions.ui
@@ -74,12 +74,6 @@
     </layout>
   </widget>
   <layoutdefault spacing="6" margin="11"/>
-  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
-  <includes>
-    <include location="local">rs_circle.h</include>
-    <include location="local">rs_settings.h</include>
-    <include location="local">rs_actiondrawcirclecr.h</include>
-  </includes>
   <connections>
     <connection>
       <sender>leRadius</sender>
diff --git a/src/ui/forms/qg_circleoptions.ui.h b/src/ui/forms/qg_circleoptions.ui.h
deleted file mode 100644
index 54ed87e..0000000
--- a/src/ui/forms/qg_circleoptions.ui.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_CircleOptions::destroy() {
-    RS_SETTINGS->beginGroup("/Draw");
-    RS_SETTINGS->writeEntry("/CircleRadius", leRadius->text());
-    RS_SETTINGS->endGroup();
-}
-
-void QG_CircleOptions::setAction(RS_ActionInterface* a, bool update) {
-    if (a!=NULL && a->rtti()==RS2::ActionDrawCircleCR) {
-        action = (RS_ActionDrawCircleCR*)a;
-
-        QString sr;
-        if (update) {
-            sr = QString("%1").arg(action->getRadius());
-        } else {
-            RS_SETTINGS->beginGroup("/Draw");
-            sr = RS_SETTINGS->readEntry("/CircleRadius", "1.0");
-            RS_SETTINGS->endGroup();
-            action->setRadius(sr.toDouble());
-        }
-        leRadius->setText(sr);
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_CircleOptions::setAction: wrong action type");
-        action = NULL;
-    }
-
-}
-
-
-/*void QG_CircleOptions::setData(RS_CircleData* d) {
-    data = d;
- 
-    RS_SETTINGS->beginGroup("/Draw");
-    QString r = RS_SETTINGS->readEntry("/CircleRadius", "1.0");
-    RS_SETTINGS->endGroup();
- 
-    leRadius->setText(r);
-}*/
-
-void QG_CircleOptions::updateRadius(const QString& r) {
-    if (action!=NULL) {
-        action->setRadius(RS_Math::eval(r));
-    }
-}
diff --git a/src/ui/forms/qg_commandwidget.cpp b/src/ui/forms/qg_commandwidget.cpp
index 6442866..e5e803a 100644
--- a/src/ui/forms/qg_commandwidget.cpp
+++ b/src/ui/forms/qg_commandwidget.cpp
@@ -25,16 +25,18 @@
 **********************************************************************/
 #include "qg_commandwidget.h"
 
-#include <qvariant.h>
-#include "qg_commandedit.h"
-#include "qg_commandwidget.ui.h"
+#include "qg_actionhandler.h"
+#include "rs_commands.h"
+#include "rs_commandevent.h"
+
 /*
  *  Constructs a QG_CommandWidget as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
 QG_CommandWidget::QG_CommandWidget(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+    : QWidget(parent, fl)
 {
+    setObjectName(name);
     setupUi(this);
 
     init();
@@ -57,3 +59,143 @@ void QG_CommandWidget::languageChange()
     retranslateUi(this);
 }
 
+void QG_CommandWidget::init() {
+    actionHandler = NULL;
+    //errStream = NULL;
+    leCommand->setFrame(false);
+    leCommand->setFocusPolicy(Qt::StrongFocus);
+    //setNormalMode();
+}
+
+bool QG_CommandWidget::checkFocus() {
+    return leCommand->hasFocus();
+}
+
+void QG_CommandWidget::setFocus() {
+    //setCommandMode();
+    leCommand->setFocus();
+}
+
+
+void QG_CommandWidget::setCommand(const QString& cmd) {
+    if (cmd!="") {
+        lCommand->setText(cmd);
+    } else {
+        lCommand->setText(tr("Command:"));
+    }
+    leCommand->setText("");
+}
+
+
+void QG_CommandWidget::appendHistory(const QString& msg) {
+    teHistory->append(msg);
+}
+
+
+void QG_CommandWidget::trigger() {
+    QString cmd = leCommand->text();
+    bool isAction=false;
+    if (cmd=="") {
+        cmd="\n";
+    } else {
+        appendHistory(cmd);
+    }
+
+    if (actionHandler!=NULL) {
+        isAction=actionHandler->command(cmd);
+    }
+
+    if (!isAction && cmd!="\n" && !(cmd.contains(',') || cmd.at(0)=='@')) {
+       appendHistory(tr("Unknown command: %1").arg(cmd));
+    }
+
+    leCommand->setText("");
+}
+
+void QG_CommandWidget::tabPressed() {
+    if (actionHandler!=NULL) {
+        QStringList reducedChoice;
+        QString typed = leCommand->text();
+        QStringList choice;
+
+        // check current command:
+        choice = actionHandler->getAvailableCommands();
+        if (choice.count()==0) {
+            choice = RS_COMMANDS->complete(typed);
+        }
+
+        for (QStringList::Iterator it = choice.begin(); it != choice.end(); ++it) {
+            if (typed.isEmpty() || (*it).startsWith(typed)) {
+                reducedChoice << (*it);
+            }
+        }
+
+        // command found:
+        if (reducedChoice.count()==1) {
+            leCommand->setText(reducedChoice.first());
+        }
+        else if (reducedChoice.count()>0) {
+            appendHistory(reducedChoice.join(", "));
+        }
+    }
+}
+
+void QG_CommandWidget::escape() {
+    //leCommand->clearFocus();
+
+    if (actionHandler!=NULL) {
+                actionHandler->slotFocusNormal();
+        }
+}
+
+/*void QG_CommandWidget::cmdChanged(const QString& text) {
+    // three equal letters enable hotkeys and move the focus away from the command line:
+    if (text.length()==3) {
+        if (text.at(0)==text.at(1) && text.at(0)==text.at(2)) {
+            escape();
+        }
+    }
+}*/
+
+void QG_CommandWidget::setActionHandler(QG_ActionHandler* ah) {
+    actionHandler = ah;
+}
+
+void QG_CommandWidget::setCommandMode() {
+    QPalette palette;
+    palette.setColor(lCommand->foregroundRole(), Qt::blue);
+    lCommand->setPalette(palette);
+}
+
+void QG_CommandWidget::setNormalMode() {
+    QPalette palette;
+    palette.setColor(lCommand->foregroundRole(), Qt::black);
+    lCommand->setPalette(palette);
+}
+
+void QG_CommandWidget::redirectStderr() {
+    //fclose(stderr);
+    //ferr = new QFile();
+    //ferr->open(IO_ReadWrite, stderr);
+    //std::streambuf buf;
+    //errStream = new std::ostream(&errBuf);
+    //std::cerr.rdbuf(errStream->rdbuf());
+}
+
+void QG_CommandWidget::processStderr() {
+        /*
+    if (errStream==NULL) {
+        return;
+    }
+
+    std::string s = errBuf.str();
+    if (s.length()!=0) {
+        appendHistory(QString("%1").arg(s.c_str()));
+    }
+    //char c;
+    / *while ((c=ferr->getch())!=-1) {
+        appendHistory(QString("%1").arg(c));
+    }
+    ferr->close();* /
+        */
+}
diff --git a/src/ui/forms/qg_commandwidget.h b/src/ui/forms/qg_commandwidget.h
index 099cc1f..d86759c 100644
--- a/src/ui/forms/qg_commandwidget.h
+++ b/src/ui/forms/qg_commandwidget.h
@@ -27,6 +27,7 @@
 #define QG_COMMANDWIDGET_H
 
 #include "ui_qg_commandwidget.h"
+class QG_ActionHandler;
 
 class QG_CommandWidget : public QWidget, public Ui::QG_CommandWidget
 {
diff --git a/src/ui/forms/qg_commandwidget.ui b/src/ui/forms/qg_commandwidget.ui
index b6ab92a..f6b69c2 100644
--- a/src/ui/forms/qg_commandwidget.ui
+++ b/src/ui/forms/qg_commandwidget.ui
@@ -1,8 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0" stdsetdef="1">
   <resources><include location="../../../res/extui/extui.qrc"/></resources><author></author>
-  <comment></comment>
-  <exportmacro></exportmacro>
   <class>QG_CommandWidget</class>
   <widget class="QWidget" name="QG_CommandWidget">
     <property name="geometry">
@@ -24,7 +22,7 @@
         <number>0</number>
       </property>
       <item>
-        <widget class="Q3TextEdit" name="teHistory">
+        <widget class="QTextEdit" name="teHistory">
           <property name="minimumSize">
             <size>
               <width>0</width>
@@ -37,29 +35,33 @@
           <property name="lineWidth">
             <number>0</number>
           </property>
-          <property name="hScrollBarMode">
-            <enum>Q3ScrollView::AlwaysOff</enum>
+          <property name="horizontalScrollBarPolicy">
+            <enum>Qt::ScrollBarAlwaysOff</enum>
           </property>
-          <property name="textFormat">
-            <enum>Qt::PlainText</enum>
-          </property>
-          <property name="linkUnderline">
+          <property name="linkUnderline" stdset="0">
             <bool>false</bool>
           </property>
+          <property name="documentTitle">
+            <string notr="true"/>
+          </property>
           <property name="readOnly">
             <bool>true</bool>
           </property>
           <property name="undoRedoEnabled">
             <bool>false</bool>
           </property>
+          <property name="html">
+            <string notr="true"></string>
+          </property>
+          <property name="acceptRichText">
+            <bool>false</bool>
+          </property>
         </widget>
       </item>
       <item>
         <widget class="Line" name="line1">
           <property name="sizePolicy">
-            <sizepolicy>
-              <hsizetype>1</hsizetype>
-              <vsizetype>0</vsizetype>
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
             </sizepolicy>
@@ -87,9 +89,7 @@
           <item>
             <widget class="QG_CommandEdit" name="leCommand">
               <property name="sizePolicy">
-                <sizepolicy>
-                  <hsizetype>3</hsizetype>
-                  <vsizetype>5</vsizetype>
+                <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
                   <horstretch>0</horstretch>
                   <verstretch>0</verstretch>
                 </sizepolicy>
@@ -115,19 +115,9 @@
         <hordata>5</hordata>
         <verdata>5</verdata>
       </sizepolicy>
-      <pixmap>image0</pixmap>
     </customwidget>
   </customwidgets>
-  <images>
-    <image name="image0">
-      <data format="XPM.GZ" length="2926">789c9d95594f32591086effd15c4ba3393fae895ee4ce6824540141011b7c95cf406a202caa6f065fefb549faaea0b24996fc623cb937aeb3d55754e871f67a587eb6ee9ecc7c96a1dada74929798e96a5b374339bedfefceb8f9f27a7b65da27fcb724bf6e96f27a783752929f516f32c070402289b3fc39d8203c3136157e276c1260eac0f0ade0907927f2d9c58261f929cad72be0cef8535ff5959e277c201ef0fa02cf1ae7022f9efca12ff301ca81e87c21a5f32db5acf95b0eebfcdd92e2be3a5b0fa7986435bfd6e981d99278c0ae6795c288b3e2b98e3036157d8f839961308af985df51b1b0e9dc0098ddf5a3811fd7dceaee52a370d475e28f9b7ca1c07539f67173c144e65be2fcae2d763f62d89df2acb7cc282393e57b6b9ff58d893fca632c7d1ccc78bbcd48b4c7cc2ec4bfdf0aa2cfbf50be6fa2c65d9af2aacfd2c94e53cccf9fa7645eb7794a59ebdb027fe5565895f09cb7e981a267f9febaf3117fab6702af599e7a5e2049e6dce1377c25affa6608e4786e34a58894dfc8b59f5f890731087e28f2de648fbdb16ccfd6c9465bf7365c732f12f61ed3f5016fd4a59f4e6790fddd00a5d137f638eb4bfa532df5ffc148ea4be5ac17c5ea9b2ecd72b98efff403893fa1accb12d5c5696fd4d7f6152c41f95c53f2a98f56b6597fbf3857da9b75e30fb5584b59fa78239de5596fd3e0be6fdccf311b99115f1fcdaccb12fe77927ac7e2365f1c382793e63e14cfccdf3132571e69b1f07e83327d23fbac2bee4d785d57f2a9c89de9c6fecaa1fce98135bf845b9e2189e2a07e6fee287b0cfcf3bce9525ff5d38927a1bcca9cc1b66ca528ff93d89d338e3f9e182b9c86f31a752ff609d2f847f5f83b5ea31c218137a4f8fac0cc738e10cd6d3b7189f718a2ff88a6f38c339ad05adfcf31d3f7089ab037d42ea356e708b9ff8853bdc6395de6b58c706ad736c1ee823f2de608b146dbcc08e8976f012afb04b3975ec1de853aa2457f749d5c16b1ce00d0ecdf75b1ce1dd11fd1b55d236cef7f8808ff88465b4d02676d03da29f51dd9e513fa28f150c3004246d07002288bfe9e7d45f0712f22635a490d15ef730361e3b389c67aedf2390ea3157e73dc333e9a6f042d13ebc7ed32f6882405d3ee1c678030ee10d6630a76f162c8ee8f37adeb14c0aaa0b3e68b725ac80a2b039a29f630db6e46bc127d5fd45de4b5226b0833d8ea07a445f871ae96dacc218ead08073c835136842eba8be016db830e77a419f21aca143f76c025b9ae7e5813ea35bd5a0731fd1c4877a7f614fde57d085deb7f31ad31dccf54fd087883ab7a88f6baabb45fdf760003707fa09ddd826f66048af1826f00a0bb3aa7009b73082bb03fd2faeffa7fff58cfffcbcfffdfbc93f7f7d62d7</data>
-    </image>
-  </images>
-  <includes>
-    <include location="local">qg_actionhandler.h</include>
-    <include location="local">rs_commands.h</include>
-    <include location="local">qg_commandedit.h</include>
-  </includes>
+  <resources/>
   <connections>
     <connection>
       <sender>leCommand</sender>
diff --git a/src/ui/forms/qg_commandwidget.ui.h b/src/ui/forms/qg_commandwidget.ui.h
deleted file mode 100644
index ffdd452..0000000
--- a/src/ui/forms/qg_commandwidget.ui.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_CommandWidget::init() {
-    actionHandler = NULL;
-    //errStream = NULL;
-    leCommand->setFrame(false);
-    leCommand->setFocusPolicy(Qt::StrongFocus);
-    //setNormalMode();
-}
-
-bool QG_CommandWidget::checkFocus() {
-    return leCommand->hasFocus();
-}
-
-void QG_CommandWidget::setFocus() {
-    //setCommandMode();
-    leCommand->setFocus();
-}
-
-
-void QG_CommandWidget::setCommand(const QString& cmd) {
-    if (cmd!="") {
-        lCommand->setText(cmd);
-    } else {
-        lCommand->setText(tr("Command:"));
-    }
-    leCommand->setText("");
-}
-
-
-void QG_CommandWidget::appendHistory(const QString& msg) {
-    teHistory->append(msg);
-}
-
-
-void QG_CommandWidget::trigger() {
-    QString cmd = leCommand->text();
-
-    if (cmd=="") {
-        cmd="\n";
-    } else {
-        appendHistory(cmd);
-    }
-
-    if (actionHandler!=NULL) {
-        actionHandler->command(cmd);
-    }
-
-    leCommand->setText("");
-}
-
-void QG_CommandWidget::tabPressed() {
-    if (actionHandler!=NULL) {
-        QStringList reducedChoice;
-        QString typed = leCommand->text();
-        QStringList choice;
-        
-        // check current command:
-        choice = actionHandler->getAvailableCommands();
-        if (choice.count()==0) {
-            choice = RS_COMMANDS->complete(typed);
-        }
-        
-        for (QStringList::Iterator it = choice.begin(); it != choice.end(); ++it) {
-            if (typed.isEmpty() || (*it).startsWith(typed)) {
-                reducedChoice << (*it);
-            }
-        }
-        
-        // command found:
-        if (reducedChoice.count()==1) {
-            leCommand->setText(reducedChoice.first());
-        }
-        else if (reducedChoice.count()>0) {
-            appendHistory(reducedChoice.join(", "));
-        }
-    }
-}
-
-void QG_CommandWidget::escape() {
-    //leCommand->clearFocus();
-
-    if (actionHandler!=NULL) {
-		actionHandler->slotFocusNormal();
-	}
-}
-
-/*void QG_CommandWidget::cmdChanged(const QString& text) {
-    // three equal letters enable hotkeys and move the focus away from the command line:
-    if (text.length()==3) {
-        if (text.at(0)==text.at(1) && text.at(0)==text.at(2)) {
-            escape();
-        }
-    }
-}*/
-
-void QG_CommandWidget::setActionHandler(QG_ActionHandler* ah) {
-    actionHandler = ah;
-}
-
-void QG_CommandWidget::setCommandMode() {
-    lCommand->setPaletteForegroundColor(Qt::blue);
-}
-
-void QG_CommandWidget::setNormalMode() {
-    lCommand->setPaletteForegroundColor(Qt::black);
-}
-
-void QG_CommandWidget::redirectStderr() {
-    //fclose(stderr);
-    //ferr = new QFile();
-    //ferr->open(IO_ReadWrite, stderr);
-    //std::streambuf buf;
-    //errStream = new std::ostream(&errBuf);
-    //std::cerr.rdbuf(errStream->rdbuf());
-}
-
-void QG_CommandWidget::processStderr() {
-	/*
-    if (errStream==NULL) {
-        return;
-    }
-    
-    std::string s = errBuf.str();
-    if (s.length()!=0) {
-        appendHistory(QString("%1").arg(s.c_str()));
-    }
-    //char c;
-    / *while ((c=ferr->getch())!=-1) {
-        appendHistory(QString("%1").arg(c));
-    }
-    ferr->close();* /
-	*/
-}
diff --git a/src/ui/forms/qg_coordinatewidget.cpp b/src/ui/forms/qg_coordinatewidget.cpp
index d8368e3..5b0af98 100644
--- a/src/ui/forms/qg_coordinatewidget.cpp
+++ b/src/ui/forms/qg_coordinatewidget.cpp
@@ -25,16 +25,18 @@
 **********************************************************************/
 #include "qg_coordinatewidget.h"
 
-#include <qvariant.h>
 #include "rs_settings.h"
-#include "qg_coordinatewidget.ui.h"
+#include "rs_vector.h"
+#include "rs_graphic.h"
+
 /*
  *  Constructs a QG_CoordinateWidget as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
 QG_CoordinateWidget::QG_CoordinateWidget(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+    : QWidget(parent, fl)
 {
+    setObjectName(name);
     setupUi(this);
 
     init();
@@ -57,3 +59,154 @@ void QG_CoordinateWidget::languageChange()
     retranslateUi(this);
 }
 
+void QG_CoordinateWidget::init() {
+    lCoord1->setText("");
+    lCoord2->setText("");
+    lCoord1b->setText("");
+    lCoord2b->setText("");
+
+    int fsize;
+#ifdef __APPLE__
+    fsize = 9;
+#else
+    fsize = 7;
+#endif
+
+    RS_SETTINGS->beginGroup("/Appearance");
+    fsize = RS_SETTINGS->readNumEntry("/StatusBarFontSize", fsize);
+    RS_SETTINGS->endGroup();
+
+    lCoord1->setFont(QFont("Helvetica", fsize));
+    lCoord1b->setFont(QFont("Helvetica", fsize));
+    lCoord2->setFont(QFont("Helvetica", fsize));
+    lCoord2b->setFont(QFont("Helvetica", fsize));
+
+    graphic = NULL;
+    prec = 4;
+    format = RS2::Decimal;
+    aprec = 2;
+    aformat = RS2::DegreesDecimal;
+}
+
+void QG_CoordinateWidget::setGraphic(RS_Graphic* graphic) {
+    this->graphic = graphic;
+
+    setCoordinates(RS_Vector(0.0,0.0), RS_Vector(0.0,0.0), true);
+}
+
+/*void QG_CoordinateWidget::setAbsCoordinates(double x, double y) {
+    setAbsCoordinates(RS_Vector(x, y));
+}
+
+void QG_CoordinateWidget::setAbsCoordinates(const RS_Vector& v) {
+    QString str;
+
+    str.sprintf("%.4f / %.4f", v.x, v.y);
+    lCoord1->setText(str);
+
+    double ang = RS_Math::rad2deg(v.angle());
+    double rad = v.magnitude();
+    str.sprintf("%.4f < %.4f", rad, ang);
+    lCoord1b->setText(str);
+}
+
+void QG_CoordinateWidget::setAbsCoordinates(const QString& x, const QString& y) {
+    lCoord1->setText(x);
+    lCoord1b->setText(y);
+}
+
+void QG_CoordinateWidget::setRelCoordinates(double x, double y) {
+    setRelCoordinates(RS_Vector(x, y));
+}
+
+void QG_CoordinateWidget::setRelCoordinates(const RS_Vector& v) {
+    QString str;
+    str.sprintf("@%.4f / %.4f", v.x, v.y);
+    lCoord2->setText(str);
+
+    double ang = RS_Math::rad2deg(v.angle());
+    double rad = v.magnitude();
+    str.sprintf("@%.4f < %.4f", rad, ang);
+    lCoord2b->setText(str);
+}
+
+void QG_CoordinateWidget::setRelCoordinates(const QString& x, const QString& y) {
+    lCoord2->setText(x);
+    lCoord2b->setText(y);
+}
+
+void QG_CoordinateWidget::setCoordinates(double x, double y,
+        double rx, double ry) {
+    setAbsCoordinates(x, y);
+    setRelCoordinates(rx, ry);
+}*/
+
+/*void QG_CoordinateWidget::setAbsCoordinates(const QString& x,
+                                            const QString& y,
+                                            const QString& rx,
+                                            const QString& ry) {
+    lCoord1->setText(x);
+    lCoord1b->setText(y);
+    lCoord2->setText(rx);
+    lCoord2b->setText(ry);
+}*/
+
+
+
+void QG_CoordinateWidget::setCoordinates(const RS_Vector& abs,
+                                         const RS_Vector& rel, bool updateFormat) {
+    setCoordinates(abs.x, abs.y, rel.x, rel.y, updateFormat);
+}
+
+
+void QG_CoordinateWidget::setCoordinates(double x, double y,
+        double rx, double ry, bool updateFormat) {
+
+    if (graphic!=NULL) {
+        if (updateFormat) {
+            format = graphic->getLinearFormat();
+            prec = graphic->getLinearPrecision();
+            aformat = graphic->getAngleFormat();
+            aprec = graphic->getAnglePrecision();
+        }
+
+        // abs / rel coordinates:
+        QString absX = RS_Units::formatLinear(x,
+                                               graphic->getUnit(),
+                                               format, prec);
+        QString absY = RS_Units::formatLinear(y,
+                                               graphic->getUnit(),
+                                               format, prec);
+        QString relX = RS_Units::formatLinear(rx,
+                                               graphic->getUnit(),
+                                               format, prec);
+        QString relY = RS_Units::formatLinear(ry,
+                                               graphic->getUnit(),
+                                               format, prec);
+
+        lCoord1->setText(absX + " , " + absY);
+        lCoord2->setText(relX + " , " + relY);
+
+        // polar coordinates:
+        RS_Vector v;
+        v = RS_Vector(x, y);
+        QString str;
+        QString rStr = RS_Units::formatLinear(v.magnitude(),
+                                               graphic->getUnit(),
+                                               format, prec);
+        QString aStr = RS_Units::formatAngle(v.angle(),
+                                               aformat, aprec);
+
+        str = rStr + " < " + aStr;
+        lCoord1b->setText(str);
+
+        v = RS_Vector(rx, ry);
+        rStr = RS_Units::formatLinear(v.magnitude(),
+                                               graphic->getUnit(),
+                                               format, prec);
+        aStr = RS_Units::formatAngle(v.angle(),
+                                               aformat, aprec);
+        str = rStr + " < " + aStr;
+        lCoord2b->setText(str);
+    }
+}
diff --git a/src/ui/forms/qg_coordinatewidget.h b/src/ui/forms/qg_coordinatewidget.h
index 3ee42d2..5639017 100644
--- a/src/ui/forms/qg_coordinatewidget.h
+++ b/src/ui/forms/qg_coordinatewidget.h
@@ -27,6 +27,9 @@
 #define QG_COORDINATEWIDGET_H
 
 #include "ui_qg_coordinatewidget.h"
+#include "rs.h"
+class RS_Graphic;
+class RS_Vector;
 
 class QG_CoordinateWidget : public QWidget, public Ui::QG_CoordinateWidget
 {
diff --git a/src/ui/forms/qg_coordinatewidget.ui b/src/ui/forms/qg_coordinatewidget.ui
index c27b357..ed2fb3a 100644
--- a/src/ui/forms/qg_coordinatewidget.ui
+++ b/src/ui/forms/qg_coordinatewidget.ui
@@ -152,11 +152,4 @@
     </layout>
   </widget>
   <layoutdefault spacing="6" margin="11"/>
-  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
-  <includes>
-    <include location="local">rs_vector.h</include>
-    <include location="local">rs_math.h</include>
-    <include location="local">rs_graphic.h</include>
-    <include location="local">rs_math.h</include>
-  </includes>
 </ui>
diff --git a/src/ui/forms/qg_coordinatewidget.ui.h b/src/ui/forms/qg_coordinatewidget.ui.h
deleted file mode 100644
index 5ed75fe..0000000
--- a/src/ui/forms/qg_coordinatewidget.ui.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_CoordinateWidget::init() {
-    lCoord1->setText("");
-    lCoord2->setText("");
-    lCoord1b->setText("");
-    lCoord2b->setText("");
-    
-    int fsize;
-#ifdef __APPLE__
-    fsize = 9;
-#else
-    fsize = 7;
-#endif
-    
-    RS_SETTINGS->beginGroup("/Appearance");
-    fsize = RS_SETTINGS->readNumEntry("/StatusBarFontSize", fsize);
-    RS_SETTINGS->endGroup();
-    
-    lCoord1->setFont(QFont("Helvetica", fsize));
-    lCoord1b->setFont(QFont("Helvetica", fsize));
-    lCoord2->setFont(QFont("Helvetica", fsize));
-    lCoord2b->setFont(QFont("Helvetica", fsize));
-    
-    graphic = NULL;
-    prec = 4;
-    format = RS2::Decimal;
-    aprec = 2;
-    aformat = RS2::DegreesDecimal;
-}
-
-void QG_CoordinateWidget::setGraphic(RS_Graphic* graphic) {
-    this->graphic = graphic;
-    
-    setCoordinates(RS_Vector(0.0,0.0), RS_Vector(0.0,0.0), true);
-}
-
-/*void QG_CoordinateWidget::setAbsCoordinates(double x, double y) {
-    setAbsCoordinates(RS_Vector(x, y));
-}
-
-void QG_CoordinateWidget::setAbsCoordinates(const RS_Vector& v) {
-    QString str;
-    
-    str.sprintf("%.4f / %.4f", v.x, v.y);
-    lCoord1->setText(str);
-    
-    double ang = RS_Math::rad2deg(v.angle());
-    double rad = v.magnitude();
-    str.sprintf("%.4f < %.4f", rad, ang);
-    lCoord1b->setText(str);
-}
-
-void QG_CoordinateWidget::setAbsCoordinates(const QString& x, const QString& y) {
-    lCoord1->setText(x);
-    lCoord1b->setText(y);
-}
-
-void QG_CoordinateWidget::setRelCoordinates(double x, double y) {
-    setRelCoordinates(RS_Vector(x, y));
-}
-
-void QG_CoordinateWidget::setRelCoordinates(const RS_Vector& v) {
-    QString str;
-    str.sprintf("@%.4f / %.4f", v.x, v.y);
-    lCoord2->setText(str);
-    
-    double ang = RS_Math::rad2deg(v.angle());
-    double rad = v.magnitude();
-    str.sprintf("@%.4f < %.4f", rad, ang);
-    lCoord2b->setText(str);
-}
-
-void QG_CoordinateWidget::setRelCoordinates(const QString& x, const QString& y) {
-    lCoord2->setText(x);
-    lCoord2b->setText(y);
-}
-
-void QG_CoordinateWidget::setCoordinates(double x, double y,
-        double rx, double ry) {
-    setAbsCoordinates(x, y);
-    setRelCoordinates(rx, ry);
-}*/
-
-/*void QG_CoordinateWidget::setAbsCoordinates(const QString& x, 
-                                            const QString& y,
-                                            const QString& rx,
-                                            const QString& ry) {
-    lCoord1->setText(x);
-    lCoord1b->setText(y);
-    lCoord2->setText(rx);
-    lCoord2b->setText(ry);
-}*/
-
-
-
-void QG_CoordinateWidget::setCoordinates(const RS_Vector& abs,
-                                         const RS_Vector& rel, bool updateFormat) {
-    setCoordinates(abs.x, abs.y, rel.x, rel.y, updateFormat);
-}
-
-
-
-void QG_CoordinateWidget::setCoordinates(double x, double y,
-        double rx, double ry, bool updateFormat) {
-    
-    if (graphic!=NULL) {
-        if (updateFormat) {
-            format = graphic->getLinearFormat();
-            prec = graphic->getLinearPrecision();
-            aformat = graphic->getAngleFormat();
-            aprec = graphic->getAnglePrecision();
-        }
-    
-        // abs / rel coordinates:
-        RS_String absX = RS_Units::formatLinear(x,
-                                               graphic->getUnit(),
-                                               format, prec);
-        RS_String absY = RS_Units::formatLinear(y,
-                                               graphic->getUnit(),
-                                               format, prec);
-        RS_String relX = RS_Units::formatLinear(rx,
-                                               graphic->getUnit(),
-                                               format, prec);
-        RS_String relY = RS_Units::formatLinear(ry,
-                                               graphic->getUnit(),
-                                               format, prec);
-        
-        lCoord1->setText(absX + " , " + absY);
-        lCoord2->setText(relX + " , " + relY);        
-        
-        // polar coordinates:
-        RS_Vector v;
-        v = RS_Vector(x, y);
-        QString str;
-        QString rStr = RS_Units::formatLinear(v.magnitude(),
-                                               graphic->getUnit(),
-                                               format, prec);
-        QString aStr = RS_Units::formatAngle(v.angle(),
-                                               aformat, aprec);
-        
-        str = rStr + " < " + aStr;
-        lCoord1b->setText(str);
-    
-        v = RS_Vector(rx, ry);
-        rStr = RS_Units::formatLinear(v.magnitude(),
-                                               graphic->getUnit(),
-                                               format, prec);
-        aStr = RS_Units::formatAngle(v.angle(),
-                                               aformat, aprec);
-        str = rStr + " < " + aStr;
-        lCoord2b->setText(str);
-    }
-}
diff --git a/src/ui/forms/qg_dimensionlabeleditor.cpp b/src/ui/forms/qg_dimensionlabeleditor.cpp
index f993863..56a2c44 100644
--- a/src/ui/forms/qg_dimensionlabeleditor.cpp
+++ b/src/ui/forms/qg_dimensionlabeleditor.cpp
@@ -25,15 +25,12 @@
 **********************************************************************/
 #include "qg_dimensionlabeleditor.h"
 
-#include <qvariant.h>
-#include <iostream>
-#include "qg_dimensionlabeleditor.ui.h"
 /*
  *  Constructs a QG_DimensionLabelEditor as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_DimensionLabelEditor::QG_DimensionLabelEditor(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_DimensionLabelEditor::QG_DimensionLabelEditor(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -56,3 +53,62 @@ void QG_DimensionLabelEditor::languageChange()
     retranslateUi(this);
 }
 
+void QG_DimensionLabelEditor::setLabel(const QString& l) {
+    int i0, i1a, i1b, i2;
+    QString label, tol1, tol2;
+    bool hasDiameter = false;
+
+    label = l;
+
+    if ( !label.isEmpty()) {
+        if (label.at(0)==QChar(0x2205) || label.at(0)==QChar(0xF8)) {
+            hasDiameter = true;
+            bDiameter->setChecked(true);
+        }
+    }
+
+    i0 = l.indexOf("\\S");
+    if (i0>=0) {
+        i1a = l.indexOf("^ ", i0);
+        i1b = i1a+1;
+        if (i1a<0) {
+            i1a = i1b = l.indexOf('^', i0);
+        }
+        if (i1a>=0) {
+            i2 = l.indexOf(';', i1b);
+            label = l.mid(0, i0);
+            tol1 = l.mid(i0+2, i1a-i0-2);
+            tol2 = l.mid(i1b+1, i2-i1b-1);
+        }
+    }
+
+    leLabel->setText(label.mid(hasDiameter));
+    leTol1->setText(tol1);
+    leTol2->setText(tol2);
+}
+
+QString QG_DimensionLabelEditor::getLabel() {
+    QString l = leLabel->text();
+
+    // diameter:
+    if (bDiameter->isChecked()) {
+        if (l.isEmpty()) {
+            l = QString("%1<>").arg(QChar(0x2205));
+        }
+        else {
+            l = QChar(0x2205) + l;
+        }
+    }
+
+    if (leTol1->text().isEmpty() && leTol2->text().isEmpty()) {
+        return l;
+    }
+    else {
+        return l + "\\S" + leTol1->text() +
+            "^ " + leTol2->text() + ";";
+    }
+}
+
+void QG_DimensionLabelEditor::insertSign(const QString& s) {
+    leLabel->insert(s.left(1));
+}
diff --git a/src/ui/forms/qg_dimensionlabeleditor.h b/src/ui/forms/qg_dimensionlabeleditor.h
index 193ed26..dce89e4 100644
--- a/src/ui/forms/qg_dimensionlabeleditor.h
+++ b/src/ui/forms/qg_dimensionlabeleditor.h
@@ -33,7 +33,7 @@ class QG_DimensionLabelEditor : public QWidget, public Ui::QG_DimensionLabelEdit
     Q_OBJECT
 
 public:
-    QG_DimensionLabelEditor(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_DimensionLabelEditor(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_DimensionLabelEditor();
 
     virtual QString getLabel();
diff --git a/src/ui/forms/qg_dimensionlabeleditor.ui b/src/ui/forms/qg_dimensionlabeleditor.ui
index d46e0d5..4438f6c 100644
--- a/src/ui/forms/qg_dimensionlabeleditor.ui
+++ b/src/ui/forms/qg_dimensionlabeleditor.ui
@@ -27,7 +27,7 @@
     <number>0</number>
    </property>
    <item>
-    <widget class="Q3ButtonGroup" name="bgLabel">
+    <widget class="QGroupBox" name="bgLabel">
      <property name="title">
       <string>Dimension Label:</string>
      </property>
@@ -182,20 +182,6 @@
   </layout>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <customwidgets>
-  <customwidget>
-   <class>Q3GroupBox</class>
-   <extends>QGroupBox</extends>
-   <header>Qt3Support/Q3GroupBox</header>
-   <container>1</container>
-  </customwidget>
-  <customwidget>
-   <class>Q3ButtonGroup</class>
-   <extends>Q3GroupBox</extends>
-   <header>Qt3Support/Q3ButtonGroup</header>
-   <container>1</container>
-  </customwidget>
- </customwidgets>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_dimensionlabeleditor.ui.h b/src/ui/forms/qg_dimensionlabeleditor.ui.h
deleted file mode 100644
index 13ab2c5..0000000
--- a/src/ui/forms/qg_dimensionlabeleditor.ui.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_DimensionLabelEditor::setLabel(const QString& l) {
-    int i0, i1a, i1b, i2;
-    QString label, tol1, tol2;
-    bool hasDiameter = false;
-    
-    label = l;
-    
-    if (label.at(0)==QChar(0x2205) || label.at(0)==QChar(0xF8)) {
-        hasDiameter = true;
-        bDiameter->setOn(true);
-    }
-    
-    i0 = l.find("\\S");
-    if (i0>=0) {
-        i1a = l.find("^ ", i0);
-        i1b = i1a+1;
-        if (i1a<0) {
-            i1a = i1b = l.find('^', i0);
-        }
-        if (i1a>=0) {
-            i2 = l.find(';', i1b);
-            label = l.mid(0, i0);
-            tol1 = l.mid(i0+2, i1a-i0-2);
-            tol2 = l.mid(i1b+1, i2-i1b-1);
-        }
-    }
-    
-    leLabel->setText(label.mid(hasDiameter));
-    leTol1->setText(tol1);
-    leTol2->setText(tol2);
-}
-
-QString QG_DimensionLabelEditor::getLabel() {
-    QString l = leLabel->text();
-    
-    // diameter:
-    if (bDiameter->isOn()) {
-        if (l.isEmpty()) {
-            l = QString("%1<>").arg(QChar(0x2205));
-        }
-        else {
-            l = QChar(0x2205) + l;
-        }
-    }
-    
-    if (leTol1->text().isEmpty() && leTol2->text().isEmpty()) {
-        return l;
-    }
-    else {
-        return l + "\\S" + leTol1->text() + 
-            "^ " + leTol2->text() + ";";
-    }
-}
-
-void QG_DimensionLabelEditor::insertSign(const QString& s) {
-    leLabel->insert(s.left(1));
-}
diff --git a/src/ui/forms/qg_dimlinearoptions.cpp b/src/ui/forms/qg_dimlinearoptions.cpp
index 01474fd..6923a3d 100644
--- a/src/ui/forms/qg_dimlinearoptions.cpp
+++ b/src/ui/forms/qg_dimlinearoptions.cpp
@@ -25,14 +25,14 @@
 **********************************************************************/
 #include "qg_dimlinearoptions.h"
 
-#include <qvariant.h>
-#include "qg_dimlinearoptions.ui.h"
+#include "rs_settings.h"
+
 /*
  *  Constructs a QG_DimLinearOptions as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_DimLinearOptions::QG_DimLinearOptions(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_DimLinearOptions::QG_DimLinearOptions(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -56,3 +56,42 @@ void QG_DimLinearOptions::languageChange()
     retranslateUi(this);
 }
 
+void QG_DimLinearOptions::destroy() {
+    RS_SETTINGS->beginGroup("/Dimension");
+    RS_SETTINGS->writeEntry("/Angle", leAngle->text());
+    RS_SETTINGS->endGroup();
+}
+
+void QG_DimLinearOptions::setAction(RS_ActionInterface* a, bool update) {
+    if (a!=NULL && a->rtti()==RS2::ActionDimLinear) {
+        action = (RS_ActionDimLinear*)a;
+
+        QString sa;
+        if (!update) {
+            sa = QString("%1").arg(RS_Math::rad2deg(action->getAngle()));
+        } else {
+            RS_SETTINGS->beginGroup("/Dimension");
+            sa = RS_SETTINGS->readEntry("/Angle", "0.0");
+            RS_SETTINGS->endGroup();
+        }
+        leAngle->setText(sa);
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_DimLinearOptions::setAction: wrong action type");
+        action = NULL;
+    }
+}
+
+void QG_DimLinearOptions::updateAngle(const QString & a) {
+    if (action!=NULL) {
+        action->setAngle(RS_Math::deg2rad(RS_Math::eval(a)));
+    }
+}
+
+void QG_DimLinearOptions::setHor() {
+    leAngle->setText("0");
+}
+
+void QG_DimLinearOptions::setVer() {
+    leAngle->setText("90");
+}
diff --git a/src/ui/forms/qg_dimlinearoptions.h b/src/ui/forms/qg_dimlinearoptions.h
index 5859b5c..5b0e925 100644
--- a/src/ui/forms/qg_dimlinearoptions.h
+++ b/src/ui/forms/qg_dimlinearoptions.h
@@ -27,13 +27,14 @@
 #define QG_DIMLINEAROPTIONS_H
 
 #include "ui_qg_dimlinearoptions.h"
+#include "rs_actiondimlinear.h"
 
 class QG_DimLinearOptions : public QWidget, public Ui::QG_DimLinearOptions
 {
     Q_OBJECT
 
 public:
-    QG_DimLinearOptions(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_DimLinearOptions(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_DimLinearOptions();
 
 public slots:
diff --git a/src/ui/forms/qg_dimlinearoptions.ui b/src/ui/forms/qg_dimlinearoptions.ui
index 805d37f..9bb9019 100644
--- a/src/ui/forms/qg_dimlinearoptions.ui
+++ b/src/ui/forms/qg_dimlinearoptions.ui
@@ -153,11 +153,6 @@
   </layout>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">rs_dimlinear.h</include>
-  <include location="local">rs_actiondimlinear.h</include>
-  <include location="local">rs_settings.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_dimlinearoptions.ui.h b/src/ui/forms/qg_dimlinearoptions.ui.h
deleted file mode 100644
index 926f347..0000000
--- a/src/ui/forms/qg_dimlinearoptions.ui.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_DimLinearOptions::destroy() {
-    RS_SETTINGS->beginGroup("/Dimension");
-    RS_SETTINGS->writeEntry("/Angle", leAngle->text());
-    RS_SETTINGS->endGroup();
-}
-
-void QG_DimLinearOptions::setAction(RS_ActionInterface* a, bool update) {
-    if (a!=NULL && a->rtti()==RS2::ActionDimLinear) {
-        action = (RS_ActionDimLinear*)a;
-
-        QString sa;
-        if (!update) {
-            sa = QString("%1").arg(RS_Math::rad2deg(action->getAngle()));
-        } else {
-            RS_SETTINGS->beginGroup("/Dimension");
-            sa = RS_SETTINGS->readEntry("/Angle", "0.0");
-            RS_SETTINGS->endGroup();
-        }
-        leAngle->setText(sa);
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_DimLinearOptions::setAction: wrong action type");
-        action = NULL;
-    }
-}
-
-void QG_DimLinearOptions::updateAngle(const QString & a) {
-    if (action!=NULL) {
-        action->setAngle(RS_Math::deg2rad(RS_Math::eval(a)));
-    }
-}
-
-void QG_DimLinearOptions::setHor() {
-    leAngle->setText("0");
-}
-
-void QG_DimLinearOptions::setVer() {
-    leAngle->setText("90");
-}
diff --git a/src/ui/forms/qg_dimoptions.cpp b/src/ui/forms/qg_dimoptions.cpp
index cdceeac..84d5197 100644
--- a/src/ui/forms/qg_dimoptions.cpp
+++ b/src/ui/forms/qg_dimoptions.cpp
@@ -25,14 +25,14 @@
 **********************************************************************/
 #include "qg_dimoptions.h"
 
-#include <qvariant.h>
-#include "qg_dimoptions.ui.h"
+#include "rs_settings.h"
+
 /*
  *  Constructs a QG_DimOptions as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
  */
-QG_DimOptions::QG_DimOptions(QWidget* parent, const char* name, Qt::WindowFlags fl)
-    : QWidget(parent, name, fl)
+QG_DimOptions::QG_DimOptions(QWidget* parent, Qt::WindowFlags fl)
+    : QWidget(parent, fl)
 {
     setupUi(this);
 
@@ -56,3 +56,63 @@ void QG_DimOptions::languageChange()
     retranslateUi(this);
 }
 
+void QG_DimOptions::destroy() {
+    RS_SETTINGS->beginGroup("/Draw");
+    RS_SETTINGS->writeEntry("/DimLabel", leLabel->text());
+    RS_SETTINGS->writeEntry("/DimTol1", leTol1->text());
+    RS_SETTINGS->writeEntry("/DimTol2", leTol2->text());
+    RS_SETTINGS->endGroup();
+}
+
+void QG_DimOptions::setAction(RS_ActionInterface* a, bool update) {
+    if (a!=NULL && RS_ActionDimension::isDimensionAction(a->rtti())) {
+        action = (RS_ActionDimension*)a;
+
+        QString st;
+        QString stol1;
+        QString stol2;
+        bool diam;
+        if (update) {
+            st = action->getLabel();
+            stol1 = action->getTol1();
+            stol2 = action->getTol2();
+            diam = action->getDiameter();
+        } else {
+            //st = "";
+            RS_SETTINGS->beginGroup("/Draw");
+            st = RS_SETTINGS->readEntry("/DimLabel", "");
+            stol1 = RS_SETTINGS->readEntry("/DimTol1", "");
+            stol2 = RS_SETTINGS->readEntry("/DimTol2", "");
+            diam = (bool)RS_SETTINGS->readNumEntry("/DimDiameter", 0);
+            RS_SETTINGS->endGroup();
+        }
+        leLabel->setText(st);
+        leTol1->setText(stol1);
+        leTol2->setText(stol2);
+        bDiameter->setChecked(diam);
+    } else {
+        RS_DEBUG->print(RS_Debug::D_ERROR,
+                        "QG_DimensionOptions::setAction: wrong action type");
+        action = NULL;
+    }
+}
+
+
+
+void QG_DimOptions::updateLabel() {
+    if (action!=NULL) {
+        action->setText("");
+        action->setLabel(leLabel->text());
+        action->setDiameter(bDiameter->isChecked());
+        action->setTol1(leTol1->text());
+        action->setTol2(leTol2->text());
+
+        action->setText(action->getText());
+  }
+}
+
+void QG_DimOptions::insertSign(const QString& c) {
+    leLabel->insert(c);
+}
+
+
diff --git a/src/ui/forms/qg_dimoptions.h b/src/ui/forms/qg_dimoptions.h
index 1430a8e..c25324b 100644
--- a/src/ui/forms/qg_dimoptions.h
+++ b/src/ui/forms/qg_dimoptions.h
@@ -27,13 +27,14 @@
 #define QG_DIMOPTIONS_H
 
 #include "ui_qg_dimoptions.h"
+#include "rs_actiondimension.h"
 
 class QG_DimOptions : public QWidget, public Ui::QG_DimOptions
 {
     Q_OBJECT
 
 public:
-    QG_DimOptions(QWidget* parent = 0, const char* name = 0, Qt::WindowFlags fl = 0);
+    QG_DimOptions(QWidget* parent = 0, Qt::WindowFlags fl = 0);
     ~QG_DimOptions();
 
 public slots:
diff --git a/src/ui/forms/qg_dimoptions.ui b/src/ui/forms/qg_dimoptions.ui
index 30e2017..7634318 100644
--- a/src/ui/forms/qg_dimoptions.ui
+++ b/src/ui/forms/qg_dimoptions.ui
@@ -188,11 +188,6 @@
   </layout>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
- <includes>
-  <include location="local">rs_dimension.h</include>
-  <include location="local">rs_actiondimension.h</include>
-  <include location="local">rs_settings.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_dimoptions.ui.h b/src/ui/forms/qg_dimoptions.ui.h
deleted file mode 100644
index c2efbc0..0000000
--- a/src/ui/forms/qg_dimoptions.ui.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_DimOptions::destroy() {
-    RS_SETTINGS->beginGroup("/Draw");
-    RS_SETTINGS->writeEntry("/DimLabel", leLabel->text());
-    RS_SETTINGS->writeEntry("/DimTol1", leTol1->text());
-    RS_SETTINGS->writeEntry("/DimTol2", leTol2->text());
-    RS_SETTINGS->endGroup();
-}
-
-void QG_DimOptions::setAction(RS_ActionInterface* a, bool update) {
-    if (a!=NULL && RS_ActionDimension::isDimensionAction(a->rtti())) {
-        action = (RS_ActionDimension*)a;
-        
-        QString st;
-        QString stol1;
-        QString stol2;
-        bool diam;
-        if (update) {
-            st = action->getLabel();
-            stol1 = action->getTol1();
-            stol2 = action->getTol2();
-            diam = action->getDiameter();
-        } else {
-            //st = "";
-            RS_SETTINGS->beginGroup("/Draw");
-            st = RS_SETTINGS->readEntry("/DimLabel", "");
-            stol1 = RS_SETTINGS->readEntry("/DimTol1", "");
-            stol2 = RS_SETTINGS->readEntry("/DimTol2", "");
-            diam = (bool)RS_SETTINGS->readNumEntry("/DimDiameter", 0);
-            RS_SETTINGS->endGroup();
-        }
-        leLabel->setText(st);
-        leTol1->setText(stol1);
-        leTol2->setText(stol2);
-        bDiameter->setOn(diam);
-    } else {
-        RS_DEBUG->print(RS_Debug::D_ERROR, 
-			"QG_DimensionOptions::setAction: wrong action type");
-        action = NULL;
-    }
-}
-
-
-
-void QG_DimOptions::updateLabel() {
-    if (action!=NULL) {
-        action->setText("");
-        action->setLabel(leLabel->text());
-        action->setDiameter(bDiameter->isOn());
-        action->setTol1(leTol1->text());
-        action->setTol2(leTol2->text());
-        
-        action->setText(action->getText());
-  }
-}
-
-void QG_DimOptions::insertSign(const QString& c) {
-    leLabel->insert(c);
-}
-
-
diff --git a/src/ui/forms/qg_dlgarc.cpp b/src/ui/forms/qg_dlgarc.cpp
index 5111101..dc0b444 100644
--- a/src/ui/forms/qg_dlgarc.cpp
+++ b/src/ui/forms/qg_dlgarc.cpp
@@ -25,13 +25,9 @@
 **********************************************************************/
 #include "qg_dlgarc.h"
 
-#include <qvariant.h>
 #include "rs_arc.h"
 #include "rs_graphic.h"
-#include "rs_layer.h"
-#include "qg_widgetpen.h"
-#include "qg_layerbox.h"
-#include "qg_dlgarc.ui.h"
+
 /*
  *  Constructs a QG_DlgArc as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
@@ -39,9 +35,10 @@
  *  The dialog will by default be modeless, unless you set 'modal' to
  *  true to construct a modal dialog.
  */
-QG_DlgArc::QG_DlgArc(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl)
-    : QDialog(parent, name, modal, fl)
+QG_DlgArc::QG_DlgArc(QWidget* parent, bool modal, Qt::WindowFlags fl)
+    : QDialog(parent, fl)
 {
+    setModal(modal);
     setupUi(this);
 
 }
@@ -63,3 +60,42 @@ void QG_DlgArc::languageChange()
     retranslateUi(this);
 }
 
+void QG_DlgArc::setArc(RS_Arc& a) {
+    arc = &a;
+    //pen = arc->getPen();
+    wPen->setPen(arc->getPen(false), true, false, "Pen");
+    RS_Graphic* graphic = arc->getGraphic();
+    if (graphic!=NULL) {
+        cbLayer->init(*(graphic->getLayerList()), false, false);
+    }
+    RS_Layer* lay = arc->getLayer(false);
+    if (lay!=NULL) {
+        cbLayer->setLayer(*lay);
+    }
+    QString s;
+    s.setNum(arc->getCenter().x);
+    leCenterX->setText(s);
+    s.setNum(arc->getCenter().y);
+    leCenterY->setText(s);
+    s.setNum(arc->getRadius());
+    leRadius->setText(s);
+    s.setNum(RS_Math::rad2deg(arc->getAngle1()));
+    leAngle1->setText(s);
+    s.setNum(RS_Math::rad2deg(arc->getAngle2()));
+    leAngle2->setText(s);
+    cbReversed->setChecked(arc->isReversed());
+}
+
+void QG_DlgArc::updateArc() {
+    arc->setCenter(RS_Vector(RS_Math::eval(leCenterX->text()),
+                                  RS_Math::eval(leCenterY->text())));
+    arc->setRadius(RS_Math::eval(leRadius->text()));
+    arc->setAngle1(RS_Math::deg2rad(RS_Math::eval(leAngle1->text())));
+    arc->setAngle2(RS_Math::deg2rad(RS_Math::eval(leAngle2->text())));
+    arc->setReversed(cbReversed->isChecked());
+    arc->setPen(wPen->getPen());
+    arc->setLayer(cbLayer->currentText());
+    arc->calculateEndpoints();
+    arc->calculateBorders();
+}
+
diff --git a/src/ui/forms/qg_dlgarc.h b/src/ui/forms/qg_dlgarc.h
index 9008116..bb63392 100644
--- a/src/ui/forms/qg_dlgarc.h
+++ b/src/ui/forms/qg_dlgarc.h
@@ -35,7 +35,7 @@ class QG_DlgArc : public QDialog, public Ui::QG_DlgArc
     Q_OBJECT
 
 public:
-    QG_DlgArc(QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WindowFlags fl = 0);
+    QG_DlgArc(QWidget* parent = 0, bool modal = false, Qt::WindowFlags fl = 0);
     ~QG_DlgArc();
 
 public slots:
diff --git a/src/ui/forms/qg_dlgarc.ui b/src/ui/forms/qg_dlgarc.ui
index 6a6cc9a..86385c4 100644
--- a/src/ui/forms/qg_dlgarc.ui
+++ b/src/ui/forms/qg_dlgarc.ui
@@ -75,7 +75,7 @@
             </layout>
           </item>
           <item>
-            <widget class="Q3ButtonGroup" name="buttonGroup8">
+            <widget class="QGroupBox" name="buttonGroup8">
               <property name="title">
                 <string>Geometry</string>
               </property>
@@ -320,12 +320,6 @@
       <data format="XPM.GZ" length="2926">789c9d95594f32591086effd15c4ba3393fae895ee4ce6824540141011b7c95cf406a202caa6f065fefb549faaea0b24996fc623cb937aeb3d55754e871f67a587eb6ee9ecc7c96a1dada74929798e96a5b374339bedfefceb8f9f27a7b65da27fcb724bf6e96f27a783752929f516f32c070402289b3fc39d8203c3136157e276c1260eac0f0ade0907927f2d9c58261f929cad72be0cef8535ff5959e277c201ef0fa02cf1ae7022f9efca12ff301ca81e87c21a5f32db5acf95b0eebfcdd92e2be3a5b0fa7986435bfd6e981d99278c0ae6795c288b3e2b98e3036157d8f839961308af985df51b1b0e9dc0098ddf5a3811fd7dceaee52a370d475e28f9b7ca1c07539f67173c144e65be2fcae2d763f62d89df2acb7cc282393e57b6b9ff58d893fca632c7d1ccc78bbcd48b4c7cc2ec4bfdf0aa2cfbf50be6fa2c65d9af2aacfd2c94e53cccf9fa7645eb7794a59ebdb027fe5565895f09cb7e981a267f9febaf3117fab6702af599e7a5e2049e6dce1377c25affa6608e4786e34a58894dfc8b59f5f890731087e28f2de648fbdb16ccfd6c9465bf7365c732f12f61ed3f5016fd4a59f4e6790fddd00a5d137f638eb4bfa532df5ffc148ea4be5ac17c5ea9b2ecd72b98efff403893fa1accb12d5c5696fd4d7f6152c41f95c53f2a98f56b6597fbf3857da9b75e30fb5584b59fa78239de5596fd3e0be6fdccf311b99115f1fcdaccb12fe77927ac7e2365f1c382793e63e14cfccdf3132571e69b1f07e83327d23fbac2bee4d785d57f2a9c89de9c6fecaa1fce98135bf845b9e2189e2a07e6fee287b0cfcf3bce9525ff5d38927a1bcca9cc1b66ca528ff93d89d338e3f9e182b9c86f31a752ff609d2f847f5f83b5ea31c218137a4f8fac0cc738e10cd6d3b7189f718a2ff88a6f38c339ad05adfcf31d3f7089ab037d42ea356e708b9ff8853bdc6395de6b58c706ad736c1ee823f2de608b146dbcc08e8976f012afb04b3975ec1de853aa2457f749d5c16b1ce00d0ecdf75b1ce1dd11fd1b55d236cef7f8808ff88465b4d02676d03da29f51dd9e513fa28f150c3004246d07002288bfe9e7d45f0712f22635a490d15ef730361e3b389c67aedf2390ea3157e73dc333e9a6f042d13ebc7ed32f6882405d3ee1c678030ee10d6630a76f162c8ee8f37adeb14c0aaa0b3e68b725ac80a2b039a29f630db6e46bc127d5fd45de4b5226b0833d8ea07a445f871ae96dacc218ead08073c835136842eba8be016db830e77a419f21aca143f76c025b9ae7e5813ea35bd5a0731fd1c4877a7f614fde57d085deb7f31ad31dccf54fd087883ab7a88f6baabb45fdf760003707fa09ddd826f66048af1826f00a0bb3aa7009b73082bb03fd2faeffa7fff58cfffcbcfffdfbc93f7f7d62d7</data>
     </image>
   </images>
-  <includes>
-    <include location="local">rs_pen.h</include>
-    <include location="local">qg_widgetpen.h</include>
-    <include location="local">qg_layerbox.h</include>
-    <include location="local">qg_widgetpen.h</include>
-  </includes>
   <connections>
     <connection>
       <sender>bOk</sender>
diff --git a/src/ui/forms/qg_dlgarc.ui.h b/src/ui/forms/qg_dlgarc.ui.h
deleted file mode 100644
index eb41ac5..0000000
--- a/src/ui/forms/qg_dlgarc.ui.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_DlgArc::setArc(RS_Arc& a) {
-    arc = &a;
-    //pen = arc->getPen();
-    wPen->setPen(arc->getPen(false), true, false, "Pen");
-    RS_Graphic* graphic = arc->getGraphic();
-    if (graphic!=NULL) {
-        cbLayer->init(*(graphic->getLayerList()), false, false);
-    }
-    RS_Layer* lay = arc->getLayer(false);
-    if (lay!=NULL) {
-        cbLayer->setLayer(*lay);
-    }
-    QString s;
-    s.setNum(arc->getCenter().x);
-    leCenterX->setText(s);
-    s.setNum(arc->getCenter().y);
-    leCenterY->setText(s);
-    s.setNum(arc->getRadius());
-    leRadius->setText(s);
-    s.setNum(RS_Math::rad2deg(arc->getAngle1()));
-    leAngle1->setText(s);
-    s.setNum(RS_Math::rad2deg(arc->getAngle2()));
-    leAngle2->setText(s);
-    cbReversed->setChecked(arc->isReversed());
-}
-
-void QG_DlgArc::updateArc() {
-    arc->setCenter(RS_Vector(RS_Math::eval(leCenterX->text()),
-                                  RS_Math::eval(leCenterY->text())));
-    arc->setRadius(RS_Math::eval(leRadius->text()));
-    arc->setAngle1(RS_Math::deg2rad(RS_Math::eval(leAngle1->text())));
-    arc->setAngle2(RS_Math::deg2rad(RS_Math::eval(leAngle2->text())));
-    arc->setReversed(cbReversed->isChecked());
-    arc->setPen(wPen->getPen());
-    arc->setLayer(cbLayer->currentText());
-    arc->calculateEndpoints();
-    arc->calculateBorders();
-}
-
diff --git a/src/ui/forms/qg_dlgattributes.cpp b/src/ui/forms/qg_dlgattributes.cpp
index 169b31e..f7e751c 100644
--- a/src/ui/forms/qg_dlgattributes.cpp
+++ b/src/ui/forms/qg_dlgattributes.cpp
@@ -25,12 +25,12 @@
 **********************************************************************/
 #include "qg_dlgattributes.h"
 
-#include <qvariant.h>
+/*#include <qvariant.h>
 #include "rs_graphic.h"
 #include "rs_layer.h"
 #include "qg_widgetpen.h"
-#include "qg_layerbox.h"
-#include "qg_dlgattributes.ui.h"
+#include "qg_layerbox.h"*/
+
 /*
  *  Constructs a QG_DlgAttributes as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
@@ -38,9 +38,10 @@
  *  The dialog will by default be modeless, unless you set 'modal' to
  *  true to construct a modal dialog.
  */
-QG_DlgAttributes::QG_DlgAttributes(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl)
-    : QDialog(parent, name, modal, fl)
+QG_DlgAttributes::QG_DlgAttributes(QWidget* parent, bool modal, Qt::WindowFlags fl)
+    : QDialog(parent, fl)
 {
+    setModal(modal);
     setupUi(this);
 
 }
@@ -62,3 +63,31 @@ void QG_DlgAttributes::languageChange()
     retranslateUi(this);
 }
 
+void QG_DlgAttributes::setData(RS_AttributesData* data, RS_LayerList& layerList) {
+    this->data = data;
+
+    //pen = line->getPen();
+    wPen->setPen(data->pen, true, true, "Pen");
+
+    //RS_Graphic* graphic = line->getGraphic();
+    //if (graphic!=NULL) {
+        cbLayer->init(layerList, false, true);
+    //}
+    //cbLayer->setLayer(data->layer);
+    //RS_Layer* lay = line->getLayer(false);
+    //if (lay!=NULL) {
+    //    cbLayer->setLayer(*lay);
+    //}
+}
+
+void QG_DlgAttributes::updateData() {
+    data->pen = wPen->getPen();
+    data->layer = cbLayer->currentText();
+
+    data->changeColor = !wPen->isColorUnchanged();
+    data->changeLineType = !wPen->isLineTypeUnchanged();
+    data->changeWidth = !wPen->isWidthUnchanged();
+
+    data->changeLayer = !cbLayer->isUnchanged();
+}
+
diff --git a/src/ui/forms/qg_dlgattributes.h b/src/ui/forms/qg_dlgattributes.h
index 9477483..1ca0764 100644
--- a/src/ui/forms/qg_dlgattributes.h
+++ b/src/ui/forms/qg_dlgattributes.h
@@ -27,13 +27,14 @@
 #define QG_DLGATTRIBUTES_H
 
 #include "ui_qg_dlgattributes.h"
+#include "rs_modification.h"
 
 class QG_DlgAttributes : public QDialog, public Ui::QG_DlgAttributes
 {
     Q_OBJECT
 
 public:
-    QG_DlgAttributes(QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WindowFlags fl = 0);
+    QG_DlgAttributes(QWidget* parent = 0, bool modal = false, Qt::WindowFlags fl = 0);
     ~QG_DlgAttributes();
 
 public slots:
diff --git a/src/ui/forms/qg_dlgattributes.ui b/src/ui/forms/qg_dlgattributes.ui
index 7e7c2ca..6fc4438 100644
--- a/src/ui/forms/qg_dlgattributes.ui
+++ b/src/ui/forms/qg_dlgattributes.ui
@@ -125,13 +125,6 @@
    <header>qg_layerbox.h</header>
   </customwidget>
  </customwidgets>
- <includes>
-  <include location="local">rs_pen.h</include>
-  <include location="local">qg_widgetpen.h</include>
-  <include location="local">rs_modification.h</include>
-  <include location="local">qg_layerbox.h</include>
-  <include location="local">qg_widgetpen.h</include>
- </includes>
  <resources>
   <include location="../../../res/extui/extui.qrc"/>
  </resources>
diff --git a/src/ui/forms/qg_dlgattributes.ui.h b/src/ui/forms/qg_dlgattributes.ui.h
deleted file mode 100644
index 955789e..0000000
--- a/src/ui/forms/qg_dlgattributes.ui.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_DlgAttributes::setData(RS_AttributesData* data, RS_LayerList& layerList) {
-    this->data = data;
-    
-    //pen = line->getPen();
-    wPen->setPen(data->pen, true, true, "Pen");
-    
-    //RS_Graphic* graphic = line->getGraphic();
-    //if (graphic!=NULL) {
-        cbLayer->init(layerList, false, true);
-    //}
-    //cbLayer->setLayer(data->layer);
-    //RS_Layer* lay = line->getLayer(false);
-    //if (lay!=NULL) {
-    //    cbLayer->setLayer(*lay);
-    //}
-}
-
-void QG_DlgAttributes::updateData() {
-    data->pen = wPen->getPen();
-    data->layer = cbLayer->currentText();
-    
-    data->changeColor = !wPen->isColorUnchanged();
-    data->changeLineType = !wPen->isLineTypeUnchanged();
-    data->changeWidth = !wPen->isWidthUnchanged();
-    
-    data->changeLayer = !cbLayer->isUnchanged();
-}
-
diff --git a/src/ui/forms/qg_dlgcircle.cpp b/src/ui/forms/qg_dlgcircle.cpp
index 85ab8ea..b70eb0e 100644
--- a/src/ui/forms/qg_dlgcircle.cpp
+++ b/src/ui/forms/qg_dlgcircle.cpp
@@ -25,13 +25,10 @@
 **********************************************************************/
 #include "qg_dlgcircle.h"
 
-#include <qvariant.h>
+
 #include "rs_circle.h"
 #include "rs_graphic.h"
-#include "rs_layer.h"
-#include "qg_widgetpen.h"
-#include "qg_layerbox.h"
-#include "qg_dlgcircle.ui.h"
+
 /*
  *  Constructs a QG_DlgCircle as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
@@ -39,9 +36,10 @@
  *  The dialog will by default be modeless, unless you set 'modal' to
  *  true to construct a modal dialog.
  */
-QG_DlgCircle::QG_DlgCircle(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl)
-    : QDialog(parent, name, modal, fl)
+QG_DlgCircle::QG_DlgCircle(QWidget* parent, bool modal, Qt::WindowFlags fl)
+    : QDialog(parent, fl)
 {
+    setModal(modal);
     setupUi(this);
 
 }
@@ -63,3 +61,33 @@ void QG_DlgCircle::languageChange()
     retranslateUi(this);
 }
 
+void QG_DlgCircle::setCircle(RS_Circle& c) {
+    circle = &c;
+    //pen = circle->getPen();
+    wPen->setPen(circle->getPen(false), true, false, "Pen");
+    RS_Graphic* graphic = circle->getGraphic();
+    if (graphic!=NULL) {
+        cbLayer->init(*(graphic->getLayerList()), false, false);
+    }
+    RS_Layer* lay = circle->getLayer(false);
+    if (lay!=NULL) {
+        cbLayer->setLayer(*lay);
+    }
+    QString s;
+    s.setNum(circle->getCenter().x);
+    leCenterX->setText(s);
+    s.setNum(circle->getCenter().y);
+    leCenterY->setText(s);
+    s.setNum(circle->getRadius());
+    leRadius->setText(s);
+}
+
+void QG_DlgCircle::updateCircle() {
+    circle->setCenter(RS_Vector(RS_Math::eval(leCenterX->text()),
+                                  RS_Math::eval(leCenterY->text())));
+    circle->setRadius(RS_Math::eval(leRadius->text()));
+    circle->setPen(wPen->getPen());
+    circle->setLayer(cbLayer->currentText());
+    circle->calculateBorders();
+}
+
diff --git a/src/ui/forms/qg_dlgcircle.h b/src/ui/forms/qg_dlgcircle.h
index 8cb29a4..a322839 100644
--- a/src/ui/forms/qg_dlgcircle.h
+++ b/src/ui/forms/qg_dlgcircle.h
@@ -35,7 +35,7 @@ class QG_DlgCircle : public QDialog, public Ui::QG_DlgCircle
     Q_OBJECT
 
 public:
-    QG_DlgCircle(QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WindowFlags fl = 0);
+    QG_DlgCircle(QWidget* parent = 0, bool modal = false, Qt::WindowFlags fl = 0);
     ~QG_DlgCircle();
 
 public slots:
diff --git a/src/ui/forms/qg_dlgcircle.ui b/src/ui/forms/qg_dlgcircle.ui
index 3472452..e26457a 100644
--- a/src/ui/forms/qg_dlgcircle.ui
+++ b/src/ui/forms/qg_dlgcircle.ui
@@ -75,7 +75,7 @@
             </layout>
           </item>
           <item>
-            <widget class="Q3ButtonGroup" name="buttonGroup8">
+            <widget class="QGroupBox" name="buttonGroup8">
               <property name="title">
                 <string>Geometry</string>
               </property>
@@ -270,12 +270,6 @@
       <data format="XPM.GZ" length="2926">789c9d95594f32591086effd15c4ba3393fae895ee4ce6824540141011b7c95cf406a202caa6f065fefb549faaea0b24996fc623cb937aeb3d55754e871f67a587eb6ee9ecc7c96a1dada74929798e96a5b374339bedfefceb8f9f27a7b65da27fcb724bf6e96f27a783752929f516f32c070402289b3fc39d8203c3136157e276c1260eac0f0ade0907927f2d9c58261f929cad72be0cef8535ff5959e277c201ef0fa02cf1ae7022f9efca12ff301ca81e87c21a5f32db5acf95b0eebfcdd92e2be3a5b0fa7986435bfd6e981d99278c0ae6795c288b3e2b98e3036157d8f839961308af985df51b1b0e9dc0098ddf5a3811fd7dceaee52a370d475e28f9b7ca1c07539f67173c144e65be2fcae2d763f62d89df2acb7cc282393e57b6b9ff58d893fca632c7d1ccc78bbcd48b4c7cc2ec4bfdf0aa2cfbf50be6fa2c65d9af2aacfd2c94e53cccf9fa7645eb7794a59ebdb027fe5565895f09cb7e981a267f9febaf3117fab6702af599e7a5e2049e6dce1377c25affa6608e4786e34a58894dfc8b59f5f890731087e28f2de648fbdb16ccfd6c9465bf7365c732f12f61ed3f5016fd4a59f4e6790fddd00a5d137f638eb4bfa532df5ffc148ea4be5ac17c5ea9b2ecd72b98efff403893fa1accb12d5c5696fd4d7f6152c41f95c53f2a98f56b6597fbf3857da9b75e30fb5584b59fa78239de5596fd3e0be6fdccf311b99115f1fcdaccb12fe77927ac7e2365f1c382793e63e14cfccdf3132571e69b1f07e83327d23fbac2bee4d785d57f2a9c89de9c6fecaa1fce98135bf845b9e2189e2a07e6fee287b0cfcf3bce9525ff5d38927a1bcca9cc1b66ca528ff93d89d338e3f9e182b9c86f31a752ff609d2f847f5f83b5ea31c218137a4f8fac0cc738e10cd6d3b7189f718a2ff88a6f38c339ad05adfcf31d3f7089ab037d42ea356e708b9ff8853bdc6395de6b58c706ad736c1ee823f2de608b146dbcc08e8976f012afb04b3975ec1de853aa2457f749d5c16b1ce00d0ecdf75b1ce1dd11fd1b55d236cef7f8808ff88465b4d02676d03da29f51dd9e513fa28f150c3004246d07002288bfe9e7d45f0712f22635a490d15ef730361e3b389c67aedf2390ea3157e73dc333e9a6f042d13ebc7ed32f6882405d3ee1c678030ee10d6630a76f162c8ee8f37adeb14c0aaa0b3e68b725ac80a2b039a29f630db6e46bc127d5fd45de4b5226b0833d8ea07a445f871ae96dacc218ead08073c835136842eba8be016db830e77a419f21aca143f76c025b9ae7e5813ea35bd5a0731fd1c4877a7f614fde57d085deb7f31ad31dccf54fd087883ab7a88f6baabb45fdf760003707fa09ddd826f66048af1826f00a0bb3aa7009b73082bb03fd2faeffa7fff58cfffcbcfffdfbc93f7f7d62d7</data>
     </image>
   </images>
-  <includes>
-    <include location="local">rs_pen.h</include>
-    <include location="local">qg_widgetpen.h</include>
-    <include location="local">qg_layerbox.h</include>
-    <include location="local">qg_widgetpen.h</include>
-  </includes>
   <connections>
     <connection>
       <sender>bOk</sender>
diff --git a/src/ui/forms/qg_dlgcircle.ui.h b/src/ui/forms/qg_dlgcircle.ui.h
deleted file mode 100644
index 5fa63bb..0000000
--- a/src/ui/forms/qg_dlgcircle.ui.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_DlgCircle::setCircle(RS_Circle& c) {
-    circle = &c;
-    //pen = circle->getPen();
-    wPen->setPen(circle->getPen(false), true, false, "Pen");
-    RS_Graphic* graphic = circle->getGraphic();
-    if (graphic!=NULL) {
-        cbLayer->init(*(graphic->getLayerList()), false, false);
-    }
-    RS_Layer* lay = circle->getLayer(false);
-    if (lay!=NULL) {
-        cbLayer->setLayer(*lay);
-    }
-    QString s;
-    s.setNum(circle->getCenter().x);
-    leCenterX->setText(s);
-    s.setNum(circle->getCenter().y);
-    leCenterY->setText(s);
-    s.setNum(circle->getRadius());
-    leRadius->setText(s);
-}
-
-void QG_DlgCircle::updateCircle() {
-    circle->setCenter(RS_Vector(RS_Math::eval(leCenterX->text()),
-                                  RS_Math::eval(leCenterY->text())));
-    circle->setRadius(RS_Math::eval(leRadius->text()));
-    circle->setPen(wPen->getPen());
-    circle->setLayer(cbLayer->currentText());
-    circle->calculateBorders();
-}
-
diff --git a/src/ui/forms/qg_dlgdimension.cpp b/src/ui/forms/qg_dlgdimension.cpp
index 93e272c..ae808d4 100644
--- a/src/ui/forms/qg_dlgdimension.cpp
+++ b/src/ui/forms/qg_dlgdimension.cpp
@@ -25,12 +25,8 @@
 **********************************************************************/
 #include "qg_dlgdimension.h"
 
-#include <qvariant.h>
-#include <qmessagebox.h>
-#include "qg_widgetpen.h"
-#include "qg_layerbox.h"
-#include "qg_dimensionlabeleditor.h"
-#include "qg_dlgdimension.ui.h"
+#include "rs_graphic.h"
+
 /*
  *  Constructs a QG_DlgDimension as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
@@ -38,9 +34,10 @@
  *  The dialog will by default be modeless, unless you set 'modal' to
  *  true to construct a modal dialog.
  */
-QG_DlgDimension::QG_DlgDimension(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl)
-    : QDialog(parent, name, modal, fl)
+QG_DlgDimension::QG_DlgDimension(QWidget* parent, bool modal, Qt::WindowFlags fl)
+    : QDialog(parent, fl)
 {
+    setModal(modal);
     setupUi(this);
 
 }
@@ -62,3 +59,22 @@ void QG_DlgDimension::languageChange()
     retranslateUi(this);
 }
 
+void QG_DlgDimension::setDim(RS_Dimension& d) {
+    dim = &d;
+    wPen->setPen(dim->getPen(false), true, false, "Pen");
+    RS_Graphic* graphic = dim->getGraphic();
+    if (graphic!=NULL) {
+        cbLayer->init(*(graphic->getLayerList()), false, false);
+    }
+    RS_Layer* lay = dim->getLayer(false);
+    if (lay!=NULL) {
+        cbLayer->setLayer(*lay);
+    }
+
+    wLabel->setLabel(dim->getLabel(false));
+}
+
+void QG_DlgDimension::updateDim() {
+    dim->setLabel(wLabel->getLabel());
+}
+
diff --git a/src/ui/forms/qg_dlgdimension.h b/src/ui/forms/qg_dlgdimension.h
index 77d1ec0..b667e65 100644
--- a/src/ui/forms/qg_dlgdimension.h
+++ b/src/ui/forms/qg_dlgdimension.h
@@ -27,13 +27,14 @@
 #define QG_DLGDIMENSION_H
 
 #include "ui_qg_dlgdimension.h"
+#include "rs_dimension.h"
 
 class QG_DlgDimension : public QDialog, public Ui::QG_DlgDimension
 {
     Q_OBJECT
 
 public:
-    QG_DlgDimension(QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WindowFlags fl = 0);
+    QG_DlgDimension(QWidget* parent = 0, bool modal = false, Qt::WindowFlags fl = 0);
     ~QG_DlgDimension();
 
 public slots:
diff --git a/src/ui/forms/qg_dlgdimension.ui b/src/ui/forms/qg_dlgdimension.ui
index 441b3ae..cdd28c1 100644
--- a/src/ui/forms/qg_dlgdimension.ui
+++ b/src/ui/forms/qg_dlgdimension.ui
@@ -187,14 +187,6 @@
       <data format="XPM.GZ" length="2926">789c9d95594f32591086effd15c4ba3393fae895ee4ce6824540141011b7c95cf406a202caa6f065fefb549faaea0b24996fc623cb937aeb3d55754e871f67a587eb6ee9ecc7c96a1dada74929798e96a5b374339bedfefceb8f9f27a7b65da27fcb724bf6e96f27a783752929f516f32c070402289b3fc39d8203c3136157e276c1260eac0f0ade0907927f2d9c58261f929cad72be0cef8535ff5959e277c201ef0fa02cf1ae7022f9efca12ff301ca81e87c21a5f32db5acf95b0eebfcdd92e2be3a5b0fa7986435bfd6e981d99278c0ae6795c288b3e2b98e3036157d8f839961308af985df51b1b0e9dc0098ddf5a3811fd7dceaee52a370d475e28f9b7ca1c07539f67173c144e65be2fcae2d763f62d89df2acb7cc282393e57b6b9ff58d893fca632c7d1ccc78bbcd48b4c7cc2ec4bfdf0aa2cfbf50be6fa2c65d9af2aacfd2c94e53cccf9fa7645eb7794a59ebdb027fe5565895f09cb7e981a267f9febaf3117fab6702af599e7a5e2049e6dce1377c25affa6608e4786e34a58894dfc8b59f5f890731087e28f2de648fbdb16ccfd6c9465bf7365c732f12f61ed3f5016fd4a59f4e6790fddd00a5d137f638eb4bfa532df5ffc148ea4be5ac17c5ea9b2ecd72b98efff403893fa1accb12d5c5696fd4d7f6152c41f95c53f2a98f56b6597fbf3857da9b75e30fb5584b59fa78239de5596fd3e0be6fdccf311b99115f1fcdaccb12fe77927ac7e2365f1c382793e63e14cfccdf3132571e69b1f07e83327d23fbac2bee4d785d57f2a9c89de9c6fecaa1fce98135bf845b9e2189e2a07e6fee287b0cfcf3bce9525ff5d38927a1bcca9cc1b66ca528ff93d89d338e3f9e182b9c86f31a752ff609d2f847f5f83b5ea31c218137a4f8fac0cc738e10cd6d3b7189f718a2ff88a6f38c339ad05adfcf31d3f7089ab037d42ea356e708b9ff8853bdc6395de6b58c706ad736c1ee823f2de608b146dbcc08e8976f012afb04b3975ec1de853aa2457f749d5c16b1ce00d0ecdf75b1ce1dd11fd1b55d236cef7f8808ff88465b4d02676d03da29f51dd9e513fa28f150c3004246d07002288bfe9e7d45f0712f22635a490d15ef730361e3b389c67aedf2390ea3157e73dc333e9a6f042d13ebc7ed32f6882405d3ee1c678030ee10d6630a76f162c8ee8f37adeb14c0aaa0b3e68b725ac80a2b039a29f630db6e46bc127d5fd45de4b5226b0833d8ea07a445f871ae96dacc218ead08073c835136842eba8be016db830e77a419f21aca143f76c025b9ae7e5813ea35bd5a0731fd1c4877a7f614fde57d085deb7f31ad31dccf54fd087883ab7a88f6baabb45fdf760003707fa09ddd826f66048af1826f00a0bb3aa7009b73082bb03fd2faeffa7fff58cfffcbcfffdfbc93f7f7d62d7</data>
     </image>
   </images>
-  <includes>
-    <include location="local">rs_dimension.h</include>
-    <include location="local">rs.h</include>
-    <include location="local">rs_graphic.h</include>
-    <include location="local">qg_layerbox.h</include>
-    <include location="local">qg_widgetpen.h</include>
-    <include location="local">qg_dimensionlabeleditor.h</include>
-  </includes>
   <connections>
     <connection>
       <sender>bCancel</sender>
diff --git a/src/ui/forms/qg_dlgdimension.ui.h b/src/ui/forms/qg_dlgdimension.ui.h
deleted file mode 100644
index 950aa3a..0000000
--- a/src/ui/forms/qg_dlgdimension.ui.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_DlgDimension::setDim(RS_Dimension& d) {
-    dim = &d;
-    wPen->setPen(dim->getPen(false), true, false, "Pen");
-    RS_Graphic* graphic = dim->getGraphic();
-    if (graphic!=NULL) {
-        cbLayer->init(*(graphic->getLayerList()), false, false);
-    }
-    RS_Layer* lay = dim->getLayer(false);
-    if (lay!=NULL) {
-        cbLayer->setLayer(*lay);
-    }
-    
-    wLabel->setLabel(dim->getLabel(false));
-}
-
-void QG_DlgDimension::updateDim() {
-    dim->setLabel(wLabel->getLabel());
-}
-
diff --git a/src/ui/forms/qg_dlgdimlinear.cpp b/src/ui/forms/qg_dlgdimlinear.cpp
index 19de18c..e997664 100644
--- a/src/ui/forms/qg_dlgdimlinear.cpp
+++ b/src/ui/forms/qg_dlgdimlinear.cpp
@@ -25,12 +25,8 @@
 **********************************************************************/
 #include "qg_dlgdimlinear.h"
 
-#include <qvariant.h>
-#include <qmessagebox.h>
-#include "qg_widgetpen.h"
-#include "qg_layerbox.h"
-#include "qg_dimensionlabeleditor.h"
-#include "qg_dlgdimlinear.ui.h"
+#include "rs_graphic.h"
+
 /*
  *  Constructs a QG_DlgDimLinear as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
@@ -38,9 +34,10 @@
  *  The dialog will by default be modeless, unless you set 'modal' to
  *  true to construct a modal dialog.
  */
-QG_DlgDimLinear::QG_DlgDimLinear(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl)
-    : QDialog(parent, name, modal, fl)
+QG_DlgDimLinear::QG_DlgDimLinear(QWidget* parent, bool modal, Qt::WindowFlags fl)
+    : QDialog(parent, fl)
 {
+    setModal(modal);
     setupUi(this);
 
 }
@@ -62,3 +59,24 @@ void QG_DlgDimLinear::languageChange()
     retranslateUi(this);
 }
 
+void QG_DlgDimLinear::setDim(RS_DimLinear& d) {
+    dim = &d;
+    wPen->setPen(dim->getPen(false), true, false, "Pen");
+    RS_Graphic* graphic = dim->getGraphic();
+    if (graphic!=NULL) {
+        cbLayer->init(*(graphic->getLayerList()), false, false);
+    }
+    RS_Layer* lay = dim->getLayer(false);
+    if (lay!=NULL) {
+        cbLayer->setLayer(*lay);
+    }
+
+    wLabel->setLabel(dim->getLabel(false));
+    leAngle->setText(QString("%1").arg(RS_Math::rad2deg(dim->getAngle())));
+}
+
+void QG_DlgDimLinear::updateDim() {
+    dim->setLabel(wLabel->getLabel());
+    dim->setAngle(RS_Math::deg2rad(RS_Math::eval(leAngle->text(), 0.0)));
+}
+
diff --git a/src/ui/forms/qg_dlgdimlinear.h b/src/ui/forms/qg_dlgdimlinear.h
index 5514429..e400d53 100644
--- a/src/ui/forms/qg_dlgdimlinear.h
+++ b/src/ui/forms/qg_dlgdimlinear.h
@@ -27,13 +27,14 @@
 #define QG_DLGDIMLINEAR_H
 
 #include "ui_qg_dlgdimlinear.h"
+#include "rs_dimlinear.h"
 
 class QG_DlgDimLinear : public QDialog, public Ui::QG_DlgDimLinear
 {
     Q_OBJECT
 
 public:
-    QG_DlgDimLinear(QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WindowFlags fl = 0);
+    QG_DlgDimLinear(QWidget* parent = 0, bool modal = false, Qt::WindowFlags fl = 0);
     ~QG_DlgDimLinear();
 
 public slots:
diff --git a/src/ui/forms/qg_dlgdimlinear.ui b/src/ui/forms/qg_dlgdimlinear.ui
index e437c48..6b6ca5a 100644
--- a/src/ui/forms/qg_dlgdimlinear.ui
+++ b/src/ui/forms/qg_dlgdimlinear.ui
@@ -81,7 +81,7 @@
                 <widget class="QG_DimensionLabelEditor" name="wLabel"/>
               </item>
               <item>
-                <widget class="Q3ButtonGroup" name="bgGeometry">
+                <widget class="QGroupBox" name="bgGeometry">
                   <property name="title">
                     <string>Geometry</string>
                   </property>
@@ -251,14 +251,6 @@
       <data format="XPM.GZ" length="2926">789c9d95594f32591086effd15c4ba3393fae895ee4ce6824540141011b7c95cf406a202caa6f065fefb549faaea0b24996fc623cb937aeb3d55754e871f67a587eb6ee9ecc7c96a1dada74929798e96a5b374339bedfefceb8f9f27a7b65da27fcb724bf6e96f27a783752929f516f32c070402289b3fc39d8203c3136157e276c1260eac0f0ade0907927f2d9c58261f929cad72be0cef8535ff5959e277c201ef0fa02cf1ae7022f9efca12ff301ca81e87c21a5f32db5acf95b0eebfcdd92e2be3a5b0fa7986435bfd6e981d99278c0ae6795c288b3e2b98e3036157d8f839961308af985df51b1b0e9dc0098ddf5a3811fd7dceaee52a370d475e28f9b7ca1c07539f67173c144e65be2fcae2d763f62d89df2acb7cc282393e57b6b9ff58d893fca632c7d1ccc78bbcd48b4c7cc2ec4bfdf0aa2cfbf50be6fa2c65d9af2aacfd2c94e53cccf9fa7645eb7794a59ebdb027fe5565895f09cb7e981a267f9febaf3117fab6702af599e7a5e2049e6dce1377c25affa6608e4786e34a58894dfc8b59f5f890731087e28f2de648fbdb16ccfd6c9465bf7365c732f12f61ed3f5016fd4a59f4e6790fddd00a5d137f638eb4bfa532df5ffc148ea4be5ac17c5ea9b2ecd72b98efff403893fa1accb12d5c5696fd4d7f6152c41f95c53f2a98f56b6597fbf3857da9b75e30fb5584b59fa78239de5596fd3e0be6fdccf311b99115f1fcdaccb12fe77927ac7e2365f1c382793e63e14cfccdf3132571e69b1f07e83327d23fbac2bee4d785d57f2a9c89de9c6fecaa1fce98135bf845b9e2189e2a07e6fee287b0cfcf3bce9525ff5d38927a1bcca9cc1b66ca528ff93d89d338e3f9e182b9c86f31a752ff609d2f847f5f83b5ea31c218137a4f8fac0cc738e10cd6d3b7189f718a2ff88a6f38c339ad05adfcf31d3f7089ab037d42ea356e708b9ff8853bdc6395de6b58c706ad736c1ee823f2de608b146dbcc08e8976f012afb04b3975ec1de853aa2457f749d5c16b1ce00d0ecdf75b1ce1dd11fd1b55d236cef7f8808ff88465b4d02676d03da29f51dd9e513fa28f150c3004246d07002288bfe9e7d45f0712f22635a490d15ef730361e3b389c67aedf2390ea3157e73dc333e9a6f042d13ebc7ed32f6882405d3ee1c678030ee10d6630a76f162c8ee8f37adeb14c0aaa0b3e68b725ac80a2b039a29f630db6e46bc127d5fd45de4b5226b0833d8ea07a445f871ae96dacc218ead08073c835136842eba8be016db830e77a419f21aca143f76c025b9ae7e5813ea35bd5a0731fd1c4877a7f614fde57d085deb7f31ad31dccf54fd087883ab7a88f6baabb45fdf760003707fa09ddd826f66048af1826f00a0bb3aa7009b73082bb03fd2faeffa7fff58cfffcbcfffdfbc93f7f7d62d7</data>
     </image>
   </images>
-  <includes>
-    <include location="local">rs_dimlinear.h</include>
-    <include location="local">rs.h</include>
-    <include location="local">rs_graphic.h</include>
-    <include location="local">qg_layerbox.h</include>
-    <include location="local">qg_widgetpen.h</include>
-    <include location="local">qg_dimensionlabeleditor.h</include>
-  </includes>
   <connections>
     <connection>
       <sender>bCancel</sender>
diff --git a/src/ui/forms/qg_dlgdimlinear.ui.h b/src/ui/forms/qg_dlgdimlinear.ui.h
deleted file mode 100644
index 6ac2797..0000000
--- a/src/ui/forms/qg_dlgdimlinear.ui.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_DlgDimLinear::setDim(RS_DimLinear& d) {
-    dim = &d;
-    wPen->setPen(dim->getPen(false), true, false, "Pen");
-    RS_Graphic* graphic = dim->getGraphic();
-    if (graphic!=NULL) {
-        cbLayer->init(*(graphic->getLayerList()), false, false);
-    }
-    RS_Layer* lay = dim->getLayer(false);
-    if (lay!=NULL) {
-        cbLayer->setLayer(*lay);
-    }
-    
-    wLabel->setLabel(dim->getLabel(false));
-    leAngle->setText(QString("%1").arg(RS_Math::rad2deg(dim->getAngle())));
-}
-
-void QG_DlgDimLinear::updateDim() {
-    dim->setLabel(wLabel->getLabel());
-    dim->setAngle(RS_Math::deg2rad(RS_Math::eval(leAngle->text(), 0.0)));
-}
-
diff --git a/src/ui/forms/qg_dlgellipse.cpp b/src/ui/forms/qg_dlgellipse.cpp
index 13993d2..98fb3da 100644
--- a/src/ui/forms/qg_dlgellipse.cpp
+++ b/src/ui/forms/qg_dlgellipse.cpp
@@ -25,13 +25,9 @@
 **********************************************************************/
 #include "qg_dlgellipse.h"
 
-#include <qvariant.h>
 #include "rs_ellipse.h"
 #include "rs_graphic.h"
-#include "rs_layer.h"
-#include "qg_widgetpen.h"
-#include "qg_layerbox.h"
-#include "qg_dlgellipse.ui.h"
+
 /*
  *  Constructs a QG_DlgEllipse as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
@@ -39,9 +35,10 @@
  *  The dialog will by default be modeless, unless you set 'modal' to
  *  true to construct a modal dialog.
  */
-QG_DlgEllipse::QG_DlgEllipse(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl)
-    : QDialog(parent, name, modal, fl)
+QG_DlgEllipse::QG_DlgEllipse(QWidget* parent, bool modal, Qt::WindowFlags fl)
+    : QDialog(parent, fl)
 {
+    setModal(modal);
     setupUi(this);
 
 }
@@ -63,3 +60,53 @@ void QG_DlgEllipse::languageChange()
     retranslateUi(this);
 }
 
+void QG_DlgEllipse::setEllipse(RS_Ellipse& e) {
+    ellipse = &e;
+    //pen = ellipse->getPen();
+    wPen->setPen(ellipse->getPen(false), true, false, "Pen");
+    RS_Graphic* graphic = ellipse->getGraphic();
+    if (graphic!=NULL) {
+        cbLayer->init(*(graphic->getLayerList()), false, false);
+    }
+    RS_Layer* lay = ellipse->getLayer(false);
+    if (lay!=NULL) {
+        cbLayer->setLayer(*lay);
+    }
+    QString s;
+    s.setNum(ellipse->getCenter().x);
+    leCenterX->setText(s);
+    s.setNum(ellipse->getCenter().y);
+    leCenterY->setText(s);
+    s.setNum(ellipse->getMajorP().magnitude());
+    leMajor->setText(s);
+    s.setNum(ellipse->getMajorP().magnitude()*ellipse->getRatio());
+    leMinor->setText(s);
+    s.setNum(RS_Math::rad2deg(ellipse->getMajorP().angle()));
+    leRotation->setText(s);
+    s.setNum(RS_Math::rad2deg(ellipse->getAngle1()));
+    leAngle1->setText(s);
+    s.setNum(RS_Math::rad2deg(ellipse->getAngle2()));
+    leAngle2->setText(s);
+    cbReversed->setChecked(ellipse->isReversed());
+}
+
+void QG_DlgEllipse::updateEllipse() {
+    ellipse->setCenter(RS_Vector(RS_Math::eval(leCenterX->text()),
+                                  RS_Math::eval(leCenterY->text())));
+    RS_Vector v;
+    v.setPolar(RS_Math::eval(leMajor->text()),
+               RS_Math::deg2rad(RS_Math::eval(leRotation->text())));
+    ellipse->setMajorP(v);
+    if (RS_Math::eval(leMajor->text())>1.0e-6) {
+        ellipse->setRatio(RS_Math::eval(leMinor->text())/RS_Math::eval(leMajor->text()));
+    }
+    else {
+        ellipse->setRatio(1.0);
+    }
+    ellipse->setAngle1(RS_Math::deg2rad(RS_Math::eval(leAngle1->text())));
+    ellipse->setAngle2(RS_Math::deg2rad(RS_Math::eval(leAngle2->text())));
+    ellipse->setReversed(cbReversed->isChecked());
+    ellipse->setPen(wPen->getPen());
+    ellipse->setLayer(cbLayer->currentText());
+}
+
diff --git a/src/ui/forms/qg_dlgellipse.h b/src/ui/forms/qg_dlgellipse.h
index 8adce94..8b6bff3 100644
--- a/src/ui/forms/qg_dlgellipse.h
+++ b/src/ui/forms/qg_dlgellipse.h
@@ -35,7 +35,7 @@ class QG_DlgEllipse : public QDialog, public Ui::QG_DlgEllipse
     Q_OBJECT
 
 public:
-    QG_DlgEllipse(QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WindowFlags fl = 0);
+    QG_DlgEllipse(QWidget* parent = 0, bool modal = false, Qt::WindowFlags fl = 0);
     ~QG_DlgEllipse();
 
 public slots:
diff --git a/src/ui/forms/qg_dlgellipse.ui b/src/ui/forms/qg_dlgellipse.ui
index a844a3d..d6d4862 100644
--- a/src/ui/forms/qg_dlgellipse.ui
+++ b/src/ui/forms/qg_dlgellipse.ui
@@ -75,7 +75,7 @@
             </layout>
           </item>
           <item>
-            <widget class="Q3ButtonGroup" name="buttonGroup8">
+            <widget class="QGroupBox" name="buttonGroup8">
               <property name="title">
                 <string>Geometry</string>
               </property>
@@ -362,12 +362,6 @@
       <data format="XPM.GZ" length="2926">789c9d95594f32591086effd15c4ba3393fae895ee4ce6824540141011b7c95cf406a202caa6f065fefb549faaea0b24996fc623cb937aeb3d55754e871f67a587eb6ee9ecc7c96a1dada74929798e96a5b374339bedfefceb8f9f27a7b65da27fcb724bf6e96f27a783752929f516f32c070402289b3fc39d8203c3136157e276c1260eac0f0ade0907927f2d9c58261f929cad72be0cef8535ff5959e277c201ef0fa02cf1ae7022f9efca12ff301ca81e87c21a5f32db5acf95b0eebfcdd92e2be3a5b0fa7986435bfd6e981d99278c0ae6795c288b3e2b98e3036157d8f839961308af985df51b1b0e9dc0098ddf5a3811fd7dceaee52a370d475e28f9b7ca1c07539f67173c144e65be2fcae2d763f62d89df2acb7cc282393e57b6b9ff58d893fca632c7d1ccc78bbcd48b4c7cc2ec4bfdf0aa2cfbf50be6fa2c65d9af2aacfd2c94e53cccf9fa7645eb7794a59ebdb027fe5565895f09cb7e981a267f9febaf3117fab6702af599e7a5e2049e6dce1377c25affa6608e4786e34a58894dfc8b59f5f890731087e28f2de648fbdb16ccfd6c9465bf7365c732f12f61ed3f5016fd4a59f4e6790fddd00a5d137f638eb4bfa532df5ffc148ea4be5ac17c5ea9b2ecd72b98efff403893fa1accb12d5c5696fd4d7f6152c41f95c53f2a98f56b6597fbf3857da9b75e30fb5584b59fa78239de5596fd3e0be6fdccf311b99115f1fcdaccb12fe77927ac7e2365f1c382793e63e14cfccdf3132571e69b1f07e83327d23fbac2bee4d785d57f2a9c89de9c6fecaa1fce98135bf845b9e2189e2a07e6fee287b0cfcf3bce9525ff5d38927a1bcca9cc1b66ca528ff93d89d338e3f9e182b9c86f31a752ff609d2f847f5f83b5ea31c218137a4f8fac0cc738e10cd6d3b7189f718a2ff88a6f38c339ad05adfcf31d3f7089ab037d42ea356e708b9ff8853bdc6395de6b58c706ad736c1ee823f2de608b146dbcc08e8976f012afb04b3975ec1de853aa2457f749d5c16b1ce00d0ecdf75b1ce1dd11fd1b55d236cef7f8808ff88465b4d02676d03da29f51dd9e513fa28f150c3004246d07002288bfe9e7d45f0712f22635a490d15ef730361e3b389c67aedf2390ea3157e73dc333e9a6f042d13ebc7ed32f6882405d3ee1c678030ee10d6630a76f162c8ee8f37adeb14c0aaa0b3e68b725ac80a2b039a29f630db6e46bc127d5fd45de4b5226b0833d8ea07a445f871ae96dacc218ead08073c835136842eba8be016db830e77a419f21aca143f76c025b9ae7e5813ea35bd5a0731fd1c4877a7f614fde57d085deb7f31ad31dccf54fd087883ab7a88f6baabb45fdf760003707fa09ddd826f66048af1826f00a0bb3aa7009b73082bb03fd2faeffa7fff58cfffcbcfffdfbc93f7f7d62d7</data>
     </image>
   </images>
-  <includes>
-    <include location="local">rs_pen.h</include>
-    <include location="local">qg_widgetpen.h</include>
-    <include location="local">qg_layerbox.h</include>
-    <include location="local">qg_widgetpen.h</include>
-  </includes>
   <connections>
     <connection>
       <sender>bOk</sender>
diff --git a/src/ui/forms/qg_dlgellipse.ui.h b/src/ui/forms/qg_dlgellipse.ui.h
deleted file mode 100644
index f4acec4..0000000
--- a/src/ui/forms/qg_dlgellipse.ui.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_DlgEllipse::setEllipse(RS_Ellipse& e) {
-    ellipse = &e;
-    //pen = ellipse->getPen();
-    wPen->setPen(ellipse->getPen(false), true, false, "Pen");
-    RS_Graphic* graphic = ellipse->getGraphic();
-    if (graphic!=NULL) {
-        cbLayer->init(*(graphic->getLayerList()), false, false);
-    }
-    RS_Layer* lay = ellipse->getLayer(false);
-    if (lay!=NULL) {
-        cbLayer->setLayer(*lay);
-    }
-    QString s;
-    s.setNum(ellipse->getCenter().x);
-    leCenterX->setText(s);
-    s.setNum(ellipse->getCenter().y);
-    leCenterY->setText(s);
-    s.setNum(ellipse->getMajorP().magnitude());
-    leMajor->setText(s);
-    s.setNum(ellipse->getMajorP().magnitude()*ellipse->getRatio());
-    leMinor->setText(s);
-    s.setNum(RS_Math::rad2deg(ellipse->getMajorP().angle()));
-    leRotation->setText(s);
-    s.setNum(RS_Math::rad2deg(ellipse->getAngle1()));
-    leAngle1->setText(s);
-    s.setNum(RS_Math::rad2deg(ellipse->getAngle2()));
-    leAngle2->setText(s);
-    cbReversed->setChecked(ellipse->isReversed());
-}
-
-void QG_DlgEllipse::updateEllipse() {
-    ellipse->setCenter(RS_Vector(RS_Math::eval(leCenterX->text()),
-                                  RS_Math::eval(leCenterY->text())));
-    RS_Vector v;
-    v.setPolar(RS_Math::eval(leMajor->text()), 
-               RS_Math::deg2rad(RS_Math::eval(leRotation->text())));
-    ellipse->setMajorP(v);
-    if (RS_Math::eval(leMajor->text())>1.0e-6) {
-    	ellipse->setRatio(RS_Math::eval(leMinor->text())/RS_Math::eval(leMajor->text()));
-    }
-    else {
-        ellipse->setRatio(1.0);
-    }
-    ellipse->setAngle1(RS_Math::deg2rad(RS_Math::eval(leAngle1->text())));
-    ellipse->setAngle2(RS_Math::deg2rad(RS_Math::eval(leAngle2->text())));
-    ellipse->setReversed(cbReversed->isChecked());
-    ellipse->setPen(wPen->getPen());
-    ellipse->setLayer(cbLayer->currentText());
-}
-
diff --git a/src/ui/forms/qg_dlghatch.cpp b/src/ui/forms/qg_dlghatch.cpp
index 3cf557b..d52ec16 100644
--- a/src/ui/forms/qg_dlghatch.cpp
+++ b/src/ui/forms/qg_dlghatch.cpp
@@ -25,10 +25,8 @@
 **********************************************************************/
 #include "qg_dlghatch.h"
 
-#include <qvariant.h>
-#include "qg_patternbox.h"
-#include "qg_graphicview.h"
-#include "qg_dlghatch.ui.h"
+#include "rs_settings.h"
+
 /*
  *  Constructs a QG_DlgHatch as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
@@ -36,9 +34,10 @@
  *  The dialog will by default be modeless, unless you set 'modal' to
  *  true to construct a modal dialog.
  */
-QG_DlgHatch::QG_DlgHatch(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl)
-    : QDialog(parent, name, modal, fl)
+QG_DlgHatch::QG_DlgHatch(QWidget* parent, bool modal, Qt::WindowFlags fl)
+    : QDialog(parent, fl)
 {
+    setModal(modal);
     setupUi(this);
 
     init();
@@ -62,3 +61,152 @@ void QG_DlgHatch::languageChange()
     retranslateUi(this);
 }
 
+void QG_DlgHatch::init() {
+    pattern=NULL;
+    hatch = NULL;
+    isNew = false;
+
+    preview = new RS_EntityContainer();
+    gvPreview->setContainer(preview);
+    gvPreview->setBorders(15,15,15,15);
+
+    cbPattern->init();
+
+}
+
+void QG_DlgHatch::polish() {
+    QDialog::polish();
+    gvPreview->zoomAuto();
+}
+
+void QG_DlgHatch::showEvent ( QShowEvent * e) {
+    QDialog::showEvent(e);
+    gvPreview->zoomAuto();
+}
+
+void QG_DlgHatch::destroy() {
+    if (isNew) {
+        RS_SETTINGS->beginGroup("/Draw");
+        RS_SETTINGS->writeEntry("/HatchSolid", (int)cbSolid->isChecked());
+        RS_SETTINGS->writeEntry("/HatchPattern", cbPattern->currentText());
+        RS_SETTINGS->writeEntry("/HatchScale", leScale->text());
+        RS_SETTINGS->writeEntry("/HatchAngle", leAngle->text());
+        RS_SETTINGS->writeEntry("/HatchPreview",
+                                (int)cbEnablePreview->isChecked());
+        RS_SETTINGS->endGroup();
+    }
+        delete preview;
+}
+
+
+void QG_DlgHatch::setHatch(RS_Hatch& h, bool isNew) {
+    hatch = &h;
+    this->isNew = isNew;
+
+    RS_SETTINGS->beginGroup("/Draw");
+    QString enablePrev = RS_SETTINGS->readEntry("/HatchPreview", "0");
+    RS_SETTINGS->endGroup();
+
+    cbEnablePreview->setChecked(enablePrev=="1");
+
+    // read defaults from config file:
+    if (isNew) {
+        RS_SETTINGS->beginGroup("/Draw");
+        QString solid = RS_SETTINGS->readEntry("/HatchSolid", "0");
+        QString pat = RS_SETTINGS->readEntry("/HatchPattern", "ANSI31");
+        QString scale = RS_SETTINGS->readEntry("/HatchScale", "1.0");
+        QString angle = RS_SETTINGS->readEntry("/HatchAngle", "0.0");
+        RS_SETTINGS->endGroup();
+
+        cbSolid->setChecked(solid=="1");
+        setPattern(pat);
+        leScale->setText(scale);
+        leAngle->setText(angle);
+    }
+    // initialize dialog based on given hatch:
+    else {
+        cbSolid->setChecked(hatch->isSolid());
+        setPattern(hatch->getPattern());
+        QString s;
+        s.setNum(hatch->getScale());
+        leScale->setText(s);
+        s.setNum(RS_Math::rad2deg(hatch->getAngle()));
+        leAngle->setText(s);
+    }
+}
+
+void QG_DlgHatch::updateHatch() {
+    if (hatch!=NULL) {
+        hatch->setSolid(cbSolid->isChecked());
+        hatch->setPattern(cbPattern->currentText());
+        hatch->setScale(RS_Math::eval(leScale->text()));
+        hatch->setAngle(RS_Math::deg2rad(RS_Math::eval(leAngle->text())));
+    }
+}
+
+void QG_DlgHatch::setPattern(const QString& p) {
+    if (!RS_PATTERNLIST->contains(p)) {
+        cbPattern->insertItem(p);
+    }
+    cbPattern->setCurrentText(p);
+    pattern = cbPattern->getPattern();
+}
+
+void QG_DlgHatch::resizeEvent ( QResizeEvent * ) {
+    updatePreview(NULL);
+}
+
+void QG_DlgHatch::updatePreview() {
+    updatePreview(NULL);
+}
+
+void QG_DlgHatch::updatePreview(RS_Pattern* ) {
+    if (preview==NULL) {
+        return;
+    }
+    if (hatch==NULL || !cbEnablePreview->isChecked()) {
+        preview->clear();
+        gvPreview->zoomAuto();
+        return;
+    }
+
+    QString patName = cbPattern->currentText();
+    bool isSolid = cbSolid->isChecked();
+    double prevSize;
+    //double scale = RS_Math::eval(leScale->text(), 1.0);
+    double angle = RS_Math::deg2rad(RS_Math::eval(leAngle->text(), 0.0));
+    if (pattern!=NULL) {
+        prevSize = pattern->getSize().x*10;
+    } else {
+        prevSize = 10.0;
+    }
+
+    preview->clear();
+
+    RS_Hatch* prevHatch = new RS_Hatch(preview,
+                                       RS_HatchData(isSolid, 0.2, angle, patName));
+    prevHatch->setPen(hatch->getPen());
+
+    RS_EntityContainer* loop = new RS_EntityContainer(prevHatch);
+    loop->setPen(RS_Pen(RS2::FlagInvalid));
+    loop->addEntity(new RS_Line(loop,
+                                RS_LineData(RS_Vector(0.0,0.0),
+                                            RS_Vector(10.0,0.0))));
+    loop->addEntity(new RS_Line(loop,
+                                RS_LineData(RS_Vector(10.0,0.0),
+                                            RS_Vector(10.0,10.0))));
+    loop->addEntity(new RS_Line(loop,
+                                RS_LineData(RS_Vector(10.0,10.0),
+                                            RS_Vector(0.0,10.0))));
+    loop->addEntity(new RS_Line(loop,
+                                RS_LineData(RS_Vector(0.0,10.0),
+                                            RS_Vector(0.0,0.0))));
+    prevHatch->addEntity(loop);
+    preview->addEntity(prevHatch);
+    if (!isSolid) {
+        prevHatch->update();
+    }
+
+    gvPreview->zoomAuto();
+
+}
diff --git a/src/ui/forms/qg_dlghatch.h b/src/ui/forms/qg_dlghatch.h
index 602d3b5..dcf9ea7 100644
--- a/src/ui/forms/qg_dlghatch.h
+++ b/src/ui/forms/qg_dlghatch.h
@@ -27,13 +27,14 @@
 #define QG_DLGHATCH_H
 
 #include "ui_qg_dlghatch.h"
+#include "rs_hatch.h"
 
 class QG_DlgHatch : public QDialog, public Ui::QG_DlgHatch
 {
     Q_OBJECT
 
 public:
-    QG_DlgHatch(QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WindowFlags fl = 0);
+    QG_DlgHatch(QWidget* parent = 0, bool modal = false, Qt::WindowFlags fl = 0);
     ~QG_DlgHatch();
 
 public slots:
diff --git a/src/ui/forms/qg_dlghatch.ui b/src/ui/forms/qg_dlghatch.ui
index c491b4c..fd26cd7 100644
--- a/src/ui/forms/qg_dlghatch.ui
+++ b/src/ui/forms/qg_dlghatch.ui
@@ -20,7 +20,7 @@
       <item>
         <layout class="QHBoxLayout">
           <item>
-            <widget class="Q3ButtonGroup" name="bgParameter">
+            <widget class="QGroupBox" name="bgParameter">
               <property name="title">
                 <string>Pattern</string>
               </property>
@@ -65,7 +65,7 @@
             </widget>
           </item>
           <item>
-            <widget class="Q3ButtonGroup" name="bgPreview">
+            <widget class="QGroupBox" name="bgPreview">
               <property name="title">
                 <string>Preview</string>
               </property>
@@ -188,16 +188,6 @@
       <data format="XPM.GZ" length="2926">789c9d95594f32591086effd15c4ba3393fae895ee4ce6824540141011b7c95cf406a202caa6f065fefb549faaea0b24996fc623cb937aeb3d55754e871f67a587eb6ee9ecc7c96a1dada74929798e96a5b374339bedfefceb8f9f27a7b65da27fcb724bf6e96f27a783752929f516f32c070402289b3fc39d8203c3136157e276c1260eac0f0ade0907927f2d9c58261f929cad72be0cef8535ff5959e277c201ef0fa02cf1ae7022f9efca12ff301ca81e87c21a5f32db5acf95b0eebfcdd92e2be3a5b0fa7986435bfd6e981d99278c0ae6795c288b3e2b98e3036157d8f839961308af985df51b1b0e9dc0098ddf5a3811fd7dceaee52a370d475e28f9b7ca1c07539f67173c144e65be2fcae2d763f62d89df2acb7cc282393e57b6b9ff58d893fca632c7d1ccc78bbcd48b4c7cc2ec4bfdf0aa2cfbf50be6fa2c65d9af2aacfd2c94e53cccf9fa7645eb7794a59ebdb027fe5565895f09cb7e981a267f9febaf3117fab6702af599e7a5e2049e6dce1377c25affa6608e4786e34a58894dfc8b59f5f890731087e28f2de648fbdb16ccfd6c9465bf7365c732f12f61ed3f5016fd4a59f4e6790fddd00a5d137f638eb4bfa532df5ffc148ea4be5ac17c5ea9b2ecd72b98efff403893fa1accb12d5c5696fd4d7f6152c41f95c53f2a98f56b6597fbf3857da9b75e30fb5584b59fa78239de5596fd3e0be6fdccf311b99115f1fcdaccb12fe77927ac7e2365f1c382793e63e14cfccdf3132571e69b1f07e83327d23fbac2bee4d785d57f2a9c89de9c6fecaa1fce98135bf845b9e2189e2a07e6fee287b0cfcf3bce9525ff5d38927a1bcca9cc1b66ca528ff93d89d338e3f9e182b9c86f31a752ff609d2f847f5f83b5ea31c218137a4f8fac0cc738e10cd6d3b7189f718a2ff88a6f38c339ad05adfcf31d3f7089ab037d42ea356e708b9ff8853bdc6395de6b58c706ad736c1ee823f2de608b146dbcc08e8976f012afb04b3975ec1de853aa2457f749d5c16b1ce00d0ecdf75b1ce1dd11fd1b55d236cef7f8808ff88465b4d02676d03da29f51dd9e513fa28f150c3004246d07002288bfe9e7d45f0712f22635a490d15ef730361e3b389c67aedf2390ea3157e73dc333e9a6f042d13ebc7ed32f6882405d3ee1c678030ee10d6630a76f162c8ee8f37adeb14c0aaa0b3e68b725ac80a2b039a29f630db6e46bc127d5fd45de4b5226b0833d8ea07a445f871ae96dacc218ead08073c835136842eba8be016db830e77a419f21aca143f76c025b9ae7e5813ea35bd5a0731fd1c4877a7f614fde57d085deb7f31ad31dccf54fd087883ab7a88f6baabb45fdf760003707fa09ddd826f66048af1826f00a0bb3aa7009b73082bb03fd2faeffa7fff58cfffcbcfffdfbc93f7f7d62d7</data>
     </image>
   </images>
-  <includes>
-    <include location="local">rs_pattern.h</include>
-    <include location="local">rs_hatch.h</include>
-    <include location="local">rs_settings.h</include>
-    <include location="local">rs_entitycontainer.h</include>
-    <include location="local">rs_graphic.h</include>
-    <include location="local">rs_patternlist.h</include>
-    <include location="local">qg_patternbox.h</include>
-    <include location="local">qg_graphicview.h</include>
-  </includes>
   <connections>
     <connection>
       <sender>buttonOk</sender>
diff --git a/src/ui/forms/qg_dlghatch.ui.h b/src/ui/forms/qg_dlghatch.ui.h
deleted file mode 100644
index a676989..0000000
--- a/src/ui/forms/qg_dlghatch.ui.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-#include <QResizeEvent>
-#include <QShowEvent>
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you wish to add, delete or rename functions or slots use
-** Qt Designer which will update this file, preserving your code. Create an
-** init() function in place of a constructor, and a destroy() function in
-** place of a destructor.
-*****************************************************************************/
-
-void QG_DlgHatch::init() {
-    pattern=NULL;
-    hatch = NULL;
-    isNew = false;
-
-    preview = new RS_EntityContainer();
-    gvPreview->setContainer(preview);
-    gvPreview->setBorders(15,15,15,15);
-
-    cbPattern->init();
-
-}
-
-void QG_DlgHatch::polish() {
-    QDialog::polish();
-    gvPreview->zoomAuto();
-}
-
-void QG_DlgHatch::showEvent ( QShowEvent * e) {
-    QDialog::showEvent(e);
-    gvPreview->zoomAuto();
-}
-
-void QG_DlgHatch::destroy() {
-    if (isNew) {
-        RS_SETTINGS->beginGroup("/Draw");
-        RS_SETTINGS->writeEntry("/HatchSolid", (int)cbSolid->isChecked());
-        RS_SETTINGS->writeEntry("/HatchPattern", cbPattern->currentText());
-        RS_SETTINGS->writeEntry("/HatchScale", leScale->text());
-        RS_SETTINGS->writeEntry("/HatchAngle", leAngle->text());
-        RS_SETTINGS->writeEntry("/HatchPreview",
-                                (int)cbEnablePreview->isChecked());
-        RS_SETTINGS->endGroup();
-    }
-	delete preview;
-}
-
-
-void QG_DlgHatch::setHatch(RS_Hatch& h, bool isNew) {
-    hatch = &h;
-    this->isNew = isNew;
-    
-    RS_SETTINGS->beginGroup("/Draw");
-    QString enablePrev = RS_SETTINGS->readEntry("/HatchPreview", "0");
-    RS_SETTINGS->endGroup();
-    
-    cbEnablePreview->setChecked(enablePrev=="1");
-
-    // read defaults from config file:
-    if (isNew) {
-        RS_SETTINGS->beginGroup("/Draw");
-        QString solid = RS_SETTINGS->readEntry("/HatchSolid", "0");
-        QString pat = RS_SETTINGS->readEntry("/HatchPattern", "ANSI31");
-        QString scale = RS_SETTINGS->readEntry("/HatchScale", "1.0");
-        QString angle = RS_SETTINGS->readEntry("/HatchAngle", "0.0");
-        RS_SETTINGS->endGroup();
-
-        cbSolid->setChecked(solid=="1");
-        setPattern(pat);
-        leScale->setText(scale);
-        leAngle->setText(angle);
-    }
-    // initialize dialog based on given hatch:
-    else {
-        cbSolid->setChecked(hatch->isSolid());
-        setPattern(hatch->getPattern());
-        QString s;
-        s.setNum(hatch->getScale());
-        leScale->setText(s);
-        s.setNum(RS_Math::rad2deg(hatch->getAngle()));
-        leAngle->setText(s);
-    }
-}
-
-void QG_DlgHatch::updateHatch() {
-    if (hatch!=NULL) {
-        hatch->setSolid(cbSolid->isChecked());
-        hatch->setPattern(cbPattern->currentText());
-        hatch->setScale(RS_Math::eval(leScale->text()));
-        hatch->setAngle(RS_Math::deg2rad(RS_Math::eval(leAngle->text())));
-    }
-}
-
-void QG_DlgHatch::setPattern(const QString& p) {
-    if (!RS_PATTERNLIST->contains(p)) {
-        cbPattern->insertItem(p);
-    }
-    cbPattern->setCurrentText(p);
-    pattern = cbPattern->getPattern();
-}
-
-void QG_DlgHatch::resizeEvent ( QResizeEvent * ) {
-    updatePreview(NULL);
-}
-
-void QG_DlgHatch::updatePreview() {
-    updatePreview(NULL);
-}
-
-void QG_DlgHatch::updatePreview(RS_Pattern* ) {
-    if (preview==NULL) {
-        return;
-    }
-    if (hatch==NULL || !cbEnablePreview->isChecked()) {
-        preview->clear();
-        gvPreview->zoomAuto();
-        return;
-    }
-
-    QString patName = cbPattern->currentText();
-    bool isSolid = cbSolid->isChecked();
-    double prevSize;
-    //double scale = RS_Math::eval(leScale->text(), 1.0);
-    double angle = RS_Math::deg2rad(RS_Math::eval(leAngle->text(), 0.0));
-    if (pattern!=NULL) {
-        prevSize = pattern->getSize().x*10;
-    } else {
-        prevSize = 10.0;
-    }
-
-    preview->clear();
-
-    RS_Hatch* prevHatch = new RS_Hatch(preview,
-                                       RS_HatchData(isSolid, 0.2, angle, patName));
-    prevHatch->setPen(hatch->getPen());
-
-    RS_EntityContainer* loop = new RS_EntityContainer(prevHatch);
-    loop->setPen(RS_Pen(RS2::FlagInvalid));
-    loop->addEntity(new RS_Line(loop,
-                                RS_LineData(RS_Vector(0.0,0.0),
-                                            RS_Vector(10.0,0.0))));
-    loop->addEntity(new RS_Line(loop,
-                                RS_LineData(RS_Vector(10.0,0.0),
-                                            RS_Vector(10.0,10.0))));
-    loop->addEntity(new RS_Line(loop,
-                                RS_LineData(RS_Vector(10.0,10.0),
-                                            RS_Vector(0.0,10.0))));
-    loop->addEntity(new RS_Line(loop,
-                                RS_LineData(RS_Vector(0.0,10.0),
-                                            RS_Vector(0.0,0.0))));
-    prevHatch->addEntity(loop);
-    preview->addEntity(prevHatch);
-    if (!isSolid) {
-        prevHatch->update();
-    }
-
-    gvPreview->zoomAuto();
-
-}
diff --git a/src/ui/forms/qg_dlgimageoptions.cpp b/src/ui/forms/qg_dlgimageoptions.cpp
index fe46ea4..3a5500d 100644
--- a/src/ui/forms/qg_dlgimageoptions.cpp
+++ b/src/ui/forms/qg_dlgimageoptions.cpp
@@ -25,10 +25,9 @@
 **********************************************************************/
 #include "qg_dlgimageoptions.h"
 
-#include <qvariant.h>
 #include "rs_math.h"
 #include "rs_settings.h"
-#include "qg_dlgimageoptions.ui.h"
+
 /*
  *  Constructs a QG_ImageOptionsDialog as a child of 'parent', with the
  *  name 'name' and widget flags set to 'f'.
@@ -36,9 +35,10 @@
  *  The dialog will by default be modeless, unless you set 'modal' to
  *  true to construct a modal dialog.
  */
-QG_ImageOptionsDialog::QG_ImageOptionsDialog(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl)
-    : QDialog(parent, name, modal, fl)
+QG_ImageOptionsDialog::QG_ImageOptionsDialog(QWidget* parent, bool modal, Qt::WindowFlags fl)
+    : QDialog(parent, fl)
 {
+    setModal(modal);
     setupUi(this);
 
     init();
@@ -61,3 +61,70 @@ void QG_ImageOptionsDialog::languageChange()
     retranslateUi(this);
 }
 
+void QG_ImageOptionsDialog::init() {
+    graphicSize = RS_Vector(0.0,0.0);
+    updateEnabled = true;
+
+    RS_SETTINGS->beginGroup("/ExportImage");
+    leWidth->setText(RS_SETTINGS->readEntry("/Width", "640"));
+    leHeight->setText(RS_SETTINGS->readEntry("/Height", "480"));
+    if (RS_SETTINGS->readEntry("/BlackBackground", "0")=="1") {
+        rbBlack->setChecked(true);
+    }
+    /*if (RS_SETTINGS->readEntry("/Blackwhite", "0")=="1") {
+        rbBlackwhite->setChecked(true);
+    }*/
+    RS_SETTINGS->endGroup();
+}
+
+void QG_ImageOptionsDialog::setGraphicSize(const RS_Vector& s) {
+    graphicSize = s;
+}
+
+void QG_ImageOptionsDialog::ok() {
+    RS_SETTINGS->beginGroup("/ExportImage");
+    RS_SETTINGS->writeEntry("/Width", leWidth->text());
+    RS_SETTINGS->writeEntry("/Height", leHeight->text());
+    RS_SETTINGS->writeEntry("/BlackBackground", (int)rbBlack->isChecked());
+    //RS_SETTINGS->writeEntry("/Blackwhite", (int)rbBlackwhite->isChecked());
+    RS_SETTINGS->endGroup();
+
+    accept();
+}
+
+void QG_ImageOptionsDialog::sizeChanged() {
+    if (updateEnabled) {
+    updateEnabled = false;
+    cbResolution->setItemText(cbResolution->currentIndex(), "auto");
+    updateEnabled = true;
+    }
+}
+
+void  QG_ImageOptionsDialog::resolutionChanged() {
+    if (updateEnabled) {
+    updateEnabled = false;
+    bool ok = false;
+    double res = RS_Math::eval(cbResolution->currentText(), &ok);
+    if (!ok) {
+        res = 1.0;
+    }
+    int w = RS_Math::round(res * graphicSize.x);
+    int h = RS_Math::round(res * graphicSize.y);
+    leWidth->setText(QString("%1").arg(w));
+    leHeight->setText(QString("%1").arg(h));
+    updateEnabled = true;
+    }
+}
+
+QSize QG_ImageOptionsDialog::getSize() {
+    return QSize(RS_Math::round(RS_Math::eval(leWidth->text())),
+                 RS_Math::round(RS_Math::eval(leHeight->text())));
+}
+
+bool QG_ImageOptionsDialog::isBackgroundBlack() {
+    return rbBlack->isChecked();
+}
+
+/*bool QG_ImageOptionsDialog::isBlackwhite() {
+    return rbBlackwhite->isChecked();
+}*/
diff --git a/src/ui/forms/qg_dlgimageoptions.h b/src/ui/forms/qg_dlgimageoptions.h
index b5ad77a..1ad1687 100644
--- a/src/ui/forms/qg_dlgimageoptions.h
+++ b/src/ui/forms/qg_dlgimageoptions.h
@@ -27,13 +27,14 @@
 #define QG_IMAGEOPTIONSDIALOG_H
 
 #include "ui_qg_dlgimageoptions.h"
+#include "rs_vector.h"
 
 class QG_ImageOptionsDialog : public QDialog, public Ui::QG_ImageOptionsDialog
 {
     Q_OBJECT
 
 public:
-    QG_ImageOptionsDialog(QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WindowFlags fl = 0);
+    QG_ImageOptionsDialog(QWidget* parent = 0, bool modal = false, Qt::WindowFlags fl = 0);
     ~QG_ImageOptionsDialog();
 
     virtual QSize getSize();
diff --git a/src/ui/forms/qg_dlgimageoptions.ui b/src/ui/forms/qg_dlgimageoptions.ui
index 8ecd845..2f501f6 100644
--- a/src/ui/forms/qg_dlgimageoptions.ui
+++ b/src/ui/forms/qg_dlgimageoptions.ui
@@ -21,7 +21,7 @@
     </property>
     <layout class="QVBoxLayout">
       <item>
-        <widget class="Q3ButtonGroup" name="bgSize">
+        <widget class="QGroupBox" name="bgSize">
           <property name="title">
             <string>Bitmap Size</string>
           </property>
@@ -198,7 +198,7 @@
         </widget>
       </item>
       <item>
-        <widget class="Q3ButtonGroup" name="bgBackground">
+        <widget class="QGroupBox" name="bgBackground">
           <property name="title">
             <string>Background</string>
           </property>
@@ -297,7 +297,6 @@
     </layout>
   </widget>
   <layoutdefault spacing="6" margin="11"/>
-  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
   <tabstops>
     <tabstop>leWidth</tabstop>
     <tabstop>leHeight</tabstop>
@@ -306,9 +305,6 @@
     <tabstop>bOK</tabstop>
     <tabstop>bCancel</tabstop>
   </tabstops>
-  <includes>
-    <include location="local">rs_vector.h</include>
-  </includes>
   <connections>
     <connection>
       <sender>bOK</sender>
diff --git a/src/ui/forms/qg_dlgimageoptions.ui.h b/src/ui/forms/qg_dlgimageoptions.ui.h
deleted file mode 100644
index 4ae1e08..0000000
--- a/src/ui/forms/qg_dlgimageoptions.ui.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-void QG_ImageOptionsDialog::init() {
-    graphicSize = RS_Vector(0.0,0.0);
-    updateEnabled = true;
-    
-    RS_SETTINGS->beginGroup("/ExportImage");
-    leWidth->setText(RS_SETTINGS->readEntry("/Width", "640"));
-    leHeight->setText(RS_SETTINGS->readEntry("/Height", "480"));
-    if (RS_SETTINGS->readEntry("/BlackBackground", "0")=="1") {
-        rbBlack->setChecked(true);
-    }
-    /*if (RS_SETTINGS->readEntry("/Blackwhite", "0")=="1") {
-        rbBlackwhite->setChecked(true);
-    }*/
-    RS_SETTINGS->endGroup();
-}
-
-void QG_ImageOptionsDialog::setGraphicSize(const RS_Vector& s) {
-    graphicSize = s;
-}
-
-void QG_ImageOptionsDialog::ok() {
-    RS_SETTINGS->beginGroup("/ExportImage");
-    RS_SETTINGS->writeEntry("/Width", leWidth->text());
-    RS_SETTINGS->writeEntry("/Height", leHeight->text());
-    RS_SETTINGS->writeEntry("/BlackBackground", (int)rbBlack->isChecked());
-    //RS_SETTINGS->writeEntry("/Blackwhite", (int)rbBlackwhite->isChecked());
-    RS_SETTINGS->endGroup();
-    
-    accept();
-}
-
-void QG_ImageOptionsDialog::sizeChanged() {
-    if (updateEnabled) {
-    updateEnabled = false;
-    cbResolution->setCurrentText("auto");
-    updateEnabled = true;
-    }
-}
-
-void  QG_ImageOptionsDialog::resolutionChanged() {
-    if (updateEnabled) {
-    updateEnabled = false;
-    bool ok = false;
-    double res = RS_Math::eval(cbResolution->currentText(), &ok);
-    if (!ok) {
-        res = 1.0;
-    }
-    int w = RS_Math::round(res * graphicSize.x);
-    int h = RS_Math::round(res * graphicSize.y);
-    leWidth->setText(QString("%1").arg(w));
-    leHeight->setText(QString("%1").arg(h));
-    updateEnabled = true;
-    }
-}
-
-QSize QG_ImageOptionsDialog::getSize() {
-    return QSize(RS_Math::round(RS_Math::eval(leWidth->text())), 
-                 RS_Math::round(RS_Math::eval(leHeight->text())));
-}
-
-bool QG_ImageOptionsDialog::isBackgroundBlack() {
-    return rbBlack->isChecked();
-}
-
-/*bool QG_ImageOptionsDialog::isBlackwhite() {
-    return rbBlackwhite->isChecked();
-}*/
diff --git a/src/ui/forms/qg_dlginitial.ui.h b/src/ui/forms/qg_dlginitial.ui.h
index 4f3212e..4c77e8d 100644
--- a/src/ui/forms/qg_dlginitial.ui.h
+++ b/src/ui/forms/qg_dlginitial.ui.h
@@ -37,7 +37,7 @@
 void QG_DlgInitial::init() {
     // Fill combobox with languages:
     QStringList languageList = RS_SYSTEM->getLanguageList();
-    for (RS_StringList::Iterator it = languageList.begin();
+    for (QStringList::Iterator it = languageList.begin();
     	it!=languageList.end();
         it++) {
             
diff --git a/src/ui/forms/qg_dlgmove.ui b/src/ui/forms/qg_dlgmove.ui
index 186b6c2..8c821da 100644
--- a/src/ui/forms/qg_dlgmove.ui
+++ b/src/ui/forms/qg_dlgmove.ui
@@ -23,7 +23,7 @@
    </size>
   </property>
   <property name="windowTitle">
-   <string>Moving Options</string>
+   <string>Move/Copy Options</string>
   </property>
   <layout class="QGridLayout">
    <item row="0" column="0" rowspan="3">
diff --git a/src/ui/forms/qg_dlgmoverotate.ui.h b/src/ui/forms/qg_dlgmoverotate.ui.h
index 9c1903f..9bbfd5e 100644
--- a/src/ui/forms/qg_dlgmoverotate.ui.h
+++ b/src/ui/forms/qg_dlgmoverotate.ui.h
@@ -24,6 +24,8 @@
 **
 **********************************************************************/
 
+#include "rs_math.h"
+
 void QG_DlgMoveRotate::init() {
     RS_SETTINGS->beginGroup("/Modify");
     copies = RS_SETTINGS->readEntry("/MoveRotateCopies", "10");
diff --git a/src/ui/forms/qg_dlgoptionsdrawing.ui.h b/src/ui/forms/qg_dlgoptionsdrawing.ui.h
index 3af9d6c..ca0065a 100644
--- a/src/ui/forms/qg_dlgoptionsdrawing.ui.h
+++ b/src/ui/forms/qg_dlgoptionsdrawing.ui.h
@@ -300,7 +300,7 @@ void QG_DlgOptionsDrawing::validate() {
                         cbSplineSegs->currentText().latin1());
         
         // update all dimension and spline entities in the graphic to match the new settings:
-        graphic->updateDimensions();
+        graphic->updateDimensions(false);
         graphic->updateSplines();
         
         graphic->setModified(true);
diff --git a/src/ui/forms/qg_dlgoptionsgeneral.ui b/src/ui/forms/qg_dlgoptionsgeneral.ui
index 20116bb..299112a 100644
--- a/src/ui/forms/qg_dlgoptionsgeneral.ui
+++ b/src/ui/forms/qg_dlgoptionsgeneral.ui
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>643</width>
+    <width>645</width>
     <height>404</height>
    </rect>
   </property>
@@ -23,9 +23,9 @@
    <item>
     <widget class="QTabWidget" name="tabWidget">
      <property name="currentIndex">
-      <number>0</number>
+      <number>2</number>
      </property>
-     <widget class="QWidget" name="Widget9">
+     <widget class="QWidget" name="tab_1">
       <attribute name="title">
        <string>&Appearance</string>
       </attribute>
@@ -585,7 +585,7 @@
        </item>
       </layout>
      </widget>
-     <widget class="QWidget" name="tab">
+     <widget class="QWidget" name="tab_2">
       <attribute name="title">
        <string>&Paths</string>
       </attribute>
@@ -689,7 +689,7 @@
        </item>
       </layout>
      </widget>
-     <widget class="QWidget" name="tab">
+     <widget class="QWidget" name="tab_3">
       <attribute name="title">
        <string>&Defaults</string>
       </attribute>
@@ -732,12 +732,16 @@
            </widget>
           </item>
           <item>
-           <widget class="QComboBox" name="cbUnit"/>
+           <widget class="QComboBox" name="cbUnit">
+            <property name="toolTip">
+             <string>Drawing unit.</string>
+            </property>
+           </widget>
           </item>
          </layout>
         </widget>
        </item>
-       <item row="0" column="2">
+       <item row="0" column="1">
         <spacer name="spacer11_2">
          <property name="orientation">
           <enum>Qt::Horizontal</enum>
@@ -753,7 +757,20 @@
          </property>
         </spacer>
        </item>
-       <item row="2" column="0">
+       <item row="3" column="0">
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="1" column="0">
         <widget class="QGroupBox" name="groupBox">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
@@ -770,53 +787,44 @@
          <property name="title">
           <string>Program Defaults</string>
          </property>
-         <widget class="QSpinBox" name="cbAutoSaveTime">
-          <property name="geometry">
-           <rect>
-            <x>130</x>
-            <y>30</y>
-            <width>51</width>
-            <height>25</height>
-           </rect>
-          </property>
-          <property name="toolTip">
-           <string>Time between automatc saving of thedocument in minutes.</string>
-          </property>
-          <property name="minimum">
-           <number>1</number>
-          </property>
-          <property name="maximum">
-           <number>60</number>
-          </property>
-         </widget>
-         <widget class="QLabel" name="label">
-          <property name="geometry">
-           <rect>
-            <x>10</x>
-            <y>38</y>
-            <width>111</width>
-            <height>10</height>
-           </rect>
-          </property>
-          <property name="text">
-           <string>Auto save time:</string>
-          </property>
-         </widget>
+         <layout class="QVBoxLayout" name="verticalLayout">
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout">
+            <item>
+             <widget class="QLabel" name="label">
+              <property name="text">
+               <string>Auto save time:</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="cbAutoSaveTime">
+              <property name="toolTip">
+               <string>Time between automatic saving of the document in minutes.</string>
+              </property>
+              <property name="minimum">
+               <number>1</number>
+              </property>
+              <property name="maximum">
+               <number>60</number>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <widget class="QCheckBox" name="cbAutoBackup">
+            <property name="toolTip">
+             <string>When set, LibreCAD will automatically generate a backup of your current drawing.</string>
+            </property>
+            <property name="text">
+             <string>Auto backup</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
         </widget>
        </item>
-       <item row="3" column="0">
-        <spacer name="verticalSpacer">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
       </layout>
      </widget>
     </widget>
diff --git a/src/ui/forms/qg_dlgoptionsgeneral.ui.h b/src/ui/forms/qg_dlgoptionsgeneral.ui.h
index 8fc6fe8..4a4a685 100644
--- a/src/ui/forms/qg_dlgoptionsgeneral.ui.h
+++ b/src/ui/forms/qg_dlgoptionsgeneral.ui.h
@@ -34,7 +34,7 @@ void QG_DlgOptionsGeneral::init() {
     // Fill combobox with languages:
     QStringList languageList = RS_SYSTEM->getLanguageList();
     languageList.prepend("en");
-    for (RS_StringList::Iterator it = languageList.begin();
+    for (QStringList::Iterator it = languageList.begin();
             it!=languageList.end();
             it++) {
 
@@ -122,6 +122,7 @@ void QG_DlgOptionsGeneral::init() {
     cbUnit->setCurrentText(QObject::tr( RS_SETTINGS->readEntry("/Unit", def_unit) ));
     // Auto save timer
     cbAutoSaveTime->setValue(RS_SETTINGS->readNumEntry("/AutoSaveTime", 5));
+    cbAutoBackup->setChecked(RS_SETTINGS->readNumEntry("/AutoBackupDocument", 1)?true:false);
     RS_SETTINGS->endGroup();
 
     restartNeeded = false;
@@ -175,6 +176,7 @@ void QG_DlgOptionsGeneral::ok() {
     RS_SETTINGS->writeEntry("/Unit",
         RS_Units::unitToString( RS_Units::stringToUnit( cbUnit->currentText() ), false/*untr.*/) );
     RS_SETTINGS->writeEntry("/AutoSaveTime", cbAutoSaveTime->value() );
+    RS_SETTINGS->writeEntry("/AutoBackupDocument", cbAutoBackup->isChecked()?1:0 );
     RS_SETTINGS->endGroup();
 
     if (restartNeeded==true) {
@@ -184,5 +186,4 @@ void QG_DlgOptionsGeneral::ok() {
                               Qt::NoButton);
     }
     accept();
-    //return true;
 }
diff --git a/src/ui/forms/qg_dlgoptionsvariables.ui.h b/src/ui/forms/qg_dlgoptionsvariables.ui.h
index 4431d7b..144f850 100644
--- a/src/ui/forms/qg_dlgoptionsvariables.ui.h
+++ b/src/ui/forms/qg_dlgoptionsvariables.ui.h
@@ -58,34 +58,36 @@ void QG_DlgOptionsVariables::updateVariables() {
         r[i] = i;
     }
     tabVariables->removeRows(r);
-    RS_DictIterator<RS_Variable> it(graphic->getVariableDict());
-    for (; it.current(); ++it) {
+    QHash<QString, RS_Variable>vars = graphic->getVariableDict();
+    QHash<QString, RS_Variable>::iterator it = vars.begin();
+    while (it != vars.end()) {
         tabVariables->insertRows(tabVariables->numRows(), 1);
         
-        tabVariables->setText(tabVariables->numRows()-1, 0, it.currentKey());
-        tabVariables->setText(tabVariables->numRows()-1, 1, QString("%1").arg(it.current()->getCode()));
+        tabVariables->setText(tabVariables->numRows()-1, 0, it.key());
+        tabVariables->setText(tabVariables->numRows()-1, 1, QString("%1").arg(it.value().getCode()));
         QString str = "";
-        switch (it.current()->getType()) {
+        switch (it.value().getType()) {
             case RS2::VariableVoid:
                 break;
             case RS2::VariableInt:
-                str = QString("%1").arg(it.current()->getInt());
+                str = QString("%1").arg(it.value().getInt());
                 break;
             case RS2::VariableDouble:
-                str = QString("%1").arg(it.current()->getDouble());
+                str = QString("%1").arg(it.value().getDouble());
                 break;
             case RS2::VariableString:
-                str = QString("%1").arg(it.current()->getString());
+                str = QString("%1").arg(it.value().getString());
                 break;
             case RS2::VariableVector:
                 str = QString("%1/%2")
-                      .arg(it.current()->getVector().x)
-                      .arg(it.current()->getVector().y);
-                if (RS_FilterDXF::isVariableTwoDimensional(it.currentKey())==false) {
-                    str+= QString("/%1").arg(it.current()->getVector().z);
+                      .arg(it.value().getVector().x)
+                      .arg(it.value().getVector().y);
+                if (RS_FilterDXF::isVariableTwoDimensional(it.key())==false) {
+                    str+= QString("/%1").arg(it.value().getVector().z);
                 }
                 break;
         }
         tabVariables->setText(tabVariables->numRows()-1, 2, str);
+        ++it;
     }
 }
diff --git a/src/ui/forms/qg_dlgrotate.ui.h b/src/ui/forms/qg_dlgrotate.ui.h
index 109baa2..6e7e9e6 100644
--- a/src/ui/forms/qg_dlgrotate.ui.h
+++ b/src/ui/forms/qg_dlgrotate.ui.h
@@ -24,6 +24,8 @@
 **
 **********************************************************************/
 
+#include "rs_math.h"
+
 void QG_DlgRotate::init() {
     RS_SETTINGS->beginGroup("/Modify");
     copies = RS_SETTINGS->readEntry("/RotateCopies", "10");
diff --git a/src/ui/forms/qg_dlgrotate2.ui.h b/src/ui/forms/qg_dlgrotate2.ui.h
index 5a62687..9150338 100644
--- a/src/ui/forms/qg_dlgrotate2.ui.h
+++ b/src/ui/forms/qg_dlgrotate2.ui.h
@@ -24,6 +24,8 @@
 **
 **********************************************************************/
 
+#include "rs_math.h"
+
 void QG_DlgRotate2::init() {
     RS_SETTINGS->beginGroup("/Modify");
     copies = RS_SETTINGS->readEntry("/Rotate2Copies", "10");
diff --git a/src/ui/forms/qg_dlgscale.ui.h b/src/ui/forms/qg_dlgscale.ui.h
index 5679990..07b68f4 100644
--- a/src/ui/forms/qg_dlgscale.ui.h
+++ b/src/ui/forms/qg_dlgscale.ui.h
@@ -24,6 +24,8 @@
 **
 **********************************************************************/
 
+#include "rs_math.h"
+
 void QG_DlgScale::init() {
     RS_SETTINGS->beginGroup("/Modify");
     copies = RS_SETTINGS->readEntry("/ScaleCopies", "10");
diff --git a/src/ui/forms/qg_librarywidget.ui.h b/src/ui/forms/qg_librarywidget.ui.h
index ae90758..84582f9 100644
--- a/src/ui/forms/qg_librarywidget.ui.h
+++ b/src/ui/forms/qg_librarywidget.ui.h
@@ -316,11 +316,11 @@ QString QG_LibraryWidget::getPathToPixmap(const QString& dir,
     pngPath = iconCacheLocation + dir + QDir::separator() + fiDxf.baseName() + ".png";
 
     QPixmap* buffer = new QPixmap(128,128);
-    RS_PainterQt* painter = new RS_PainterQt(buffer);
-    painter->setBackgroundColor(RS_Color(255,255,255));
-    painter->eraseRect(0,0, 128,128);
+    RS_PainterQt painter(buffer);
+    painter.setBackgroundColor(RS_Color(255,255,255));
+    painter.eraseRect(0,0, 128,128);
 
-    RS_StaticGraphicView gv(128,128, painter);
+    RS_StaticGraphicView gv(128,128, &painter);
     RS_Graphic graphic;
     if (graphic.open(dxfPath, RS2::FormatUnknown)) {
         for (RS_Entity* e=graphic.firstEntity(RS2::ResolveAll);
@@ -336,7 +336,7 @@ QString QG_LibraryWidget::getPathToPixmap(const QString& dir,
 
         for (RS_Entity* e=graphic.firstEntity(RS2::ResolveAll);
                 e!=NULL; e=graphic.nextEntity(RS2::ResolveAll)) {
-            gv.drawEntity(painter, e);
+            gv.drawEntity(&painter, e);
         }
 
         QImageWriter iio;
@@ -359,7 +359,7 @@ QString QG_LibraryWidget::getPathToPixmap(const QString& dir,
     }
 
     // GraphicView deletes painter
-    painter->end();
+    painter.end();
     delete buffer;
 
     return pngPath;
diff --git a/src/ui/qg_actionfactory.cpp b/src/ui/qg_actionfactory.cpp
index faad4bd..1696b51 100644
--- a/src/ui/qg_actionfactory.cpp
+++ b/src/ui/qg_actionfactory.cpp
@@ -81,6 +81,7 @@
 #include "rs_actioninfodist2.h"
 #include "rs_actioninfoinside.h"
 #include "rs_actioninfototallength.h"
+#include "rs_actioninfoarea.h"
 #include "rs_actionlayersadd.h"
 #include "rs_actionlayersedit.h"
 #include "rs_actionlayersfreezeall.h"
@@ -131,17 +132,6 @@
 #include "rs_actionpolylinedelbetween.h"
 #include "rs_actionpolylinetrim.h"
 
-#ifdef RS_CAM
-#include "rs_actioncamexportauto.h"
-#include "rs_actioncamreorder.h"
-#endif
-
-#ifdef RVT_CAM
-#include "rvt_actioncammakeprofile.h"
-#endif
-
-
-
 /**
  * Constructor.
  *
@@ -162,15 +152,31 @@ QG_ActionFactory::~QG_ActionFactory() {}
 
 
 
-/**
- * Creates a new action object and links it to the appropriate slot(s).
+/* *
+ *	Description:	- Creates a new action object and links it to the
+ *						  appropriate slot(s).
  *
- * @param id ID of the action to create (see rs.h).
- * @param obj Object which the action will connect its signal to.
+ * Author(s):		..., Claude Sylvain
+ * Created:
+ * Last modified:	16 July 2011
  *
- * @return Pointer to the action object or NULL if the action is unknown.
- */
-QAction* QG_ActionFactory::createAction(RS2::ActionType id, QObject* obj, QObject* obj2) {
+ *	Parameters:		RS2::ActionType id:
+ *							ID of the action to create (see rs.h).
+ *
+ *						QObject* obj:
+ *							Object which the action will connect its signal to.
+ *
+ *						QObject* obj2:
+ *							...
+ *
+ *	Returns:			QAction*:
+ *							- Pointer to the action object or NULL if the action
+ *							  is unknown.
+ *	*/
+
+QAction* QG_ActionFactory::createAction(	RS2::ActionType id, QObject* obj,
+	  													QObject* obj2)
+{
     // assert that action handler is not invalid:
     if (actionHandler==NULL) {
         RS_DEBUG->print(RS_Debug::D_WARNING,
@@ -255,7 +261,7 @@ QAction* QG_ActionFactory::createAction(RS2::ActionType id, QObject* obj, QObjec
 
     case RS2::ActionFilePrintPreview:
 		action = RS_ActionPrintPreview::createGUIAction(id, mw);
-		action->setToggleAction(true);
+                action->setCheckable(true);
         connect(action, SIGNAL(toggled(bool)),
                 obj, SLOT(slotFilePrintPreview(bool)));
         break;
@@ -378,7 +384,7 @@ QAction* QG_ActionFactory::createAction(RS2::ActionType id, QObject* obj, QObjec
         // Editing actions:
         //
     case RS2::ActionEditKillAllActions:
-        action = new QAction(tr("&back"), mw);
+        action = new QAction(tr("&Selection pointer"), mw);
 #if QT_VERSION >= 0x040600
         action->setIcon(QIcon::fromTheme("go-previous-view", QIcon(":/actions/back.png")));
 #else
@@ -1013,7 +1019,7 @@ QAction* QG_ActionFactory::createAction(RS2::ActionType id, QObject* obj, QObjec
 
     case RS2::ActionRestrictVertical:
 		// tr("Restrict Vertically")
-		action = new QAction(tr("Restrict&Vertically"), mw);
+		action = new QAction(tr("Restrict &Vertically"), mw);
 		//action->zetStatusTip(tr("Restrict snapping vertically"));
         actionHandler->setActionRestrictVertical(action);
 		action->setCheckable(true);
@@ -1063,11 +1069,17 @@ QAction* QG_ActionFactory::createAction(RS2::ActionType id, QObject* obj, QObjec
         break;
 		
     case RS2::ActionInfoTotalLength:
-		action = RS_ActionInfoTotalLength::createGUIAction(id, mw);
+                action = RS_ActionInfoTotalLength::createGUIAction(id, mw);
         connect(action, SIGNAL(activated()),
                 obj, SLOT(slotInfoTotalLength()));
         break;
 
+    case RS2::ActionInfoArea:
+            action = RS_ActionInfoArea::createGUIAction(id, mw);
+        connect(action, SIGNAL(activated()),
+                obj, SLOT(slotInfoArea()));
+        break;
+
         // Layer actions:
         //
     case RS2::ActionLayersDefreezeAll:
@@ -1218,32 +1230,6 @@ QAction* QG_ActionFactory::createAction(RS2::ActionType id, QObject* obj, QObjec
                 obj, SLOT(slotScriptRun()));
 		break;
 
-		// CAM actions:
-		//
-#ifdef RS_CAM
-    case RS2::ActionCamExportAuto:
-		action = RS_ActionCamExportAuto::createGUIAction(id, mw);
-        connect(action, SIGNAL(activated()),
-                obj, SLOT(slotCamExportAuto()));
-        break;
-		
-    case RS2::ActionCamReorder:
-		action = RS_ActionCamReorder::createGUIAction(id, mw);
-        connect(action, SIGNAL(activated()),
-                obj, SLOT(slotCamReorder()));
-        break;
-#endif
-
-#ifdef RVT_CAM
-    case RS2::ActionCamMakeProfile:
-		action = RVT_ActionCamMakeProfile::createGUIAction(id, mw);
-        connect(action, SIGNAL(activated()),
-                obj, SLOT(slotCamMakeProfile()));
-        break;
-
-
-#endif
-
     default:
         RS_DEBUG->print(RS_Debug::D_WARNING,
         	"No action %d defined", id);
diff --git a/src/ui/qg_actionfactory.h b/src/ui/qg_actionfactory.h
index 5282243..6559e17 100644
--- a/src/ui/qg_actionfactory.h
+++ b/src/ui/qg_actionfactory.h
@@ -27,13 +27,9 @@
 #ifndef QG_ACTIONFACTORY_H
 #define QG_ACTIONFACTORY_H
 
-#include <qaction.h>
-#include <qobject.h>
-
-#include "rs.h"
+#include <QAction>
 
 #include "qg_actionhandler.h"
-#include "qg_mainwindowinterface.h"
 
 /**
  * This class can store recent files in a list.
diff --git a/src/ui/qg_actionhandler.cpp b/src/ui/qg_actionhandler.cpp
index 963eef1..693b322 100644
--- a/src/ui/qg_actionhandler.cpp
+++ b/src/ui/qg_actionhandler.cpp
@@ -26,6 +26,8 @@
 
 #include "qg_actionhandler.h"
 
+#include "rs_dialogfactory.h"
+#include "rs_commandevent.h"
 #include "rs_commands.h"
 
 #include "rs_actionblocksadd.h"
@@ -133,16 +135,6 @@
 #include "rs_actionpolylinedel.h"
 #include "rs_actionpolylinedelbetween.h"
 #include "rs_actionpolylinetrim.h"
-
-#ifdef RS_CAM
-#include "rs_actioncamexportauto.h"
-#include "rs_actioncamreorder.h"
-#endif
-
-#ifdef RVT_CAM
-#include "rvt_actioncammakeprofile.h"
-#endif
-
 #include "rs_selection.h"
 
 #include "qg_mainwindowinterface.h"
@@ -754,23 +746,6 @@ RS_ActionInterface* QG_ActionHandler::setCurrentAction(RS2::ActionType id) {
     case RS2::ActionOptionsDrawing:
         a = new RS_ActionOptionsDrawing(*doc, *gv);
         break;
-
-		// cam:
-		//
-#ifdef RS_CAM
-    case RS2::ActionCamExportAuto:
-        a = new RS_ActionCamExportAuto(*doc, *gv);
-        break;
-    case RS2::ActionCamReorder:
-        a = new RS_ActionCamReorder(*doc, *gv);
-        break;
-#endif
-
-#ifdef RVT_CAM
-    case RS2::ActionCamMakeProfile:
-        a = new RVT_ActionCamMakeProfile(*doc, *gv);
-        break;
-#endif
     default:
         RS_DEBUG->print(RS_Debug::D_WARNING,
                         "QG_ActionHandler::setCurrentAction():"
@@ -791,13 +766,13 @@ RS_ActionInterface* QG_ActionHandler::setCurrentAction(RS2::ActionType id) {
 /**
  * @return Available commands of the application or the current action.
  */
-RS_StringList QG_ActionHandler::getAvailableCommands() {
+QStringList QG_ActionHandler::getAvailableCommands() {
     RS_ActionInterface* currentAction = getCurrentAction();
 
     if (currentAction!=NULL) {
         return currentAction->getAvailableCommands();
     } else {
-        RS_StringList cmd;
+        QStringList cmd;
         cmd += "line";
         cmd += "rectangle";
         return cmd;
@@ -1674,22 +1649,6 @@ void QG_ActionHandler::slotOptionsDrawing() {
     setCurrentAction(RS2::ActionOptionsDrawing);
 }
 
-void QG_ActionHandler::slotCamExportAuto() {
-#ifdef RS_CAM
-    setCurrentAction(RS2::ActionCamExportAuto);
-#endif
-}
-
-void QG_ActionHandler::slotCamReorder() {
-#ifdef RS_CAM
-    setCurrentAction(RS2::ActionCamReorder);
-#endif
-}
-void QG_ActionHandler::slotCamMakeProfile() {
-#ifdef RVT_CAM
-    setCurrentAction(RS2::ActionCamMakeProfile);
-#endif
-}
 void QG_ActionHandler::slotFocusNormal() {
     //QG_GraphicView* gv = mainWindow->getGraphicView();
     //if (gv!=NULL) {
diff --git a/src/ui/qg_actionhandler.h b/src/ui/qg_actionhandler.h
index ded9963..99837d7 100644
--- a/src/ui/qg_actionhandler.h
+++ b/src/ui/qg_actionhandler.h
@@ -27,14 +27,7 @@
 #ifndef QG_ACTIONHANDLER_H
 #define QG_ACTIONHANDLER_H
 
-#include <qaction.h>
-#include <q3mainwindow.h>
-#include <qobject.h>
-
-#include "rs_document.h"
-#include "rs_stringlist.h"
-
-#include "qg_graphicview.h"
+#include "rs_actioninterface.h"
 
 class QG_MainWindowInterface;
 class QG_CadToolBarSnap;
@@ -58,7 +51,7 @@ public:
 	
 	bool keycode(const QString& code);
 	bool command(const QString& cmd);
-	RS_StringList getAvailableCommands();
+        QStringList getAvailableCommands();
 
 public slots:
     /*void slotFileNew();*/
@@ -215,15 +208,8 @@ public slots:
     void slotBlocksInsert();
     void slotBlocksToggleView();
     void slotBlocksCreate();
-    void slotBlocksExplode();
-	
+    void slotBlocksExplode();	
     void slotOptionsDrawing();
-	
-	void slotCamExportAuto();
-	void slotCamReorder();
-
-        void slotCamMakeProfile();
-
     void slotFocusNormal();
 
     void setActionSnapFree(QAction* a) {
diff --git a/src/ui/qg_blockwidget.cpp b/src/ui/qg_blockwidget.cpp
index fe50a5d..f465fe8 100644
--- a/src/ui/qg_blockwidget.cpp
+++ b/src/ui/qg_blockwidget.cpp
@@ -29,6 +29,8 @@
 #include <QToolTip>
 #include <QToolButton>
 #include <QMenu>
+#include <QBoxLayout>
+#include <QLabel>
 
 /**
  * Constructor.
diff --git a/src/ui/qg_colorbox.cpp b/src/ui/qg_colorbox.cpp
index 268c714..0c7c3b4 100644
--- a/src/ui/qg_colorbox.cpp
+++ b/src/ui/qg_colorbox.cpp
@@ -35,8 +35,10 @@
  * to use this constructor.
  */
 QG_ColorBox::QG_ColorBox(QWidget* parent, const char* name)
-        : QComboBox(false, parent, name) {
+        : QComboBox(parent) {
 
+    setObjectName(name);
+    setEditable ( false );
     showByLayer = false;
     showUnchanged = false;
 	unchanged = false;
@@ -50,9 +52,11 @@ QG_ColorBox::QG_ColorBox(QWidget* parent, const char* name)
  */
 QG_ColorBox::QG_ColorBox(bool showByLayer, bool showUnchanged, 
 	QWidget* parent, const char* name)
-        : QComboBox(parent, name) {
+        : QComboBox(parent) {
 	
-	unchanged = false;
+    setObjectName(name);
+    setEditable ( false );
+    unchanged = false;
     init(showByLayer, showUnchanged);
 }
 
@@ -74,37 +78,37 @@ void QG_ColorBox::init(bool showByLayer, bool showUnchanged) {
     this->showUnchanged = showUnchanged;
 
     if (showUnchanged) {
-                insertItem(QPixmap(":/ui/color00.png"), tr("Unchanged"));
+                addItem(QIcon(":/ui/color00.png"), tr("Unchanged"));
 	}
     if (showByLayer) {
-        insertItem(QPixmap(":/ui/color00.png"), tr("By Layer"));
-        insertItem(QPixmap(":/ui/color00.png"), tr("By Block"));
+        addItem(QIcon(":/ui/color00.png"), tr("By Layer"));
+        addItem(QIcon(":/ui/color00.png"), tr("By Block"));
     }
 
-    insertItem(QPixmap(":/ui/color01.png"), tr("Red"));
-    insertItem(QPixmap(":/ui/color02.png"), tr("Yellow"));
-    insertItem(QPixmap(":/ui/color03.png"), tr("Green"));
-    insertItem(QPixmap(":/ui/color04.png"), tr("Cyan"));
-    insertItem(QPixmap(":/ui/color05.png"), tr("Blue"));
-    insertItem(QPixmap(":/ui/color06.png"), tr("Magenta"));
-    insertItem(QPixmap(":/ui/color07.png"), tr("Black / White"));
-    insertItem(QPixmap(":/ui/color08.png"), tr("Gray"));
-    insertItem(QPixmap(":/ui/color09.png"), tr("Light Gray"));
-    insertItem(QPixmap(":/ui/colorxx.png"), tr("Others.."));
+    addItem(QIcon(":/ui/color01.png"), tr("Red"));
+    addItem(QIcon(":/ui/color02.png"), tr("Yellow"));
+    addItem(QIcon(":/ui/color03.png"), tr("Green"));
+    addItem(QIcon(":/ui/color04.png"), tr("Cyan"));
+    addItem(QIcon(":/ui/color05.png"), tr("Blue"));
+    addItem(QIcon(":/ui/color06.png"), tr("Magenta"));
+    addItem(QIcon(":/ui/color07.png"), tr("Black / White"));
+    addItem(QIcon(":/ui/color08.png"), tr("Gray"));
+    addItem(QIcon(":/ui/color09.png"), tr("Light Gray"));
+    addItem(QIcon(":/ui/colorxx.png"), tr("Others.."));
 
     connect(this, SIGNAL(activated(int)),
             this, SLOT(slotColorChanged(int)));
 
 	if (showUnchanged) {
-        setCurrentItem(0);
+        setCurrentIndex(0);
 	}
     else if (showByLayer) {
-        setCurrentItem(0);
+        setCurrentIndex(0);
     } else {
-        setCurrentItem(6);
+        setCurrentIndex(6);
     }
 
-    slotColorChanged(currentItem());
+    slotColorChanged(currentIndex());
 }
 
 /**
@@ -114,33 +118,33 @@ void QG_ColorBox::setColor(const RS_Color& color) {
     currentColor = color;
 	
     if (color.isByLayer() && showByLayer) {
-        setCurrentItem(0);
+        setCurrentIndex(0);
     } else if (color.isByBlock() && showByLayer) {
-        setCurrentItem(1);
+        setCurrentIndex(1);
     } else if (color==QColor(Qt::red)) {
-        setCurrentItem(0+(int)showByLayer*2 + (int)showUnchanged);
+        setCurrentIndex(0+(int)showByLayer*2 + (int)showUnchanged);
     } else if (color==QColor(Qt::yellow)) {
-        setCurrentItem(1+(int)showByLayer*2 + (int)showUnchanged);
+        setCurrentIndex(1+(int)showByLayer*2 + (int)showUnchanged);
     } else if (color==QColor(Qt::green)) {
-        setCurrentItem(2+(int)showByLayer*2 + (int)showUnchanged);
+        setCurrentIndex(2+(int)showByLayer*2 + (int)showUnchanged);
     } else if (color==QColor(Qt::cyan)) {
-        setCurrentItem(3+(int)showByLayer*2 + (int)showUnchanged);
+        setCurrentIndex(3+(int)showByLayer*2 + (int)showUnchanged);
     } else if (color==QColor(Qt::blue)) {
-        setCurrentItem(4+(int)showByLayer*2 + (int)showUnchanged);
+        setCurrentIndex(4+(int)showByLayer*2 + (int)showUnchanged);
     } else if (color==QColor(Qt::magenta)) {
-        setCurrentItem(5+(int)showByLayer*2 + (int)showUnchanged);
+        setCurrentIndex(5+(int)showByLayer*2 + (int)showUnchanged);
     } else if (color==QColor(Qt::white) || color==QColor(Qt::black)) {
-        setCurrentItem(6+(int)showByLayer*2 + (int)showUnchanged);
+        setCurrentIndex(6+(int)showByLayer*2 + (int)showUnchanged);
     } else if (color==QColor(127,127,127)) {
-        setCurrentItem(7+(int)showByLayer*2 + (int)showUnchanged);
+        setCurrentIndex(7+(int)showByLayer*2 + (int)showUnchanged);
     } else if (color==QColor(191,191,191)) {
-        setCurrentItem(8+(int)showByLayer*2 + (int)showUnchanged);
+        setCurrentIndex(8+(int)showByLayer*2 + (int)showUnchanged);
     } else {
-        setCurrentItem(9+(int)showByLayer*2 + (int)showUnchanged);
+        setCurrentIndex(9+(int)showByLayer*2 + (int)showUnchanged);
     }
 
-    if (currentItem()!=9+(int)showByLayer*2 + (int)showUnchanged) {
-        slotColorChanged(currentItem());
+    if (currentIndex()!=9+(int)showByLayer*2 + (int)showUnchanged) {
+        slotColorChanged(currentIndex());
     }
 }
 
@@ -164,11 +168,12 @@ void QG_ColorBox::setLayerColor(const RS_Color& color) {
             painter.end();
         }
 
-        changeItem(pixmap, tr("By Layer"), 0);
+        setItemIcon(0, QIcon(pixmap));
+        setItemText(0, tr("By Layer"));
 
         // needed for the first time a layer is added:
-        if (currentItem()!=9) {
-            slotColorChanged(currentItem());
+        if (currentIndex()!=9) {
+            slotColorChanged(currentIndex());
         }
     }
 }
diff --git a/src/ui/qg_colorbox.h b/src/ui/qg_colorbox.h
index ef541c4..8ae6859 100644
--- a/src/ui/qg_colorbox.h
+++ b/src/ui/qg_colorbox.h
@@ -27,7 +27,7 @@
 #ifndef QG_COLORBOX_H
 #define QG_COLORBOX_H
 
-#include <qcombobox.h>
+#include <QComboBox>
 
 #include "rs_color.h"
 
diff --git a/src/ui/qg_commandedit.cpp b/src/ui/qg_commandedit.cpp
index 03a0d01..da1fa41 100644
--- a/src/ui/qg_commandedit.cpp
+++ b/src/ui/qg_commandedit.cpp
@@ -25,21 +25,14 @@
 **********************************************************************/
 
 #include "qg_commandedit.h"
-//Added by qt3to4:
-#include <QFocusEvent>
-#include <QKeyEvent>
-#include <QEvent>
-
-
-#include "rs_debug.h"
 
 
 /**
  * Default Constructor. You must call init manually if you choose
  * to use this constructor.
  */
-QG_CommandEdit::QG_CommandEdit(QWidget* parent, const char* name)
-        : QLineEdit(parent, name) {}
+QG_CommandEdit::QG_CommandEdit(QWidget* parent)
+        : QLineEdit(parent) {}
 
 
 
diff --git a/src/ui/qg_commandedit.h b/src/ui/qg_commandedit.h
index 4abd39b..7ff8189 100644
--- a/src/ui/qg_commandedit.h
+++ b/src/ui/qg_commandedit.h
@@ -27,11 +27,7 @@
 #ifndef QG_COMMANDEDIT_H
 #define QG_COMMANDEDIT_H
 
-#include <qlineedit.h>
-#include <qstringlist.h>
-//Added by qt3to4:
-#include <QFocusEvent>
-#include <QEvent>
+#include <QLineEdit>
 #include <QKeyEvent>
 
 /**
@@ -42,7 +38,7 @@ class QG_CommandEdit: public QLineEdit {
     Q_OBJECT
 
 public:
-    QG_CommandEdit(QWidget* parent=0, const char* name=0);
+    QG_CommandEdit(QWidget* parent=0);
     virtual ~QG_CommandEdit();
 
 protected:
diff --git a/src/ui/qg_dialogfactory.cpp b/src/ui/qg_dialogfactory.cpp
index 645fa6b..ab57fe8 100644
--- a/src/ui/qg_dialogfactory.cpp
+++ b/src/ui/qg_dialogfactory.cpp
@@ -91,23 +91,12 @@
 #include "qg_splineoptions.h"
 #include "qg_textoptions.h"
 #include "qg_trimamountoptions.h"
-
 #include "qg_polylineoptions.h"
-
-#ifdef RS_CAM
-#include "rs_camdialog.h"
-#endif
-
-#ifdef RVT_CAM
-#include "rvt_cammakeprofiledialog.h"
-#endif
-
 #include "qg_layerwidget.h"
 #include "qg_mainwindowinterface.h"
 
 //QG_DialogFactory* QG_DialogFactory::uniqueInstance = NULL;
 
-
 /**
  * Constructor.
  *
@@ -127,6 +116,10 @@ QG_DialogFactory::QG_DialogFactory(QWidget* parent, QToolBar* ow)
     cadToolBar = NULL;
     commandWidget = NULL;
     mainWindow = NULL;
+    leftHintCurrent=new QString("");
+    rightHintCurrent=new QString("");
+    leftHintSaved=new QString("");
+    rightHintSaved=new QString("");
 	RS_DEBUG->print("QG_DialogFactory::QG_DialogFactory: OK");
 }
 
@@ -136,6 +129,10 @@ QG_DialogFactory::QG_DialogFactory(QWidget* parent, QToolBar* ow)
  * Destructor
  */
 QG_DialogFactory::~QG_DialogFactory() {
+    delete leftHintCurrent;
+    delete rightHintCurrent;
+    delete leftHintSaved;
+    delete rightHintSaved;
     RS_DEBUG->print("QG_DialogFactory::~QG_DialogFactory");
     RS_DEBUG->print("QG_DialogFactory::~QG_DialogFactory: OK");
 }
@@ -146,7 +143,7 @@ QG_DialogFactory::~QG_DialogFactory() {
 /**
  * Shows a message dialog.
  */
-void QG_DialogFactory::requestWarningDialog(const RS_String& warning) {
+void QG_DialogFactory::requestWarningDialog(const QString& warning) {
     QMessageBox::information(parent, QMessageBox::tr("Warning"),
                              warning,
                              QMessageBox::Ok);
@@ -157,7 +154,7 @@ void QG_DialogFactory::requestWarningDialog(const RS_String& warning) {
 /**
  * Requests a new document from the main window.
  */
-RS_GraphicView* QG_DialogFactory::requestNewDocument(const RS_String& fileName, RS_Document* doc) {
+RS_GraphicView* QG_DialogFactory::requestNewDocument(const QString& fileName, RS_Document* doc) {
 	if (mainWindow!=NULL) {
 		mainWindow->createNewDocument(fileName, doc);
 		return mainWindow->getGraphicView();
@@ -430,12 +427,12 @@ RS_Block* QG_DialogFactory::requestBlockRemovalDialog(RS_BlockList* blockList) {
  *         or an empty string if the dialog was cancelled.
  */
 /*
-RS_String QG_DialogFactory::requestFileSaveAsDialog() {
+QString QG_DialogFactory::requestFileSaveAsDialog() {
     // read default settings:
     RS_SETTINGS->beginGroup("/Paths");
-    RS_String defDir = RS_SETTINGS->readEntry("/Save",
+    QString defDir = RS_SETTINGS->readEntry("/Save",
                        RS_SYSTEM->getHomeDir());
-    RS_String defFilter = RS_SETTINGS->readEntry("/SaveFilter",
+    QString defFilter = RS_SETTINGS->readEntry("/SaveFilter",
                           "Drawing Exchange (*.dxf)");
     RS_SETTINGS->endGroup();
  
@@ -444,7 +441,7 @@ RS_String QG_DialogFactory::requestFileSaveAsDialog() {
     QStringList filters;
     bool done = false;
     bool cancel = false;
-    RS_String fn = "";
+    QString fn = "";
  
     filters.append("Drawing Exchange (*.dxf)");
     filters.append("Font (*.cxf)");
@@ -522,14 +519,14 @@ RS_String QG_DialogFactory::requestFileSaveAsDialog() {
  * @return File name with path and extension to determine the file type
  *         or an empty string if the dialog was cancelled.
  */
-RS_String QG_DialogFactory::requestImageOpenDialog() {
-    RS_String fn = "";
+QString QG_DialogFactory::requestImageOpenDialog() {
+    QString fn = "";
 
     // read default settings:
     RS_SETTINGS->beginGroup("/Paths");
-    RS_String defDir = RS_SETTINGS->readEntry("/OpenImage",
+    QString defDir = RS_SETTINGS->readEntry("/OpenImage",
                        RS_SYSTEM->getHomeDir());
-    RS_String defFilter = RS_SETTINGS->readEntry("/ImageFilter",
+    QString defFilter = RS_SETTINGS->readEntry("/ImageFilter",
                           "Portable Network Graphic (*.png)");
     RS_SETTINGS->endGroup();
 
@@ -1648,41 +1645,6 @@ bool QG_DialogFactory::requestHatchDialog(RS_Hatch* hatch) {
     return false;
 }
 
-
-
-/**
- * Shows a dialog for CAM options.
- */
-#ifdef RS_CAM
-bool QG_DialogFactory::requestCamOptionsDialog(RS_Graphic& graphic) {
-	RS_DEBUG->print("QG_DialogFactory::requestCamOptionsDialog");
-	RS_CamDialog dlg(graphic, parent);
-	RS_DEBUG->print("QG_DialogFactory::requestCamOptionsDialog: exec");
-	if (dlg.exec()) {
-		RS_DEBUG->print("QG_DialogFactory::requestCamOptionsDialog: OK");
-		return true;
-	}
-    RS_DEBUG->print("QG_DialogFactory::requestCamOptionsDialog: Cancel");
-	return false;
-}
-#endif
-
-#ifdef RVT_CAM
-bool QG_DialogFactory::requestCamProfileDialog(RVT_CAMProfileData& data) {
-	RS_DEBUG->print("QG_DialogFactory::requestCamProfileDialog");
-        RVT_CamMakeProfileDialog dlg(parent);
-	dlg.setData(&data);
-	RS_DEBUG->print("QG_DialogFactory::requestCamProfileDialog: exec");
-	if (dlg.exec()) {
-		dlg.updateData();
-		RS_DEBUG->print("QG_DialogFactory::requestCamOptionsDialog: OK");
-		return true;
-	}
-    RS_DEBUG->print("QG_DialogFactory::requestCamProfileDialog: Cancel");
-	return false;
-}
-#endif
-
 /**
  * Shows dialog for general application options.
  */
@@ -1729,8 +1691,17 @@ void QG_DialogFactory::updateCoordinateWidget(const RS_Vector& abs,
 /**
  * Called when an action has a mouse hint.
  */
-void QG_DialogFactory::updateMouseWidget(const RS_String& left,
-        const RS_String& right) {
+void QG_DialogFactory::updateMouseWidget(const QString& left,
+        const QString& right) {
+            if ( left != *leftHintCurrent || right != *rightHintCurrent ) {
+    if ( *leftHintSaved != *leftHintCurrent
+                    || *rightHintSaved != *rightHintCurrent ) {
+            *leftHintSaved=*leftHintCurrent;
+            *rightHintSaved=*rightHintCurrent;
+    }
+            *leftHintCurrent=left;
+            *rightHintCurrent=right;
+            }
     if (mouseWidget!=NULL) {
         mouseWidget->setHelp(left, right);
     }
@@ -1739,6 +1710,17 @@ void QG_DialogFactory::updateMouseWidget(const RS_String& left,
     }
 }
 
+/**
+ * Called to restore saved mouse hint.
+ */
+void QG_DialogFactory::updateMouseWidget(void) {
+    if (mouseWidget!=NULL) {
+        mouseWidget->setHelp(*leftHintSaved, *rightHintSaved);
+    }
+    if (commandWidget!=NULL) {
+        commandWidget->setCommand(*leftHintSaved);
+    }
+}
 
 
 /**
@@ -1754,7 +1736,7 @@ void QG_DialogFactory::updateSelectionWidget(int num) {
 /**
  * Called when an action needs to communicate 'message' to the user.
  */
-void QG_DialogFactory::commandMessage(const RS_String& message) {
+void QG_DialogFactory::commandMessage(const QString& message) {
 	RS_DEBUG->print("QG_DialogFactory::commandMessage");
     if (commandWidget!=NULL) {
         commandWidget->appendHistory(message);
diff --git a/src/ui/qg_dialogfactory.h b/src/ui/qg_dialogfactory.h
index e5be439..a4b021b 100644
--- a/src/ui/qg_dialogfactory.h
+++ b/src/ui/qg_dialogfactory.h
@@ -68,11 +68,10 @@ protected:
      * Links factory to a widget that can host tool options.
      */
     virtual void setOptionWidget(QToolBar* ow) {
-		RS_DEBUG->print("QG_DialogFactory::setOptionWidget");
+        RS_DEBUG->print("QG_DialogFactory::setOptionWidget");
         optionWidget = ow;
-		RS_DEBUG->print("QG_DialogFactory::setOptionWidget: OK");
+        RS_DEBUG->print("QG_DialogFactory::setOptionWidget: OK");
     }
-
 public:
     /**
      * Links this dialog factory to a coordinate widget.
@@ -131,9 +130,9 @@ public:
     }
 
 
-    virtual void requestWarningDialog(const RS_String& warning);
+    virtual void requestWarningDialog(const QString& warning);
 	
-    virtual RS_GraphicView* requestNewDocument(const RS_String& fileName = RS_String::null, 
+    virtual RS_GraphicView* requestNewDocument(const QString& fileName = QString::null,
 			RS_Document* doc=NULL);
 
     virtual RS_Layer* requestNewLayerDialog(
@@ -152,10 +151,10 @@ public:
         RS_BlockList* /*blockList*/) {}
     virtual void closeEditBlockWindow(
         RS_Block* /*blockList*/) {}
-    //virtual RS_String requestFileSaveAsDialog();
-    //virtual RS_String requestFileOpenDialog();
+    //virtual QString requestFileSaveAsDialog();
+    //virtual QString requestFileOpenDialog();
 	
-    virtual RS_String requestImageOpenDialog();
+    virtual QString requestImageOpenDialog();
 
 
     virtual void requestOptions(RS_ActionInterface* action,
@@ -239,16 +238,6 @@ public:
     virtual bool requestModifyEntityDialog(RS_Entity* entity);
     virtual bool requestTextDialog(RS_Text* text);
     virtual bool requestHatchDialog(RS_Hatch* hatch);
-	
-#ifdef RS_CAM
-    virtual bool requestCamOptionsDialog(RS_Graphic& graphic);
-#endif
-
-#ifdef RVT_CAM
-    virtual bool requestCamProfileDialog(RVT_CAMProfileData& data);
-#endif
-
-
     virtual void requestOptionsGeneralDialog();
     virtual void requestOptionsDrawingDialog(RS_Graphic& graphic);
 
@@ -256,11 +245,12 @@ public:
 
     virtual void updateCoordinateWidget(const RS_Vector& abs,
                                         const RS_Vector& rel,
-										bool updateFormat=false);
-    virtual void updateMouseWidget(const RS_String& left,
-                                   const RS_String& right);
+                                        bool updateFormat=false);
+    virtual void updateMouseWidget(const QString& left,
+                                   const QString& right);
+    virtual void updateMouseWidget(void);
     virtual void updateSelectionWidget(int num);
-    virtual void commandMessage(const RS_String& message);
+    virtual void commandMessage(const QString& message);
 	virtual bool isAdapter() { return false; }
 
 	static QString extToFormat(const QString& ext);
@@ -283,6 +273,9 @@ protected:
     QG_CommandWidget* commandWidget;
     //! Pointer to the main app window
     QG_MainWindowInterface* mainWindow;
+private:
+    QString *leftHintCurrent, *rightHintCurrent;
+    QString *leftHintSaved, *rightHintSaved;
 };
 
 #endif
diff --git a/src/ui/qg_filedialog.cpp b/src/ui/qg_filedialog.cpp
index 9cee5e4..08b1d93 100644
--- a/src/ui/qg_filedialog.cpp
+++ b/src/ui/qg_filedialog.cpp
@@ -26,15 +26,11 @@
 
 #include "qg_filedialog.h"
 
-#include "qg_graphicview.h"
+#include <QFileDialog>
+#include <QMessageBox>
 
-#include <qfiledialog.h>
-#include <qmessagebox.h>
-
-#include "rs_string.h"
 #include "rs_settings.h"
 #include "rs_system.h"
-#include "rs_graphic.h"
 
 
 /**
@@ -47,14 +43,14 @@
  * @return File name with path and extension to determine the file type
  *         or an empty string if the dialog was cancelled.
  */
-RS_String QG_FileDialog::getSaveFileName(QWidget* parent, RS2::FormatType* type) {
+QString QG_FileDialog::getSaveFileName(QWidget* parent, RS2::FormatType* type) {
     // read default settings:
     RS_SETTINGS->beginGroup("/Paths");
-    RS_String defDir = RS_SETTINGS->readEntry("/Save",
+    QString defDir = RS_SETTINGS->readEntry("/Save",
                                               RS_SYSTEM->getHomeDir());
-    RS_String defFilter = RS_SETTINGS->readEntry("/SaveFilter",
+    QString defFilter = RS_SETTINGS->readEntry("/SaveFilter",
                                                  "Drawing Exchange DXF 2000 (*.dxf)");
-    //RS_String defFilter = "Drawing Exchange (*.dxf)";
+    //QString defFilter = "Drawing Exchange (*.dxf)";
     RS_SETTINGS->endGroup();
 
     // prepare file save as dialog:
@@ -62,15 +58,16 @@ RS_String QG_FileDialog::getSaveFileName(QWidget* parent, RS2::FormatType* type)
     QStringList filters;
     bool done = false;
     bool cancel = false;
-    RS_String fn = "";
+    QString fn = "";
 
     filters.append("Drawing Exchange DXF 2000 (*.dxf)");
     filters.append("Drawing Exchange DXF R12 (*.dxf)");
     filters.append("Font (*.cxf)");
+
     fileDlg->setFilters(filters);
-    fileDlg->setMode(QFileDialog::AnyFile);
-    fileDlg->setCaption(QObject::tr("Save Drawing As"));
-    fileDlg->setDir(defDir);
+    fileDlg->setFileMode(QFileDialog::AnyFile);
+    fileDlg->setWindowTitle(QObject::tr("Save Drawing As"));
+    fileDlg->setDirectory(defDir);
     fileDlg->setAcceptMode(QFileDialog::AcceptSave);
     fileDlg->selectFilter(defFilter);
 
@@ -78,12 +75,15 @@ RS_String QG_FileDialog::getSaveFileName(QWidget* parent, RS2::FormatType* type)
     do {
         // accepted:
         if (fileDlg->exec()==QDialog::Accepted) {
-            fn = fileDlg->selectedFile();
-            fn = QDir::convertSeparators( QFileInfo(fn).absFilePath() );
+            QStringList fl = fileDlg->selectedFiles();
+            if (!fl.isEmpty())
+                fn = fl[0];
+            fn = QDir::convertSeparators( QFileInfo(fn).absoluteFilePath() );
             cancel = false;
 
             // append default extension:
-            if (QFileInfo(fn).fileName().find('.')==-1) {
+            // TODO, since we are starting to suppor tmore extensions, we need to find a better way to add the default
+            if (QFileInfo(fn).fileName().indexOf('.')==-1) {
                 if (fileDlg->selectedFilter()=="Font (*.cxf)") {
                     fn+=".cxf";
                 } else {
@@ -102,6 +102,7 @@ RS_String QG_FileDialog::getSaveFileName(QWidget* parent, RS2::FormatType* type)
                 }
             }
 
+#if !defined (_WIN32) && !defined (__APPLE__)
             // overwrite warning:
             if(QFileInfo(fn).exists()) {
                 int choice =
@@ -122,6 +123,11 @@ RS_String QG_FileDialog::getSaveFileName(QWidget* parent, RS2::FormatType* type)
             } else {
                 done = true;
             }
+#else
+            done = true;
+#endif
+
+
         } else {
             done = true;
             cancel = true;
@@ -132,7 +138,7 @@ RS_String QG_FileDialog::getSaveFileName(QWidget* parent, RS2::FormatType* type)
     // store new default settings:
     if (!cancel) {
         RS_SETTINGS->beginGroup("/Paths");
-        RS_SETTINGS->writeEntry("/Save", QFileInfo(fn).dirPath(true));
+        RS_SETTINGS->writeEntry("/Save", QFileInfo(fn).absolutePath());
         //RS_SETTINGS->writeEntry("/SaveFilter", fileDlg->selectedFilter());
         RS_SETTINGS->endGroup();
     }
@@ -151,30 +157,30 @@ RS_String QG_FileDialog::getSaveFileName(QWidget* parent, RS2::FormatType* type)
  * @return File name with path and extension to determine the file type
  *         or an empty string if the dialog was cancelled.
  */
-RS_String QG_FileDialog::getOpenFileName(QWidget* parent, RS2::FormatType* type) {
+QString QG_FileDialog::getOpenFileName(QWidget* parent, RS2::FormatType* type) {
     RS_DEBUG->print("QG_FileDialog::getOpenFileName");
 
     // read default settings:
     RS_SETTINGS->beginGroup("/Paths");
-    RS_String defDir = RS_SETTINGS->readEntry("/Open",
+    QString defDir = RS_SETTINGS->readEntry("/Open",
                                               RS_SYSTEM->getHomeDir());
-    //RS_String defFilter = RS_SETTINGS->readEntry("/OpenFilter",
+    //QString defFilter = RS_SETTINGS->readEntry("/OpenFilter",
     //                      "Drawing Exchange (*.dxf *.DXF)");
-    RS_String defFilter = "Drawing Exchange (*.dxf *.DXF)";
+    QString defFilter = "Drawing Exchange (*.dxf *.DXF)";
     RS_SETTINGS->endGroup();
 
-    RS_DEBUG->print("defDir: %s", defDir.latin1());
-    RS_DEBUG->print("defFilter: %s", defFilter.latin1());
+    RS_DEBUG->print("defDir: %s", defDir.toLatin1().data());
+    RS_DEBUG->print("defFilter: %s", defFilter.toLatin1().data());
 
-    RS_String fDxf(QObject::tr("Drawing Exchange %1").arg("(*.dxf *.DXF)"));
-    RS_String fDxf1(QObject::tr("QCad 1.x file %1").arg("(*.dxf *.DXF)"));
-    RS_String fCxf(QObject::tr("Font %1").arg("(*.cxf)"));
+    QString fDxf(QObject::tr("Drawing Exchange %1").arg("(*.dxf *.DXF)"));
+    QString fDxf1(QObject::tr("QCad 1.x file %1").arg("(*.dxf *.DXF)"));
+    QString fCxf(QObject::tr("Font %1").arg("(*.cxf)"));
 
-    RS_DEBUG->print("fDxf: %s", fDxf.latin1());
-    RS_DEBUG->print("fDxf1: %s", fDxf1.latin1());
-    RS_DEBUG->print("fCxf: %s", fCxf.latin1());
+    RS_DEBUG->print("fDxf: %s", fDxf.toLatin1().data());
+    RS_DEBUG->print("fDxf1: %s", fDxf1.toLatin1().data());
+    RS_DEBUG->print("fCxf: %s", fCxf.toLatin1().data());
 
-    RS_String fn = "";
+    QString fn = "";
     bool cancel = false;
 
     QFileDialog* fileDlg = new QFileDialog(parent, "File Dialog");
@@ -185,9 +191,9 @@ RS_String QG_FileDialog::getOpenFileName(QWidget* parent, RS2::FormatType* type)
     filters.append(fCxf);
 
     fileDlg->setFilters(filters);
-    fileDlg->setMode(QFileDialog::ExistingFile);
-    fileDlg->setCaption(QObject::tr("Open Drawing"));
-    fileDlg->setDir(defDir);
+    fileDlg->setFileMode(QFileDialog::ExistingFile);
+    fileDlg->setWindowTitle(QObject::tr("Open Drawing"));
+    fileDlg->setDirectory(defDir);
     fileDlg->selectFilter(defFilter);
 
     /** preview RVT PORT preview is currently not supported by QT4
@@ -200,8 +206,10 @@ RS_String QG_FileDialog::getOpenFileName(QWidget* parent, RS2::FormatType* type)
     */
 
     if (fileDlg->exec()==QDialog::Accepted) {
-        fn = fileDlg->selectedFile();
-        fn = QDir::convertSeparators( QFileInfo(fn).absFilePath() );
+        QStringList fl = fileDlg->selectedFiles();
+        if (!fl.isEmpty())
+            fn = fl[0];
+        fn = QDir::convertSeparators( QFileInfo(fn).absoluteFilePath() );
         if (type!=NULL) {
             if (fileDlg->selectedFilter()==fDxf1) {
                 *type = RS2::FormatDXF1;
@@ -219,12 +227,12 @@ RS_String QG_FileDialog::getOpenFileName(QWidget* parent, RS2::FormatType* type)
     // store new default settings:
     if (!cancel) {
         RS_SETTINGS->beginGroup("/Paths");
-        RS_SETTINGS->writeEntry("/Open", QFileInfo(fn).dirPath(true));
+        RS_SETTINGS->writeEntry("/Open", QFileInfo(fn).absolutePath());
         RS_SETTINGS->writeEntry("/OpenFilter", fileDlg->selectedFilter());
         RS_SETTINGS->endGroup();
     }
 
-    RS_DEBUG->print("QG_FileDialog::getOpenFileName: fileName: %s", fn.latin1());
+    RS_DEBUG->print("QG_FileDialog::getOpenFileName: fileName: %s", fn.toLatin1().data());
     RS_DEBUG->print("QG_FileDialog::getOpenFileName: OK");
 
     // RVT PORT delete prev;
diff --git a/src/ui/qg_fontbox.cpp b/src/ui/qg_fontbox.cpp
index 37eaff6..d3540cb 100644
--- a/src/ui/qg_fontbox.cpp
+++ b/src/ui/qg_fontbox.cpp
@@ -26,8 +26,8 @@
 
 #include "qg_fontbox.h"
 
-#include <qpixmap.h>
-#include <qstringlist.h>
+#include "rs_font.h"
+#include "rs_fontlist.h"
 
 #include "rs_debug.h"
 
@@ -36,8 +36,8 @@
  * Default Constructor. You must call init manually if you choose
  * to use this constructor.
  */
-QG_FontBox::QG_FontBox(QWidget* parent, const char* name)
-        : QComboBox(parent, name) {}
+QG_FontBox::QG_FontBox(QWidget* parent)
+        : QComboBox(parent) {}
 
 
 
@@ -54,21 +54,19 @@ QG_FontBox::~QG_FontBox() {}
 void QG_FontBox::init() {
     QStringList fonts;
 
-    for (RS_Font* f = RS_FONTLIST->firstFont();
-            f!=NULL;
-            f = RS_FONTLIST->nextFont()) {
-
-        fonts.append(f->getFileName());
+    QListIterator<RS_Font *> i = RS_FONTLIST->getIteretor();
+    while (i.hasNext()) {
+        fonts.append( i.next()->getFileName() );
     }
 
     fonts.sort();
-    insertStringList(fonts);
+    addItems(fonts);
 
     connect(this, SIGNAL(activated(int)),
             this, SLOT(slotFontChanged(int)));
 
-    setCurrentItem(0);
-    slotFontChanged(currentItem());
+    setCurrentIndex(0);
+    slotFontChanged(currentIndex());
 }
 
 
@@ -76,13 +74,13 @@ void QG_FontBox::init() {
 /**
  * Sets the currently selected width item to the given width.
  */
-void QG_FontBox::setFont(const RS_String& fName) {
+void QG_FontBox::setFont(const QString& fName) {
 
-    RS_DEBUG->print("QG_FontBox::setFont %s\n", fName.latin1());
+    RS_DEBUG->print("QG_FontBox::setFont %s\n", fName.toLatin1().data());
 
-    setCurrentText(fName);
+    setItemText(currentIndex(),fName);
 
-    slotFontChanged(currentItem());
+    slotFontChanged(currentIndex());
 }
 
 
@@ -99,7 +97,7 @@ void QG_FontBox::slotFontChanged(int index) {
 
     if (currentFont!=NULL) {
         RS_DEBUG->print("Current font is (%d): %s\n",
-                        index, currentFont->getFileName().latin1());
+                        index, currentFont->getFileName().toLatin1().data());
     }
 
     emit fontChanged(currentFont);
diff --git a/src/ui/qg_fontbox.h b/src/ui/qg_fontbox.h
index c20571f..22a418f 100644
--- a/src/ui/qg_fontbox.h
+++ b/src/ui/qg_fontbox.h
@@ -27,11 +27,9 @@
 #ifndef QG_FONTBOX_H
 #define QG_FONTBOX_H
 
-#include <qcombobox.h>
+#include <QComboBox>
 
-#include "rs.h"
-#include "rs_font.h"
-#include "rs_fontlist.h"
+class RS_Font;
 
 /**
  * A combobox for choosing a font name.
@@ -40,13 +38,13 @@ class QG_FontBox: public QComboBox {
     Q_OBJECT
 
 public:
-    QG_FontBox(QWidget* parent=0, const char* name=0);
+    QG_FontBox(QWidget* parent=0);
     virtual ~QG_FontBox();
 
     RS_Font* getFont() {
         return currentFont;
     }
-    void setFont(const RS_String& fName);
+    void setFont(const QString& fName);
 
     void init();
 
diff --git a/src/ui/qg_graphicview.cpp b/src/ui/qg_graphicview.cpp
index b1dc457..468b773 100644
--- a/src/ui/qg_graphicview.cpp
+++ b/src/ui/qg_graphicview.cpp
@@ -46,7 +46,6 @@
 #include "rs_actionzoomscroll.h"
 #include "rs_actionmodifydelete.h"
 #include "rs_actionselectsingle.h"
-#include "rs_fileinfo.h"
 #include "rs_graphic.h"
 #include "rs_settings.h"
 #include "rs_system.h"
@@ -55,8 +54,8 @@
 
 #include "qg_cadtoolbar.h"
 
+#include "rs_dialogfactory.h"
 #include "qg_dialogfactory.h"
-#include "qg_qt2rs.h"
 
 
 #define QG_SCROLLMARGIN 400
@@ -103,19 +102,19 @@ QG_GraphicView::QG_GraphicView(QWidget* parent, const char* name, Qt::WFlags f)
 #ifndef __APPLE__
     // Mouse Cursors:
     QPixmap cur1(":ui/cur_cad_bmp.png");
-    curCad = new QCursor(cur1, 15, 15);
+    curCad = new QCursor(cur1, cur1.createMaskFromColor(Qt::color0), 15, 15);
 
     QPixmap cur2(":ui/cur_glass_bmp.png");
-    curMagnifier = new QCursor(cur2, 12, 12);
+    curMagnifier = new QCursor(cur2, cur2.createMaskFromColor(Qt::color0), 12, 12);
 
     QPixmap cur3(":ui/cur_del_bmp.png");
-    curDel = new QCursor(cur3, 15, 15);
+    curDel = new QCursor(cur3, cur3.createMaskFromColor(Qt::color0), 15, 15);
 
     QPixmap cur4(":ui/cur_select_bmp.png");
-    curSelect = new QCursor(cur4, 15, 15);
+    curSelect = new QCursor(cur4, cur4.createMaskFromColor(Qt::color0), 15, 15);
 
     QPixmap cur5(":ui/cur_hand_bmp.png");
-    curHand = new QCursor(cur5, 15, 15);
+    curHand = new QCursor(cur5, cur5.createMaskFromColor(Qt::color0), 15, 15);
 #else
     // No individual cursors for the Mac
     curCad = NULL;
@@ -140,6 +139,9 @@ QG_GraphicView::QG_GraphicView(QWidget* parent, const char* name, Qt::WFlags f)
     //setFocusPolicy(WheelFocus);
 	
     setFocusPolicy(Qt::NoFocus);
+
+    // See https://sourceforge.net/tracker/?func=detail&aid=3289298&group_id=342582&atid=1433844 (Left-mouse drag shrinks window)
+    setAttribute(Qt::WA_NoMousePropagation);
 }
 
 
@@ -284,7 +286,7 @@ void QG_GraphicView::setMouseCursor(RS2::CursorType c) {
 /**
  * Sets the text for the grid status widget in the left bottom corner.
  */
-void QG_GraphicView::updateGridStatusWidget(const RS_String& text) {
+void QG_GraphicView::updateGridStatusWidget(const QString& text) {
     gridStatus->setText(text);
 }
 
@@ -315,7 +317,7 @@ void QG_GraphicView::resizeEvent(QResizeEvent* /*e*/) {
 
 
 void QG_GraphicView::emulateMouseMoveEvent() {
-    RS_MouseEvent e(QEvent::MouseMove, QPoint(mx, my),
+    QMouseEvent e(QEvent::MouseMove, QPoint(mx, my),
                     Qt::NoButton, Qt::NoButton);
     //mouseMoveEvent(&e);
 }
@@ -324,7 +326,11 @@ void QG_GraphicView::emulateMouseMoveEvent() {
 
 void QG_GraphicView::mousePressEvent(QMouseEvent* e) {
     // pan zoom with middle mouse button
+#if QT_VERSION < 0x040700
     if (e->button()==Qt::MidButton /*|| (e->state()==Qt::LeftButton|Qt::AltButton)*/) {
+#else
+    if (e->button()==Qt::MiddleButton /*|| (e->state()==Qt::LeftButton|Qt::AltButton)*/) {
+#endif
         setCurrentAction(new RS_ActionZoomPan(*container, *this));
     }
 
@@ -351,7 +357,7 @@ void QG_GraphicView::mouseReleaseEvent(QMouseEvent* e) {
 
 void QG_GraphicView::mouseMoveEvent(QMouseEvent* e) {
     //RS_DEBUG->print("QG_GraphicView::mouseMoveEvent begin");
-    //RS_MouseEvent rsm = QG_Qt2Rs::mouseEvent(e);
+    //QMouseEvent rsm = QG_Qt2Rs::mouseEvent(e);
 
     RS_GraphicView::mouseMoveEvent(e);
     QWidget::mouseMoveEvent(e);
@@ -750,7 +756,7 @@ void QG_GraphicView::paintEvent(QPaintEvent *) {
 	PixmapLayer2=getPixmapForView(PixmapLayer2);
 	PixmapLayer3=getPixmapForView(PixmapLayer3);
 
-	// Draw Layer 1
+    // Draw Layer 1
 	if (redrawMethod & RS2::RedrawGrid) {
 		PixmapLayer1->fill(background);
 		RS_PainterQt painter1(PixmapLayer1);
@@ -768,18 +774,21 @@ void QG_GraphicView::paintEvent(QPaintEvent *) {
 		RS_PainterQt painter2(PixmapLayer2);
 		painter2.setDrawingMode(drawingMode);
 		setDraftMode(draftMode);
-		drawLayer2((RS_Painter*)&painter2);
-		setDraftMode(false);
+        painter2.setDrawSelectedOnly(false);
+        drawLayer2((RS_Painter*)&painter2);
+        painter2.setDrawSelectedOnly(true);
+        drawLayer2((RS_Painter*)&painter2);
+        setDraftMode(false);
 		painter2.end();
 	}
 	
-	if (redrawMethod & RS2::RedrawOverlay) {
-		PixmapLayer3->fill(Qt::transparent);
-		RS_PainterQt painter3(PixmapLayer3);
-		drawLayer3((RS_Painter*)&painter3);
-		painter3.end();
-	} 
-		
+    if (redrawMethod & RS2::RedrawOverlay) {
+        PixmapLayer3->fill(Qt::transparent);
+        RS_PainterQt painter3(PixmapLayer3);
+        drawLayer3((RS_Painter*)&painter3);
+        painter3.end();
+    }
+
 	// Finally paint the layers back on the screen, bitblk to the rescue!
 	RS_PainterQt wPainter(this);
 	//wPainter.setCompositionMode(QPainter::CompositionMode_Screen);
diff --git a/src/ui/qg_graphicview.h b/src/ui/qg_graphicview.h
index 47028a6..65ddb0f 100644
--- a/src/ui/qg_graphicview.h
+++ b/src/ui/qg_graphicview.h
@@ -79,7 +79,7 @@ public:
     virtual void adjustZoomControls();
     virtual void setBackground(const RS_Color& bg);
     virtual void setMouseCursor(RS2::CursorType c);
-	virtual void updateGridStatusWidget(const RS_String& text);
+        virtual void updateGridStatusWidget(const QString& text);
 
 		virtual	QPixmap* getPixmapForView(QPixmap *pm);
 		
diff --git a/src/ui/qg_layerbox.cpp b/src/ui/qg_layerbox.cpp
index 4f6a057..a7ae2a8 100644
--- a/src/ui/qg_layerbox.cpp
+++ b/src/ui/qg_layerbox.cpp
@@ -26,15 +26,16 @@
 
 #include "qg_layerbox.h"
 
-//#include <qpainter.h>
+#include "rs_layer.h"
+#include "rs_layerlist.h"
 
 
 /**
  * Default Constructor. You must call init manually before using 
  * this class.
  */
-QG_LayerBox::QG_LayerBox(QWidget* parent, const char* name)
-        : QComboBox(parent, name) {
+QG_LayerBox::QG_LayerBox(QWidget* parent)
+        : QComboBox(parent) {
 
     showByBlock = false;
 	showUnchanged = false;
@@ -66,22 +67,22 @@ void QG_LayerBox::init(RS_LayerList& layerList,
     this->layerList = &layerList;
 
     if (showUnchanged) {
-        insertItem(tr("- Unchanged -"));
+        addItem(tr("- Unchanged -"));
 	}
 
     for (uint i=0; i<layerList.count(); ++i) {
         RS_Layer* lay = layerList.at(i);
         if (lay!=NULL && (lay->getName()!="ByBlock" || showByBlock)) {
-            insertItem(lay->getName());
+            addItem(lay->getName());
         }
     }
 
     connect(this, SIGNAL(activated(int)),
             this, SLOT(slotLayerChanged(int)));
 
-    setCurrentItem(0);
+    setCurrentIndex(0);
 
-    slotLayerChanged(currentItem());
+    slotLayerChanged(currentIndex());
 }
 
 
@@ -96,11 +97,12 @@ void QG_LayerBox::setLayer(RS_Layer& layer) {
     //    setCurrentItem(0);
     //} else {
 
-    setCurrentText(layer.getName());
+    int i = findText(layer.getName());
+    setCurrentIndex(i);
     //}
 
     //if (currentItem()!=7+(int)showByBlock*2) {
-    slotLayerChanged(currentItem());
+    slotLayerChanged(currentIndex());
     //}
 }
 
@@ -109,16 +111,17 @@ void QG_LayerBox::setLayer(RS_Layer& layer) {
 /**
  * Sets the layer shown in the combobox to the given layer.
  */
-void QG_LayerBox::setLayer(RS_String& layer) {
+void QG_LayerBox::setLayer(QString& layer) {
 
     //if (layer.getName()=="ByBlock" && showByBlock) {
     //    setCurrentItem(0);
     //} else {
-    setCurrentText(layer);
+    int i = findText(layer);
+    setCurrentIndex(i);
     //}
 
     //if (currentItem()!=7+(int)showByBlock*2) {
-    slotLayerChanged(currentItem());
+    slotLayerChanged(currentIndex());
     //}
 }
 
@@ -140,7 +143,7 @@ void QG_LayerBox::slotLayerChanged(int index) {
 		unchanged = false;
 	}
 
-    currentLayer = layerList->find(text(index));
+    currentLayer = layerList->find(itemText(index));
 
     //printf("Current color is (%d): %s\n",
     //       index, currentLayer.name().latin1());
diff --git a/src/ui/qg_layerbox.h b/src/ui/qg_layerbox.h
index 77423d1..6df6c97 100644
--- a/src/ui/qg_layerbox.h
+++ b/src/ui/qg_layerbox.h
@@ -27,9 +27,10 @@
 #ifndef QG_LAYERBOX_H
 #define QG_LAYERBOX_H
 
-#include <qcombobox.h>
+#include <QComboBox>
 
-#include "rs_layerlist.h"
+class RS_Layer;
+class RS_LayerList;
 
 /**
  * A combobox for choosing a layer.
@@ -38,14 +39,14 @@ class QG_LayerBox: public QComboBox {
     Q_OBJECT
 
 public:
-    QG_LayerBox(QWidget* parent=0, const char* name=0);
+    QG_LayerBox(QWidget* parent=0);
     virtual ~QG_LayerBox();
 
     RS_Layer* getLayer() {
         return currentLayer;
     }
     void setLayer(RS_Layer& layer);
-    void setLayer(RS_String& layer);
+    void setLayer(QString& layer);
 
     void init(RS_LayerList& layerList, bool showByBlock, bool showUnchanged);
 
diff --git a/src/ui/qg_linetypebox.cpp b/src/ui/qg_linetypebox.cpp
index cf9896a..bf6bd06 100644
--- a/src/ui/qg_linetypebox.cpp
+++ b/src/ui/qg_linetypebox.cpp
@@ -25,15 +25,15 @@
 **********************************************************************/
 
 #include "qg_linetypebox.h"
-#include <qpixmap.h>
+
 #include "rs_debug.h"
 
 /**
  * Default Constructor. You must call init manually if you choose
  * to use this constructor.
  */
-QG_LineTypeBox::QG_LineTypeBox(QWidget* parent, const char* name)
-        : QComboBox(parent, name) {
+QG_LineTypeBox::QG_LineTypeBox(QWidget* parent)
+        : QComboBox(parent) {
 
     showByLayer = false;
 	showUnchanged = false;
@@ -48,8 +48,9 @@ QG_LineTypeBox::QG_LineTypeBox(QWidget* parent, const char* name)
  */
 QG_LineTypeBox::QG_LineTypeBox(bool showByLayer, bool showUnchanged, 
 		QWidget* parent, const char* name)
-        : QComboBox(parent, name) {
-	unchanged = false;
+        : QComboBox(parent) {
+    setObjectName(name);
+    unchanged = false;
     init(showByLayer, showUnchanged);
 }
 
@@ -71,39 +72,39 @@ void QG_LineTypeBox::init(bool showByLayer, bool showUnchanged) {
 	this->showUnchanged = showUnchanged;
 
     if (showUnchanged) {
-        insertItem(QPixmap(":ui/linetype00.png"), tr("- Unchanged -"));
+        addItem(QIcon(":ui/linetype00.png"), tr("- Unchanged -"));
 	}
 
     if (showByLayer) {
-        insertItem(QPixmap(":ui/linetype00.png"), tr("By Layer"));
-        insertItem(QPixmap(":ui/linetype00.png"), tr("By Block"));
+        addItem(QIcon(":ui/linetype00.png"), tr("By Layer"));
+        addItem(QIcon(":ui/linetype00.png"), tr("By Block"));
     }
-    insertItem(QPixmap(":ui/linetype00.png"), tr("No Pen"));
-    insertItem(QPixmap(":ui/linetype01.png"), tr("Continuous"));
-    insertItem(QPixmap(":ui/linetype02.png"), tr("Dot"));
-    insertItem(QPixmap(":ui/linetype02.png"), tr("Dot (small)"));
-    insertItem(QPixmap(":ui/linetype02.png"), tr("Dot (large)"));
-    insertItem(QPixmap(":ui/linetype03.png"), tr("Dash"));
-    insertItem(QPixmap(":ui/linetype03.png"), tr("Dash (small)"));
-    insertItem(QPixmap(":ui/linetype03.png"), tr("Dash (large)"));
-    insertItem(QPixmap(":ui/linetype04.png"), tr("Dash Dot"));
-    insertItem(QPixmap(":ui/linetype04.png"), tr("Dash Dot (small)"));
-    insertItem(QPixmap(":ui/linetype04.png"), tr("Dash Dot (large)"));
-    insertItem(QPixmap(":ui/linetype05.png"), tr("Divide"));
-    insertItem(QPixmap(":ui/linetype05.png"), tr("Divide (small)"));
-    insertItem(QPixmap(":ui/linetype05.png"), tr("Divide (large)"));
-    insertItem(QPixmap(":ui/linetype06.png"), tr("Center"));
-    insertItem(QPixmap(":ui/linetype06.png"), tr("Center (small)"));
-    insertItem(QPixmap(":ui/linetype06.png"), tr("Center (large)"));
-    insertItem(QPixmap(":ui/linetype07.png"), tr("Border"));
-    insertItem(QPixmap(":ui/linetype07.png"), tr("Border (small)"));
-    insertItem(QPixmap(":ui/linetype07.png"), tr("Border (large)"));
+    addItem(QIcon(":ui/linetype00.png"), tr("No Pen"));
+    addItem(QIcon(":ui/linetype01.png"), tr("Continuous"));
+    addItem(QIcon(":ui/linetype02.png"), tr("Dot"));
+    addItem(QIcon(":ui/linetype02.png"), tr("Dot (small)"));
+    addItem(QIcon(":ui/linetype02.png"), tr("Dot (large)"));
+    addItem(QIcon(":ui/linetype03.png"), tr("Dash"));
+    addItem(QIcon(":ui/linetype03.png"), tr("Dash (small)"));
+    addItem(QIcon(":ui/linetype03.png"), tr("Dash (large)"));
+    addItem(QIcon(":ui/linetype04.png"), tr("Dash Dot"));
+    addItem(QIcon(":ui/linetype04.png"), tr("Dash Dot (small)"));
+    addItem(QIcon(":ui/linetype04.png"), tr("Dash Dot (large)"));
+    addItem(QIcon(":ui/linetype05.png"), tr("Divide"));
+    addItem(QIcon(":ui/linetype05.png"), tr("Divide (small)"));
+    addItem(QIcon(":ui/linetype05.png"), tr("Divide (large)"));
+    addItem(QIcon(":ui/linetype06.png"), tr("Center"));
+    addItem(QIcon(":ui/linetype06.png"), tr("Center (small)"));
+    addItem(QIcon(":ui/linetype06.png"), tr("Center (large)"));
+    addItem(QIcon(":ui/linetype07.png"), tr("Border"));
+    addItem(QIcon(":ui/linetype07.png"), tr("Border (small)"));
+    addItem(QIcon(":ui/linetype07.png"), tr("Border (large)"));
 
     connect(this, SIGNAL(activated(int)),
             this, SLOT(slotLineTypeChanged(int)));
 
-    setCurrentItem(0);
-    slotLineTypeChanged(currentItem());
+    setCurrentIndex(0);
+    slotLineTypeChanged(currentIndex());
 }
 
 /**
@@ -118,7 +119,7 @@ void QG_LineTypeBox::setLineType(RS2::LineType t) {
     switch (t) {
     case RS2::LineByLayer:
         if (showByLayer) {
-            setCurrentItem(0 + (int)showUnchanged);
+            setCurrentIndex(0 + (int)showUnchanged);
         } else {
         	RS_DEBUG->print(RS_Debug::D_WARNING,
             	"QG_LineTypeBox::setLineType: "
@@ -127,7 +128,7 @@ void QG_LineTypeBox::setLineType(RS2::LineType t) {
         break;
     case RS2::LineByBlock:
         if (showByLayer) {
-            setCurrentItem(1 + (int)showUnchanged);
+            setCurrentIndex(1 + (int)showUnchanged);
         } else {
         	RS_DEBUG->print(RS_Debug::D_WARNING,
             	"QG_LineTypeBox::setLineType: "
@@ -136,74 +137,74 @@ void QG_LineTypeBox::setLineType(RS2::LineType t) {
         break;
 		
 	case RS2::SolidLine:
-		setCurrentItem(1 + offset);
+                setCurrentIndex(1 + offset);
 		break;
 
 	case RS2::DotLine:
-		setCurrentItem(2 + offset);
+                setCurrentIndex(2 + offset);
 		break;
 	case RS2::DotLine2:
-		setCurrentItem(3 + offset);
+                setCurrentIndex(3 + offset);
 		break;
 	case RS2::DotLineX2:
-		setCurrentItem(4 + offset);
+                setCurrentIndex(4 + offset);
 		break;
 
 	case RS2::DashLine:
-		setCurrentItem(5 + offset);
+                setCurrentIndex(5 + offset);
 		break;
 	case RS2::DashLine2:
-		setCurrentItem(6 + offset);
+                setCurrentIndex(6 + offset);
 		break;
 	case RS2::DashLineX2:
-		setCurrentItem(7 + offset);
+                setCurrentIndex(7 + offset);
 		break;
 	
 	case RS2::DashDotLine:
-		setCurrentItem(8 + offset);
+                setCurrentIndex(8 + offset);
 		break;
 	case RS2::DashDotLine2:
-		setCurrentItem(9 + offset);
+                setCurrentIndex(9 + offset);
 		break;
 	case RS2::DashDotLineX2:
-		setCurrentItem(10 + offset);
+                setCurrentIndex(10 + offset);
 		break;
 	
 	case RS2::DivideLine:
-		setCurrentItem(11 + offset);
+                setCurrentIndex(11 + offset);
 		break;
 	case RS2::DivideLine2:
-		setCurrentItem(12 + offset);
+                setCurrentIndex(12 + offset);
 		break;
 	case RS2::DivideLineX2:
-		setCurrentItem(13 + offset);
+                setCurrentIndex(13 + offset);
 		break;
 	
 	case RS2::CenterLine:
-		setCurrentItem(14 + offset);
+                setCurrentIndex(14 + offset);
 		break;
 	case RS2::CenterLine2:
-		setCurrentItem(15 + offset);
+                setCurrentIndex(15 + offset);
 		break;
 	case RS2::CenterLineX2:
-		setCurrentItem(16 + offset);
+                setCurrentIndex(16 + offset);
 		break;
 	
 	case RS2::BorderLine:
-		setCurrentItem(17 + offset);
+                setCurrentIndex(17 + offset);
 		break;
 	case RS2::BorderLine2:
-		setCurrentItem(18 + offset);
+                setCurrentIndex(18 + offset);
 		break;
 	case RS2::BorderLineX2:
-		setCurrentItem(19 + offset);
+                setCurrentIndex(19 + offset);
 		break;
 	
     default:
         break;
     }
 
-    slotLineTypeChanged(currentItem());
+    slotLineTypeChanged(currentIndex());
 }
 
 /**
@@ -236,10 +237,11 @@ void QG_LineTypeBox::setLayerLineType(RS2::LineType t) {
             break;
         }
 
-        changeItem(pixmap, tr("By Layer"), 0);
+        setItemIcon(0, QIcon(pixmap));
+        setItemText(0, tr("By Layer"));
 
         // needed for the first time a layer is added:
-        slotLineTypeChanged(currentItem());
+        slotLineTypeChanged(currentIndex());
     }
 }
 
@@ -291,3 +293,4 @@ void QG_LineTypeBox::slotLineTypeChanged(int index) {
 }
 
 
+
diff --git a/src/ui/qg_linetypebox.h b/src/ui/qg_linetypebox.h
index 54377ab..c198fff 100644
--- a/src/ui/qg_linetypebox.h
+++ b/src/ui/qg_linetypebox.h
@@ -27,7 +27,7 @@
 #ifndef QG_LINETYPEBOX_H
 #define QG_LINETYPEBOX_H
 
-#include <qcombobox.h>
+#include <QComboBox>
 
 #include "rs.h"
 
@@ -38,7 +38,7 @@ class QG_LineTypeBox: public QComboBox {
     Q_OBJECT
 
 public:
-    QG_LineTypeBox(QWidget* parent=0, const char* name=0);
+    QG_LineTypeBox(QWidget* parent=0);
     QG_LineTypeBox(bool showByLayer, bool showUnchanged, 
 		QWidget* parent=0, const char* name=0);
     virtual ~QG_LineTypeBox();
diff --git a/src/ui/qg_mainwindowinterface.h b/src/ui/qg_mainwindowinterface.h
index beac247..1fea70a 100644
--- a/src/ui/qg_mainwindowinterface.h
+++ b/src/ui/qg_mainwindowinterface.h
@@ -50,7 +50,7 @@ public:
     virtual QG_ActionHandler* getActionHandler() = 0;
 	virtual void setFocus2() = 0;
 
-	//virtual QToolBar* createToolBar(const RS_String& name) = 0;
+        //virtual QToolBar* createToolBar(const QString& name) = 0;
 	//virtual void addToolBarButton(QToolBar* tb) = 0;
 };
 
diff --git a/src/ui/qg_patternbox.cpp b/src/ui/qg_patternbox.cpp
index eb1ed1b..c1d2990 100644
--- a/src/ui/qg_patternbox.cpp
+++ b/src/ui/qg_patternbox.cpp
@@ -54,11 +54,9 @@ QG_PatternBox::~QG_PatternBox() {}
 void QG_PatternBox::init() {
     QStringList patterns;
 
-    for (RS_Pattern* f = RS_PATTERNLIST->firstPattern();
-            f!=NULL;
-            f = RS_PATTERNLIST->nextPattern()) {
-
-        patterns.append(f->getFileName());
+    QListIterator<RS_Pattern *> f = RS_PATTERNLIST->getIteretor();
+    while (f.hasNext()) {
+        patterns.append( f.next()->getFileName() );
     }
 
     patterns.sort();
@@ -76,9 +74,9 @@ void QG_PatternBox::init() {
 /**
  * Sets the currently selected width item to the given width.
  */
-void QG_PatternBox::setPattern(const RS_String& pName) {
+void QG_PatternBox::setPattern(const QString& pName) {
 
-    RS_DEBUG->print("QG_PatternBox::setPattern %s\n", pName.latin1());
+    RS_DEBUG->print("QG_PatternBox::setPattern %s\n", pName.toLatin1().data());
 
     setCurrentText(pName);
 
@@ -99,7 +97,7 @@ void QG_PatternBox::slotPatternChanged(int index) {
 
     if (currentPattern!=NULL) {
         RS_DEBUG->print("Current pattern is (%d): %s\n",
-                        index, currentPattern->getFileName().latin1());
+                        index, currentPattern->getFileName().toLatin1().data());
     }
 
     emit patternChanged(currentPattern);
diff --git a/src/ui/qg_patternbox.h b/src/ui/qg_patternbox.h
index 66e0979..b7f64e5 100644
--- a/src/ui/qg_patternbox.h
+++ b/src/ui/qg_patternbox.h
@@ -46,7 +46,7 @@ public:
     RS_Pattern* getPattern() {
         return currentPattern;
     }
-    void setPattern(const RS_String& pName);
+    void setPattern(const QString& pName);
 
     void init();
 
diff --git a/src/ui/qg_qt2rs.h b/src/ui/qg_qt2rs.h
deleted file mode 100644
index 529fc8d..0000000
--- a/src/ui/qg_qt2rs.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/****************************************************************************
-**
-** This file is part of the LibreCAD project, a 2D CAD program
-**
-** Copyright (C) 2010 R. van Twisk (librecad at rvt.dds.nl)
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by 
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-** GNU General Public License for more details.
-** 
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** This copyright notice MUST APPEAR in all copies of the script!  
-**
-**********************************************************************/
-
-#ifndef QG_QT2RS_H
-#define QG_QT2RS_H
-
-#include <qnamespace.h>
-
-#include "rs_mouseevent.h"
-
-/**
- * Translates Qt stuff into LibreCAD stuff.
- */
-class QG_Qt2Rs {
-
-public:
-    QG_Qt2Rs() {}
-    ~QG_Qt2Rs() {}
-
-    /*static RS_MouseEvent mouseEvent(QMouseEvent* e) {
-    	RS_MouseButton button;
-    	switch (e->button()) {
-    		case Qt::LeftButton:
-    			button = LEFT;
-    			break;
-    		case Qt::RightButton:
-    			button = RIGHT;
-    			break;
-    		case Qt::MidButton:
-    			button = MIDDLE;
-    			break;
-    		default:
-    			button = NONE;
-    			break;
-    	}
-
-    	return RS_MouseEvent(e->pos().x(), 
-                                e->pos().y(), 
-                                button );
-}*/
-}
-;
-
-#endif
-
diff --git a/ts/librecad_cs.ts b/ts/librecad_cs.ts
index ff6615f..b31e177 100644
--- a/ts/librecad_cs.ts
+++ b/ts/librecad_cs.ts
@@ -32,6 +32,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Zrušit</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Zrušit</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Zrušit</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -309,7 +342,7 @@ Zkontrolujte prosím přístupová práva.</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -401,10 +434,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1965,7 +1994,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2446,7 +2475,7 @@ v jiném okně</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Posun</translation>
+        <translation type="obsolete">Posun</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2490,7 +2519,7 @@ v jiném okně</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Otočit okolo dvou středů</translation>
+        <translation type="obsolete">Otočit okolo dvou středů</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2516,6 +2545,14 @@ v jiném okně</translation>
         <source>Edit Text</source>
         <translation>Upravit text</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Pousnout / Kopírovat</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6088,6 +6125,22 @@ Přejete si ho přepsat?</translation>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_da.ts b/ts/librecad_da.ts
index f19f91e..fb45957 100644
--- a/ts/librecad_da.ts
+++ b/ts/librecad_da.ts
@@ -32,6 +32,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Afbryd</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Afbryd</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Afbryd</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -309,7 +342,7 @@ Check venligst filretighederne.</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -401,10 +434,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1001,7 +1030,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1482,7 +1511,7 @@ i et nyt vindue</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Flyt</translation>
+        <translation type="obsolete">Flyt</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -1514,7 +1543,7 @@ i et nyt vindue</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Drej omkring to centre</translation>
+        <translation type="obsolete">Drej omkring to centre</translation>
     </message>
     <message>
         <source>Explode</source>
@@ -1548,6 +1577,14 @@ i et nyt vindue</translation>
         <source>Edit Text</source>
         <translation>Rediger Tekst</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Flyt / kopier</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Drej to</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -5104,6 +5141,22 @@ Vil du overskrive den?</translation>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_de.ts b/ts/librecad_de.ts
index 0c11d22..24f2e5b 100644
--- a/ts/librecad_de.ts
+++ b/ts/librecad_de.ts
@@ -32,6 +32,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Abbrechen</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Abbrechen</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Abbrechen</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -344,7 +377,7 @@ nicht speichern. Bitte prüfen Sie die Berechtigung.</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -446,10 +479,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2179,7 +2208,7 @@ wirklich schliessen?</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2684,7 +2713,7 @@ Fenster editieren</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Verschieben</translation>
+        <translation type="obsolete">Verschieben</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2732,7 +2761,7 @@ Fenster editieren</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Objekte um zwei Zentren rotieren</translation>
+        <translation type="obsolete">Objekte um zwei Zentren rotieren</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2758,6 +2787,14 @@ Fenster editieren</translation>
         <source>Edit Text</source>
         <translation>Text editieren</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Verschieben / Kopieren</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Rotieren Zwei</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6658,6 +6695,22 @@ Wollen Sie die Datei überschreiben?</translation>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_el.ts b/ts/librecad_el.ts
index 966b380..0a98bdc 100644
--- a/ts/librecad_el.ts
+++ b/ts/librecad_el.ts
@@ -32,6 +32,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Ακύρωση</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Ακύρωση</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Ακύρωση</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -309,7 +342,7 @@ Please check the permissions.</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -401,10 +434,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Move</source>
-        <translation>Μετακίνηση</translation>
+        <translation type="obsolete">Μετακίνηση</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2474,7 +2503,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Περιστροφή περι δυο κέντρων</translation>
+        <translation type="obsolete">Περιστροφή περι δυο κέντρων</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2500,6 +2529,14 @@ in a separate window</source>
         <source>Edit Text</source>
         <translation>Διόρθωση Κειμένου</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Μετακίνηση / Αντιγραφή</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Περιστροφή Δύο</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6080,6 +6117,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_en.ts b/ts/librecad_en.ts
index 8d88416..781ea43 100644
--- a/ts/librecad_en.ts
+++ b/ts/librecad_en.ts
@@ -2,6 +2,39 @@
 <!DOCTYPE TS>
 <TS version="2.0">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -212,10 +245,6 @@ Please check the permissions.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&CAM</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
@@ -275,10 +304,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -426,7 +451,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -901,10 +926,6 @@ in a separate window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Move</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Move and Rotate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -941,10 +962,6 @@ in a separate window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Rotate around two centers</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Edit Entity Attributes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -968,6 +985,14 @@ in a separate window</source>
         <source>Edit Text</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -4463,6 +4488,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_en_au.ts b/ts/librecad_en_au.ts
index a6cafe4..d1a24a7 100644
--- a/ts/librecad_en_au.ts
+++ b/ts/librecad_en_au.ts
@@ -2,235 +2,272 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="en_AU">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="38"/>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancel</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="40"/>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="129"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancel</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="40"/>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="47"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancel</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="188"/>
         <source>&Plugins</source>
-        <translation>&Plugins</translation>
+        <translation type="obsolete">&Plugins</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="329"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="360"/>
         <source>Running script '%1'</source>
         <translation>Running script '%1'</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="371"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="402"/>
         <source>Inserting block '%1'</source>
         <translation>Inserting block '%1'</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="493"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="524"/>
         <source>&File</source>
         <translation>&File</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="513"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="544"/>
         <source>Import</source>
         <translation>Import</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="540"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="571"/>
         <source>&Edit</source>
         <translation>&Edit</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="596"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="627"/>
         <source>&View</source>
         <translation>&View</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="664"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
         <source>&Toolbars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="693"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="724"/>
         <source>Focus on &Command Line</source>
         <translation>Focus on &Command Line</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="726"/>
         <source>CTRL+M</source>
         <translation>CTRL+M</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="707"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="738"/>
         <source>&Select</source>
         <translation>&Select</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="744"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="775"/>
         <source>&Draw</source>
         <translation>&Draw</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="748"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="779"/>
         <source>&Point</source>
         <translation>&Point</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="755"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="786"/>
         <source>&Line</source>
         <translation>&Line</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="827"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="858"/>
         <source>&Arc</source>
         <translation>&Arc</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="840"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
         <source>&Circle</source>
         <translation>&Circle</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="859"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="890"/>
         <source>&Ellipse</source>
         <translation>&Ellipse</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="902"/>
         <source>&Spline</source>
         <translation>&Spline</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="878"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="909"/>
         <source>&Polyline</source>
         <translation>&Polyline</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="922"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="924"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="953"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="955"/>
         <source>&Dimension</source>
         <translation>&Dimension</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="954"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="985"/>
         <source>&Modify</source>
         <translation>&Modify</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1037"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1068"/>
         <source>&Snap</source>
         <translation>&Snap</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1100"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1131"/>
         <source>&Info</source>
         <translation>&Info</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1124"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1159"/>
         <source>&Layer</source>
         <translation>&Layer</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1151"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1186"/>
         <source>&Block</source>
         <translation>&Block</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1195"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1230"/>
         <source>&Scripts</source>
         <translation>&Scripts</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1208"/>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1221"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1248"/>
         <source>About</source>
         <translation>About</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1228"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1255"/>
         <source>&Manual</source>
         <translation>&Manual</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1273"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1300"/>
         <source>Insert Image</source>
         <translation>Insert Image</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1333"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1360"/>
         <source>&Window</source>
         <translation>&Window</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1341"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1368"/>
         <source>&Help</source>
         <translation>&Help</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1349"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1376"/>
         <source>De&bugging</source>
         <translation>De&bugging</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1557"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1586"/>
         <source>Layer List</source>
         <translation>Layer List</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1578"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1607"/>
         <source>Block List</source>
         <translation>Block List</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1599"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1628"/>
         <source>Library Browser</source>
         <translation>Library Browser</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1625"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1654"/>
         <source>Command line</source>
         <translation>Command line</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1839"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1868"/>
         <source>&Cascade</source>
         <translation>&Cascade</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1841"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1870"/>
         <source>&Tile</source>
         <translation>&Tile</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1843"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1872"/>
         <source>Tile &Horizontally</source>
         <translation>Tile &Horizontally</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2003"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2009"/>
         <source>Creating new file...</source>
         <translation>Creating new file...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2013"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2019"/>
         <source>Block '%1'</source>
         <translation>Block '%1'</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2015"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2021"/>
         <source>unnamed document %1</source>
         <translation>unnamed document %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2055"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2061"/>
         <source>New Drawing created.</source>
         <translation>New Drawing created.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2089"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2095"/>
         <source>Opening recent file...</source>
         <translation>Opening recent file...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2130"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2136"/>
         <source>Cannot open the file
 %1
 Please check the permissions.</source>
@@ -239,29 +276,29 @@ Please check the permissions.</source>
 Please check the permissions.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2164"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2170"/>
         <source>Loaded document: </source>
         <translation>Loaded document: </translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2168"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2174"/>
         <source>Opening aborted</source>
         <translation>Opening aborted</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2182"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2188"/>
         <source>Saving drawing...</source>
         <translation>Saving drawing...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2194"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2244"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2200"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2250"/>
         <source>Saved drawing: %1</source>
         <translation>Saved drawing: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2199"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2236"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2205"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2242"/>
         <source>Cannot save the file
 %1
 Please check the permissions.</source>
@@ -270,22 +307,22 @@ Please check the permissions.</source>
 Please check the permissions.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2216"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2222"/>
         <source>Saving drawing under new filename...</source>
         <translation>Saving drawing under new filename...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2257"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2263"/>
         <source>Auto-saving drawing...</source>
         <translation>Auto-saving drawing...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2266"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2272"/>
         <source>Auto-saved drawing</source>
         <translation>Auto-saved drawing</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2271"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2277"/>
         <source>Cannot auto-save the file
 %1
 Please check the permissions.
@@ -296,67 +333,67 @@ Please check the permissions.
 Auto-save disabled.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2288"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2294"/>
         <source>Exporting drawing...</source>
         <translation>Exporting drawing...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2361"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2367"/>
         <source>Exported: %1</source>
         <translation>Exported: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2401"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2407"/>
         <source>Exporting...</source>
         <translation>Exporting...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2456"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2462"/>
         <source>Export complete</source>
         <translation>Export complete</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2458"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2464"/>
         <source>Export failed!</source>
         <translation>Export failed!</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2524"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2530"/>
         <source>Printing...</source>
         <translation>Printing...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2587"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2593"/>
         <source>Printing complete</source>
         <translation>Printing complete</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2636"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2642"/>
         <source>Print preview for %1</source>
         <translation>Print preview for %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2695"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2701"/>
         <source>Exiting application...</source>
         <translation>Exiting application...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2897"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
         <source>None</source>
         <translation>None</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2901"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
         <source>About...</source>
         <translation>About...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
         <source>Version: %1</source>
         <translation type="unfinished">Version: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2906"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
         <source>SCM Revision: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -369,17 +406,17 @@ Auto-save disabled.</translation>
         <translation type="obsolete">SVN Revision: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2908"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2917"/>
         <source>Compiled on: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2919"/>
         <source>Program Icons Supplied by</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2911"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
         <source>Splash and Logo supplied by</source>
         <translation type="unfinished"></translation>
     </message>
@@ -388,27 +425,27 @@ Auto-save disabled.</translation>
         <translation type="obsolete">Date: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2922"/>
         <source>Modules: %1</source>
         <translation>Modules: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2924"/>
         <source>Main Website : </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2929"/>
         <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2955"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2964"/>
         <source>Help</source>
         <translation>Help</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2968"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2977"/>
         <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
         <translation>'Strewth, I couldn't find the helpfiles on the filesystem.</translation>
     </message>
@@ -416,19 +453,19 @@ Auto-save disabled.</translation>
 <context>
     <name>QC_MDIWindow</name>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="406"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="405"/>
         <source>Do you really want to close the drawing?</source>
         <translation>Do you really want to close the drawing?</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="412"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="411"/>
         <source>Do you really want to close the file
 %1?</source>
         <translation>Do you really want to close the file
 %1?</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="415"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="414"/>
         <source>Closing Drawing</source>
         <translation>Closing Drawing</translation>
     </message>
@@ -436,123 +473,127 @@ Auto-save disabled.</translation>
 <context>
     <name>QG_ActionFactory</name>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="224"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="214"/>
         <source>&Export...</source>
         <translation>&Export...</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="223"/>
         <source>&Close</source>
         <translation>&Close</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="243"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
         <source>&Print...</source>
         <translation>&Print...</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="264"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="254"/>
         <source>&Quit</source>
         <translation>&Quit</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="897"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="270"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="887"/>
         <source>&Grid</source>
         <translation>&Grid</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="282"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="272"/>
         <source>CTRL-G</source>
         <translation>CTRL-G</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="290"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
         <source>&Draft</source>
         <translation>&Draft</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="299"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="289"/>
         <source>&Statusbar</source>
         <translation>&Statusbar</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="381"/>
         <source>&back</source>
-        <translation>&back</translation>
+        <translation type="obsolete">&back</translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="371"/>
+        <source>&Selection pointer</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="886"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="876"/>
         <source>&Free</source>
         <translation>&Free</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="908"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="898"/>
         <source>&Endpoints</source>
         <translation>&Endpoints</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="919"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="909"/>
         <source>&On Entity</source>
         <translation>&On Entity</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="930"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="920"/>
         <source>&Center</source>
         <translation>&Center</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="941"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="931"/>
         <source>&Middle</source>
         <translation>&Middle</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="952"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="942"/>
         <source>&Distance from Endpoint</source>
         <translation>&Distance from Endpoint</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="963"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="953"/>
         <source>&Intersection</source>
         <translation>&Intersection</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="983"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="973"/>
         <source>Restrict &Nothing</source>
         <translation>Restrict &Nothing</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="994"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="984"/>
         <source>Restrict &Orthogonally</source>
         <translation>Restrict &Orthogonally</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1005"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="995"/>
         <source>Restrict &Horizontally</source>
         <translation>Restrict &Horizontally</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1016"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1006"/>
         <source>Restrict&Vertically</source>
         <translation>Restrict&Vertically</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1180"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1176"/>
         <source>&Preferences</source>
         <translation>&Preferences</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1182"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1178"/>
         <source>&Application Preferences</source>
         <translation>&Application Preferences</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1205"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1201"/>
         <source>Open IDE</source>
         <translation>Open IDE</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1215"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1211"/>
         <source>Run Script..</source>
         <translation>Run Script..</translation>
     </message>
@@ -565,12 +606,12 @@ Auto-save disabled.</translation>
         <translation>Arc Options</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arcoptions.ui" line="56"/>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="62"/>
         <source>Clockwise</source>
         <translation>Clockwise</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arcoptions.ui" line="76"/>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="82"/>
         <source>Counter Clockwise</source>
         <translation>Counter Clockwise</translation>
     </message>
@@ -578,12 +619,12 @@ Auto-save disabled.</translation>
 <context>
     <name>QG_ArcTangentialOptions</name>
     <message>
-        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="31"/>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="26"/>
         <source>Tangential Arc Options</source>
         <translation>Tangential Arc Options</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="40"/>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="35"/>
         <source>Radius:</source>
         <translation>Radius:</translation>
     </message>
@@ -649,12 +690,12 @@ Auto-save disabled.</translation>
         <translation>Esc</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_blockdialog.ui.h" line="62"/>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="97"/>
         <source>Renaming Block</source>
         <translation>Renaming Block</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_blockdialog.ui.h" line="63"/>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="98"/>
         <source>Could not name block. A block named "%1" already exists.</source>
         <translation>Could not name block. A block named "%1" already exists.</translation>
     </message>
@@ -662,89 +703,89 @@ Auto-save disabled.</translation>
 <context>
     <name>QG_BlockWidget</name>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="75"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="77"/>
         <source>Show all blocks</source>
         <translation>Show all blocks</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="83"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="85"/>
         <source>Hide all blocks</source>
         <translation>Hide all blocks</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="91"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="93"/>
         <source>Add a block</source>
         <translation>Add a block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="99"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="101"/>
         <source>Remove the active block</source>
         <translation>Remove the active block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="107"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="109"/>
         <source>Rename the active block</source>
         <translation>Rename the active block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="115"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="117"/>
         <source>Edit the active block
 in a separate window</source>
         <translation>Edit the active block
 in a separate window</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="124"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="126"/>
         <source>Insert the active block</source>
         <translation>Insert the active block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="302"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="304"/>
         <source>Block Menu</source>
         <translation>Block Menu</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="307"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
         <source>&Defreeze all Blocks</source>
         <translation>&Defreeze all Blocks</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
         <source>&Freeze all Blocks</source>
         <translation>&Freeze all Blocks</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
         <source>&Add Block</source>
         <translation>&Add Block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
         <source>&Remove Block</source>
         <translation>&Remove Block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
         <source>&Rename Block</source>
         <translation>&Rename Block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
         <source>&Edit Block</source>
         <translation>&Edit Block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
         <source>&Insert Block</source>
         <translation>&Insert Block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
         <source>&Toggle Visibility</source>
         <translation>&Toggle Visibility</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="325"/>
         <source>&Create New Block</source>
         <translation>&Create New Block</translation>
     </message>
@@ -752,7 +793,7 @@ in a separate window</translation>
 <context>
     <name>QG_CadToolBar</name>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="31"/>
+        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="26"/>
         <source>CAD Tools</source>
         <translation>CAD Tools</translation>
     </message>
@@ -1177,8 +1218,17 @@ in a separate window</translation>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="258"/>
+        <source>Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Move</source>
-        <translation>Move</translation>
+        <translation type="obsolete">Move</translation>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="278"/>
@@ -1186,9 +1236,8 @@ in a separate window</translation>
         <translation>Move and Rotate</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
         <source>Rotate around two centers</source>
-        <translation>Rotate around two centers</translation>
+        <translation type="obsolete">Rotate around two centers</translation>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="318"/>
@@ -1472,68 +1521,68 @@ in a separate window</translation>
 <context>
     <name>QG_ColorBox</name>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="77"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
         <source>Unchanged</source>
         <translation>Unchanged</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="80"/>
-        <location filename="../src/ui/qg_colorbox.cpp" line="167"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="172"/>
         <source>By Layer</source>
         <translation>By Layer</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
         <source>By Block</source>
         <translation>By Block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
         <source>Red</source>
         <translation>Red</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
         <source>Yellow</source>
         <translation>Yellow</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="86"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
         <source>Green</source>
         <translation>Green</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="87"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
         <source>Cyan</source>
         <translation>Cyan</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
         <source>Blue</source>
         <translation>Blue</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
         <source>Magenta</source>
         <translation>Magenta</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="94"/>
         <source>Black / White</source>
         <translation>Black / White</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="95"/>
         <source>Gray</source>
         <translation>Gray</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="96"/>
         <source>Light Gray</source>
         <translation>Light Gray</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="97"/>
         <source>Others..</source>
         <translation>Others..</translation>
     </message>
@@ -1541,13 +1590,13 @@ in a separate window</translation>
 <context>
     <name>QG_CommandWidget</name>
     <message>
-        <location filename="../src/ui/forms/qg_commandwidget.ui" line="17"/>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="15"/>
         <source>Command Line</source>
         <translation>Command Line</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_commandwidget.ui" line="80"/>
-        <location filename="../src/ui/forms/qg_commandwidget.ui.h" line="49"/>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="82"/>
+        <location filename="../src/ui/forms/qg_commandwidget.cpp" line="83"/>
         <source>Command:</source>
         <translation>Command:</translation>
     </message>
@@ -4439,7 +4488,7 @@ You can changes these settings later in the Options Dialogue of QCad.</translati
 <context>
     <name>QG_LayerBox</name>
     <message>
-        <location filename="../src/ui/qg_layerbox.cpp" line="69"/>
+        <location filename="../src/ui/qg_layerbox.cpp" line="70"/>
         <source>- Unchanged -</source>
         <translation>- Unchanged -</translation>
     </message>
@@ -4798,118 +4847,118 @@ You can changes these settings later in the Options Dialogue of QCad.</translati
 <context>
     <name>QG_LineTypeBox</name>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="74"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="75"/>
         <source>- Unchanged -</source>
         <translation>- Unchanged -</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="78"/>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="239"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="241"/>
         <source>By Layer</source>
         <translation>By Layer</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="80"/>
         <source>By Block</source>
         <translation>By Block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="81"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
         <source>No Pen</source>
         <translation>No Pen</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
         <source>Continuous</source>
         <translation>Continuous</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
         <source>Dot</source>
         <translation>Dot</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
         <source>Dot (small)</source>
         <translation>Dot (small)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
         <source>Dot (large)</source>
         <translation>Dot (large)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
         <source>Dash</source>
         <translation>Dash</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
         <source>Dash (small)</source>
         <translation>Dash (small)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
         <source>Dash (large)</source>
         <translation>Dash (large)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
         <source>Dash Dot</source>
         <translation>Dash Dot</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
         <source>Dash Dot (small)</source>
         <translation>Dash Dot (small)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
         <source>Dash Dot (large)</source>
         <translation>Dash Dot (large)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
         <source>Divide</source>
         <translation>Divide</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
         <source>Divide (small)</source>
         <translation>Divide (small)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
         <source>Divide (large)</source>
         <translation>Divide (large)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
         <source>Center</source>
         <translation>Centre</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
         <source>Center (small)</source>
         <translation>Centre (small)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
         <source>Center (large)</source>
         <translation>Centre (large)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
         <source>Border</source>
         <translation>Border</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
         <source>Border (small)</source>
         <translation>Border (small)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="101"/>
         <source>Border (large)</source>
         <translation>Border (large)</translation>
     </message>
@@ -5330,11 +5379,11 @@ You can changes these settings later in the Options Dialogue of QCad.</translati
 <context>
     <name>QMessageBox</name>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2129"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2198"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2235"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2270"/>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="150"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2135"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2204"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2241"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2276"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="140"/>
         <source>Warning</source>
         <translation>Warning</translation>
     </message>
@@ -5349,33 +5398,33 @@ You can changes these settings later in the Options Dialogue of QCad.</translati
         <translation>Layer with a name "%1" already exists. Please specify a different name.</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="236"/>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="247"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="226"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
         <source>Remove Layer</source>
         <translation>Remove Layer</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="227"/>
         <source>Layer "%1" and all entities on it will be removed.</source>
         <translation>Layer "%1" and all entities on it will be removed.</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="248"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="238"/>
         <source>Layer "%1" can never be removed.</source>
         <translation>Layer "%1" can never be removed.</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="293"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="283"/>
         <source>Layer Dialog</source>
         <translation>Layer Dialogue</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="408"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="398"/>
         <source>Remove Block</source>
         <translation>Remove Block</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="409"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="399"/>
         <source>Block "%1" and all its entities will be removed.</source>
         <translation>Block "%1" and all its entities will be removed.</translation>
     </message>
@@ -5383,137 +5432,137 @@ You can changes these settings later in the Options Dialogue of QCad.</translati
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="180"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="179"/>
         <source>None</source>
         <translation>None</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="183"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="261"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="182"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="260"/>
         <source>Inch</source>
         <translation>Inch</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="186"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="263"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="185"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="262"/>
         <source>Foot</source>
         <translation>Foot</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="189"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="265"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="188"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="264"/>
         <source>Mile</source>
         <translation>Mile</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="192"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="267"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="191"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="266"/>
         <source>Millimeter</source>
         <translation>Millimetre</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="195"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="269"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="194"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="268"/>
         <source>Centimeter</source>
         <translation>Centimetre</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="198"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="271"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="197"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="270"/>
         <source>Meter</source>
         <translation>Metre</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="201"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="273"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="200"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="272"/>
         <source>Kilometer</source>
         <translation>Kilometre</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="204"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="275"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="203"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="274"/>
         <source>Microinch</source>
         <translation>Microinch</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="207"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="277"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="206"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="276"/>
         <source>Mil</source>
         <translation>Mil</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="210"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="279"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="209"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="278"/>
         <source>Yard</source>
         <translation>Yard</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="213"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="281"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="212"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="280"/>
         <source>Angstrom</source>
         <translation>Angstrom</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="216"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="283"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="215"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="282"/>
         <source>Nanometer</source>
         <translation>Nanometre</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="219"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="285"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="218"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="284"/>
         <source>Micron</source>
         <translation>Micron</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="222"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="287"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="221"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="286"/>
         <source>Decimeter</source>
         <translation>Decimetre</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="225"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="289"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="224"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="288"/>
         <source>Decameter</source>
         <translation>Decametre</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="228"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="291"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="227"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="290"/>
         <source>Hectometer</source>
         <translation>Hectometre</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="231"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="293"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="230"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="292"/>
         <source>Gigameter</source>
         <translation>Gigametre</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="234"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="295"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="233"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="294"/>
         <source>Astro</source>
         <translation>Astro</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="237"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="297"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="236"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="296"/>
         <source>Lightyear</source>
         <translation>Lightyear</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="240"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="299"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="239"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="298"/>
         <source>Parsec</source>
         <translation>Parsec</translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="188"/>
+        <location filename="../src/main/main.cpp" line="185"/>
         <source>Loading..</source>
         <translation>Loading..</translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="214"/>
+        <location filename="../src/main/main.cpp" line="211"/>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5522,113 +5571,135 @@ You can changes these settings later in the Options Dialogue of QCad.</translati
         <translation type="obsolete">Loading Library Paths..</translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="229"/>
+        <location filename="../src/main/main.cpp" line="226"/>
         <source>Loading File %1..</source>
         <translation>Loading File %1..</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="571"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="561"/>
         <source>All Image Files (%1)</source>
         <translation>All Image Files (%1)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="572"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="562"/>
         <source>All Files (*.*)</source>
         <translation>All Files (*.*)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="579"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="569"/>
         <source>Open Image</source>
         <translation>Open Image</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1778"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1733"/>
         <source>Windows Bitmap</source>
         <translation>Windows Bitmap</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1780"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1735"/>
         <source>Joint Photographic Experts Group</source>
         <translation>Joint Photographic Experts Group</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1782"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1737"/>
         <source>Graphics Interchange Format</source>
         <translation>Graphics Interchange Format</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1784"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1739"/>
         <source>Multiple-image Network Graphics</source>
         <translation>Multiple-image Network Graphics</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1786"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1741"/>
         <source>Portable Bit Map</source>
         <translation>Portable Bit Map</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1788"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1743"/>
         <source>Portable Grey Map</source>
         <translation>Portable Grey Map</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1790"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1745"/>
         <source>Portable Network Graphic</source>
         <translation>Portable Network Graphic</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1792"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1747"/>
         <source>Portable Pixel Map</source>
         <translation>Portable Pixel Map</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1794"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1749"/>
         <source>X Bitmap Format</source>
         <translation>X Bitmap Format</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1796"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1751"/>
         <source>X Pixel Map</source>
         <translation>X Pixel Map</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="72"/>
-        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="68"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="107"/>
         <source>Save Drawing As</source>
         <translation>Save Drawing As</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="109"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
         <source>%1 already exists.
 Do you want to replace it?</source>
         <translation>%1 already exists.
 Do you want to replace it?</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="169"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="173"/>
         <source>Drawing Exchange %1</source>
         <translation>Drawing Exchange %1</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="170"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="174"/>
         <source>QCad 1.x file %1</source>
         <translation>QCad 1.x file %1</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="171"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="175"/>
         <source>Font %1</source>
         <translation>Font %1</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="189"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="193"/>
         <source>Open Drawing</source>
         <translation>Open Drawing</translation>
     </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="698"/>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="702"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="719"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="736"/>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="715"/>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="732"/>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksadd.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionblocksadd.cpp" line="42"/>
         <source>&Add Block</source>
         <translation>&Add Block</translation>
     </message>
@@ -5636,7 +5707,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionBlocksAttributes</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="45"/>
         <source>&Rename Block</source>
         <translation>&Rename Block</translation>
     </message>
@@ -5644,17 +5715,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionBlocksCreate</name>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="52"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="54"/>
         <source>&Create Block</source>
         <translation>&Create Block</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="162"/>
         <source>Specify reference point</source>
         <translation>Specify reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="163"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -5662,7 +5733,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionBlocksEdit</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksedit.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionblocksedit.cpp" line="42"/>
         <source>&Edit Block</source>
         <translation>&Edit Block</translation>
     </message>
@@ -5670,7 +5741,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionBlocksExplode</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="48"/>
         <source>&Explode</source>
         <translation>&Explode</translation>
     </message>
@@ -5678,12 +5749,12 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionBlocksFreezeAll</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="49"/>
         <source>&Freeze all</source>
         <translation>&Freeze all</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="55"/>
         <source>&Defreeze all</source>
         <translation>&Defreeze all</translation>
     </message>
@@ -5691,57 +5762,57 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionBlocksInsert</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="48"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="50"/>
         <source>&Insert Block</source>
         <translation>&Insert Block</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="193"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="206"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="219"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="232"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="245"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="258"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="234"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="247"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="260"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="311"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="313"/>
         <source>Specify reference point</source>
         <translation>Specify reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="312"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="314"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="315"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="317"/>
         <source>Enter angle:</source>
         <translation>Enter angle:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="319"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="321"/>
         <source>Enter factor:</source>
         <translation>Enter factor:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="323"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="325"/>
         <source>Enter columns:</source>
         <translation>Enter columns:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="327"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="329"/>
         <source>Enter rows:</source>
         <translation>Enter rows:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="331"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="333"/>
         <source>Enter column spacing:</source>
         <translation>Enter column spacing:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="335"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="337"/>
         <source>Enter row spacing:</source>
         <translation>Enter row spacing:</translation>
     </message>
@@ -5757,7 +5828,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionBlocksToggleView</name>
     <message>
-        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="45"/>
+        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="47"/>
         <source>Toggle Block Visibility</source>
         <translation>Toggle Block Visibility</translation>
     </message>
@@ -5765,12 +5836,12 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDefault</name>
     <message>
-        <location filename="../src/actions/rs_actiondefault.cpp" line="356"/>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
         <source>Choose second edge</source>
         <translation>Choose second edge</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="358"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -5778,38 +5849,38 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDimAligned</name>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="51"/>
         <source>&Aligned</source>
         <translation>&Aligned</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="265"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="267"/>
         <source>Specify first extension line origin</source>
         <translation>Specify first extension line origin</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="266"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="268"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="270"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="272"/>
         <source>Specify second extension line origin</source>
         <translation>Specify second extension line origin</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="271"/>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="273"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="278"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="275"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="277"/>
         <source>Specify dimension line location</source>
         <translation>Specify dimension line location</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="279"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="281"/>
         <source>Enter dimension text:</source>
         <translation>Enter dimension text:</translation>
     </message>
@@ -5817,34 +5888,34 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDimAngular</name>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="48"/>
         <source>&Angular</source>
         <translation>&Angular</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="287"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="289"/>
         <source>Select first line</source>
         <translation>Select first line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="288"/>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="292"/>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="296"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="294"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="291"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="293"/>
         <source>Select second line</source>
         <translation>Select second line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="296"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
         <source>Specify dimension arc line location</source>
         <translation>Specify dimension arc line location</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="299"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="301"/>
         <source>Enter dimension text:</source>
         <translation>Enter dimension text:</translation>
     </message>
@@ -5891,27 +5962,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDimLeader</name>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="51"/>
         <source>&Leader</source>
         <translation>&Leader</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="227"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="234"/>
         <source>Specify target point</source>
         <translation>Specify target point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="228"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="235"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="231"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="238"/>
         <source>Specify next point</source>
         <translation>Specify next point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="239"/>
         <source>Finish</source>
         <translation>Finish</translation>
     </message>
@@ -5919,58 +5990,58 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDimLinear</name>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="66"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="69"/>
         <source>&Linear</source>
         <translation>&Linear</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="73"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="76"/>
         <source>&Horizontal</source>
         <translation>&Horizontal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="80"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="83"/>
         <source>&Vertical</source>
         <translation>&Vertical</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="263"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="312"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="315"/>
         <source>Specify first extension line origin</source>
         <translation>Specify first extension line origin</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="313"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="316"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="320"/>
         <source>Specify second extension line origin</source>
         <translation>Specify second extension line origin</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="318"/>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="323"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="321"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="322"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="325"/>
         <source>Specify dimension line location</source>
         <translation>Specify dimension line location</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="329"/>
         <source>Enter dimension text:</source>
         <translation>Enter dimension text:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="330"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="333"/>
         <source>Enter dimension line angle:</source>
         <translation>Enter dimension line angle:</translation>
     </message>
@@ -6017,65 +6088,65 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawArc</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="50"/>
         <source>&Center, Point, Angles</source>
         <translation>&Centre, Point, Angles</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="275"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="289"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="308"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="323"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="344"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="309"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="324"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="345"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="339"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="340"/>
         <source>Not a valid chord length</source>
         <translation>Not a valid chord length</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
         <source>Specify center</source>
         <translation>Specify centre</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="371"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
         <source>Specify radius</source>
         <translation>Specify radius</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="371"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="375"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="381"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="385"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="389"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="375"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
         <source>Specify start angle:</source>
         <translation>Specify start angle:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="379"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
         <source>Specify end angle or [Angle/chord Length]</source>
         <translation>Specify end angle or [Angle/chord Length]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
         <source>Specify included angle:</source>
         <translation>Specify included angle:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="387"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
         <source>Specify chord length:</source>
         <translation>Specify chord length:</translation>
     </message>
@@ -6083,38 +6154,38 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawArc3P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="52"/>
         <source>&3 Points</source>
         <translation>&3 Points</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="99"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="101"/>
         <source>Invalid arc data.</source>
         <translation>Invalid arc data.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="227"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="229"/>
         <source>Specify startpoint or [Center]</source>
         <translation>Specify startpoint or [Centre]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="228"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="230"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
         <source>Specify second point</source>
         <translation>Specify second point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="232"/>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="236"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="236"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
         <source>Specify endpoint</source>
         <translation>Specify endpoint</translation>
     </message>
@@ -6122,27 +6193,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawArcTangential</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="52"/>
         <source>Arc: Tangential</source>
         <translation>Arc: Tangential</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="257"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
         <source>Specify base entity</source>
         <translation>Specify base entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="259"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
         <source>Specify end angle</source>
         <translation>Specify end angle</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -6150,32 +6221,32 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawCircle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="53"/>
         <source>Center, &Point</source>
         <translation>Centre, &Point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="185"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="188"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
         <source>Specify center</source>
         <translation>Specify centre</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
         <source>Specify radius</source>
         <translation>Specify radius</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -6183,32 +6254,32 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawCircle2P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="50"/>
         <source>2 Points</source>
         <translation>2 Points</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="96"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="100"/>
         <source>Invalid Circle data.</source>
         <translation>Invalid Circle data.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="206"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
         <source>Specify first point</source>
         <translation>Specify first point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="206"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
         <source>Specify second point</source>
         <translation>Specify second point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -6216,38 +6287,38 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawCircle3P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="50"/>
         <source>3 Points</source>
         <translation>3 Points</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="97"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="100"/>
         <source>Invalid circle data.</source>
         <translation>Invalid circle data.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="207"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="210"/>
         <source>Specify first point</source>
         <translation>Specify first point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="208"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="214"/>
         <source>Specify second point</source>
         <translation>Specify second point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="212"/>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="219"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="218"/>
         <source>Specify third point</source>
         <translation>Specify third point</translation>
     </message>
@@ -6255,32 +6326,32 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawCircleCR</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="48"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="52"/>
         <source>Center, &Radius</source>
         <translation>Centre, &Radius</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="167"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="171"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="198"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
         <source>Specify circle center</source>
         <translation>Specify circle centre</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="206"/>
         <source>Specify circle radius</source>
         <translation>Specify circle radius</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="207"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -6288,57 +6359,57 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawEllipseAxis</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="61"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="65"/>
         <source>&Ellipse Arc (Axis)</source>
         <translation>&Ellipse Arc (Axis)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="66"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="70"/>
         <source>&Ellipse (Axis)</source>
         <translation>&Ellipse (Axis)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="315"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="329"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="343"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="319"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="333"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="347"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="367"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="371"/>
         <source>Specify ellipse center</source>
         <translation>Specify ellipse centre</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="376"/>
         <source>Specify endpoint of major axis</source>
         <translation>Specify endpoint of major axis</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="373"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="379"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="384"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="389"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="377"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="393"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="378"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="382"/>
         <source>Specify endpoint or length of minor axis:</source>
         <translation>Specify endpoint or length of minor axis:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="387"/>
         <source>Specify start angle</source>
         <translation>Specify start angle</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="392"/>
         <source>Specify end angle</source>
         <translation>Specify end angle</translation>
     </message>
@@ -6346,17 +6417,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawHatch</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="47"/>
         <source>&Hatch</source>
         <translation>&Hatch</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="154"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="157"/>
         <source>Hatch created successfully.</source>
         <translation>Hatch created successfully.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="159"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="162"/>
         <source>Invalid hatch area. Please check that the entities chosen form one or more closed contours.</source>
         <translation>Invalid hatch area. Please check that the entities chosen form one or more closed contours.</translation>
     </message>
@@ -6364,33 +6435,33 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawImage</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="51"/>
         <source>&Image</source>
         <translation>&Image</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="197"/>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="212"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="260"/>
         <source>Specify reference point</source>
         <translation>Specify reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="261"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="264"/>
         <source>Enter angle:</source>
         <translation>Enter angle:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="266"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="268"/>
         <source>Enter factor:</source>
         <translation>Enter factor:</translation>
     </message>
@@ -6398,43 +6469,43 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLine</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="55"/>
         <source>&2 Points</source>
         <translation>&2 Points</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="236"/>
         <source>Specify first point</source>
         <translation>Specify first point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="233"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="237"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="248"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
         <source>Specify next point or [%1]</source>
         <translation>Specify next point or [%1]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="249"/>
         <location filename="../src/actions/rs_actiondrawline.cpp" line="253"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="257"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="256"/>
         <source>Specify next point</source>
         <translation>Specify next point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="302"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="306"/>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
         <translation>Cannot close sequence of lines: Not enough entities defined yet.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="321"/>
         <source>Cannot undo: Not enough entities defined yet.</source>
         <translation>Cannot undo: Not enough entities defined yet.</translation>
     </message>
@@ -6442,49 +6513,49 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLineAngle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="58"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="62"/>
         <source>&Angle</source>
         <translation>&Angle</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="64"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="68"/>
         <source>&Horizontal</source>
         <translation>&Horizontal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="70"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="74"/>
         <source>Vertical</source>
         <translation>Vertical</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="212"/>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="225"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="229"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="264"/>
         <source>Specify position</source>
         <translation>Specify position</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="261"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
         <source>Enter angle:</source>
         <translation>Enter angle:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
         <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
         <source>Enter length:</source>
         <translation>Enter length:</translation>
     </message>
@@ -6492,45 +6563,45 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLineBisector</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="54"/>
         <source>Bisector</source>
         <translation>Bisector</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="199"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="212"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="215"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="247"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="250"/>
         <source>Select first line</source>
         <translation>Select first line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="248"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="254"/>
         <source>Select second line</source>
         <translation>Select second line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="252"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="256"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="263"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="258"/>
         <source>Enter bisector length:</source>
         <translation>Enter bisector length:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="262"/>
         <source>Enter number of bisectors:</source>
         <translation>Enter number of bisectors:</translation>
     </message>
@@ -6538,17 +6609,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLineFree</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="51"/>
         <source>&Freehand Line</source>
         <translation>&Freehand Line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="126"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
         <source>Click and drag to draw a line</source>
         <translation>Click and drag to draw a line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="126"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -6556,27 +6627,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLineHorVert</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="53"/>
         <source>Vertical</source>
         <translation>Vertical</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="147"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="150"/>
         <source>Specify first point</source>
         <translation>Specify first point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="148"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="154"/>
         <source>Specify second point</source>
         <translation>Specify second point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="152"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="155"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -6584,39 +6655,39 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLineParallel</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="53"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="57"/>
         <source>Parallel</source>
         <translation>Parallel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="56"/>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="59"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="60"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="63"/>
         <source>Concentric</source>
         <translation>Concentric</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="128"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="132"/>
         <source>Specify Distance <%1> or select entity or [%2]</source>
         <translation>Specify Distance <%1> or select entity or [%2]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="130"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="138"/>
         <source>Enter number:</source>
         <translation>Enter number:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="195"/>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="221"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="225"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="219"/>
         <source>Not a valid number. Try 1..99</source>
         <translation>Not a valid number. Try 1..99</translation>
     </message>
@@ -6624,43 +6695,43 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLineParallelThrough</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="52"/>
         <source>Parallel through point</source>
         <translation>Parallel through point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="170"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
         <source>Select entity</source>
         <translation>Select entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="170"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="174"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="177"/>
         <source>Specify through point</source>
         <translation>Specify through point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="175"/>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
         <source>Number:</source>
         <translation>Number:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="237"/>
         <source>Not a valid number. Try 1..99</source>
         <translation>Not a valid number. Try 1..99</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="238"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="241"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
@@ -6668,32 +6739,32 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLinePolygon</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="50"/>
         <source>Pol&ygon (Cen,Cor)</source>
         <translation>Pol&ygon (Cen,Cor)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="140"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="143"/>
         <source>Specify center</source>
         <translation>Specify centre</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="145"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="148"/>
         <source>Specify a corner</source>
         <translation>Specify a corner</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="152"/>
         <source>Enter number:</source>
         <translation>Enter number:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="213"/>
         <source>Not a valid number. Try 1..9999</source>
         <translation>Not a valid number. Try 1..9999</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="219"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
@@ -6701,43 +6772,43 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLinePolygon2</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="50"/>
         <source>Polygo&n (Cor,Cor)</source>
         <translation>Polygo&n (Cor,Cor)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="140"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="143"/>
         <source>Specify first corner</source>
         <translation>Specify first corner</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="141"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="144"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="145"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="148"/>
         <source>Specify second corner</source>
         <translation>Specify second corner</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="146"/>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="150"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="150"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
         <source>Number:</source>
         <translation>Number:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="214"/>
         <source>Not a valid number. Try 1..9999</source>
         <translation>Not a valid number. Try 1..9999</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="217"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="220"/>
         <source>Not a valid expression.</source>
         <translation>Not a valid expression.</translation>
     </message>
@@ -6745,27 +6816,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLineRectangle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="50"/>
         <source>Rectangle</source>
         <translation>Rectangle</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="192"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
         <source>Specify first corner</source>
         <translation>Specify first corner</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="193"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="200"/>
         <source>Specify second corner</source>
         <translation>Specify second corner</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="201"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -6773,38 +6844,38 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLineRelAngle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="55"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="58"/>
         <source>Relative angle</source>
         <translation>Relative angle</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="61"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="64"/>
         <source>Orthogonal</source>
         <translation>Orthogonal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="255"/>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="272"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="275"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="312"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="315"/>
         <source>Select base entity</source>
         <translation>Select base entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="313"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="319"/>
         <source>Specify position</source>
         <translation>Specify position</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="320"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -6812,27 +6883,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLineTangent1</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="49"/>
         <source>Tangent (P,C)</source>
         <translation>Tangent (P,C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="180"/>
         <source>Specify point</source>
         <translation>Specify point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="181"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="182"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="184"/>
         <source>Select circle, arc or ellipse</source>
         <translation>Select circle, arc or ellipse</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="183"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="185"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -6840,27 +6911,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawLineTangent2</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="48"/>
         <source>Tangent (C,C)</source>
         <translation>Tangent (C,C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="162"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="164"/>
         <source>Select first circle or arc</source>
         <translation>Select first circle or arc</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="163"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="165"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="166"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="168"/>
         <source>Select second circle or arc</source>
         <translation>Select second circle or arc</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="167"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="169"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -6868,17 +6939,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawPoint</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="41"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="45"/>
         <source>&Points</source>
         <translation>&Points</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="121"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
         <source>Specify location</source>
         <translation>Specify location</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="121"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -6886,53 +6957,53 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawPolyline</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
         <source>&Polyline</source>
         <translation>&Polyline</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="53"/>
         <source>Draw polylines</source>
         <translation>Draw polylines</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="354"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
         <source>Specify first point</source>
         <translation>Specify first point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="356"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="370"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
         <source>Specify next point or [%1]</source>
         <translation>Specify next point or [%1]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="376"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="374"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
         <source>Specify next point</source>
         <translation>Specify next point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="429"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="430"/>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
         <translation>Cannot close sequence of lines: Not enough entities defined yet.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="459"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="460"/>
         <source>Undo disallowed due a fatal bug somewhere. Sorry.</source>
         <translation>Undo disallowed due a fatal bug somewhere. Sorry.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="462"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="463"/>
         <source>Cannot undo: Not enough entities defined yet.</source>
         <translation>Cannot undo: Not enough entities defined yet.</translation>
     </message>
@@ -6940,7 +7011,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawSpline</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawspline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="52"/>
         <source>&Spline</source>
         <translation>&Spline</translation>
     </message>
@@ -6979,27 +7050,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionDrawText</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="49"/>
         <source>&Text</source>
         <translation>&Text</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="274"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="276"/>
         <source>Specify insertion point</source>
         <translation>Specify insertion point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="275"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="277"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="278"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="280"/>
         <source>Enter text:</source>
         <translation>Enter text:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="279"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="281"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7007,22 +7078,22 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionEditCopy</name>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="55"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="59"/>
         <source>&Copy</source>
         <translation>&Copy</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="65"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="69"/>
         <source>Cu&t</source>
         <translation>Cu&t</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="130"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="134"/>
         <source>Specify reference point</source>
         <translation>Specify reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="131"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="135"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -7030,17 +7101,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionEditPaste</name>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="49"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="52"/>
         <source>&Paste</source>
         <translation>&Paste</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="132"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="135"/>
         <source>Set reference point</source>
         <translation>Set reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="133"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="136"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -7048,12 +7119,12 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionEditUndo</name>
     <message>
-        <location filename="../src/actions/rs_actioneditundo.cpp" line="53"/>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="56"/>
         <source>&Undo</source>
         <translation>&Undo</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditundo.cpp" line="63"/>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="66"/>
         <source>&Redo</source>
         <translation>&Redo</translation>
     </message>
@@ -7061,7 +7132,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionFileNew</name>
     <message>
-        <location filename="../src/actions/rs_actionfilenew.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionfilenew.cpp" line="39"/>
         <source>&New...</source>
         <translation>&New...</translation>
     </message>
@@ -7085,7 +7156,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionFileSaveAs</name>
     <message>
-        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="38"/>
+        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="39"/>
         <source>Save &as...</source>
         <translation>Save &as...</translation>
     </message>
@@ -7093,37 +7164,37 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionInfoAngle</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="45"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="46"/>
         <source>Angle between two lines</source>
         <translation>Angle between two lines</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="77"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="78"/>
         <source>Angle: %1%2</source>
         <translation>Angle: %1%2</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="81"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="82"/>
         <source>Lines are parallel</source>
         <translation>Lines are parallel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="146"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
         <source>Specify first line</source>
         <translation>Specify first line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="148"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="151"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
         <source>Specify second line</source>
         <translation>Specify second line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="153"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7131,43 +7202,43 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionInfoArea</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="43"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="45"/>
         <source>Polygonal Area</source>
         <translation>Polygonal Area</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="70"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="73"/>
         <source>Area: %1</source>
         <translation>Area: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="71"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="74"/>
         <source>Circumference: %1</source>
         <translation>Circumference: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="189"/>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="204"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="192"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="207"/>
         <source>Point: %1/%2</source>
         <translation>Point: %1/%2</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="232"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="235"/>
         <source>Specify first point of polygon</source>
         <translation>Specify first point of polygon</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="233"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="236"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="237"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="240"/>
         <source>Specify next point of polygon</source>
         <translation>Specify next point of polygon</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="238"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="241"/>
         <source>Terminate</source>
         <translation>Terminate</translation>
     </message>
@@ -7175,32 +7246,32 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionInfoDist</name>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="41"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="42"/>
         <source>&Distance Point to Point</source>
         <translation>&Distance Point to Point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="63"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="64"/>
         <source>Distance: %1</source>
         <translation>Distance: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="150"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
         <source>Specify first point of distance</source>
         <translation>Specify first point of distance</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="152"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="155"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
         <source>Specify second point of distance</source>
         <translation>Specify second point of distance</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="157"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7208,32 +7279,32 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionInfoDist2</name>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="41"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="42"/>
         <source>&Distance Entity to Point</source>
         <translation>&Distance Entity to Point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="61"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="62"/>
         <source>Distance: %1</source>
         <translation>Distance: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="136"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
         <source>Specify entity</source>
         <translation>Specify entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="138"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="141"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
         <source>Specify point</source>
         <translation>Specify point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="143"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7241,27 +7312,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionInfoInside</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="58"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="61"/>
         <source>Point inside contour</source>
         <translation>Point inside contour</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="67"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="70"/>
         <source>Point is inside selected contour.</source>
         <translation>Point is inside selected contour.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="69"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="72"/>
         <source>Point is outside selected contour.</source>
         <translation>Point is outside selected contour.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="100"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="103"/>
         <source>Specify point</source>
         <translation>Specify point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="101"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="104"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -7269,17 +7340,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionInfoTotalLength</name>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="44"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="41"/>
         <source>&Total length of selected entities</source>
         <translation>&Total length of selected entities</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="78"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="75"/>
         <source>Total Length of selected entities: %1</source>
         <translation>Total Length of selected entities: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="80"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="77"/>
         <source>At least one of the selected entities cannot be measured.</source>
         <translation>At least one of the selected entities cannot be measured.</translation>
     </message>
@@ -7287,7 +7358,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionLayersAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersadd.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionlayersadd.cpp" line="41"/>
         <source>Add Layer</source>
         <translation>Add Layer</translation>
     </message>
@@ -7295,7 +7366,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionLayersEdit</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersedit.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionlayersedit.cpp" line="44"/>
         <source>&Edit Layer</source>
         <translation>&Edit Layer</translation>
     </message>
@@ -7303,12 +7374,12 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionLayersFreezeAll</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="48"/>
         <source>&Freeze all</source>
         <translation>&Freeze all</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="54"/>
         <source>&Defreeze all</source>
         <translation>&Defreeze all</translation>
     </message>
@@ -7316,7 +7387,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionLayersRemove</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersremove.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionlayersremove.cpp" line="42"/>
         <source>Remove Layer</source>
         <translation>Remove Layer</translation>
     </message>
@@ -7324,7 +7395,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionLayersToggleLock</name>
     <message>
-        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="47"/>
         <source>Toggle Layer Lock</source>
         <translation>Toggle Layer Lock</translation>
     </message>
@@ -7332,7 +7403,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionLayersToggleView</name>
     <message>
-        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="43"/>
         <source>&Toggle Layer</source>
         <translation>&Toggle Layer</translation>
     </message>
@@ -7387,7 +7458,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyAttributes</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="45"/>
         <source>&Attributes</source>
         <translation>&Attributes</translation>
     </message>
@@ -7395,45 +7466,45 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyBevel</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="50"/>
         <source>&Bevel</source>
         <translation>&Bevel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="175"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="191"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="252"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="255"/>
         <source>Select first entity</source>
         <translation>Select first entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="253"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="259"/>
         <source>Select second entity</source>
         <translation>Select second entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="257"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="261"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="265"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="268"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="263"/>
         <source>Enter length 1:</source>
         <translation>Enter length 1:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="267"/>
         <source>Enter length 2:</source>
         <translation>Enter length 2:</translation>
     </message>
@@ -7441,48 +7512,48 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyCut</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="46"/>
         <source>&Divide</source>
         <translation>&Divide</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="104"/>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="122"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="125"/>
         <source>No Entity found.</source>
         <translation>No Entity found.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="111"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="114"/>
         <source>Entity must be a line, arc, circle or ellipse.</source>
         <translation>Entity must be a line, arc, circle or ellipse.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="124"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
         <source>Cutting point is invalid.</source>
         <translation>Cutting point is invalid.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="130"/>
         <source>Cutting point is not on entity.</source>
         <translation>Cutting point is not on entity.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="150"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="153"/>
         <source>Specify entity to cut</source>
         <translation>Specify entity to cut</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="151"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="157"/>
         <source>Specify cutting point</source>
         <translation>Specify cutting point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="155"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="158"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7498,67 +7569,67 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyDeleteFree</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="46"/>
         <source>Delete Freehand</source>
         <translation>Delete Freehand</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="95"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="97"/>
         <source>Entities not in the same polyline.</source>
         <translation>Entities not in the same polyline.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="98"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="100"/>
         <source>Parent of second entity is not a polyline</source>
         <translation>Parent of second entity is not a polyline</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="101"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="103"/>
         <source>Parent of second entity is NULL</source>
         <translation>Parent of second entity is NULL</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="104"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="106"/>
         <source>One of the chosen entities is NULL</source>
         <translation>One of the chosen entities is NULL</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="129"/>
         <source>Parent of first entity is not a polyline</source>
         <translation>Parent of first entity is not a polyline</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="131"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="133"/>
         <source>Parent of first entity is NULL</source>
         <translation>Parent of first entity is NULL</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="135"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="137"/>
         <source>First entity is NULL</source>
         <translation>First entity is NULL</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="149"/>
         <source>Second entity is NULL</source>
         <translation>Second entity is NULL</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="162"/>
         <source>Specify first break point on a polyline</source>
         <translation>Specify first break point on a polyline</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="163"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
         <source>Specify second break point on the same polyline</source>
         <translation>Specify second break point on the same polyline</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="168"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7584,7 +7655,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyEntity</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="45"/>
         <source>&Properties</source>
         <translation>&Properties</translation>
     </message>
@@ -7592,7 +7663,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyExplodeText</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="48"/>
         <source>&Explode Text into Letters</source>
         <translation>&Explode Text into Letters</translation>
     </message>
@@ -7600,27 +7671,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyMirror</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="42"/>
         <source>&Mirror</source>
         <translation>&Mirror</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="163"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="165"/>
         <source>Specify first point of mirror line</source>
         <translation>Specify first point of mirror line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="166"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="168"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="170"/>
         <source>Specify second point of mirror line</source>
         <translation>Specify second point of mirror line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="171"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7628,27 +7699,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyMove</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="43"/>
         <source>&Move / Copy</source>
         <translation>&Move / Copy</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="149"/>
         <source>Specify reference point</source>
         <translation>Specify reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="148"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="150"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="151"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="153"/>
         <source>Specify target point</source>
         <translation>Specify target point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="154"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7656,38 +7727,38 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyMoveRotate</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="45"/>
         <source>M&ove and Rotate</source>
         <translation>M&ove and Rotate</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="171"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="174"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="222"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="225"/>
         <source>Specify reference point</source>
         <translation>Specify reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="223"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="229"/>
         <source>Specify target point</source>
         <translation>Specify target point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="227"/>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="231"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="234"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="233"/>
         <source>Enter rotation angle:</source>
         <translation>Enter rotation angle:</translation>
     </message>
@@ -7695,17 +7766,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyRotate</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="44"/>
         <source>&Rotate</source>
         <translation>&Rotate</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="125"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="128"/>
         <source>Specify reference point</source>
         <translation>Specify reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="126"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="129"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7713,27 +7784,27 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyRotate2</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="44"/>
         <source>Rotate T&wo</source>
         <translation>Rotate T&wo</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="163"/>
         <source>Specify absolute reference point</source>
         <translation>Specify absolute reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="162"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="164"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="165"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="167"/>
         <source>Specify relative reference point</source>
         <translation>Specify relative reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="166"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="168"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7741,38 +7812,38 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyRound</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="46"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="49"/>
         <source>&Round</source>
         <translation>&Round</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="224"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="292"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="295"/>
         <source>Specify first entity</source>
         <translation>Specify first entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="293"/>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="297"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="299"/>
         <source>Specify second entity</source>
         <translation>Specify second entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="303"/>
         <source>Enter radius:</source>
         <translation>Enter radius:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="301"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="304"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -7780,17 +7851,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyScale</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="43"/>
         <source>&Scale</source>
         <translation>&Scale</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="119"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="121"/>
         <source>Specify reference point</source>
         <translation>Specify reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="120"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="122"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -7798,39 +7869,39 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyStretch</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="46"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="49"/>
         <source>&Stretch</source>
         <translation>&Stretch</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="198"/>
         <source>Specify first corner</source>
         <translation>Specify first corner</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="196"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="202"/>
         <source>Specify second corner</source>
         <translation>Specify second corner</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="200"/>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="204"/>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="211"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="206"/>
         <source>Specify reference point</source>
         <translation>Specify reference point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="210"/>
         <source>Specify target point</source>
         <translation>Specify target point</translation>
     </message>
@@ -7838,44 +7909,44 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyTrim</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="57"/>
         <source>&Trim</source>
         <translation>&Trim</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="61"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="64"/>
         <source>&Trim Two</source>
         <translation>&Trim Two</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
         <source>Select first trim entity</source>
         <translation>Select first trim entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="179"/>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="184"/>
         <source>Select limiting entity</source>
         <translation>Select limiting entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="185"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="194"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
         <source>Select second trim entity</source>
         <translation>Select second trim entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="193"/>
         <source>Select entity to trim</source>
         <translation>Select entity to trim</translation>
     </message>
@@ -7883,37 +7954,37 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionModifyTrimAmount</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="45"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="49"/>
         <source>&Lengthen</source>
         <translation>&Lengthen</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="92"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="96"/>
         <source>No entity found. </source>
         <translation>No entity found. </translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="95"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
         <source>The chosen Entity is in a block. Please edit the block.</source>
         <translation>The chosen Entity is in a block. Please edit the block.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="103"/>
         <source>The chosen Entity is not an atomic entity or cannot be trimmed.</source>
         <translation>The chosen Entity is not an atomic entity or cannot be trimmed.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="131"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="135"/>
         <source>Not a valid expression</source>
         <translation>Not a valid expression</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="182"/>
         <source>Select entity to trim or enter distance:</source>
         <translation>Select entity to trim or enter distance:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="179"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="183"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7921,7 +7992,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionOptionsDrawing</name>
     <message>
-        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="44"/>
         <source>Current &Drawing Preferences</source>
         <translation>Current &Drawing Preferences</translation>
     </message>
@@ -7929,53 +8000,53 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionPolylineAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="44"/>
         <source>&Add node</source>
         <translation>&Add node</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="46"/>
         <source>Add polyline's node</source>
         <translation>Add polyline's node</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="104"/>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="122"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="125"/>
         <source>No Entity found.</source>
         <translation>No Entity found.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="108"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="111"/>
         <source>Entity must be a polyline.</source>
         <translation>Entity must be a polyline.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="124"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="127"/>
         <source>Adding point is invalid.</source>
         <translation>Adding point is invalid.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="135"/>
         <source>Adding point is not on entity.</source>
         <translation>Adding point is not on entity.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="163"/>
         <source>Specify polyline to add nodes</source>
         <translation>Specify polyline to add nodes</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="167"/>
         <source>Specify adding node's point</source>
         <translation>Specify adding node's point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="165"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="168"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -7983,53 +8054,53 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionPolylineAppend</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="37"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="40"/>
         <source>A&ppend node</source>
         <translation>A&ppend node</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="42"/>
         <source>Append polyline's node</source>
         <translation>Append polyline's node</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="88"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
         <source>No Entity found.</source>
         <translation>No Entity found.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="94"/>
         <source>Entity must be a polyline.</source>
         <translation>Entity must be a polyline.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="108"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="111"/>
         <source>Click somewhere near the beginning or end of existing polyline.</source>
         <translation>Click somewhere near the beginning or end of existing polyline.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="184"/>
         <source>Specify the polyline somewhere near the beginning or end point</source>
         <translation>Specify the polyline somewhere near the beginning or end point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="185"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="197"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="200"/>
         <source>Specify next point or [%1]</source>
         <translation>Specify next point or [%1]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="198"/>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="202"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="205"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="204"/>
         <source>Specify next point</source>
         <translation>Specify next point</translation>
     </message>
@@ -8037,53 +8108,53 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionPolylineDel</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="44"/>
         <source>&Delete node</source>
         <translation>&Delete node</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="46"/>
         <source>Delete polyline's node</source>
         <translation>Delete polyline's node</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="106"/>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="125"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="128"/>
         <source>No Entity found.</source>
         <translation>No Entity found.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="113"/>
         <source>Entity must be a polyline.</source>
         <translation>Entity must be a polyline.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
         <source>Adding point is invalid.</source>
         <translation>Adding point is invalid.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="133"/>
         <source>Adding point is not on entity.</source>
         <translation>Adding point is not on entity.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="156"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="159"/>
         <source>Specify polyline to delete node</source>
         <translation>Specify polyline to delete node</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="157"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="163"/>
         <source>Specify deleting node's point</source>
         <translation>Specify deleting node's point</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="164"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -8091,66 +8162,66 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionPolylineDelBetween</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="44"/>
         <source>Delete &between two nodes</source>
         <translation>Delete &between two nodes</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="46"/>
         <source>Delete between two nodes</source>
         <translation>Delete between two nodes</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="109"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="134"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="112"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="137"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="150"/>
         <source>No Entity found.</source>
         <translation>No Entity found.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="113"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="116"/>
         <source>Entity must be a polyline.</source>
         <translation>Entity must be a polyline.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="136"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
         <source>Deletinging point is invalid.</source>
         <translation>Deleting point is invalid.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="142"/>
         <source>Deleting point is not on entity.</source>
         <translation>Deleting point is not on entity.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="155"/>
         <source>Deleteinging point is not on entity.</source>
         <translation>Deleting point is not on entity.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="179"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="182"/>
         <source>Specify polyline to delete between two nodes</source>
         <translation>Specify polyline to delete between two nodes</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="180"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="186"/>
         <source>Specify first node</source>
         <translation>Specify first node</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="184"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="191"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="190"/>
         <source>Specify second node</source>
         <translation>Specify second node</translation>
     </message>
@@ -8158,32 +8229,32 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionPolylineEquidistant</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
         <source>Create &Equidistant Polylines</source>
         <translation>Create &Equidistant Polylines</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="46"/>
         <source>Create Equidistant Polylines</source>
         <translation>Create Equidistant Polylines</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="198"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="200"/>
         <source>No Entity found.</source>
         <translation>No Entity found.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="202"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="204"/>
         <source>Entity must be a polyline.</source>
         <translation>Entity must be a polyline.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="256"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="258"/>
         <source>Choose the original polyline</source>
         <translation>Choose the original polyline</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="257"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="259"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -8191,32 +8262,32 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionPolylineSegment</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="43"/>
         <source>Create Polyline from Existing &Segments</source>
         <translation>Create Polyline from Existing &Segments</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="45"/>
         <source>Create Polyline from Existing Segments</source>
         <translation>Create Polyline from Existing Segments</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="250"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
         <source>No Entity found.</source>
         <translation>No Entity found.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="256"/>
         <source>Entity must be a line or arc.</source>
         <translation>Entity must be a line or arc.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="292"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="295"/>
         <source>Choose one of the segments on the original polyline</source>
         <translation>Choose one of the segments on the original polyline</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="293"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="296"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -8224,62 +8295,62 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionPolylineTrim</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="44"/>
         <source>&Trim segments</source>
         <translation>&Trim segments</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="46"/>
         <source>Trim polyline's segments</source>
         <translation>Trim polyline's segments</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="106"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="123"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="142"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="146"/>
         <source>No Entity found.</source>
         <translation>No Entity found.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="113"/>
         <source>Entity must be a polyline.</source>
         <translation>Entity must be a polyline.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="125"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="144"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="129"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="148"/>
         <source>Specifying point is invalid.</source>
         <translation>Specifying point is invalid.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="128"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="151"/>
         <source>No Segment found on entity.</source>
         <translation>No Segment found on entity.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="180"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
         <source>Specify polyline to trim</source>
         <translation>Specify polyline to trim</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
         <source>Specify first segment</source>
         <translation>Specify first segment</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
         <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="189"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="193"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="192"/>
         <source>Specify second segment</source>
         <translation>Specify second segment</translation>
     </message>
@@ -8287,7 +8358,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionPrintPreview</name>
     <message>
-        <location filename="../src/actions/rs_actionprintpreview.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionprintpreview.cpp" line="52"/>
         <source>Print Pre&view</source>
         <translation>Print Pre&view</translation>
     </message>
@@ -8295,17 +8366,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionSelectAll</name>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="46"/>
         <source>Select &All</source>
         <translation>Select &All</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="49"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="52"/>
         <source>Deselect &all</source>
         <translation>Deselect &all</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="51"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="54"/>
         <source>Ctrl+K</source>
         <translation>Ctrl+K</translation>
     </message>
@@ -8313,12 +8384,12 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionSelectContour</name>
     <message>
-        <location filename="../src/actions/rs_actionselectcontour.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="46"/>
         <source>(De-)Select &Contour</source>
         <translation>(De-)Select &Contour</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectcontour.cpp" line="62"/>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="65"/>
         <source>Entity must be an Atomic Entity.</source>
         <translation>Entity must be an Atomic Entity.</translation>
     </message>
@@ -8326,32 +8397,32 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionSelectIntersected</name>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="55"/>
         <source>Select Intersected Entities</source>
         <translation>Select Intersected Entities</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="58"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="59"/>
         <source>Deselect Intersected Entities</source>
         <translation>Deselect Intersected Entities</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
         <source>Choose first point of intersection line</source>
         <translation>Choose first point of intersection line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
         <source>Choose second point of intersection line</source>
         <translation>Choose second point of intersection line</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -8359,7 +8430,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionSelectInvert</name>
     <message>
-        <location filename="../src/actions/rs_actionselectinvert.cpp" line="38"/>
+        <location filename="../src/actions/rs_actionselectinvert.cpp" line="41"/>
         <source>Invert Selection</source>
         <translation>Invert Selection</translation>
     </message>
@@ -8367,7 +8438,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionSelectLayer</name>
     <message>
-        <location filename="../src/actions/rs_actionselectlayer.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionselectlayer.cpp" line="44"/>
         <source>(De-)Select Layer</source>
         <translation>(De-)Select Layer</translation>
     </message>
@@ -8375,7 +8446,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionSelectSingle</name>
     <message>
-        <location filename="../src/actions/rs_actionselectsingle.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectsingle.cpp" line="44"/>
         <source>Select Entity</source>
         <translation>Select Entity</translation>
     </message>
@@ -8383,32 +8454,32 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionSelectWindow</name>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="55"/>
         <source>Select Window</source>
         <translation>Select Window</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="58"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="59"/>
         <source>Deselect Window</source>
         <translation>Deselect Window</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
         <source>Choose first edge</source>
         <translation>Choose first edge</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="172"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
         <source>Choose second edge</source>
         <translation>Choose second edge</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="172"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
@@ -8416,17 +8487,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionSetRelativeZero</name>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="44"/>
         <source>Set Relative Zero</source>
         <translation>Set Relative Zero</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="93"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
         <source>Set relative Zero</source>
         <translation>Set relative Zero</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="93"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
         <source>Cancel</source>
         <translation>Cancel</translation>
     </message>
@@ -8434,23 +8505,23 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionSnapIntersectionManual</name>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="50"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="52"/>
         <source>I&ntersection Manually</source>
         <translation>I&ntersection Manually</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="180"/>
         <source>Select first entity</source>
         <translation>Select first entity</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="179"/>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="183"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="185"/>
         <source>Back</source>
         <translation>Back</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="184"/>
         <source>Select second entity</source>
         <translation>Select second entity</translation>
     </message>
@@ -8458,17 +8529,17 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionToolRegenerateDimensions</name>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="44"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="47"/>
         <source>Regenerate Dimension Entities</source>
         <translation>Regenerate Dimension Entities</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="79"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="82"/>
         <source>Regenerated %1 dimension entities</source>
         <translation>Regenerated %1 dimension entities</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="81"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="84"/>
         <source>No dimension entities found</source>
         <translation>No dimension entities found</translation>
     </message>
@@ -8476,7 +8547,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionZoomAuto</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomauto.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionzoomauto.cpp" line="49"/>
         <source>&Auto Zoom</source>
         <translation>&Auto Zoom</translation>
     </message>
@@ -8484,12 +8555,12 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionZoomIn</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomin.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="56"/>
         <source>Zoom &In</source>
         <translation>Zoom &In</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionzoomin.cpp" line="63"/>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="66"/>
         <source>Zoom &Out</source>
         <translation>Zoom &Out</translation>
     </message>
@@ -8497,7 +8568,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionZoomPan</name>
     <message>
-        <location filename="../src/actions/rs_actionzoompan.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionzoompan.cpp" line="40"/>
         <source>&Pan Zoom</source>
         <translation>&Pan Zoom</translation>
     </message>
@@ -8505,7 +8576,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionZoomPrevious</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="45"/>
         <source>&Previous View</source>
         <translation>&Previous View</translation>
     </message>
@@ -8513,7 +8584,7 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_ActionZoomRedraw</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="47"/>
         <source>&Redraw</source>
         <translation>&Redraw</translation>
     </message>
@@ -8549,940 +8620,940 @@ Do you want to replace it?</translation>
 <context>
     <name>RS_Commands</name>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="45"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="39"/>
         <source>point</source>
         <translation>point</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="40"/>
         <source>po</source>
         <translation>po</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="42"/>
         <source>line</source>
         <translation>line</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="43"/>
         <source>ln</source>
         <translation>ln</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="44"/>
         <source>l</source>
         <translation>l</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="52"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
         <source>polyline</source>
         <translation>polyline</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
         <source>offset</source>
         <translation>offset</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="55"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
         <source>o</source>
         <comment>offset</comment>
         <translation>o</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
         <source>parallel</source>
         <translation>parallel</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="51"/>
         <source>par</source>
         <comment>parallel</comment>
         <translation>par</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="53"/>
         <source>arc</source>
         <translation>arc</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
         <source>a</source>
         <translation>a</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="62"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
         <source>circle</source>
         <translation>circle</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
         <source>ci</source>
         <translation>ci</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
         <source>rectangle</source>
         <translation>rectangle</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="66"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
         <source>rec</source>
         <translation>rec</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="67"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="61"/>
         <source>rectang</source>
         <translation>rectang</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="71"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="423"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="539"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="416"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="532"/>
         <source>text</source>
         <translation>text</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="68"/>
         <source>regen</source>
         <translation>regen</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="75"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
         <source>rg</source>
         <comment>zoom - redraw</comment>
         <translation>rg</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="70"/>
         <source>zr</source>
         <comment>zoom - redraw</comment>
         <translation>zr</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="313"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="72"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
         <source>zw</source>
         <comment>zoom - window</comment>
         <translation>zw</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="80"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="315"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="308"/>
         <source>za</source>
         <comment>zoom - auto</comment>
         <translation>za</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="314"/>
         <source>zp</source>
         <comment>zoom - pan</comment>
         <translation>zp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="316"/>
         <source>zv</source>
         <comment>zoom - previous</comment>
         <translation>zv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="81"/>
         <source>kill</source>
         <translation>kill</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
         <source>k</source>
         <translation>k</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="90"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="429"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="549"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="422"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="542"/>
         <source>undo</source>
         <translation>undo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="550"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="85"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="543"/>
         <source>u</source>
         <comment>undo</comment>
         <translation>u</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="93"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
         <source>redo</source>
         <translation>redo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
         <source>r</source>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="298"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
         <source>da</source>
         <comment>dimension - aligned</comment>
         <translation>da</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="92"/>
         <source>da</source>
         <translation>da</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="300"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
         <source>dh</source>
         <comment>dimension - horizontal</comment>
         <translation>dh</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="95"/>
         <source>dh</source>
         <translation>dh</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="297"/>
         <source>dr</source>
         <comment>dimension - linear</comment>
         <translation>dr</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
         <source>dr</source>
         <translation>dr</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="106"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="302"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="295"/>
         <source>dv</source>
         <comment>dimension - vertical</comment>
         <translation>dv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
         <source>dv</source>
         <translation>dv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="109"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="299"/>
         <source>ld</source>
         <comment>dimension - leader</comment>
         <translation>ld</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
         <source>ld</source>
         <translation>ld</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
         <source>dimregen</source>
         <translation>dimregen</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="361"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
         <source>tm</source>
         <comment>modify - multi trim (extend)</comment>
         <translation>tm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="111"/>
         <source>tm</source>
         <translation>tm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="363"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="356"/>
         <source>xt</source>
         <comment>modify - trim (extend)</comment>
         <translation>xt</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="114"/>
         <source>xt</source>
         <translation>xt</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="365"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="358"/>
         <source>rm</source>
         <comment>modify - trim</comment>
         <translation>rm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
         <source>rm</source>
         <translation>rm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="367"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="360"/>
         <source>mv</source>
         <comment>modify - move</comment>
         <translation>mv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
         <source>mv</source>
         <translation>mv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="359"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="352"/>
         <source>ch</source>
         <comment>modify - bevel (chamfer)</comment>
         <translation>ch</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
         <source>ch</source>
         <translation>ch</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="369"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="362"/>
         <source>mi</source>
         <comment>modify - mirror</comment>
         <translation>mi</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
         <source>mi</source>
         <translation>mi</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="371"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="364"/>
         <source>ro</source>
         <comment>modify - rotate</comment>
         <translation>ro</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
         <source>ro</source>
         <translation>ro</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="373"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="366"/>
         <source>sz</source>
         <comment>modify - scale</comment>
         <translation>sz</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
         <source>sz</source>
         <translation>sz</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="375"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="368"/>
         <source>ss</source>
         <comment>modify - stretch</comment>
         <translation>ss</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
         <source>ss</source>
         <translation>ss</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="370"/>
         <source>er</source>
         <comment>modify - delete (erase)</comment>
         <translation>er</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
         <source>er</source>
         <translation>er</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="379"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="372"/>
         <source>oo</source>
         <comment>modify - undo (oops)</comment>
         <translation>oo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
         <source>oo</source>
         <translation>oo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="149"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="381"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="374"/>
         <source>uu</source>
         <comment>modify - redo</comment>
         <translation>uu</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
         <source>uu</source>
         <translation>uu</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="152"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="383"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="376"/>
         <source>xp</source>
         <comment>modify - explode</comment>
         <translation>xp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
         <source>xp</source>
         <translation>xp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="328"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
         <source>os</source>
         <comment>snap - none</comment>
         <translation>os</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="151"/>
         <source>os</source>
         <translation>os</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="330"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
         <source>sg</source>
         <comment>snap - grid</comment>
         <translation>sg</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="154"/>
         <source>sg</source>
         <translation>sg</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="332"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="325"/>
         <source>se</source>
         <comment>snap - end</comment>
         <translation>se</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
         <source>se</source>
         <translation>se</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="334"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="327"/>
         <source>si</source>
         <comment>snap - intersection</comment>
         <translation>si</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
         <source>si</source>
         <translation>si</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="336"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="329"/>
         <source>sn</source>
         <comment>snap - center</comment>
         <translation>sn</translation>
     </message>
     <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
         <location filename="../src/cmd/rs_commands.cpp" line="169"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
         <source>sn</source>
         <translation>sn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="338"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="331"/>
         <source>sm</source>
         <comment>snap - middle</comment>
         <translation>sm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
         <source>sm</source>
         <translation>sm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="174"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="333"/>
         <source>sn</source>
         <comment>snap - nearest</comment>
         <translation>sn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="177"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="335"/>
         <source>np</source>
         <comment>snap - nearest point</comment>
         <translation>np</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="178"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
         <source>np</source>
         <translation>np</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="181"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
         <source>tn</source>
         <comment>Deselect all</comment>
         <translation>tn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="182"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="176"/>
         <source>tn</source>
         <translation>tn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="244"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="236"/>
         <source>Command: %1</source>
         <translation>Command: %1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="271"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="264"/>
         <source>po</source>
         <comment>point</comment>
         <translation>po</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="273"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="266"/>
         <source>li</source>
         <comment>line</comment>
         <translation>li</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="275"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="268"/>
         <source>pa</source>
         <comment>parallel</comment>
         <translation>pa</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="277"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="270"/>
         <source>re</source>
         <comment>rectangle</comment>
         <translation>re</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="279"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="272"/>
         <source>rp</source>
         <comment>regular polygon</comment>
         <translation>rp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="281"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="274"/>
         <source>ci</source>
         <comment>circle</comment>
         <translation>ci</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="283"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="276"/>
         <source>c2</source>
         <comment>2 point circle</comment>
         <translation>c2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="285"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="278"/>
         <source>c3</source>
         <comment>3 point circle</comment>
         <translation>c3</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="287"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="280"/>
         <source>ar</source>
         <comment>arc</comment>
         <translation>ar</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="289"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="282"/>
         <source>a3</source>
         <comment>3 point arc</comment>
         <translation>a3</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="284"/>
         <source>ep</source>
         <comment>ellipse</comment>
         <translation>ep</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
         <source>tx</source>
         <comment>text</comment>
         <translation>tx</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
         <source>mt</source>
         <comment>text</comment>
         <translation>mt</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="311"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
         <source>rd</source>
         <comment>redraw</comment>
         <translation>rd</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="317"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="310"/>
         <source>zi</source>
         <comment>zoom - in</comment>
         <translation>zi</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="319"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="312"/>
         <source>zo</source>
         <comment>zoom - out</comment>
         <translation>zo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
         <source>fr*</source>
         <comment>layers - freeze all</comment>
         <translation>fr*</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="349"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
         <source>th*</source>
         <comment>layers - defreeze all</comment>
         <translation>th*</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="384"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
         <source>ex</source>
         <comment>modify - explode</comment>
         <translation>ex</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="397"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="455"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="390"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
         <source>angle</source>
         <translation>angle</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="399"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="470"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="392"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="463"/>
         <source>close</source>
         <translation>close</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="401"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="394"/>
         <source>chord length</source>
         <translation>chord length</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="403"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="396"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
         <source>columns</source>
         <translation>columns</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="405"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="398"/>
         <source>columnspacing</source>
         <translation>columnspacing</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="407"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="486"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="400"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
         <source>factor</source>
         <translation>factor</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="409"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="402"/>
         <source>length</source>
         <translation>length</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="411"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="404"/>
         <source>length1</source>
         <translation>length1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="413"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="406"/>
         <source>length2</source>
         <translation>length2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="415"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="408"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="506"/>
         <source>number</source>
         <translation>number</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="417"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="410"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="512"/>
         <source>radius</source>
         <translation>radius</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="419"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="530"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="412"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
         <source>rows</source>
         <translation>rows</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="421"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="414"/>
         <source>rowspacing</source>
         <translation>rowspacing</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="425"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="544"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="418"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="537"/>
         <source>through</source>
         <translation>through</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="427"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="420"/>
         <source>trim</source>
         <translation>trim</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="431"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="554"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="424"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="547"/>
         <source>back</source>
         <translation>back</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="455"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
         <source>ang</source>
         <comment>angle</comment>
         <translation>ang</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="456"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="449"/>
         <source>a</source>
         <comment>angle</comment>
         <translation>a</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="460"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
         <source>center</source>
         <translation>centre</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="460"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
         <source>cen</source>
         <comment>center</comment>
         <translation>cen</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="461"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="454"/>
         <source>c</source>
         <comment>center</comment>
         <translation>c</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="465"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="458"/>
         <source>length</source>
         <comment>chord length</comment>
         <translation>length</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="466"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="459"/>
         <source>l</source>
         <comment>chord length</comment>
         <translation>l</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="471"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="464"/>
         <source>c</source>
         <comment>close</comment>
         <translation>c</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
         <source>cols</source>
         <comment>columns</comment>
         <translation>cols</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="476"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="469"/>
         <source>c</source>
         <comment>columns</comment>
         <translation>c</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="473"/>
         <source>columnspacing</source>
         <comment>columnspacing for inserts</comment>
         <translation>columnspacing</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="481"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="474"/>
         <source>colspacing</source>
         <comment>columnspacing for inserts</comment>
         <translation>colspacing</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="482"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
         <source>cs</source>
         <comment>columnspacing for inserts</comment>
         <translation>cs</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="486"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
         <source>fact</source>
         <comment>factor</comment>
         <translation>fact</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="487"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
         <source>f</source>
         <comment>factor</comment>
         <translation>f</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="491"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
         <source>help</source>
         <translation>help</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="491"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
         <source>?</source>
         <comment>help</comment>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="488"/>
         <source>length</source>
         <comment>length</comment>
         <translation>length</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="489"/>
         <source>len</source>
         <comment>length</comment>
         <translation>len</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="497"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="490"/>
         <source>l</source>
         <comment>length</comment>
         <translation>l</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="494"/>
         <source>length1</source>
         <comment>length1</comment>
         <translation>length1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
         <source>len1</source>
         <comment>length1</comment>
         <translation>len1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="503"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
         <source>l1</source>
         <comment>length1</comment>
         <translation>l1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="500"/>
         <source>length2</source>
         <comment>length2</comment>
         <translation>length2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
         <source>len2</source>
         <comment>length2</comment>
         <translation>len2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="509"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
         <source>l2</source>
         <comment>length2</comment>
         <translation>l2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="514"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
         <source>num</source>
         <comment>number</comment>
         <translation>num</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="515"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
         <source>n</source>
         <comment>number</comment>
         <translation>n</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="520"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
         <source>r</source>
         <comment>radius</comment>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="524"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="517"/>
         <source>reversed</source>
         <comment>reversed arc</comment>
         <translation>reversed</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="525"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="518"/>
         <source>rev</source>
         <comment>reversed arc</comment>
         <translation>rev</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="526"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
         <source>r</source>
         <comment>reversed arc</comment>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="530"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
         <source>r</source>
         <comment>rows</comment>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="534"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="527"/>
         <source>rowspacing</source>
         <comment>rowspacing for inserts</comment>
         <translation>rowspacing</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="535"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="528"/>
         <source>rs</source>
         <comment>rowspacing for inserts</comment>
         <translation>rs</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="540"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="533"/>
         <source>t</source>
         <comment>text</comment>
         <translation>t</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="545"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="538"/>
         <source>t</source>
         <comment>through</comment>
         <translation>t</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="555"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="548"/>
         <source>b</source>
         <comment>back</comment>
         <translation>b</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="568"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="561"/>
         <source>Available commands:</source>
         <translation>Available commands:</translation>
     </message>
diff --git a/ts/librecad_es.ts b/ts/librecad_es.ts
index 21ffa56..cec0783 100644
--- a/ts/librecad_es.ts
+++ b/ts/librecad_es.ts
@@ -1,7 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.0" language="es">
 <context>
-    <name/>
+    <name></name>
     <message>
         <source>Loading..</source>
         <translation type="obsolete">Cargando...</translation>
@@ -27,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation>Seleccionar objeto:</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation>Indique un punto</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation>Seleccionar objetos:</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -271,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -294,8 +328,8 @@ Date: %1</source>
         <translation type="obsolete">Controles de Simulación</translation>
     </message>
     <message>
-        <source>Block '%1'</source>
-        <translation>Bloque '%1'</translation>
+        <source>Block '%1'</source>
+        <translation>Bloque '%1'</translation>
     </message>
     <message>
         <source>Cannot open the file
@@ -352,12 +386,12 @@ Ahora puede guardar su trabajo.</translation>
         <translation>&Spline</translation>
     </message>
     <message>
-        <source>Running script '%1'</source>
-        <translation>Corriendo script '%1'</translation>
+        <source>Running script '%1'</source>
+        <translation>Corriendo script '%1'</translation>
     </message>
     <message>
-        <source>Inserting block '%1'</source>
-        <translation>Insertando bloque '%1'</translation>
+        <source>Inserting block '%1'</source>
+        <translation>Insertando bloque '%1'</translation>
     </message>
     <message>
         <source>&Polyline</source>
@@ -398,12 +432,12 @@ Guardado automático desactivado.</translation>
         <translation>Ayuda</translation>
     </message>
     <message>
-        <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
+        <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
         <translation>Se encontraron problemas al buscar archivos de ayuda en el sistema.</translation>
     </message>
     <message>
         <source>&Plugins</source>
-        <translation>&Plugins</translation>
+        <translation type="obsolete">&Plugins</translation>
     </message>
     <message>
         <source>Import</source>
@@ -438,7 +472,7 @@ Guardado automático desactivado.</translation>
         <translation>Revisión SCM: %1</translation>
     </message>
     <message>
-        <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
+        <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
         <translation>Por favor done a LibreCAD para ayudar a mantener el codigo fuente y el sitio web.</translation>
     </message>
 </context>
@@ -1956,7 +1990,11 @@ Guardado automático desactivado.</translation>
     </message>
     <message>
         <source>&back</source>
-        <translation>&atrás</translation>
+        <translation type="obsolete">&atrás</translation>
+    </message>
+    <message>
+        <source>&Selection pointer</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2027,8 +2065,8 @@ Guardado automático desactivado.</translation>
         <translation>Renombrando Bloque</translation>
     </message>
     <message>
-        <source>Could not name block. A block named "%1" already exists.</source>
-        <translation>No se pudo nombrar el bloque. El bloque "%1" ya existe.</translation>
+        <source>Could not name block. A block named "%1" already exists.</source>
+        <translation>No se pudo nombrar el bloque. El bloque "%1" ya existe.</translation>
     </message>
     <message>
         <source>&OK</source>
@@ -2352,27 +2390,27 @@ en otra ventana</translation>
         <translation>Principal</translation>
     </message>
     <message>
-        <source>Show menu "Lines"</source>
+        <source>Show menu "Lines"</source>
         <translation>Mostrar menú Líneas</translation>
     </message>
     <message>
-        <source>Show menu "Arcs"</source>
+        <source>Show menu "Arcs"</source>
         <translation>Mostrar menú Arcos</translation>
     </message>
     <message>
-        <source>Show menu "Circles"</source>
+        <source>Show menu "Circles"</source>
         <translation>Mostrar menú Círculos</translation>
     </message>
     <message>
-        <source>Show menu "Points"</source>
-        <translation type="obsolete">"Puntos"</translation>
+        <source>Show menu "Points"</source>
+        <translation type="obsolete">"Puntos"</translation>
     </message>
     <message>
-        <source>Show menu "Measure"</source>
+        <source>Show menu "Measure"</source>
         <translation>Mostrar menú Medir</translation>
     </message>
     <message>
-        <source>Show menu "Ellipses"</source>
+        <source>Show menu "Ellipses"</source>
         <translation>Mostrar menú Elipses</translation>
     </message>
     <message>
@@ -2380,19 +2418,19 @@ en otra ventana</translation>
         <translation>Sombreado / Relleno solido</translation>
     </message>
     <message>
-        <source>Show menu "Edit"</source>
+        <source>Show menu "Edit"</source>
         <translation>Mostrar menú Edición</translation>
     </message>
     <message>
-        <source>Show menu "Dimensions"</source>
+        <source>Show menu "Dimensions"</source>
         <translation>Mostrar menú Acotar</translation>
     </message>
     <message>
         <source>Texts</source>
-        <translation>Insertar Texto</translation>
+        <translation>Textos</translation>
     </message>
     <message>
-        <source>Show menu "Select"</source>
+        <source>Show menu "Select"</source>
         <translation>Mostrar menú Selección</translation>
     </message>
     <message>
@@ -2436,7 +2474,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2476,7 +2514,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2502,6 +2540,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -3179,12 +3225,12 @@ en otra ventana</translation>
         <translation>Bienvenido</translation>
     </message>
     <message>
-        <source><font size="+1"><b>Welcome to QCad</b>
+        <source><font size="+1"><b>Welcome to QCad</b>
 </font>
 <br>
 Please choose the unit you want to use for new drawings and your preferred language.<br>
 You can changes these settings later in the Options Dialog of QCad.</source>
-        <translation><font size="+1"><b>Bienvenidos a LibreCAD</b>
+        <translation><font size="+1"><b>Bienvenidos a LibreCAD</b>
 </font>
 <br>
 Por favor seleccione la unidad a utilizar en sus nuevos dibujos y el idioma preferido.<br>
@@ -3553,7 +3599,7 @@ Puede cambiar estos parámetros posteriormente en Edición/Preferencias de Libre
         <translation>Gradianes</translation>
     </message>
     <message>
-        <source>Surveyor's units</source>
+        <source>Surveyor's units</source>
         <translation>Unidades topográficas</translation>
     </message>
     <message>
@@ -3561,8 +3607,8 @@ Puede cambiar estos parámetros posteriormente en Edición/Preferencias de Libre
         <translation>Opciones</translation>
     </message>
     <message>
-        <source>For the length formats 'Engineering' and 'Architectural', the unit must be set to Inch.</source>
-        <translation>Para mediciones de "Ingenieria" y "Arquitectónicas", la unidad debe ser la Pulgada.</translation>
+        <source>For the length formats 'Engineering' and 'Architectural', the unit must be set to Inch.</source>
+        <translation>Para mediciones de "Ingenieria" y "Arquitectónicas", la unidad debe ser la Pulgada.</translation>
     </message>
     <message>
         <source>Extension line extension:</source>
@@ -5854,12 +5900,12 @@ Puede cambiar estos parámetros posteriormente en Edición/Preferencias de Libre
         <translation>Eliminar Capa</translation>
     </message>
     <message>
-        <source>Layer "%1" and all entities on it will be removed.</source>
-        <translation>La capa "%1" y todos sus objetos serán eliminados.</translation>
+        <source>Layer "%1" and all entities on it will be removed.</source>
+        <translation>La capa "%1" y todos sus objetos serán eliminados.</translation>
     </message>
     <message>
-        <source>Layer "%1" can never be removed.</source>
-        <translation>La capa "%1" no podrá ser eliminada.</translation>
+        <source>Layer "%1" can never be removed.</source>
+        <translation>La capa "%1" no podrá ser eliminada.</translation>
     </message>
     <message>
         <source>Layer Dialog</source>
@@ -5870,16 +5916,16 @@ Puede cambiar estos parámetros posteriormente en Edición/Preferencias de Libre
         <translation>Eliminar Bloque</translation>
     </message>
     <message>
-        <source>Block "%1" and all its entities will be removed.</source>
-        <translation>El bloque "%1" y todos sus objetos serán eliminados.</translation>
+        <source>Block "%1" and all its entities will be removed.</source>
+        <translation>El bloque "%1" y todos sus objetos serán eliminados.</translation>
     </message>
     <message>
         <source>Layer Properties</source>
         <translation>Propiedades de capa</translation>
     </message>
     <message>
-        <source>Layer with a name "%1" already exists. Please specify a different name.</source>
-        <translation>Ya existe una capa "%1". Por favor especifique otro nombre.</translation>
+        <source>Layer with a name "%1" already exists. Please specify a different name.</source>
+        <translation>Ya existe una capa "%1". Por favor especifique otro nombre.</translation>
     </message>
 </context>
 <context>
@@ -6078,6 +6124,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation>Cargando...</translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation>introduzca un entero</translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation>Pregunta de LibreCAD</translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation>introduzca un numero</translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation>Introduzca un texto</translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
@@ -6224,8 +6286,8 @@ Do you want to replace it?</source>
         <translation>Espacio entre filas:</translation>
     </message>
     <message>
-        <source/>
-        <translation/>
+        <source></source>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -6906,8 +6968,8 @@ Do you want to replace it?</source>
         <translation>Factor:</translation>
     </message>
     <message>
-        <source/>
-        <translation/>
+        <source></source>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -7242,8 +7304,8 @@ Do you want to replace it?</source>
         <translation>Expresión no válida</translation>
     </message>
     <message>
-        <source/>
-        <translation/>
+        <source></source>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -8092,12 +8154,12 @@ Do you want to replace it?</source>
         <translation>Factor:</translation>
     </message>
     <message>
-        <source/>
-        <translation/>
+        <source></source>
+        <translation></translation>
     </message>
     <message>
-        <source>Cannot open file '%1'</source>
-        <translation>No se puede abrir el archivo '%1'</translation>
+        <source>Cannot open file '%1'</source>
+        <translation>No se puede abrir el archivo '%1'</translation>
     </message>
 </context>
 <context>
@@ -8739,7 +8801,7 @@ Do you want to replace it?</source>
         <translation>&Añadir punto</translation>
     </message>
     <message>
-        <source>Add polyline's node</source>
+        <source>Add polyline's node</source>
         <translation>Añadir punto en Polilínea</translation>
     </message>
     <message>
@@ -8760,10 +8822,10 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Specify polyline to add nodes</source>
-        <translation>Seleccionar Polilínea para añadir puntos</translation>
+        <translation>Seleccionar polilínea para añadir puntos</translation>
     </message>
     <message>
-        <source>Specify adding node's point</source>
+        <source>Specify adding node's point</source>
         <translation>Especifique los puntos a añadir</translation>
     </message>
     <message>
@@ -8782,8 +8844,8 @@ Do you want to replace it?</source>
         <translation>&Añadir punto</translation>
     </message>
     <message>
-        <source>Append polyline's node</source>
-        <translation>Añadir punto a Polilínea</translation>
+        <source>Append polyline's node</source>
+        <translation>Añadir punto a polilínea</translation>
     </message>
     <message>
         <source>No Entity found.</source>
@@ -8791,7 +8853,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation>El objeto debe ser una Polilínea.</translation>
+        <translation>El objeto debe ser una polilínea.</translation>
     </message>
     <message>
         <source>Click somewhere near the beginning or end of existing polyline.</source>
@@ -8825,8 +8887,8 @@ Do you want to replace it?</source>
         <translation>&Borrar punto</translation>
     </message>
     <message>
-        <source>Delete polyline's node</source>
-        <translation>Borrar punto en Polilínea</translation>
+        <source>Delete polyline's node</source>
+        <translation>Borrar punto en polilínea</translation>
     </message>
     <message>
         <source>No Entity found.</source>
@@ -8834,7 +8896,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation>El objeto debe ser una Polilínea.</translation>
+        <translation>El objeto debe ser una polilínea.</translation>
     </message>
     <message>
         <source>Adding point is invalid.</source>
@@ -8846,10 +8908,10 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Specify polyline to delete node</source>
-        <translation>Especifique Polilínea para borrar punto</translation>
+        <translation>Especifique polilínea para borrar punto</translation>
     </message>
     <message>
-        <source>Specify deleting node's point</source>
+        <source>Specify deleting node's point</source>
         <translation>Especifique punto a borrar</translation>
     </message>
     <message>
@@ -8877,7 +8939,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation>El objeto debe ser una Polilínea.</translation>
+        <translation>El objeto debe ser una polilínea.</translation>
     </message>
     <message>
         <source>Deletinging point is invalid.</source>
@@ -8893,7 +8955,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Specify polyline to delete between two nodes</source>
-        <translation>Especificar Polilínea a borrar entre dos puntos</translation>
+        <translation>Especificar polilínea a borrar entre dos puntos</translation>
     </message>
     <message>
         <source>Specify first node</source>
@@ -8924,11 +8986,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation>El objeto debe ser una Polilínea.</translation>
+        <translation>El objeto debe ser una polilínea.</translation>
     </message>
     <message>
         <source>Choose the original polyline</source>
-        <translation>Seleccionar la Polilínea origen</translation>
+        <translation>Seleccionar la polilínea origen</translation>
     </message>
     <message>
         <source>Cancel</source>
@@ -8955,7 +9017,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Choose one of the segments on the original polyline</source>
-        <translation>Seleccionar uno de los segmentos de origen de la Polilínea</translation>
+        <translation>Seleccionar uno de los segmentos de la polilínea origen</translation>
     </message>
     <message>
         <source>Cancel</source>
@@ -8973,8 +9035,8 @@ Do you want to replace it?</source>
         <translation>Recor&tar segmentos</translation>
     </message>
     <message>
-        <source>Trim polyline's segments</source>
-        <translation>Recortar segmentos en Polilínea</translation>
+        <source>Trim polyline's segments</source>
+        <translation>Recortar segmentos de polilínea</translation>
     </message>
     <message>
         <source>No Entity found.</source>
diff --git a/ts/librecad_es_ar.ts b/ts/librecad_es_ar.ts
index bec28bb..e9320c3 100644
--- a/ts/librecad_es_ar.ts
+++ b/ts/librecad_es_ar.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_bo.ts b/ts/librecad_es_bo.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_bo.ts
+++ b/ts/librecad_es_bo.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_cl.ts b/ts/librecad_es_cl.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_cl.ts
+++ b/ts/librecad_es_cl.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_co.ts b/ts/librecad_es_co.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_co.ts
+++ b/ts/librecad_es_co.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_cr.ts b/ts/librecad_es_cr.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_cr.ts
+++ b/ts/librecad_es_cr.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_do.ts b/ts/librecad_es_do.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_do.ts
+++ b/ts/librecad_es_do.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_ec.ts b/ts/librecad_es_ec.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_ec.ts
+++ b/ts/librecad_es_ec.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_gt.ts b/ts/librecad_es_gt.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_gt.ts
+++ b/ts/librecad_es_gt.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_hn.ts b/ts/librecad_es_hn.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_hn.ts
+++ b/ts/librecad_es_hn.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_mx.ts b/ts/librecad_es_mx.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_mx.ts
+++ b/ts/librecad_es_mx.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_ni.ts b/ts/librecad_es_ni.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_ni.ts
+++ b/ts/librecad_es_ni.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_pa.ts b/ts/librecad_es_pa.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_pa.ts
+++ b/ts/librecad_es_pa.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_pe.ts b/ts/librecad_es_pe.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_pe.ts
+++ b/ts/librecad_es_pe.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_pr.ts b/ts/librecad_es_pr.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_pr.ts
+++ b/ts/librecad_es_pr.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_py.ts b/ts/librecad_es_py.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_py.ts
+++ b/ts/librecad_es_py.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_sv.ts b/ts/librecad_es_sv.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_sv.ts
+++ b/ts/librecad_es_sv.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_us.ts b/ts/librecad_es_us.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_us.ts
+++ b/ts/librecad_es_us.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_uy.ts b/ts/librecad_es_uy.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_uy.ts
+++ b/ts/librecad_es_uy.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_es_ve.ts b/ts/librecad_es_ve.ts
index 4878060..c5ca6d9 100644
--- a/ts/librecad_es_ve.ts
+++ b/ts/librecad_es_ve.ts
@@ -28,6 +28,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Cancelar</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -272,7 +305,7 @@ Date: %1</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -396,10 +429,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1949,7 +1978,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2459,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Desplazar</translation>
+        <translation type="obsolete">Desplazar</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2470,7 +2499,7 @@ en otra ventana</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Girar alrededor de dos centros</translation>
+        <translation type="obsolete">Girar alrededor de dos centros</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2496,6 +2525,14 @@ en otra ventana</translation>
         <source>Edit Text</source>
         <translation>Editar Texto</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mover / Copiar</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6073,6 +6110,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_et.ts b/ts/librecad_et.ts
index 7c3d405..29054ce 100644
--- a/ts/librecad_et.ts
+++ b/ts/librecad_et.ts
@@ -32,6 +32,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Loobu</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Loobu</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Loobu</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -313,7 +346,7 @@ Kuupäev: %1</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -401,10 +434,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -988,7 +1017,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1472,7 +1501,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Move</source>
-        <translation>Liiguta</translation>
+        <translation type="obsolete">Liiguta</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -1512,7 +1541,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Pööra ümber kahe keskpunkti</translation>
+        <translation type="obsolete">Pööra ümber kahe keskpunkti</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -1538,6 +1567,14 @@ in a separate window</source>
         <source>Edit Text</source>
         <translation>Redigeeri teksti</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Liiguta / kopeeri</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Topeltpööre</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -5094,6 +5131,22 @@ Tahad sa seda asendada?</translation>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_fi.ts b/ts/librecad_fi.ts
index 4e10eeb..a5fd918 100644
--- a/ts/librecad_fi.ts
+++ b/ts/librecad_fi.ts
@@ -2,235 +2,268 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="fi">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="38"/>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="40"/>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="129"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="40"/>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="47"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="188"/>
         <source>&Plugins</source>
-        <translation>&Lisäosat</translation>
+        <translation type="obsolete">&Lisäosat</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="329"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="360"/>
         <source>Running script '%1'</source>
         <translation>Suoritetaan skriptiä ’%1’</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="371"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="402"/>
         <source>Inserting block '%1'</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="493"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="524"/>
         <source>&File</source>
         <translation>&Tiedosto</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="513"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="544"/>
         <source>Import</source>
         <translation>Tuo</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="540"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="571"/>
         <source>&Edit</source>
         <translation>&Muokkaa</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="596"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="627"/>
         <source>&View</source>
         <translation>&Näytä</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="664"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
         <source>&Toolbars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="693"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="724"/>
         <source>Focus on &Command Line</source>
         <translation>&Tarkenna komentoriville</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="726"/>
         <source>CTRL+M</source>
         <translation>CTRL + M</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="707"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="738"/>
         <source>&Select</source>
         <translation>&Valitse</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="744"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="775"/>
         <source>&Draw</source>
         <translation>&Piirrä</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="748"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="779"/>
         <source>&Point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="755"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="786"/>
         <source>&Line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="827"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="858"/>
         <source>&Arc</source>
         <translation>&Arkki</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="840"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
         <source>&Circle</source>
         <translation>&Ympyrä</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="859"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="890"/>
         <source>&Ellipse</source>
         <translation>&Ellipsi</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="902"/>
         <source>&Spline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="878"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="909"/>
         <source>&Polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="922"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="924"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="953"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="955"/>
         <source>&Dimension</source>
         <translation>&Ulottuvuus</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="954"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="985"/>
         <source>&Modify</source>
         <translation>&Muokkaa</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1037"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1068"/>
         <source>&Snap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1100"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1131"/>
         <source>&Info</source>
         <translation type="unfinished">&Info</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1124"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1159"/>
         <source>&Layer</source>
         <translation type="unfinished">&Taso</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1151"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1186"/>
         <source>&Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1195"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1230"/>
         <source>&Scripts</source>
         <translation>&Skriptit</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1208"/>
-        <source>&CAM</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1221"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1248"/>
         <source>About</source>
         <translation>Tietoa ohjelmasta</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1228"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1255"/>
         <source>&Manual</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1273"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1300"/>
         <source>Insert Image</source>
         <translation>Lisää kuva</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1333"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1360"/>
         <source>&Window</source>
         <translation>&Ikkuna</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1341"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1368"/>
         <source>&Help</source>
         <translation>&Ohje</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1349"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1376"/>
         <source>De&bugging</source>
         <translation>&Virheenetsintä</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1557"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1586"/>
         <source>Layer List</source>
         <translation>Tasolista</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1578"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1607"/>
         <source>Block List</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1599"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1628"/>
         <source>Library Browser</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1625"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1654"/>
         <source>Command line</source>
         <translation>Komentorivi</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1839"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1868"/>
         <source>&Cascade</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1841"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1870"/>
         <source>&Tile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1843"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1872"/>
         <source>Tile &Horizontally</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2003"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2009"/>
         <source>Creating new file...</source>
         <translation>Luodaan uutta tiedostoa...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2013"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2019"/>
         <source>Block '%1'</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2015"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2021"/>
         <source>unnamed document %1</source>
         <translation>nimetön dokumentti %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2055"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2061"/>
         <source>New Drawing created.</source>
         <translation>Uusi piirros luotu.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2089"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2095"/>
         <source>Opening recent file...</source>
         <translation>Avaa viimeaikainen tiedosto</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2130"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2136"/>
         <source>Cannot open the file
 %1
 Please check the permissions.</source>
@@ -239,29 +272,29 @@ Please check the permissions.</source>
 Tiedoston oikeudet saattavat olla väärin. </translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2164"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2170"/>
         <source>Loaded document: </source>
         <translation>Dokumentti avattu: </translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2168"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2174"/>
         <source>Opening aborted</source>
         <translation>Avaaminen keskeytetty</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2182"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2188"/>
         <source>Saving drawing...</source>
         <translation>Tallennetaan piirrosta...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2194"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2244"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2200"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2250"/>
         <source>Saved drawing: %1</source>
         <translation>Piirros %1 tallennettu.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2199"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2236"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2205"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2242"/>
         <source>Cannot save the file
 %1
 Please check the permissions.</source>
@@ -270,22 +303,22 @@ Please check the permissions.</source>
 Ei voitu tallentaa. Tiedoston oikeudet voivat olla väärin.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2216"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2222"/>
         <source>Saving drawing under new filename...</source>
         <translation>Tallennetaan piirrosta toisella tiedostonimellä...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2257"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2263"/>
         <source>Auto-saving drawing...</source>
         <translation>Automaattitallennetaan piirrosta...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2266"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2272"/>
         <source>Auto-saved drawing</source>
         <translation>Piirros automaattitallennettu</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2271"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2277"/>
         <source>Cannot auto-save the file
 %1
 Please check the permissions.
@@ -296,107 +329,107 @@ Ei voitu automaattitallentaa. Tiedoston oikeudet voivat olla väärin.
 Automaattitallennus otettu pois käytöstä.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2288"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2294"/>
         <source>Exporting drawing...</source>
         <translation>Viedään piirrosta....</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2361"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2367"/>
         <source>Exported: %1</source>
         <translation>Viedään: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2401"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2407"/>
         <source>Exporting...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2456"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2462"/>
         <source>Export complete</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2458"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2464"/>
         <source>Export failed!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2524"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2530"/>
         <source>Printing...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2587"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2593"/>
         <source>Printing complete</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2636"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2642"/>
         <source>Print preview for %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2695"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2701"/>
         <source>Exiting application...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2897"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2901"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
         <source>About...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
         <source>Version: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2906"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
         <source>SCM Revision: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2908"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2917"/>
         <source>Compiled on: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2919"/>
         <source>Program Icons Supplied by</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2911"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
         <source>Splash and Logo supplied by</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2922"/>
         <source>Modules: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2924"/>
         <source>Main Website : </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2929"/>
         <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2955"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2964"/>
         <source>Help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2968"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2977"/>
         <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -404,18 +437,18 @@ Automaattitallennus otettu pois käytöstä.</translation>
 <context>
     <name>QC_MDIWindow</name>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="406"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="405"/>
         <source>Do you really want to close the drawing?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="412"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="411"/>
         <source>Do you really want to close the file
 %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="415"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="414"/>
         <source>Closing Drawing</source>
         <translation type="unfinished"></translation>
     </message>
@@ -423,123 +456,123 @@ Automaattitallennus otettu pois käytöstä.</translation>
 <context>
     <name>QG_ActionFactory</name>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="224"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="214"/>
         <source>&Export...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="223"/>
         <source>&Close</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="243"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
         <source>&Print...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="264"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="254"/>
         <source>&Quit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="897"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="270"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="887"/>
         <source>&Grid</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="282"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="272"/>
         <source>CTRL-G</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="290"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
         <source>&Draft</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="299"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="289"/>
         <source>&Statusbar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="381"/>
-        <source>&back</source>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="371"/>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="886"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="876"/>
         <source>&Free</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="908"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="898"/>
         <source>&Endpoints</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="919"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="909"/>
         <source>&On Entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="930"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="920"/>
         <source>&Center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="941"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="931"/>
         <source>&Middle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="952"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="942"/>
         <source>&Distance from Endpoint</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="963"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="953"/>
         <source>&Intersection</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="983"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="973"/>
         <source>Restrict &Nothing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="994"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="984"/>
         <source>Restrict &Orthogonally</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1005"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="995"/>
         <source>Restrict &Horizontally</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1016"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1006"/>
         <source>Restrict&Vertically</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1180"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1176"/>
         <source>&Preferences</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1182"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1178"/>
         <source>&Application Preferences</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1205"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1201"/>
         <source>Open IDE</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1215"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1211"/>
         <source>Run Script..</source>
         <translation type="unfinished"></translation>
     </message>
@@ -552,12 +585,12 @@ Automaattitallennus otettu pois käytöstä.</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arcoptions.ui" line="56"/>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="62"/>
         <source>Clockwise</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arcoptions.ui" line="76"/>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="82"/>
         <source>Counter Clockwise</source>
         <translation type="unfinished"></translation>
     </message>
@@ -565,12 +598,12 @@ Automaattitallennus otettu pois käytöstä.</translation>
 <context>
     <name>QG_ArcTangentialOptions</name>
     <message>
-        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="31"/>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="26"/>
         <source>Tangential Arc Options</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="40"/>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="35"/>
         <source>Radius:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -636,12 +669,12 @@ Automaattitallennus otettu pois käytöstä.</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_blockdialog.ui.h" line="62"/>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="97"/>
         <source>Renaming Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_blockdialog.ui.h" line="63"/>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="98"/>
         <source>Could not name block. A block named "%1" already exists.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -649,88 +682,88 @@ Automaattitallennus otettu pois käytöstä.</translation>
 <context>
     <name>QG_BlockWidget</name>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="75"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="77"/>
         <source>Show all blocks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="83"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="85"/>
         <source>Hide all blocks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="91"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="93"/>
         <source>Add a block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="99"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="101"/>
         <source>Remove the active block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="107"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="109"/>
         <source>Rename the active block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="115"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="117"/>
         <source>Edit the active block
 in a separate window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="124"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="126"/>
         <source>Insert the active block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="302"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="304"/>
         <source>Block Menu</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="307"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
         <source>&Defreeze all Blocks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
         <source>&Freeze all Blocks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
         <source>&Add Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
         <source>&Remove Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
         <source>&Rename Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
         <source>&Edit Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
         <source>&Insert Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
         <source>&Toggle Visibility</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="325"/>
         <source>&Create New Block</source>
         <translation type="unfinished"></translation>
     </message>
@@ -738,7 +771,7 @@ in a separate window</source>
 <context>
     <name>QG_CadToolBar</name>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="31"/>
+        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="26"/>
         <source>CAD Tools</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1163,17 +1196,17 @@ in a separate window</source>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="258"/>
-        <source>Move</source>
+        <source>Move / Copy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="278"/>
-        <source>Move and Rotate</source>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
+        <source>Rotate Two</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
-        <source>Rotate around two centers</source>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="278"/>
+        <source>Move and Rotate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -1458,68 +1491,68 @@ in a separate window</source>
 <context>
     <name>QG_ColorBox</name>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="77"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
         <source>Unchanged</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="80"/>
-        <location filename="../src/ui/qg_colorbox.cpp" line="167"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="172"/>
         <source>By Layer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
         <source>By Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
         <source>Red</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
         <source>Yellow</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="86"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
         <source>Green</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="87"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
         <source>Cyan</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
         <source>Blue</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
         <source>Magenta</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="94"/>
         <source>Black / White</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="95"/>
         <source>Gray</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="96"/>
         <source>Light Gray</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="97"/>
         <source>Others..</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1527,13 +1560,13 @@ in a separate window</source>
 <context>
     <name>QG_CommandWidget</name>
     <message>
-        <location filename="../src/ui/forms/qg_commandwidget.ui" line="17"/>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="15"/>
         <source>Command Line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_commandwidget.ui" line="80"/>
-        <location filename="../src/ui/forms/qg_commandwidget.ui.h" line="49"/>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="82"/>
+        <location filename="../src/ui/forms/qg_commandwidget.cpp" line="83"/>
         <source>Command:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4421,7 +4454,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QG_LayerBox</name>
     <message>
-        <location filename="../src/ui/qg_layerbox.cpp" line="69"/>
+        <location filename="../src/ui/qg_layerbox.cpp" line="70"/>
         <source>- Unchanged -</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4780,118 +4813,118 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QG_LineTypeBox</name>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="74"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="75"/>
         <source>- Unchanged -</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="78"/>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="239"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="241"/>
         <source>By Layer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="80"/>
         <source>By Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="81"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
         <source>No Pen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
         <source>Continuous</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
         <source>Dot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
         <source>Dot (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
         <source>Dot (large)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
         <source>Dash</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
         <source>Dash (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
         <source>Dash (large)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
         <source>Dash Dot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
         <source>Dash Dot (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
         <source>Dash Dot (large)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
         <source>Divide</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
         <source>Divide (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
         <source>Divide (large)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
         <source>Center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
         <source>Center (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
         <source>Center (large)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
         <source>Border</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
         <source>Border (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="101"/>
         <source>Border (large)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5312,11 +5345,11 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QMessageBox</name>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2129"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2198"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2235"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2270"/>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="150"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2135"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2204"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2241"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2276"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="140"/>
         <source>Warning</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5331,33 +5364,33 @@ You can changes these settings later in the Options Dialog of QCad.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="236"/>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="247"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="226"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
         <source>Remove Layer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="227"/>
         <source>Layer "%1" and all entities on it will be removed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="248"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="238"/>
         <source>Layer "%1" can never be removed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="293"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="283"/>
         <source>Layer Dialog</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="408"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="398"/>
         <source>Remove Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="409"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="399"/>
         <source>Block "%1" and all its entities will be removed.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5365,247 +5398,269 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="180"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="179"/>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="183"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="261"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="182"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="260"/>
         <source>Inch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="186"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="263"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="185"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="262"/>
         <source>Foot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="189"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="265"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="188"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="264"/>
         <source>Mile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="192"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="267"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="191"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="266"/>
         <source>Millimeter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="195"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="269"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="194"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="268"/>
         <source>Centimeter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="198"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="271"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="197"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="270"/>
         <source>Meter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="201"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="273"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="200"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="272"/>
         <source>Kilometer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="204"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="275"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="203"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="274"/>
         <source>Microinch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="207"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="277"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="206"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="276"/>
         <source>Mil</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="210"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="279"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="209"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="278"/>
         <source>Yard</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="213"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="281"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="212"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="280"/>
         <source>Angstrom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="216"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="283"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="215"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="282"/>
         <source>Nanometer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="219"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="285"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="218"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="284"/>
         <source>Micron</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="222"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="287"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="221"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="286"/>
         <source>Decimeter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="225"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="289"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="224"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="288"/>
         <source>Decameter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="228"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="291"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="227"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="290"/>
         <source>Hectometer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="231"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="293"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="230"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="292"/>
         <source>Gigameter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="234"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="295"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="233"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="294"/>
         <source>Astro</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="237"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="297"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="236"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="296"/>
         <source>Lightyear</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="240"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="299"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="239"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="298"/>
         <source>Parsec</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="188"/>
+        <location filename="../src/main/main.cpp" line="185"/>
         <source>Loading..</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="214"/>
+        <location filename="../src/main/main.cpp" line="211"/>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="229"/>
+        <location filename="../src/main/main.cpp" line="226"/>
         <source>Loading File %1..</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="571"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="561"/>
         <source>All Image Files (%1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="572"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="562"/>
         <source>All Files (*.*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="579"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="569"/>
         <source>Open Image</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1778"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1733"/>
         <source>Windows Bitmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1780"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1735"/>
         <source>Joint Photographic Experts Group</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1782"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1737"/>
         <source>Graphics Interchange Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1784"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1739"/>
         <source>Multiple-image Network Graphics</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1786"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1741"/>
         <source>Portable Bit Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1788"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1743"/>
         <source>Portable Grey Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1790"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1745"/>
         <source>Portable Network Graphic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1792"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1747"/>
         <source>Portable Pixel Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1794"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1749"/>
         <source>X Bitmap Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1796"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1751"/>
         <source>X Pixel Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="72"/>
-        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="68"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="107"/>
         <source>Save Drawing As</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="109"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
         <source>%1 already exists.
 Do you want to replace it?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="169"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="173"/>
         <source>Drawing Exchange %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="170"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="174"/>
         <source>QCad 1.x file %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="171"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="175"/>
         <source>Font %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="189"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="193"/>
         <source>Open Drawing</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="698"/>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="702"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="719"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="736"/>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="715"/>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="732"/>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksadd.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionblocksadd.cpp" line="42"/>
         <source>&Add Block</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5613,7 +5668,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksAttributes</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="45"/>
         <source>&Rename Block</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5621,17 +5676,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksCreate</name>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="52"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="54"/>
         <source>&Create Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="162"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="163"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5639,7 +5694,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksEdit</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksedit.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionblocksedit.cpp" line="42"/>
         <source>&Edit Block</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5647,7 +5702,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksExplode</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="48"/>
         <source>&Explode</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5655,12 +5710,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksFreezeAll</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="49"/>
         <source>&Freeze all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="55"/>
         <source>&Defreeze all</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5668,57 +5723,57 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksInsert</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="48"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="50"/>
         <source>&Insert Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="193"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="206"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="219"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="232"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="245"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="258"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="234"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="247"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="260"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="311"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="313"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="312"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="314"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="315"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="317"/>
         <source>Enter angle:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="319"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="321"/>
         <source>Enter factor:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="323"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="325"/>
         <source>Enter columns:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="327"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="329"/>
         <source>Enter rows:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="331"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="333"/>
         <source>Enter column spacing:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="335"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="337"/>
         <source>Enter row spacing:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5734,7 +5789,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksToggleView</name>
     <message>
-        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="45"/>
+        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="47"/>
         <source>Toggle Block Visibility</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5742,12 +5797,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDefault</name>
     <message>
-        <location filename="../src/actions/rs_actiondefault.cpp" line="356"/>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
         <source>Choose second edge</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="358"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5755,38 +5810,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimAligned</name>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="51"/>
         <source>&Aligned</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="265"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="267"/>
         <source>Specify first extension line origin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="266"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="268"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="270"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="272"/>
         <source>Specify second extension line origin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="271"/>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="273"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="278"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="275"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="277"/>
         <source>Specify dimension line location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="279"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="281"/>
         <source>Enter dimension text:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5794,34 +5849,34 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimAngular</name>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="48"/>
         <source>&Angular</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="287"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="289"/>
         <source>Select first line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="288"/>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="292"/>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="296"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="294"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="291"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="293"/>
         <source>Select second line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="296"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
         <source>Specify dimension arc line location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="299"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="301"/>
         <source>Enter dimension text:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5868,27 +5923,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimLeader</name>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="51"/>
         <source>&Leader</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="227"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="234"/>
         <source>Specify target point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="228"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="235"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="231"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="238"/>
         <source>Specify next point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="239"/>
         <source>Finish</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5896,58 +5951,58 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimLinear</name>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="66"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="69"/>
         <source>&Linear</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="73"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="76"/>
         <source>&Horizontal</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="80"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="83"/>
         <source>&Vertical</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="263"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="312"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="315"/>
         <source>Specify first extension line origin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="313"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="316"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="320"/>
         <source>Specify second extension line origin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="318"/>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="323"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="321"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="322"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="325"/>
         <source>Specify dimension line location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="329"/>
         <source>Enter dimension text:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="330"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="333"/>
         <source>Enter dimension line angle:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5994,65 +6049,65 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArc</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="50"/>
         <source>&Center, Point, Angles</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="275"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="289"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="308"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="323"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="344"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="309"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="324"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="345"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="339"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="340"/>
         <source>Not a valid chord length</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
         <source>Specify center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="371"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
         <source>Specify radius</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="371"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="375"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="381"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="385"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="389"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="375"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
         <source>Specify start angle:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="379"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
         <source>Specify end angle or [Angle/chord Length]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
         <source>Specify included angle:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="387"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
         <source>Specify chord length:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6060,38 +6115,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArc3P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="52"/>
         <source>&3 Points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="99"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="101"/>
         <source>Invalid arc data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="227"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="229"/>
         <source>Specify startpoint or [Center]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="228"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="230"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
         <source>Specify second point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="232"/>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="236"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="236"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
         <source>Specify endpoint</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6099,27 +6154,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArcTangential</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="52"/>
         <source>Arc: Tangential</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="257"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
         <source>Specify base entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="259"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
         <source>Specify end angle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6127,32 +6182,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="53"/>
         <source>Center, &Point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="185"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="188"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
         <source>Specify center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
         <source>Specify radius</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6160,32 +6215,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle2P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="50"/>
         <source>2 Points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="96"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="100"/>
         <source>Invalid Circle data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="206"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
         <source>Specify first point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="206"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
         <source>Specify second point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6193,38 +6248,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle3P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="50"/>
         <source>3 Points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="97"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="100"/>
         <source>Invalid circle data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="207"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="210"/>
         <source>Specify first point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="208"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="214"/>
         <source>Specify second point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="212"/>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="219"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="218"/>
         <source>Specify third point</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6232,32 +6287,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircleCR</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="48"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="52"/>
         <source>Center, &Radius</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="167"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="171"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="198"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
         <source>Specify circle center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="206"/>
         <source>Specify circle radius</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="207"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6265,57 +6320,57 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawEllipseAxis</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="61"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="65"/>
         <source>&Ellipse Arc (Axis)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="66"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="70"/>
         <source>&Ellipse (Axis)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="315"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="329"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="343"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="319"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="333"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="347"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="367"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="371"/>
         <source>Specify ellipse center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="376"/>
         <source>Specify endpoint of major axis</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="373"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="379"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="384"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="389"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="377"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="393"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="378"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="382"/>
         <source>Specify endpoint or length of minor axis:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="387"/>
         <source>Specify start angle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="392"/>
         <source>Specify end angle</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6323,17 +6378,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawHatch</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="47"/>
         <source>&Hatch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="154"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="157"/>
         <source>Hatch created successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="159"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="162"/>
         <source>Invalid hatch area. Please check that the entities chosen form one or more closed contours.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6341,33 +6396,33 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawImage</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="51"/>
         <source>&Image</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="197"/>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="212"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="260"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="261"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="264"/>
         <source>Enter angle:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="266"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="268"/>
         <source>Enter factor:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6375,43 +6430,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLine</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="55"/>
         <source>&2 Points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="236"/>
         <source>Specify first point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="233"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="237"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="248"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
         <source>Specify next point or [%1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="249"/>
         <location filename="../src/actions/rs_actiondrawline.cpp" line="253"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="257"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="256"/>
         <source>Specify next point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="302"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="306"/>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="321"/>
         <source>Cannot undo: Not enough entities defined yet.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6419,49 +6474,49 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineAngle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="58"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="62"/>
         <source>&Angle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="64"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="68"/>
         <source>&Horizontal</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="70"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="74"/>
         <source>Vertical</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="212"/>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="225"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="229"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="264"/>
         <source>Specify position</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="261"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
         <source>Enter angle:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
         <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
         <source>Enter length:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6469,45 +6524,45 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineBisector</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="54"/>
         <source>Bisector</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="199"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="212"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="215"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="247"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="250"/>
         <source>Select first line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="248"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="254"/>
         <source>Select second line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="252"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="256"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="263"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="258"/>
         <source>Enter bisector length:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="262"/>
         <source>Enter number of bisectors:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6515,17 +6570,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineFree</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="51"/>
         <source>&Freehand Line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="126"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
         <source>Click and drag to draw a line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="126"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6533,27 +6588,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineHorVert</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="53"/>
         <source>Vertical</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="147"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="150"/>
         <source>Specify first point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="148"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="154"/>
         <source>Specify second point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="152"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="155"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6561,39 +6616,39 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineParallel</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="53"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="57"/>
         <source>Parallel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="56"/>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="59"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="60"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="63"/>
         <source>Concentric</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="128"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="132"/>
         <source>Specify Distance <%1> or select entity or [%2]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="130"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="138"/>
         <source>Enter number:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="195"/>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="221"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="225"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="219"/>
         <source>Not a valid number. Try 1..99</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6601,43 +6656,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineParallelThrough</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="52"/>
         <source>Parallel through point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="170"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
         <source>Select entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="170"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="174"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="177"/>
         <source>Specify through point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="175"/>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
         <source>Number:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="237"/>
         <source>Not a valid number. Try 1..99</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="238"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="241"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6645,32 +6700,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLinePolygon</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="50"/>
         <source>Pol&ygon (Cen,Cor)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="140"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="143"/>
         <source>Specify center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="145"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="148"/>
         <source>Specify a corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="152"/>
         <source>Enter number:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="213"/>
         <source>Not a valid number. Try 1..9999</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="219"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6678,43 +6733,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLinePolygon2</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="50"/>
         <source>Polygo&n (Cor,Cor)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="140"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="143"/>
         <source>Specify first corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="141"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="144"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="145"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="148"/>
         <source>Specify second corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="146"/>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="150"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="150"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
         <source>Number:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="214"/>
         <source>Not a valid number. Try 1..9999</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="217"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="220"/>
         <source>Not a valid expression.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6722,27 +6777,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineRectangle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="50"/>
         <source>Rectangle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="192"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
         <source>Specify first corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="193"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="200"/>
         <source>Specify second corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="201"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6750,38 +6805,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineRelAngle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="55"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="58"/>
         <source>Relative angle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="61"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="64"/>
         <source>Orthogonal</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="255"/>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="272"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="275"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="312"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="315"/>
         <source>Select base entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="313"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="319"/>
         <source>Specify position</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="320"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6789,27 +6844,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineTangent1</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="49"/>
         <source>Tangent (P,C)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="180"/>
         <source>Specify point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="181"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="182"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="184"/>
         <source>Select circle, arc or ellipse</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="183"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="185"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6817,27 +6872,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineTangent2</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="48"/>
         <source>Tangent (C,C)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="162"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="164"/>
         <source>Select first circle or arc</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="163"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="165"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="166"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="168"/>
         <source>Select second circle or arc</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="167"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="169"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6845,17 +6900,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawPoint</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="41"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="45"/>
         <source>&Points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="121"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
         <source>Specify location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="121"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6863,53 +6918,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawPolyline</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
         <source>&Polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="53"/>
         <source>Draw polylines</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="354"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
         <source>Specify first point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="356"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="370"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
         <source>Specify next point or [%1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="376"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="374"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
         <source>Specify next point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="429"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="430"/>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="459"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="460"/>
         <source>Undo disallowed due a fatal bug somewhere. Sorry.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="462"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="463"/>
         <source>Cannot undo: Not enough entities defined yet.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6917,7 +6972,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawSpline</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawspline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="52"/>
         <source>&Spline</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6956,27 +7011,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawText</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="49"/>
         <source>&Text</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="274"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="276"/>
         <source>Specify insertion point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="275"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="277"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="278"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="280"/>
         <source>Enter text:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="279"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="281"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6984,22 +7039,22 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditCopy</name>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="55"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="59"/>
         <source>&Copy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="65"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="69"/>
         <source>Cu&t</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="130"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="134"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="131"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="135"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7007,17 +7062,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditPaste</name>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="49"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="52"/>
         <source>&Paste</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="132"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="135"/>
         <source>Set reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="133"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="136"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7025,12 +7080,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditUndo</name>
     <message>
-        <location filename="../src/actions/rs_actioneditundo.cpp" line="53"/>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="56"/>
         <source>&Undo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditundo.cpp" line="63"/>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="66"/>
         <source>&Redo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7038,7 +7093,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionFileNew</name>
     <message>
-        <location filename="../src/actions/rs_actionfilenew.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionfilenew.cpp" line="39"/>
         <source>&New...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7062,7 +7117,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionFileSaveAs</name>
     <message>
-        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="38"/>
+        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="39"/>
         <source>Save &as...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7070,37 +7125,37 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoAngle</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="45"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="46"/>
         <source>Angle between two lines</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="77"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="78"/>
         <source>Angle: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="81"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="82"/>
         <source>Lines are parallel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="146"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
         <source>Specify first line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="148"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="151"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
         <source>Specify second line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="153"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7108,43 +7163,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoArea</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="43"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="45"/>
         <source>Polygonal Area</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="70"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="73"/>
         <source>Area: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="71"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="74"/>
         <source>Circumference: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="189"/>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="204"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="192"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="207"/>
         <source>Point: %1/%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="232"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="235"/>
         <source>Specify first point of polygon</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="233"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="236"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="237"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="240"/>
         <source>Specify next point of polygon</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="238"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="241"/>
         <source>Terminate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7152,32 +7207,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoDist</name>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="41"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="42"/>
         <source>&Distance Point to Point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="63"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="64"/>
         <source>Distance: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="150"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
         <source>Specify first point of distance</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="152"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="155"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
         <source>Specify second point of distance</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="157"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7185,32 +7240,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoDist2</name>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="41"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="42"/>
         <source>&Distance Entity to Point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="61"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="62"/>
         <source>Distance: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="136"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
         <source>Specify entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="138"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="141"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
         <source>Specify point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="143"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7218,27 +7273,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoInside</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="58"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="61"/>
         <source>Point inside contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="67"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="70"/>
         <source>Point is inside selected contour.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="69"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="72"/>
         <source>Point is outside selected contour.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="100"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="103"/>
         <source>Specify point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="101"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="104"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7246,17 +7301,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoTotalLength</name>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="44"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="41"/>
         <source>&Total length of selected entities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="78"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="75"/>
         <source>Total Length of selected entities: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="80"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="77"/>
         <source>At least one of the selected entities cannot be measured.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7264,7 +7319,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersadd.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionlayersadd.cpp" line="41"/>
         <source>Add Layer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7272,7 +7327,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersEdit</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersedit.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionlayersedit.cpp" line="44"/>
         <source>&Edit Layer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7280,12 +7335,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersFreezeAll</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="48"/>
         <source>&Freeze all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="54"/>
         <source>&Defreeze all</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7293,7 +7348,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersRemove</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersremove.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionlayersremove.cpp" line="42"/>
         <source>Remove Layer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7301,7 +7356,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersToggleLock</name>
     <message>
-        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="47"/>
         <source>Toggle Layer Lock</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7309,7 +7364,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersToggleView</name>
     <message>
-        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="43"/>
         <source>&Toggle Layer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7364,7 +7419,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyAttributes</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="45"/>
         <source>&Attributes</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7372,45 +7427,45 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyBevel</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="50"/>
         <source>&Bevel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="175"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="191"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="252"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="255"/>
         <source>Select first entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="253"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="259"/>
         <source>Select second entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="257"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="261"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="265"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="268"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="263"/>
         <source>Enter length 1:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="267"/>
         <source>Enter length 2:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7418,48 +7473,48 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyCut</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="46"/>
         <source>&Divide</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="104"/>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="122"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="125"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="111"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="114"/>
         <source>Entity must be a line, arc, circle or ellipse.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="124"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
         <source>Cutting point is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="130"/>
         <source>Cutting point is not on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="150"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="153"/>
         <source>Specify entity to cut</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="151"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="157"/>
         <source>Specify cutting point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="155"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="158"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7475,67 +7530,67 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyDeleteFree</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="46"/>
         <source>Delete Freehand</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="95"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="97"/>
         <source>Entities not in the same polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="98"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="100"/>
         <source>Parent of second entity is not a polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="101"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="103"/>
         <source>Parent of second entity is NULL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="104"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="106"/>
         <source>One of the chosen entities is NULL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="129"/>
         <source>Parent of first entity is not a polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="131"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="133"/>
         <source>Parent of first entity is NULL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="135"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="137"/>
         <source>First entity is NULL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="149"/>
         <source>Second entity is NULL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="162"/>
         <source>Specify first break point on a polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="163"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
         <source>Specify second break point on the same polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="168"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7561,7 +7616,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyEntity</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="45"/>
         <source>&Properties</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7569,7 +7624,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyExplodeText</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="48"/>
         <source>&Explode Text into Letters</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7577,27 +7632,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMirror</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="42"/>
         <source>&Mirror</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="163"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="165"/>
         <source>Specify first point of mirror line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="166"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="168"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="170"/>
         <source>Specify second point of mirror line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="171"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7605,27 +7660,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMove</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="43"/>
         <source>&Move / Copy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="149"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="148"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="150"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="151"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="153"/>
         <source>Specify target point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="154"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7633,38 +7688,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMoveRotate</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="45"/>
         <source>M&ove and Rotate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="171"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="174"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="222"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="225"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="223"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="229"/>
         <source>Specify target point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="227"/>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="231"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="234"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="233"/>
         <source>Enter rotation angle:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7672,17 +7727,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRotate</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="44"/>
         <source>&Rotate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="125"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="128"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="126"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="129"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7690,27 +7745,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRotate2</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="44"/>
         <source>Rotate T&wo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="163"/>
         <source>Specify absolute reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="162"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="164"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="165"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="167"/>
         <source>Specify relative reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="166"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="168"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7718,38 +7773,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRound</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="46"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="49"/>
         <source>&Round</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="224"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="292"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="295"/>
         <source>Specify first entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="293"/>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="297"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="299"/>
         <source>Specify second entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="303"/>
         <source>Enter radius:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="301"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="304"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7757,17 +7812,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyScale</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="43"/>
         <source>&Scale</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="119"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="121"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="120"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="122"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7775,39 +7830,39 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyStretch</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="46"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="49"/>
         <source>&Stretch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="198"/>
         <source>Specify first corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="196"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="202"/>
         <source>Specify second corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="200"/>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="204"/>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="211"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="206"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="210"/>
         <source>Specify target point</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7815,44 +7870,44 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyTrim</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="57"/>
         <source>&Trim</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="61"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="64"/>
         <source>&Trim Two</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
         <source>Select first trim entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="179"/>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="184"/>
         <source>Select limiting entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="185"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="194"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
         <source>Select second trim entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="193"/>
         <source>Select entity to trim</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7860,37 +7915,37 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyTrimAmount</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="45"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="49"/>
         <source>&Lengthen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="92"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="96"/>
         <source>No entity found. </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="95"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
         <source>The chosen Entity is in a block. Please edit the block.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="103"/>
         <source>The chosen Entity is not an atomic entity or cannot be trimmed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="131"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="135"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="182"/>
         <source>Select entity to trim or enter distance:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="179"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="183"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7898,7 +7953,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionOptionsDrawing</name>
     <message>
-        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="44"/>
         <source>Current &Drawing Preferences</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7906,53 +7961,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="44"/>
         <source>&Add node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="46"/>
         <source>Add polyline's node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="104"/>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="122"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="125"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="108"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="111"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="124"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="127"/>
         <source>Adding point is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="135"/>
         <source>Adding point is not on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="163"/>
         <source>Specify polyline to add nodes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="167"/>
         <source>Specify adding node's point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="165"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="168"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7960,53 +8015,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineAppend</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="37"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="40"/>
         <source>A&ppend node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="42"/>
         <source>Append polyline's node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="88"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="94"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="108"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="111"/>
         <source>Click somewhere near the beginning or end of existing polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="184"/>
         <source>Specify the polyline somewhere near the beginning or end point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="185"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="197"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="200"/>
         <source>Specify next point or [%1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="198"/>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="202"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="205"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="204"/>
         <source>Specify next point</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8014,53 +8069,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineDel</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="44"/>
         <source>&Delete node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="46"/>
         <source>Delete polyline's node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="106"/>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="125"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="128"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="113"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
         <source>Adding point is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="133"/>
         <source>Adding point is not on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="156"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="159"/>
         <source>Specify polyline to delete node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="157"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="163"/>
         <source>Specify deleting node's point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="164"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8068,66 +8123,66 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineDelBetween</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="44"/>
         <source>Delete &between two nodes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="46"/>
         <source>Delete between two nodes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="109"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="134"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="112"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="137"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="150"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="113"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="116"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="136"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
         <source>Deletinging point is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="142"/>
         <source>Deleting point is not on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="155"/>
         <source>Deleteinging point is not on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="179"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="182"/>
         <source>Specify polyline to delete between two nodes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="180"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="186"/>
         <source>Specify first node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="184"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="191"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="190"/>
         <source>Specify second node</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8135,32 +8190,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineEquidistant</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
         <source>Create &Equidistant Polylines</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="46"/>
         <source>Create Equidistant Polylines</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="198"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="200"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="202"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="204"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="256"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="258"/>
         <source>Choose the original polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="257"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="259"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8168,32 +8223,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineSegment</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="43"/>
         <source>Create Polyline from Existing &Segments</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="45"/>
         <source>Create Polyline from Existing Segments</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="250"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="256"/>
         <source>Entity must be a line or arc.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="292"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="295"/>
         <source>Choose one of the segments on the original polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="293"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="296"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8201,62 +8256,62 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineTrim</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="44"/>
         <source>&Trim segments</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="46"/>
         <source>Trim polyline's segments</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="106"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="123"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="142"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="146"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="113"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="125"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="144"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="129"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="148"/>
         <source>Specifying point is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="128"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="151"/>
         <source>No Segment found on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="180"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
         <source>Specify polyline to trim</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
         <source>Specify first segment</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
         <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="189"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="193"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="192"/>
         <source>Specify second segment</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8264,7 +8319,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPrintPreview</name>
     <message>
-        <location filename="../src/actions/rs_actionprintpreview.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionprintpreview.cpp" line="52"/>
         <source>Print Pre&view</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8272,17 +8327,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectAll</name>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="46"/>
         <source>Select &All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="49"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="52"/>
         <source>Deselect &all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="51"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="54"/>
         <source>Ctrl+K</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8290,12 +8345,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectContour</name>
     <message>
-        <location filename="../src/actions/rs_actionselectcontour.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="46"/>
         <source>(De-)Select &Contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectcontour.cpp" line="62"/>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="65"/>
         <source>Entity must be an Atomic Entity.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8303,32 +8358,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectIntersected</name>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="55"/>
         <source>Select Intersected Entities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="58"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="59"/>
         <source>Deselect Intersected Entities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
         <source>Choose first point of intersection line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
         <source>Choose second point of intersection line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8336,7 +8391,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectInvert</name>
     <message>
-        <location filename="../src/actions/rs_actionselectinvert.cpp" line="38"/>
+        <location filename="../src/actions/rs_actionselectinvert.cpp" line="41"/>
         <source>Invert Selection</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8344,7 +8399,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectLayer</name>
     <message>
-        <location filename="../src/actions/rs_actionselectlayer.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionselectlayer.cpp" line="44"/>
         <source>(De-)Select Layer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8352,7 +8407,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectSingle</name>
     <message>
-        <location filename="../src/actions/rs_actionselectsingle.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectsingle.cpp" line="44"/>
         <source>Select Entity</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8360,32 +8415,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectWindow</name>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="55"/>
         <source>Select Window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="58"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="59"/>
         <source>Deselect Window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
         <source>Choose first edge</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="172"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
         <source>Choose second edge</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="172"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8393,17 +8448,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSetRelativeZero</name>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="44"/>
         <source>Set Relative Zero</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="93"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
         <source>Set relative Zero</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="93"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
         <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8411,23 +8466,23 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSnapIntersectionManual</name>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="50"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="52"/>
         <source>I&ntersection Manually</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="180"/>
         <source>Select first entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="179"/>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="183"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="185"/>
         <source>Back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="184"/>
         <source>Select second entity</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8435,17 +8490,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionToolRegenerateDimensions</name>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="44"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="47"/>
         <source>Regenerate Dimension Entities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="79"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="82"/>
         <source>Regenerated %1 dimension entities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="81"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="84"/>
         <source>No dimension entities found</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8453,7 +8508,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomAuto</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomauto.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionzoomauto.cpp" line="49"/>
         <source>&Auto Zoom</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8461,12 +8516,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomIn</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomin.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="56"/>
         <source>Zoom &In</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionzoomin.cpp" line="63"/>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="66"/>
         <source>Zoom &Out</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8474,7 +8529,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomPan</name>
     <message>
-        <location filename="../src/actions/rs_actionzoompan.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionzoompan.cpp" line="40"/>
         <source>&Pan Zoom</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8482,7 +8537,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomPrevious</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="45"/>
         <source>&Previous View</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8490,7 +8545,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomRedraw</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="47"/>
         <source>&Redraw</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8526,940 +8581,940 @@ Do you want to replace it?</source>
 <context>
     <name>RS_Commands</name>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="45"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="39"/>
         <source>point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="40"/>
         <source>po</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="42"/>
         <source>line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="43"/>
         <source>ln</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="44"/>
         <source>l</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="52"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
         <source>polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
         <source>offset</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="55"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
         <source>o</source>
         <comment>offset</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
         <source>parallel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="51"/>
         <source>par</source>
         <comment>parallel</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="53"/>
         <source>arc</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
         <source>a</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="62"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
         <source>circle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
         <source>ci</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
         <source>rectangle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="66"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
         <source>rec</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="67"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="61"/>
         <source>rectang</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="71"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="423"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="539"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="416"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="532"/>
         <source>text</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="68"/>
         <source>regen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="75"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
         <source>rg</source>
         <comment>zoom - redraw</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="70"/>
         <source>zr</source>
         <comment>zoom - redraw</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="313"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="72"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
         <source>zw</source>
         <comment>zoom - window</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="80"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="315"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="308"/>
         <source>za</source>
         <comment>zoom - auto</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="314"/>
         <source>zp</source>
         <comment>zoom - pan</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="316"/>
         <source>zv</source>
         <comment>zoom - previous</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="81"/>
         <source>kill</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
         <source>k</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="90"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="429"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="549"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="422"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="542"/>
         <source>undo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="550"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="85"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="543"/>
         <source>u</source>
         <comment>undo</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="93"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
         <source>redo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
         <source>r</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="298"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
         <source>da</source>
         <comment>dimension - aligned</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="92"/>
         <source>da</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="300"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
         <source>dh</source>
         <comment>dimension - horizontal</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="95"/>
         <source>dh</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="297"/>
         <source>dr</source>
         <comment>dimension - linear</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
         <source>dr</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="106"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="302"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="295"/>
         <source>dv</source>
         <comment>dimension - vertical</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
         <source>dv</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="109"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="299"/>
         <source>ld</source>
         <comment>dimension - leader</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
         <source>ld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
         <source>dimregen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="361"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
         <source>tm</source>
         <comment>modify - multi trim (extend)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="111"/>
         <source>tm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="363"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="356"/>
         <source>xt</source>
         <comment>modify - trim (extend)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="114"/>
         <source>xt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="365"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="358"/>
         <source>rm</source>
         <comment>modify - trim</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
         <source>rm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="367"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="360"/>
         <source>mv</source>
         <comment>modify - move</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
         <source>mv</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="359"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="352"/>
         <source>ch</source>
         <comment>modify - bevel (chamfer)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
         <source>ch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="369"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="362"/>
         <source>mi</source>
         <comment>modify - mirror</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
         <source>mi</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="371"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="364"/>
         <source>ro</source>
         <comment>modify - rotate</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
         <source>ro</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="373"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="366"/>
         <source>sz</source>
         <comment>modify - scale</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
         <source>sz</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="375"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="368"/>
         <source>ss</source>
         <comment>modify - stretch</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
         <source>ss</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="370"/>
         <source>er</source>
         <comment>modify - delete (erase)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
         <source>er</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="379"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="372"/>
         <source>oo</source>
         <comment>modify - undo (oops)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
         <source>oo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="149"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="381"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="374"/>
         <source>uu</source>
         <comment>modify - redo</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
         <source>uu</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="152"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="383"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="376"/>
         <source>xp</source>
         <comment>modify - explode</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
         <source>xp</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="328"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
         <source>os</source>
         <comment>snap - none</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="151"/>
         <source>os</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="330"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
         <source>sg</source>
         <comment>snap - grid</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="154"/>
         <source>sg</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="332"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="325"/>
         <source>se</source>
         <comment>snap - end</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
         <source>se</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="334"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="327"/>
         <source>si</source>
         <comment>snap - intersection</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
         <source>si</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="336"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="329"/>
         <source>sn</source>
         <comment>snap - center</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
         <location filename="../src/cmd/rs_commands.cpp" line="169"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
         <source>sn</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="338"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="331"/>
         <source>sm</source>
         <comment>snap - middle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
         <source>sm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="174"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="333"/>
         <source>sn</source>
         <comment>snap - nearest</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="177"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="335"/>
         <source>np</source>
         <comment>snap - nearest point</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="178"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
         <source>np</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="181"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
         <source>tn</source>
         <comment>Deselect all</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="182"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="176"/>
         <source>tn</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="244"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="236"/>
         <source>Command: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="271"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="264"/>
         <source>po</source>
         <comment>point</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="273"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="266"/>
         <source>li</source>
         <comment>line</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="275"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="268"/>
         <source>pa</source>
         <comment>parallel</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="277"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="270"/>
         <source>re</source>
         <comment>rectangle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="279"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="272"/>
         <source>rp</source>
         <comment>regular polygon</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="281"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="274"/>
         <source>ci</source>
         <comment>circle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="283"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="276"/>
         <source>c2</source>
         <comment>2 point circle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="285"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="278"/>
         <source>c3</source>
         <comment>3 point circle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="287"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="280"/>
         <source>ar</source>
         <comment>arc</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="289"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="282"/>
         <source>a3</source>
         <comment>3 point arc</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="284"/>
         <source>ep</source>
         <comment>ellipse</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
         <source>tx</source>
         <comment>text</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
         <source>mt</source>
         <comment>text</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="311"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
         <source>rd</source>
         <comment>redraw</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="317"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="310"/>
         <source>zi</source>
         <comment>zoom - in</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="319"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="312"/>
         <source>zo</source>
         <comment>zoom - out</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
         <source>fr*</source>
         <comment>layers - freeze all</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="349"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
         <source>th*</source>
         <comment>layers - defreeze all</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="384"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
         <source>ex</source>
         <comment>modify - explode</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="397"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="455"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="390"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
         <source>angle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="399"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="470"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="392"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="463"/>
         <source>close</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="401"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="394"/>
         <source>chord length</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="403"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="396"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
         <source>columns</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="405"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="398"/>
         <source>columnspacing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="407"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="486"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="400"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
         <source>factor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="409"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="402"/>
         <source>length</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="411"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="404"/>
         <source>length1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="413"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="406"/>
         <source>length2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="415"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="408"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="506"/>
         <source>number</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="417"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="410"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="512"/>
         <source>radius</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="419"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="530"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="412"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
         <source>rows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="421"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="414"/>
         <source>rowspacing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="425"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="544"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="418"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="537"/>
         <source>through</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="427"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="420"/>
         <source>trim</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="431"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="554"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="424"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="547"/>
         <source>back</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="455"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
         <source>ang</source>
         <comment>angle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="456"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="449"/>
         <source>a</source>
         <comment>angle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="460"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
         <source>center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="460"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
         <source>cen</source>
         <comment>center</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="461"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="454"/>
         <source>c</source>
         <comment>center</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="465"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="458"/>
         <source>length</source>
         <comment>chord length</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="466"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="459"/>
         <source>l</source>
         <comment>chord length</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="471"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="464"/>
         <source>c</source>
         <comment>close</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
         <source>cols</source>
         <comment>columns</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="476"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="469"/>
         <source>c</source>
         <comment>columns</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="473"/>
         <source>columnspacing</source>
         <comment>columnspacing for inserts</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="481"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="474"/>
         <source>colspacing</source>
         <comment>columnspacing for inserts</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="482"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
         <source>cs</source>
         <comment>columnspacing for inserts</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="486"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
         <source>fact</source>
         <comment>factor</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="487"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
         <source>f</source>
         <comment>factor</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="491"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
         <source>help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="491"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
         <source>?</source>
         <comment>help</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="488"/>
         <source>length</source>
         <comment>length</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="489"/>
         <source>len</source>
         <comment>length</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="497"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="490"/>
         <source>l</source>
         <comment>length</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="494"/>
         <source>length1</source>
         <comment>length1</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
         <source>len1</source>
         <comment>length1</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="503"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
         <source>l1</source>
         <comment>length1</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="500"/>
         <source>length2</source>
         <comment>length2</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
         <source>len2</source>
         <comment>length2</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="509"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
         <source>l2</source>
         <comment>length2</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="514"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
         <source>num</source>
         <comment>number</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="515"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
         <source>n</source>
         <comment>number</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="520"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
         <source>r</source>
         <comment>radius</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="524"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="517"/>
         <source>reversed</source>
         <comment>reversed arc</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="525"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="518"/>
         <source>rev</source>
         <comment>reversed arc</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="526"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
         <source>r</source>
         <comment>reversed arc</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="530"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
         <source>r</source>
         <comment>rows</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="534"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="527"/>
         <source>rowspacing</source>
         <comment>rowspacing for inserts</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="535"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="528"/>
         <source>rs</source>
         <comment>rowspacing for inserts</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="540"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="533"/>
         <source>t</source>
         <comment>text</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="545"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="538"/>
         <source>t</source>
         <comment>through</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="555"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="548"/>
         <source>b</source>
         <comment>back</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="568"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="561"/>
         <source>Available commands:</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/ts/librecad_fr.ts b/ts/librecad_fr.ts
index c86cce9..3079243 100644
--- a/ts/librecad_fr.ts
+++ b/ts/librecad_fr.ts
@@ -2,6 +2,39 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="fr">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Annuler</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Annuler</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Annuler</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -257,7 +290,7 @@ Vérifiez les permissions SVP.</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -357,7 +390,7 @@ Sauvegarde automatique désactivée.</translation>
     </message>
     <message>
         <source>&Plugins</source>
-        <translation>&Greffons</translation>
+        <translation type="obsolete">&Greffons</translation>
     </message>
     <message>
         <source>Import</source>
@@ -684,7 +717,11 @@ Sauvegarde automatique désactivée.</translation>
     </message>
     <message>
         <source>&back</source>
-        <translation>&retour</translation>
+        <translation type="obsolete">&retour</translation>
+    </message>
+    <message>
+        <source>&Selection pointer</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1167,7 +1204,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Move</source>
-        <translation>Déplacer</translation>
+        <translation type="obsolete">Déplacer</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -1207,7 +1244,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Tourne outour de 2 centres</translation>
+        <translation type="obsolete">Tourne outour de 2 centres</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -1233,6 +1270,14 @@ in a separate window</source>
         <source>Edit Text</source>
         <translation>Editer Texte</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Déplacer / Copier</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Double Rotation</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -4765,6 +4810,22 @@ Voulez-vous le remplacer ?</translation>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_hu.ts b/ts/librecad_hu.ts
index cdb760a..9008aed 100644
--- a/ts/librecad_hu.ts
+++ b/ts/librecad_hu.ts
@@ -32,6 +32,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Mégsem</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Mégsem</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Mégsem</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -311,7 +344,7 @@ nem menthető. Ellenőrizze a jogokat.</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -403,10 +436,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1991,7 +2020,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2488,7 +2517,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Move</source>
-        <translation>Mozgatás</translation>
+        <translation type="obsolete">Mozgatás</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2524,7 +2553,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Forgatás két középpont körül</translation>
+        <translation type="obsolete">Forgatás két középpont körül</translation>
     </message>
     <message>
         <source>Explode</source>
@@ -2558,6 +2587,14 @@ in a separate window</source>
         <source>Edit Text</source>
         <translation>Szöveg szerkesztése</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Mozgat / Másol</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Többszörös forgatás</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6448,6 +6485,22 @@ Lecseréli?</translation>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_id_ID.ts b/ts/librecad_id_ID.ts
index 849e211..5be2dbc 100644
--- a/ts/librecad_id_ID.ts
+++ b/ts/librecad_id_ID.ts
@@ -2,286 +2,315 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="id_ID">
 <context>
-    <name>QC_ApplicationWindow</name>
+    <name>QC_ActionGetEnt</name>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="188"/>
-        <source>&Plugins</source>
-        <translation></translation>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="38"/>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="329"/>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Batal</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="40"/>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="129"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Batal</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="40"/>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="47"/>
+        <source>Cancel</source>
+        <translation type="unfinished">Batal</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ApplicationWindow</name>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="360"/>
         <source>Running script '%1'</source>
         <translation>Menjalankan skrip %1'</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="371"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="402"/>
         <source>Inserting block '%1'</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="493"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="524"/>
         <source>&File</source>
         <translation>&Berkas</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="513"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="544"/>
         <source>Import</source>
         <translation>Impor</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="540"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="571"/>
         <source>&Edit</source>
         <translation>&Sunting</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="596"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="627"/>
         <source>&View</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="664"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
         <source>&Toolbars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="693"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="724"/>
         <source>Focus on &Command Line</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="726"/>
         <source>CTRL+M</source>
         <translation>CTRL+M</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="707"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="738"/>
         <source>&Select</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="744"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="775"/>
         <source>&Draw</source>
         <translation>&Gambar</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="748"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="779"/>
         <source>&Point</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="755"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="786"/>
         <source>&Line</source>
         <translation>&Garis</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="827"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="858"/>
         <source>&Arc</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="840"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
         <source>&Circle</source>
         <translation>&Lingkaran</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="859"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="890"/>
         <source>&Ellipse</source>
         <translation>&Lonjong</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="902"/>
         <source>&Spline</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="878"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="909"/>
         <source>&Polyline</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="922"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="924"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="953"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="955"/>
         <source>&Dimension</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="954"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="985"/>
         <source>&Modify</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1037"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1068"/>
         <source>&Snap</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1100"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1131"/>
         <source>&Info</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1124"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1159"/>
         <source>&Layer</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1151"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1186"/>
         <source>&Block</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1195"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1230"/>
         <source>&Scripts</source>
         <translation>&Skrip</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1208"/>
-        <source>&CAM</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1221"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1248"/>
         <source>About</source>
         <translation>Tentang</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1228"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1255"/>
         <source>&Manual</source>
         <translation>&Panduan</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1273"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1300"/>
         <source>Insert Image</source>
         <translation>Masukkan Gambar</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1333"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1360"/>
         <source>&Window</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1341"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1368"/>
         <source>&Help</source>
         <translation>&Bantuan</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1349"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1376"/>
         <source>De&bugging</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1557"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1586"/>
         <source>Layer List</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1578"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1607"/>
         <source>Block List</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1599"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1628"/>
         <source>Library Browser</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1625"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1654"/>
         <source>Command line</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1839"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1868"/>
         <source>&Cascade</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1841"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1870"/>
         <source>&Tile</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1843"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1872"/>
         <source>Tile &Horizontally</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2003"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2009"/>
         <source>Creating new file...</source>
         <translation>Membuat berkas baru...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2013"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2019"/>
         <source>Block '%1'</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2015"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2021"/>
         <source>unnamed document %1</source>
         <translation>dokumen tak-bernama %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2055"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2061"/>
         <source>New Drawing created.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2089"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2095"/>
         <source>Opening recent file...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2130"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2136"/>
         <source>Cannot open the file
 %1
 Please check the permissions.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2164"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2170"/>
         <source>Loaded document: </source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2168"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2174"/>
         <source>Opening aborted</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2182"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2188"/>
         <source>Saving drawing...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2194"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2244"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2200"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2250"/>
         <source>Saved drawing: %1</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2199"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2236"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2205"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2242"/>
         <source>Cannot save the file
 %1
 Please check the permissions.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2216"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2222"/>
         <source>Saving drawing under new filename...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2257"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2263"/>
         <source>Auto-saving drawing...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2266"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2272"/>
         <source>Auto-saved drawing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2271"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2277"/>
         <source>Cannot auto-save the file
 %1
 Please check the permissions.
@@ -289,67 +318,67 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2288"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2294"/>
         <source>Exporting drawing...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2361"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2367"/>
         <source>Exported: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2401"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2407"/>
         <source>Exporting...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2456"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2462"/>
         <source>Export complete</source>
         <translation>Mengekspor selesai</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2458"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2464"/>
         <source>Export failed!</source>
         <translation>Mengekspor gagal!</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2524"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2530"/>
         <source>Printing...</source>
         <translation>Mencetak...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2587"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2593"/>
         <source>Printing complete</source>
         <translation>Mencetak selesai</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2636"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2642"/>
         <source>Print preview for %1</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2695"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2701"/>
         <source>Exiting application...</source>
         <translation>Menutup aplikasi...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2897"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
         <source>None</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2901"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
         <source>About...</source>
         <translation>Tentang...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
         <source>Version: %1</source>
         <translation type="unfinished">Versi: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2906"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
         <source>SCM Revision: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -358,17 +387,17 @@ Auto-save disabled.</source>
         <translation type="obsolete">Versi: %1 %2</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2908"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2917"/>
         <source>Compiled on: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2919"/>
         <source>Program Icons Supplied by</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2911"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
         <source>Splash and Logo supplied by</source>
         <translation type="unfinished"></translation>
     </message>
@@ -377,27 +406,27 @@ Auto-save disabled.</source>
         <translation type="obsolete">Tanggal: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2922"/>
         <source>Modules: %1</source>
         <translation>Modul: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2924"/>
         <source>Main Website : </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2929"/>
         <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2955"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2964"/>
         <source>Help</source>
         <translation>Bantuan</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2968"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2977"/>
         <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -405,18 +434,18 @@ Auto-save disabled.</source>
 <context>
     <name>QC_MDIWindow</name>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="406"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="405"/>
         <source>Do you really want to close the drawing?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="412"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="411"/>
         <source>Do you really want to close the file
 %1?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="415"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="414"/>
         <source>Closing Drawing</source>
         <translation type="unfinished"></translation>
     </message>
@@ -424,123 +453,123 @@ Auto-save disabled.</source>
 <context>
     <name>QG_ActionFactory</name>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="224"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="214"/>
         <source>&Export...</source>
         <translation>&Ekspor...</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="223"/>
         <source>&Close</source>
         <translation>&Tutup</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="243"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
         <source>&Print...</source>
         <translation>&Cetak...</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="264"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="254"/>
         <source>&Quit</source>
         <translation>&Tutup</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="897"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="270"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="887"/>
         <source>&Grid</source>
         <translation>&Kisi-kisi</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="282"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="272"/>
         <source>CTRL-G</source>
         <translation>CTRL-G</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="290"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
         <source>&Draft</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="299"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="289"/>
         <source>&Statusbar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="381"/>
-        <source>&back</source>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="371"/>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="886"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="876"/>
         <source>&Free</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="908"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="898"/>
         <source>&Endpoints</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="919"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="909"/>
         <source>&On Entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="930"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="920"/>
         <source>&Center</source>
         <translation>&Pusat</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="941"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="931"/>
         <source>&Middle</source>
         <translation>&Tengah</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="952"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="942"/>
         <source>&Distance from Endpoint</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="963"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="953"/>
         <source>&Intersection</source>
         <translation>&Persilangan</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="983"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="973"/>
         <source>Restrict &Nothing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="994"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="984"/>
         <source>Restrict &Orthogonally</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1005"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="995"/>
         <source>Restrict &Horizontally</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1016"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1006"/>
         <source>Restrict&Vertically</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1180"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1176"/>
         <source>&Preferences</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1182"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1178"/>
         <source>&Application Preferences</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1205"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1201"/>
         <source>Open IDE</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1215"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1211"/>
         <source>Run Script..</source>
         <translation>Jalankan Skrip..</translation>
     </message>
@@ -553,12 +582,12 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arcoptions.ui" line="56"/>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="62"/>
         <source>Clockwise</source>
         <translation>Searah jarum jam</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arcoptions.ui" line="76"/>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="82"/>
         <source>Counter Clockwise</source>
         <translation>Melawan arah jarum jam</translation>
     </message>
@@ -566,12 +595,12 @@ Auto-save disabled.</source>
 <context>
     <name>QG_ArcTangentialOptions</name>
     <message>
-        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="31"/>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="26"/>
         <source>Tangential Arc Options</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="40"/>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="35"/>
         <source>Radius:</source>
         <translation></translation>
     </message>
@@ -637,12 +666,12 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_blockdialog.ui.h" line="62"/>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="97"/>
         <source>Renaming Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_blockdialog.ui.h" line="63"/>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="98"/>
         <source>Could not name block. A block named "%1" already exists.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -650,88 +679,88 @@ Auto-save disabled.</source>
 <context>
     <name>QG_BlockWidget</name>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="75"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="77"/>
         <source>Show all blocks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="83"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="85"/>
         <source>Hide all blocks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="91"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="93"/>
         <source>Add a block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="99"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="101"/>
         <source>Remove the active block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="107"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="109"/>
         <source>Rename the active block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="115"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="117"/>
         <source>Edit the active block
 in a separate window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="124"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="126"/>
         <source>Insert the active block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="302"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="304"/>
         <source>Block Menu</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="307"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
         <source>&Defreeze all Blocks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
         <source>&Freeze all Blocks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
         <source>&Add Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
         <source>&Remove Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
         <source>&Rename Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
         <source>&Edit Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
         <source>&Insert Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
         <source>&Toggle Visibility</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="325"/>
         <source>&Create New Block</source>
         <translation type="unfinished"></translation>
     </message>
@@ -739,7 +768,7 @@ in a separate window</source>
 <context>
     <name>QG_CadToolBar</name>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="31"/>
+        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="26"/>
         <source>CAD Tools</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1164,17 +1193,17 @@ in a separate window</source>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="258"/>
-        <source>Move</source>
+        <source>Move / Copy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="278"/>
-        <source>Move and Rotate</source>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
+        <source>Rotate Two</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
-        <source>Rotate around two centers</source>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="278"/>
+        <source>Move and Rotate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -1459,68 +1488,68 @@ in a separate window</source>
 <context>
     <name>QG_ColorBox</name>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="77"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
         <source>Unchanged</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="80"/>
-        <location filename="../src/ui/qg_colorbox.cpp" line="167"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="172"/>
         <source>By Layer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
         <source>By Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
         <source>Red</source>
         <translation>Merah</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
         <source>Yellow</source>
         <translation>Kuning</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="86"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
         <source>Green</source>
         <translation>Hijau</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="87"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
         <source>Cyan</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
         <source>Blue</source>
         <translation>Biru</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
         <source>Magenta</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="94"/>
         <source>Black / White</source>
         <translation>Hitam / Putih</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="95"/>
         <source>Gray</source>
         <translation>Abu-abu</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="96"/>
         <source>Light Gray</source>
         <translation>Abu-abu Terang</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="97"/>
         <source>Others..</source>
         <translation>Lainnya..</translation>
     </message>
@@ -1528,13 +1557,13 @@ in a separate window</source>
 <context>
     <name>QG_CommandWidget</name>
     <message>
-        <location filename="../src/ui/forms/qg_commandwidget.ui" line="17"/>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="15"/>
         <source>Command Line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_commandwidget.ui" line="80"/>
-        <location filename="../src/ui/forms/qg_commandwidget.ui.h" line="49"/>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="82"/>
+        <location filename="../src/ui/forms/qg_commandwidget.cpp" line="83"/>
         <source>Command:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4422,7 +4451,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QG_LayerBox</name>
     <message>
-        <location filename="../src/ui/qg_layerbox.cpp" line="69"/>
+        <location filename="../src/ui/qg_layerbox.cpp" line="70"/>
         <source>- Unchanged -</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4781,118 +4810,118 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QG_LineTypeBox</name>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="74"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="75"/>
         <source>- Unchanged -</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="78"/>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="239"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="241"/>
         <source>By Layer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="80"/>
         <source>By Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="81"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
         <source>No Pen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
         <source>Continuous</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
         <source>Dot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
         <source>Dot (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
         <source>Dot (large)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
         <source>Dash</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
         <source>Dash (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
         <source>Dash (large)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
         <source>Dash Dot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
         <source>Dash Dot (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
         <source>Dash Dot (large)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
         <source>Divide</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
         <source>Divide (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
         <source>Divide (large)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
         <source>Center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
         <source>Center (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
         <source>Center (large)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
         <source>Border</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
         <source>Border (small)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="101"/>
         <source>Border (large)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5313,11 +5342,11 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QMessageBox</name>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2129"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2198"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2235"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2270"/>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="150"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2135"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2204"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2241"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2276"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="140"/>
         <source>Warning</source>
         <translation>Peringatan</translation>
     </message>
@@ -5332,33 +5361,33 @@ You can changes these settings later in the Options Dialog of QCad.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="236"/>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="247"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="226"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
         <source>Remove Layer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="227"/>
         <source>Layer "%1" and all entities on it will be removed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="248"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="238"/>
         <source>Layer "%1" can never be removed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="293"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="283"/>
         <source>Layer Dialog</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="408"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="398"/>
         <source>Remove Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="409"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="399"/>
         <source>Block "%1" and all its entities will be removed.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5366,247 +5395,269 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="180"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="179"/>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="183"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="261"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="182"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="260"/>
         <source>Inch</source>
         <translation>Inci</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="186"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="263"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="185"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="262"/>
         <source>Foot</source>
         <translation>Kaki</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="189"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="265"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="188"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="264"/>
         <source>Mile</source>
         <translation>Mil</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="192"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="267"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="191"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="266"/>
         <source>Millimeter</source>
         <translation>Milimeter</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="195"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="269"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="194"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="268"/>
         <source>Centimeter</source>
         <translation>Sentimeter</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="198"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="271"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="197"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="270"/>
         <source>Meter</source>
         <translation>Meter</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="201"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="273"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="200"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="272"/>
         <source>Kilometer</source>
         <translation>Kilometer</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="204"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="275"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="203"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="274"/>
         <source>Microinch</source>
         <translation>Mikroinci</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="207"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="277"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="206"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="276"/>
         <source>Mil</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="210"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="279"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="209"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="278"/>
         <source>Yard</source>
         <translation>Yard</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="213"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="281"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="212"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="280"/>
         <source>Angstrom</source>
         <translation>Angstrom</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="216"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="283"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="215"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="282"/>
         <source>Nanometer</source>
         <translation>Nanometer</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="219"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="285"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="218"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="284"/>
         <source>Micron</source>
         <translation>Mikron</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="222"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="287"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="221"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="286"/>
         <source>Decimeter</source>
         <translation>Desimeter</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="225"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="289"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="224"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="288"/>
         <source>Decameter</source>
         <translation>Dekameter</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="228"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="291"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="227"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="290"/>
         <source>Hectometer</source>
         <translation>Hektometer</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="231"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="293"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="230"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="292"/>
         <source>Gigameter</source>
         <translation>Gigameter</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="234"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="295"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="233"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="294"/>
         <source>Astro</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="237"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="297"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="236"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="296"/>
         <source>Lightyear</source>
         <translation>Tahun cahaya</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="240"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="299"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="239"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="298"/>
         <source>Parsec</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="188"/>
+        <location filename="../src/main/main.cpp" line="185"/>
         <source>Loading..</source>
         <translation>Memuat..</translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="214"/>
+        <location filename="../src/main/main.cpp" line="211"/>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="229"/>
+        <location filename="../src/main/main.cpp" line="226"/>
         <source>Loading File %1..</source>
         <translation>Memuat Berkas %1..</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="571"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="561"/>
         <source>All Image Files (%1)</source>
         <translation>Semua Jenis Berkas Gambar (%1)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="572"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="562"/>
         <source>All Files (*.*)</source>
         <translation>Semua Jenis Berkas (*.*)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="579"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="569"/>
         <source>Open Image</source>
         <translation>Buka Gambar</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1778"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1733"/>
         <source>Windows Bitmap</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1780"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1735"/>
         <source>Joint Photographic Experts Group</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1782"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1737"/>
         <source>Graphics Interchange Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1784"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1739"/>
         <source>Multiple-image Network Graphics</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1786"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1741"/>
         <source>Portable Bit Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1788"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1743"/>
         <source>Portable Grey Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1790"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1745"/>
         <source>Portable Network Graphic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1792"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1747"/>
         <source>Portable Pixel Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1794"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1749"/>
         <source>X Bitmap Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1796"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1751"/>
         <source>X Pixel Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="72"/>
-        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="68"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="107"/>
         <source>Save Drawing As</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="109"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
         <source>%1 already exists.
 Do you want to replace it?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="169"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="173"/>
         <source>Drawing Exchange %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="170"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="174"/>
         <source>QCad 1.x file %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="171"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="175"/>
         <source>Font %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="189"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="193"/>
         <source>Open Drawing</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="698"/>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="702"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="719"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="736"/>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="715"/>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="732"/>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksadd.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionblocksadd.cpp" line="42"/>
         <source>&Add Block</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5614,7 +5665,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksAttributes</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="45"/>
         <source>&Rename Block</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5622,17 +5673,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksCreate</name>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="52"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="54"/>
         <source>&Create Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="162"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="163"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
@@ -5640,7 +5691,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksEdit</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksedit.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionblocksedit.cpp" line="42"/>
         <source>&Edit Block</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5648,7 +5699,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksExplode</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="48"/>
         <source>&Explode</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5656,12 +5707,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksFreezeAll</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="49"/>
         <source>&Freeze all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="55"/>
         <source>&Defreeze all</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5669,57 +5720,57 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksInsert</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="48"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="50"/>
         <source>&Insert Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="193"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="206"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="219"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="232"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="245"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="258"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="234"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="247"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="260"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="311"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="313"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="312"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="314"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="315"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="317"/>
         <source>Enter angle:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="319"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="321"/>
         <source>Enter factor:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="323"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="325"/>
         <source>Enter columns:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="327"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="329"/>
         <source>Enter rows:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="331"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="333"/>
         <source>Enter column spacing:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="335"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="337"/>
         <source>Enter row spacing:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5735,7 +5786,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksToggleView</name>
     <message>
-        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="45"/>
+        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="47"/>
         <source>Toggle Block Visibility</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5743,12 +5794,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDefault</name>
     <message>
-        <location filename="../src/actions/rs_actiondefault.cpp" line="356"/>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
         <source>Choose second edge</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="358"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -5756,38 +5807,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimAligned</name>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="51"/>
         <source>&Aligned</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="265"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="267"/>
         <source>Specify first extension line origin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="266"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="268"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="270"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="272"/>
         <source>Specify second extension line origin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="271"/>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="273"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="278"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="275"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="277"/>
         <source>Specify dimension line location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="279"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="281"/>
         <source>Enter dimension text:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5795,34 +5846,34 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimAngular</name>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="48"/>
         <source>&Angular</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="287"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="289"/>
         <source>Select first line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="288"/>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="292"/>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="296"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="294"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="291"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="293"/>
         <source>Select second line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="296"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
         <source>Specify dimension arc line location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="299"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="301"/>
         <source>Enter dimension text:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5869,27 +5920,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimLeader</name>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="51"/>
         <source>&Leader</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="227"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="234"/>
         <source>Specify target point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="228"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="235"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="231"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="238"/>
         <source>Specify next point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="239"/>
         <source>Finish</source>
         <translation>Selesai</translation>
     </message>
@@ -5897,58 +5948,58 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimLinear</name>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="66"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="69"/>
         <source>&Linear</source>
         <translation>&Linear</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="73"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="76"/>
         <source>&Horizontal</source>
         <translation>&Horizontal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="80"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="83"/>
         <source>&Vertical</source>
         <translation>&Vertikal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="263"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="312"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="315"/>
         <source>Specify first extension line origin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="313"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="316"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="320"/>
         <source>Specify second extension line origin</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="318"/>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="323"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="321"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="322"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="325"/>
         <source>Specify dimension line location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="329"/>
         <source>Enter dimension text:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="330"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="333"/>
         <source>Enter dimension line angle:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5995,65 +6046,65 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArc</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="50"/>
         <source>&Center, Point, Angles</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="275"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="289"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="308"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="323"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="344"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="309"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="324"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="345"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="339"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="340"/>
         <source>Not a valid chord length</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
         <source>Specify center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="371"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
         <source>Specify radius</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="371"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="375"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="381"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="385"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="389"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="375"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
         <source>Specify start angle:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="379"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
         <source>Specify end angle or [Angle/chord Length]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
         <source>Specify included angle:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="387"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
         <source>Specify chord length:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6061,38 +6112,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArc3P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="52"/>
         <source>&3 Points</source>
         <translation>&3 Titik</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="99"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="101"/>
         <source>Invalid arc data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="227"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="229"/>
         <source>Specify startpoint or [Center]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="228"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="230"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
         <source>Specify second point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="232"/>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="236"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="236"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
         <source>Specify endpoint</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6100,27 +6151,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArcTangential</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="52"/>
         <source>Arc: Tangential</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="257"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
         <source>Specify base entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="259"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
         <source>Specify end angle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -6128,32 +6179,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="53"/>
         <source>Center, &Point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="185"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="188"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
         <source>Specify center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
         <source>Specify radius</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -6161,32 +6212,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle2P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="50"/>
         <source>2 Points</source>
         <translation>2 Titik</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="96"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="100"/>
         <source>Invalid Circle data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="206"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
         <source>Specify first point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="206"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
         <source>Specify second point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -6194,38 +6245,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle3P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="50"/>
         <source>3 Points</source>
         <translation>3 Titik</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="97"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="100"/>
         <source>Invalid circle data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="207"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="210"/>
         <source>Specify first point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="208"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="214"/>
         <source>Specify second point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="212"/>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="219"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="218"/>
         <source>Specify third point</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6233,32 +6284,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircleCR</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="48"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="52"/>
         <source>Center, &Radius</source>
         <translation>Pusat, &Jari-jari</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="167"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="171"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="198"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
         <source>Specify circle center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="206"/>
         <source>Specify circle radius</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="207"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -6266,57 +6317,57 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawEllipseAxis</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="61"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="65"/>
         <source>&Ellipse Arc (Axis)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="66"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="70"/>
         <source>&Ellipse (Axis)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="315"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="329"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="343"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="319"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="333"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="347"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="367"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="371"/>
         <source>Specify ellipse center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="376"/>
         <source>Specify endpoint of major axis</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="373"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="379"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="384"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="389"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="377"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="393"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="378"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="382"/>
         <source>Specify endpoint or length of minor axis:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="387"/>
         <source>Specify start angle</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="392"/>
         <source>Specify end angle</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6324,17 +6375,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawHatch</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="47"/>
         <source>&Hatch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="154"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="157"/>
         <source>Hatch created successfully.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="159"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="162"/>
         <source>Invalid hatch area. Please check that the entities chosen form one or more closed contours.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6342,33 +6393,33 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawImage</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="51"/>
         <source>&Image</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="197"/>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="212"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="260"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="261"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="264"/>
         <source>Enter angle:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="266"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="268"/>
         <source>Enter factor:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6376,43 +6427,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLine</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="55"/>
         <source>&2 Points</source>
         <translation>&2 Titik</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="236"/>
         <source>Specify first point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="233"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="237"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="248"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
         <source>Specify next point or [%1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="249"/>
         <location filename="../src/actions/rs_actiondrawline.cpp" line="253"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="257"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="256"/>
         <source>Specify next point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="302"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="306"/>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="321"/>
         <source>Cannot undo: Not enough entities defined yet.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6420,49 +6471,49 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineAngle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="58"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="62"/>
         <source>&Angle</source>
         <translation>&Sudut</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="64"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="68"/>
         <source>&Horizontal</source>
         <translation>&Horizontal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="70"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="74"/>
         <source>Vertical</source>
         <translation>Vertikal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="212"/>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="225"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="229"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="264"/>
         <source>Specify position</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="261"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
         <source>Enter angle:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
         <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
         <source>Enter length:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6470,45 +6521,45 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineBisector</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="54"/>
         <source>Bisector</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="199"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="212"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="215"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="247"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="250"/>
         <source>Select first line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="248"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="254"/>
         <source>Select second line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="252"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="256"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="263"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="258"/>
         <source>Enter bisector length:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="262"/>
         <source>Enter number of bisectors:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6516,17 +6567,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineFree</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="51"/>
         <source>&Freehand Line</source>
         <translation>&Garis Bebas</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="126"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
         <source>Click and drag to draw a line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="126"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
@@ -6534,27 +6585,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineHorVert</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="53"/>
         <source>Vertical</source>
         <translation>Vertikal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="147"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="150"/>
         <source>Specify first point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="148"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="154"/>
         <source>Specify second point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="152"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="155"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -6562,39 +6613,39 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineParallel</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="53"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="57"/>
         <source>Parallel</source>
         <translation>Sejajar</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="56"/>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="59"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="60"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="63"/>
         <source>Concentric</source>
         <translation>Konsentris</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="128"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="132"/>
         <source>Specify Distance <%1> or select entity or [%2]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="130"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="138"/>
         <source>Enter number:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="195"/>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="221"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="225"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="219"/>
         <source>Not a valid number. Try 1..99</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6602,43 +6653,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineParallelThrough</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="52"/>
         <source>Parallel through point</source>
         <translation>Sejajar melalui titik</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="170"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
         <source>Select entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="170"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="174"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="177"/>
         <source>Specify through point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="175"/>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
         <source>Number:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="237"/>
         <source>Not a valid number. Try 1..99</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="238"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="241"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6646,32 +6697,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLinePolygon</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="50"/>
         <source>Pol&ygon (Cen,Cor)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="140"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="143"/>
         <source>Specify center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="145"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="148"/>
         <source>Specify a corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="152"/>
         <source>Enter number:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="213"/>
         <source>Not a valid number. Try 1..9999</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="219"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6679,43 +6730,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLinePolygon2</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="50"/>
         <source>Polygo&n (Cor,Cor)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="140"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="143"/>
         <source>Specify first corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="141"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="144"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="145"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="148"/>
         <source>Specify second corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="146"/>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="150"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="150"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
         <source>Number:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="214"/>
         <source>Not a valid number. Try 1..9999</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="217"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="220"/>
         <source>Not a valid expression.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6723,27 +6774,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineRectangle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="50"/>
         <source>Rectangle</source>
         <translation>Persegi panjang</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="192"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
         <source>Specify first corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="193"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="200"/>
         <source>Specify second corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="201"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -6751,38 +6802,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineRelAngle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="55"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="58"/>
         <source>Relative angle</source>
         <translation>Sudut relatif</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="61"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="64"/>
         <source>Orthogonal</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="255"/>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="272"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="275"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="312"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="315"/>
         <source>Select base entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="313"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="319"/>
         <source>Specify position</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="320"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -6790,27 +6841,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineTangent1</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="49"/>
         <source>Tangent (P,C)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="180"/>
         <source>Specify point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="181"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="182"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="184"/>
         <source>Select circle, arc or ellipse</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="183"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="185"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -6818,27 +6869,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineTangent2</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="48"/>
         <source>Tangent (C,C)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="162"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="164"/>
         <source>Select first circle or arc</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="163"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="165"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="166"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="168"/>
         <source>Select second circle or arc</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="167"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="169"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -6846,17 +6897,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawPoint</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="41"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="45"/>
         <source>&Points</source>
         <translation>&Titik</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="121"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
         <source>Specify location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="121"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
@@ -6864,53 +6915,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawPolyline</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
         <source>&Polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="53"/>
         <source>Draw polylines</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="354"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
         <source>Specify first point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="356"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="370"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
         <source>Specify next point or [%1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="376"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="374"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
         <source>Specify next point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="429"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="430"/>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="459"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="460"/>
         <source>Undo disallowed due a fatal bug somewhere. Sorry.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="462"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="463"/>
         <source>Cannot undo: Not enough entities defined yet.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6918,7 +6969,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawSpline</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawspline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="52"/>
         <source>&Spline</source>
         <translation type="unfinished"></translation>
     </message>
@@ -6957,27 +7008,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawText</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="49"/>
         <source>&Text</source>
         <translation>&Tulisan</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="274"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="276"/>
         <source>Specify insertion point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="275"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="277"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="278"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="280"/>
         <source>Enter text:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="279"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="281"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -6985,22 +7036,22 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditCopy</name>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="55"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="59"/>
         <source>&Copy</source>
         <translation>&Salin</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="65"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="69"/>
         <source>Cu&t</source>
         <translation>Poto&ng</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="130"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="134"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="131"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="135"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
@@ -7008,17 +7059,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditPaste</name>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="49"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="52"/>
         <source>&Paste</source>
         <translation>&Tempel</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="132"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="135"/>
         <source>Set reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="133"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="136"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
@@ -7026,12 +7077,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditUndo</name>
     <message>
-        <location filename="../src/actions/rs_actioneditundo.cpp" line="53"/>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="56"/>
         <source>&Undo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditundo.cpp" line="63"/>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="66"/>
         <source>&Redo</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7039,7 +7090,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionFileNew</name>
     <message>
-        <location filename="../src/actions/rs_actionfilenew.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionfilenew.cpp" line="39"/>
         <source>&New...</source>
         <translation>&Baru...</translation>
     </message>
@@ -7063,7 +7114,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionFileSaveAs</name>
     <message>
-        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="38"/>
+        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="39"/>
         <source>Save &as...</source>
         <translation>Simpan &sebagai...</translation>
     </message>
@@ -7071,37 +7122,37 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoAngle</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="45"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="46"/>
         <source>Angle between two lines</source>
         <translation>Sudut antara dua garis</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="77"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="78"/>
         <source>Angle: %1%2</source>
         <translation>Sudut: %1%2</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="81"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="82"/>
         <source>Lines are parallel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="146"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
         <source>Specify first line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="148"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="151"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
         <source>Specify second line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="153"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7109,43 +7160,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoArea</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="43"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="45"/>
         <source>Polygonal Area</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="70"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="73"/>
         <source>Area: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="71"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="74"/>
         <source>Circumference: %1</source>
         <translation>Keliling: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="189"/>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="204"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="192"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="207"/>
         <source>Point: %1/%2</source>
         <translation>Titik: %1/%2</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="232"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="235"/>
         <source>Specify first point of polygon</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="233"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="236"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="237"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="240"/>
         <source>Specify next point of polygon</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="238"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="241"/>
         <source>Terminate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7153,32 +7204,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoDist</name>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="41"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="42"/>
         <source>&Distance Point to Point</source>
         <translation>&Jarak Titik ke Titik</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="63"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="64"/>
         <source>Distance: %1</source>
         <translation>Jarak: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="150"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
         <source>Specify first point of distance</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="152"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="155"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
         <source>Specify second point of distance</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="157"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7186,32 +7237,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoDist2</name>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="41"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="42"/>
         <source>&Distance Entity to Point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="61"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="62"/>
         <source>Distance: %1</source>
         <translation>Jarak: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="136"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
         <source>Specify entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="138"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="141"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
         <source>Specify point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="143"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7219,27 +7270,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoInside</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="58"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="61"/>
         <source>Point inside contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="67"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="70"/>
         <source>Point is inside selected contour.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="69"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="72"/>
         <source>Point is outside selected contour.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="100"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="103"/>
         <source>Specify point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="101"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="104"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
@@ -7247,17 +7298,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoTotalLength</name>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="44"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="41"/>
         <source>&Total length of selected entities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="78"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="75"/>
         <source>Total Length of selected entities: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="80"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="77"/>
         <source>At least one of the selected entities cannot be measured.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7265,7 +7316,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersadd.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionlayersadd.cpp" line="41"/>
         <source>Add Layer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7273,7 +7324,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersEdit</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersedit.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionlayersedit.cpp" line="44"/>
         <source>&Edit Layer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7281,12 +7332,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersFreezeAll</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="48"/>
         <source>&Freeze all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="54"/>
         <source>&Defreeze all</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7294,7 +7345,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersRemove</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersremove.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionlayersremove.cpp" line="42"/>
         <source>Remove Layer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7302,7 +7353,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersToggleLock</name>
     <message>
-        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="47"/>
         <source>Toggle Layer Lock</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7310,7 +7361,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersToggleView</name>
     <message>
-        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="43"/>
         <source>&Toggle Layer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7365,7 +7416,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyAttributes</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="45"/>
         <source>&Attributes</source>
         <translation>&Atribut</translation>
     </message>
@@ -7373,45 +7424,45 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyBevel</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="50"/>
         <source>&Bevel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="175"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="191"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="252"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="255"/>
         <source>Select first entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="253"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="259"/>
         <source>Select second entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="257"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="261"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="265"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="268"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="263"/>
         <source>Enter length 1:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="267"/>
         <source>Enter length 2:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7419,48 +7470,48 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyCut</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="46"/>
         <source>&Divide</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="104"/>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="122"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="125"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="111"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="114"/>
         <source>Entity must be a line, arc, circle or ellipse.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="124"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
         <source>Cutting point is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="130"/>
         <source>Cutting point is not on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="150"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="153"/>
         <source>Specify entity to cut</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="151"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="157"/>
         <source>Specify cutting point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="155"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="158"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7476,67 +7527,67 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyDeleteFree</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="46"/>
         <source>Delete Freehand</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="95"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="97"/>
         <source>Entities not in the same polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="98"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="100"/>
         <source>Parent of second entity is not a polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="101"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="103"/>
         <source>Parent of second entity is NULL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="104"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="106"/>
         <source>One of the chosen entities is NULL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="129"/>
         <source>Parent of first entity is not a polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="131"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="133"/>
         <source>Parent of first entity is NULL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="135"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="137"/>
         <source>First entity is NULL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="149"/>
         <source>Second entity is NULL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="162"/>
         <source>Specify first break point on a polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="163"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
         <source>Specify second break point on the same polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="168"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7562,7 +7613,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyEntity</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="45"/>
         <source>&Properties</source>
         <translation>&Properti</translation>
     </message>
@@ -7570,7 +7621,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyExplodeText</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="48"/>
         <source>&Explode Text into Letters</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7578,27 +7629,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMirror</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="42"/>
         <source>&Mirror</source>
         <translation>&Cermin</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="163"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="165"/>
         <source>Specify first point of mirror line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="166"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="168"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="170"/>
         <source>Specify second point of mirror line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="171"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7606,27 +7657,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMove</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="43"/>
         <source>&Move / Copy</source>
         <translation>&Pindahkan / Salin</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="149"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="148"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="150"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="151"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="153"/>
         <source>Specify target point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="154"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7634,38 +7685,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMoveRotate</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="45"/>
         <source>M&ove and Rotate</source>
         <translation>Pi&ndahkan dan Putar</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="171"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="174"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="222"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="225"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="223"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="229"/>
         <source>Specify target point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="227"/>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="231"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="234"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="233"/>
         <source>Enter rotation angle:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7673,17 +7724,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRotate</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="44"/>
         <source>&Rotate</source>
         <translation>&Putar</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="125"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="128"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="126"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="129"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7691,27 +7742,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRotate2</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="44"/>
         <source>Rotate T&wo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="163"/>
         <source>Specify absolute reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="162"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="164"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="165"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="167"/>
         <source>Specify relative reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="166"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="168"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7719,38 +7770,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRound</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="46"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="49"/>
         <source>&Round</source>
         <translation>&Bundar</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="224"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="292"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="295"/>
         <source>Specify first entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="293"/>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="297"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="299"/>
         <source>Specify second entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="303"/>
         <source>Enter radius:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="301"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="304"/>
         <source>Cancel</source>
         <translation type="unfinished">Batal</translation>
     </message>
@@ -7758,17 +7809,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyScale</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="43"/>
         <source>&Scale</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="119"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="121"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="120"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="122"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
@@ -7776,39 +7827,39 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyStretch</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="46"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="49"/>
         <source>&Stretch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="198"/>
         <source>Specify first corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="196"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="202"/>
         <source>Specify second corner</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="200"/>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="204"/>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="211"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="206"/>
         <source>Specify reference point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="210"/>
         <source>Specify target point</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7816,44 +7867,44 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyTrim</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="57"/>
         <source>&Trim</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="61"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="64"/>
         <source>&Trim Two</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
         <source>Select first trim entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="179"/>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
         <source>Cancel</source>
         <translation type="unfinished">Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="184"/>
         <source>Select limiting entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="185"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="194"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
         <source>Select second trim entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="193"/>
         <source>Select entity to trim</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7861,37 +7912,37 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyTrimAmount</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="45"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="49"/>
         <source>&Lengthen</source>
         <translation type="unfinished">&Perpanjang</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="92"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="96"/>
         <source>No entity found. </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="95"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
         <source>The chosen Entity is in a block. Please edit the block.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="103"/>
         <source>The chosen Entity is not an atomic entity or cannot be trimmed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="131"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="135"/>
         <source>Not a valid expression</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="182"/>
         <source>Select entity to trim or enter distance:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="179"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="183"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7899,7 +7950,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionOptionsDrawing</name>
     <message>
-        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="44"/>
         <source>Current &Drawing Preferences</source>
         <translation type="unfinished"></translation>
     </message>
@@ -7907,53 +7958,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="44"/>
         <source>&Add node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="46"/>
         <source>Add polyline's node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="104"/>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="122"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="125"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="108"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="111"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="124"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="127"/>
         <source>Adding point is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="135"/>
         <source>Adding point is not on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="163"/>
         <source>Specify polyline to add nodes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="167"/>
         <source>Specify adding node's point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="165"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="168"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -7961,53 +8012,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineAppend</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="37"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="40"/>
         <source>A&ppend node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="42"/>
         <source>Append polyline's node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="88"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="94"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="108"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="111"/>
         <source>Click somewhere near the beginning or end of existing polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="184"/>
         <source>Specify the polyline somewhere near the beginning or end point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="185"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="197"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="200"/>
         <source>Specify next point or [%1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="198"/>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="202"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="205"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="204"/>
         <source>Specify next point</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8015,53 +8066,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineDel</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="44"/>
         <source>&Delete node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="46"/>
         <source>Delete polyline's node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="106"/>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="125"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="128"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="113"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
         <source>Adding point is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="133"/>
         <source>Adding point is not on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="156"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="159"/>
         <source>Specify polyline to delete node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="157"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="163"/>
         <source>Specify deleting node's point</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="164"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -8069,66 +8120,66 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineDelBetween</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="44"/>
         <source>Delete &between two nodes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="46"/>
         <source>Delete between two nodes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="109"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="134"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="112"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="137"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="150"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="113"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="116"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="136"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
         <source>Deletinging point is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="142"/>
         <source>Deleting point is not on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="155"/>
         <source>Deleteinging point is not on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="179"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="182"/>
         <source>Specify polyline to delete between two nodes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="180"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="186"/>
         <source>Specify first node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="184"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="191"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="190"/>
         <source>Specify second node</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8136,32 +8187,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineEquidistant</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
         <source>Create &Equidistant Polylines</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="46"/>
         <source>Create Equidistant Polylines</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="198"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="200"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="202"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="204"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="256"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="258"/>
         <source>Choose the original polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="257"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="259"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
@@ -8169,32 +8220,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineSegment</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="43"/>
         <source>Create Polyline from Existing &Segments</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="45"/>
         <source>Create Polyline from Existing Segments</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="250"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="256"/>
         <source>Entity must be a line or arc.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="292"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="295"/>
         <source>Choose one of the segments on the original polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="293"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="296"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
@@ -8202,62 +8253,62 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineTrim</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="44"/>
         <source>&Trim segments</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="46"/>
         <source>Trim polyline's segments</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="106"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="123"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="142"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="146"/>
         <source>No Entity found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="113"/>
         <source>Entity must be a polyline.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="125"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="144"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="129"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="148"/>
         <source>Specifying point is invalid.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="128"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="151"/>
         <source>No Segment found on entity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="180"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
         <source>Specify polyline to trim</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
         <source>Cancel</source>
         <translation type="unfinished">Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
         <source>Specify first segment</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
         <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="189"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="193"/>
         <source>Back</source>
         <translation type="unfinished">Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="192"/>
         <source>Specify second segment</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8265,7 +8316,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPrintPreview</name>
     <message>
-        <location filename="../src/actions/rs_actionprintpreview.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionprintpreview.cpp" line="52"/>
         <source>Print Pre&view</source>
         <translation>Pr&atinjau Cetak</translation>
     </message>
@@ -8273,17 +8324,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectAll</name>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="46"/>
         <source>Select &All</source>
         <translation>Pilih &Semua</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="49"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="52"/>
         <source>Deselect &all</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="51"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="54"/>
         <source>Ctrl+K</source>
         <translation>Ctrl+K</translation>
     </message>
@@ -8291,12 +8342,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectContour</name>
     <message>
-        <location filename="../src/actions/rs_actionselectcontour.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="46"/>
         <source>(De-)Select &Contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectcontour.cpp" line="62"/>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="65"/>
         <source>Entity must be an Atomic Entity.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8304,32 +8355,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectIntersected</name>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="55"/>
         <source>Select Intersected Entities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="58"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="59"/>
         <source>Deselect Intersected Entities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
         <source>Choose first point of intersection line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
         <source>Choose second point of intersection line</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -8337,7 +8388,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectInvert</name>
     <message>
-        <location filename="../src/actions/rs_actionselectinvert.cpp" line="38"/>
+        <location filename="../src/actions/rs_actionselectinvert.cpp" line="41"/>
         <source>Invert Selection</source>
         <translation>Balik Pilihan</translation>
     </message>
@@ -8345,7 +8396,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectLayer</name>
     <message>
-        <location filename="../src/actions/rs_actionselectlayer.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionselectlayer.cpp" line="44"/>
         <source>(De-)Select Layer</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8353,7 +8404,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectSingle</name>
     <message>
-        <location filename="../src/actions/rs_actionselectsingle.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectsingle.cpp" line="44"/>
         <source>Select Entity</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8361,32 +8412,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectWindow</name>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="55"/>
         <source>Select Window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="58"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="59"/>
         <source>Deselect Window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
         <source>Choose first edge</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="172"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
         <source>Choose second edge</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="172"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
@@ -8394,17 +8445,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSetRelativeZero</name>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="44"/>
         <source>Set Relative Zero</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="93"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
         <source>Set relative Zero</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="93"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
         <source>Cancel</source>
         <translation>Batal</translation>
     </message>
@@ -8412,23 +8463,23 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSnapIntersectionManual</name>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="50"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="52"/>
         <source>I&ntersection Manually</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="180"/>
         <source>Select first entity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="179"/>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="183"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="185"/>
         <source>Back</source>
         <translation>Mundur</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="184"/>
         <source>Select second entity</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8436,17 +8487,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionToolRegenerateDimensions</name>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="44"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="47"/>
         <source>Regenerate Dimension Entities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="79"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="82"/>
         <source>Regenerated %1 dimension entities</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="81"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="84"/>
         <source>No dimension entities found</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8454,7 +8505,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomAuto</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomauto.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionzoomauto.cpp" line="49"/>
         <source>&Auto Zoom</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8462,12 +8513,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomIn</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomin.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="56"/>
         <source>Zoom &In</source>
         <translation>Perbe&sar</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionzoomin.cpp" line="63"/>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="66"/>
         <source>Zoom &Out</source>
         <translation>Perke&cil</translation>
     </message>
@@ -8475,7 +8526,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomPan</name>
     <message>
-        <location filename="../src/actions/rs_actionzoompan.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionzoompan.cpp" line="40"/>
         <source>&Pan Zoom</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8483,7 +8534,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomPrevious</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="45"/>
         <source>&Previous View</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8491,7 +8542,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomRedraw</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="47"/>
         <source>&Redraw</source>
         <translation type="unfinished"></translation>
     </message>
@@ -8527,940 +8578,940 @@ Do you want to replace it?</source>
 <context>
     <name>RS_Commands</name>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="45"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="39"/>
         <source>point</source>
         <translation>titik</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="40"/>
         <source>po</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="42"/>
         <source>line</source>
         <translation>garis</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="43"/>
         <source>ln</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="44"/>
         <source>l</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="52"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
         <source>polyline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
         <source>offset</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="55"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
         <source>o</source>
         <comment>offset</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
         <source>parallel</source>
         <translation>sejajar</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="51"/>
         <source>par</source>
         <comment>parallel</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="53"/>
         <source>arc</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
         <source>a</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="62"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
         <source>circle</source>
         <translation>lingkaran</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
         <source>ci</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
         <source>rectangle</source>
         <translation>persegi panjang</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="66"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
         <source>rec</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="67"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="61"/>
         <source>rectang</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="71"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="423"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="539"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="416"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="532"/>
         <source>text</source>
         <translation>tulisan</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="68"/>
         <source>regen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="75"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
         <source>rg</source>
         <comment>zoom - redraw</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="70"/>
         <source>zr</source>
         <comment>zoom - redraw</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="313"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="72"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
         <source>zw</source>
         <comment>zoom - window</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="80"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="315"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="308"/>
         <source>za</source>
         <comment>zoom - auto</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="314"/>
         <source>zp</source>
         <comment>zoom - pan</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="316"/>
         <source>zv</source>
         <comment>zoom - previous</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="81"/>
         <source>kill</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
         <source>k</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="90"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="429"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="549"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="422"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="542"/>
         <source>undo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="550"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="85"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="543"/>
         <source>u</source>
         <comment>undo</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="93"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
         <source>redo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
         <source>r</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="298"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
         <source>da</source>
         <comment>dimension - aligned</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="92"/>
         <source>da</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="300"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
         <source>dh</source>
         <comment>dimension - horizontal</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="95"/>
         <source>dh</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="297"/>
         <source>dr</source>
         <comment>dimension - linear</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
         <source>dr</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="106"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="302"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="295"/>
         <source>dv</source>
         <comment>dimension - vertical</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
         <source>dv</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="109"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="299"/>
         <source>ld</source>
         <comment>dimension - leader</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
         <source>ld</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
         <source>dimregen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="361"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
         <source>tm</source>
         <comment>modify - multi trim (extend)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="111"/>
         <source>tm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="363"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="356"/>
         <source>xt</source>
         <comment>modify - trim (extend)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="114"/>
         <source>xt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="365"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="358"/>
         <source>rm</source>
         <comment>modify - trim</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
         <source>rm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="367"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="360"/>
         <source>mv</source>
         <comment>modify - move</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
         <source>mv</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="359"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="352"/>
         <source>ch</source>
         <comment>modify - bevel (chamfer)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
         <source>ch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="369"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="362"/>
         <source>mi</source>
         <comment>modify - mirror</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
         <source>mi</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="371"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="364"/>
         <source>ro</source>
         <comment>modify - rotate</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
         <source>ro</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="373"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="366"/>
         <source>sz</source>
         <comment>modify - scale</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
         <source>sz</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="375"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="368"/>
         <source>ss</source>
         <comment>modify - stretch</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
         <source>ss</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="370"/>
         <source>er</source>
         <comment>modify - delete (erase)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
         <source>er</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="379"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="372"/>
         <source>oo</source>
         <comment>modify - undo (oops)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
         <source>oo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="149"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="381"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="374"/>
         <source>uu</source>
         <comment>modify - redo</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
         <source>uu</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="152"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="383"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="376"/>
         <source>xp</source>
         <comment>modify - explode</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
         <source>xp</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="328"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
         <source>os</source>
         <comment>snap - none</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="151"/>
         <source>os</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="330"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
         <source>sg</source>
         <comment>snap - grid</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="154"/>
         <source>sg</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="332"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="325"/>
         <source>se</source>
         <comment>snap - end</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
         <source>se</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="334"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="327"/>
         <source>si</source>
         <comment>snap - intersection</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
         <source>si</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="336"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="329"/>
         <source>sn</source>
         <comment>snap - center</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
         <location filename="../src/cmd/rs_commands.cpp" line="169"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
         <source>sn</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="338"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="331"/>
         <source>sm</source>
         <comment>snap - middle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
         <source>sm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="174"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="333"/>
         <source>sn</source>
         <comment>snap - nearest</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="177"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="335"/>
         <source>np</source>
         <comment>snap - nearest point</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="178"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
         <source>np</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="181"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
         <source>tn</source>
         <comment>Deselect all</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="182"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="176"/>
         <source>tn</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="244"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="236"/>
         <source>Command: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="271"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="264"/>
         <source>po</source>
         <comment>point</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="273"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="266"/>
         <source>li</source>
         <comment>line</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="275"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="268"/>
         <source>pa</source>
         <comment>parallel</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="277"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="270"/>
         <source>re</source>
         <comment>rectangle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="279"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="272"/>
         <source>rp</source>
         <comment>regular polygon</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="281"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="274"/>
         <source>ci</source>
         <comment>circle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="283"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="276"/>
         <source>c2</source>
         <comment>2 point circle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="285"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="278"/>
         <source>c3</source>
         <comment>3 point circle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="287"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="280"/>
         <source>ar</source>
         <comment>arc</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="289"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="282"/>
         <source>a3</source>
         <comment>3 point arc</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="284"/>
         <source>ep</source>
         <comment>ellipse</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
         <source>tx</source>
         <comment>text</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
         <source>mt</source>
         <comment>text</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="311"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
         <source>rd</source>
         <comment>redraw</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="317"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="310"/>
         <source>zi</source>
         <comment>zoom - in</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="319"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="312"/>
         <source>zo</source>
         <comment>zoom - out</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
         <source>fr*</source>
         <comment>layers - freeze all</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="349"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
         <source>th*</source>
         <comment>layers - defreeze all</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="384"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
         <source>ex</source>
         <comment>modify - explode</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="397"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="455"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="390"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
         <source>angle</source>
         <translation>sudut</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="399"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="470"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="392"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="463"/>
         <source>close</source>
         <translation>tutup</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="401"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="394"/>
         <source>chord length</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="403"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="396"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
         <source>columns</source>
         <translation>kolom</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="405"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="398"/>
         <source>columnspacing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="407"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="486"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="400"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
         <source>factor</source>
         <translation>faktor</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="409"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="402"/>
         <source>length</source>
         <translation>panjang</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="411"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="404"/>
         <source>length1</source>
         <translation>panjang1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="413"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="406"/>
         <source>length2</source>
         <translation>panjang2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="415"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="408"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="506"/>
         <source>number</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="417"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="410"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="512"/>
         <source>radius</source>
         <translation>jari-jari</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="419"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="530"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="412"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
         <source>rows</source>
         <translation>baris</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="421"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="414"/>
         <source>rowspacing</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="425"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="544"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="418"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="537"/>
         <source>through</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="427"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="420"/>
         <source>trim</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="431"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="554"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="424"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="547"/>
         <source>back</source>
         <translation>mundur</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="455"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
         <source>ang</source>
         <comment>angle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="456"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="449"/>
         <source>a</source>
         <comment>angle</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="460"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
         <source>center</source>
         <translation>pusat</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="460"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
         <source>cen</source>
         <comment>center</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="461"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="454"/>
         <source>c</source>
         <comment>center</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="465"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="458"/>
         <source>length</source>
         <comment>chord length</comment>
         <translation>panjang</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="466"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="459"/>
         <source>l</source>
         <comment>chord length</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="471"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="464"/>
         <source>c</source>
         <comment>close</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
         <source>cols</source>
         <comment>columns</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="476"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="469"/>
         <source>c</source>
         <comment>columns</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="473"/>
         <source>columnspacing</source>
         <comment>columnspacing for inserts</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="481"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="474"/>
         <source>colspacing</source>
         <comment>columnspacing for inserts</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="482"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
         <source>cs</source>
         <comment>columnspacing for inserts</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="486"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
         <source>fact</source>
         <comment>factor</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="487"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
         <source>f</source>
         <comment>factor</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="491"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
         <source>help</source>
         <translation>bantuan</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="491"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
         <source>?</source>
         <comment>help</comment>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="488"/>
         <source>length</source>
         <comment>length</comment>
         <translation>panjang</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="489"/>
         <source>len</source>
         <comment>length</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="497"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="490"/>
         <source>l</source>
         <comment>length</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="494"/>
         <source>length1</source>
         <comment>length1</comment>
         <translation>panjang1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
         <source>len1</source>
         <comment>length1</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="503"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
         <source>l1</source>
         <comment>length1</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="500"/>
         <source>length2</source>
         <comment>length2</comment>
         <translation>panjang2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
         <source>len2</source>
         <comment>length2</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="509"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
         <source>l2</source>
         <comment>length2</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="514"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
         <source>num</source>
         <comment>number</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="515"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
         <source>n</source>
         <comment>number</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="520"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
         <source>r</source>
         <comment>radius</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="524"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="517"/>
         <source>reversed</source>
         <comment>reversed arc</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="525"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="518"/>
         <source>rev</source>
         <comment>reversed arc</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="526"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
         <source>r</source>
         <comment>reversed arc</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="530"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
         <source>r</source>
         <comment>rows</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="534"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="527"/>
         <source>rowspacing</source>
         <comment>rowspacing for inserts</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="535"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="528"/>
         <source>rs</source>
         <comment>rowspacing for inserts</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="540"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="533"/>
         <source>t</source>
         <comment>text</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="545"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="538"/>
         <source>t</source>
         <comment>through</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="555"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="548"/>
         <source>b</source>
         <comment>back</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="568"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="561"/>
         <source>Available commands:</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/ts/librecad_it.ts b/ts/librecad_it.ts
index b276344..389905c 100644
--- a/ts/librecad_it.ts
+++ b/ts/librecad_it.ts
@@ -32,6 +32,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Annulla</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Annulla</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Annulla</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -313,7 +346,7 @@ Controlla i permessi.</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -405,10 +438,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1962,7 +1991,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2452,7 +2481,7 @@ in una finestra separata</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Sposta</translation>
+        <translation type="obsolete">Sposta</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2496,7 +2525,7 @@ in una finestra separata</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Ruota Attorno a Due Centri</translation>
+        <translation type="obsolete">Ruota Attorno a Due Centri</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2522,6 +2551,14 @@ in una finestra separata</translation>
         <source>Edit Text</source>
         <translation>Raccorda di un valore</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Sposta / Copia</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Doppia Rotazione</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6103,6 +6140,22 @@ Vuoi sostituirlo?</translation>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_ja.ts b/ts/librecad_ja.ts
index 38f699b..1c3fbc6 100644
--- a/ts/librecad_ja.ts
+++ b/ts/librecad_ja.ts
@@ -2,12 +2,41 @@
 <!DOCTYPE TS>
 <TS version="2.0">
 <context>
-    <name>QC_ApplicationWindow</name>
+    <name>QC_ActionGetEnt</name>
     <message>
-        <source>&Plugins</source>
+        <source>Select object:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>Cancel</source>
+        <translation type="unfinished">中止</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">中止</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">中止</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ApplicationWindow</name>
+    <message>
         <source>Running script '%1'</source>
         <translation type="unfinished"></translation>
     </message>
@@ -104,10 +133,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&CAM</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>About</source>
         <translation type="unfinished"></translation>
     </message>
@@ -602,11 +627,11 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>Restrict&Vertically</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Restrict&Vertically</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1082,7 +1107,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Move</source>
-        <translation>移動</translation>
+        <translation type="obsolete">移動</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -1122,7 +1147,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>2中心点の回りを回転</translation>
+        <translation type="obsolete">2中心点の回りを回転</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -1156,6 +1181,14 @@ in a separate window</source>
         <source>Send To Back</source>
         <translation type="obsolete">背後へ移動</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">移動/複写</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">二点で回転</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -4818,6 +4851,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_nl.ts b/ts/librecad_nl.ts
index ea188ad..cd00c54 100644
--- a/ts/librecad_nl.ts
+++ b/ts/librecad_nl.ts
@@ -1,7 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.0" language="nl">
 <context>
-    <name/>
+    <name></name>
     <message>
         <source>Loading..</source>
         <translation type="obsolete">Bezig met laden...</translation>
@@ -31,6 +32,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation>Kies object</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Stop</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation>Kies een punt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Stop</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation>Selecteer objecten</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Stop</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -275,8 +309,8 @@ Datum: %1</translation>
         <translation>Comando Regel</translation>
     </message>
     <message>
-        <source>Block '%1'</source>
-        <translation>Blok '%1'</translation>
+        <source>Block '%1'</source>
+        <translation>Blok '%1'</translation>
     </message>
     <message>
         <source>Cannot open the file
@@ -308,7 +342,7 @@ Controleer de toegangsrechten.</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -357,12 +391,12 @@ U kunt nu uw werk bewaren.</translation>
         <translation>&Spline</translation>
     </message>
     <message>
-        <source>Running script '%1'</source>
+        <source>Running script '%1'</source>
         <translation>Huidige script %1</translation>
     </message>
     <message>
-        <source>Inserting block '%1'</source>
-        <translation>Blok '%1' wordt toegevoegd</translation>
+        <source>Inserting block '%1'</source>
+        <translation>Blok '%1' wordt toegevoegd</translation>
     </message>
     <message>
         <source>&Polyline</source>
@@ -400,12 +434,12 @@ Auto-save disabled.</source>
         <translation>Help</translation>
     </message>
     <message>
-        <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
+        <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
         <translation>Help bestanden konden niet worden gevonden.</translation>
     </message>
     <message>
         <source>&Plugins</source>
-        <translation>&Plugins</translation>
+        <translation type="obsolete">&Plugins</translation>
     </message>
     <message>
         <source>Import</source>
@@ -413,35 +447,35 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>&Toolbars</source>
-        <translation type="unfinished"/>
+        <translation>&Gereedschappen</translation>
     </message>
     <message>
         <source>Compiled on: %1</source>
-        <translation type="unfinished"/>
+        <translation>Gecompileerd op: %1</translation>
     </message>
     <message>
         <source>Program Icons Supplied by</source>
-        <translation type="unfinished"/>
+        <translation>Programma icoonen Geleverd door</translation>
     </message>
     <message>
         <source>Splash and Logo supplied by</source>
-        <translation type="unfinished"/>
+        <translation>Splash en Logo Geleverd door</translation>
     </message>
     <message>
         <source>Main Website : </source>
-        <translation type="unfinished"/>
+        <translation>LibreCAD Website</translation>
     </message>
     <message>
         <source>Version: %1</source>
-        <translation type="unfinished">Versie: %1</translation>
+        <translation>Versie: %1</translation>
     </message>
     <message>
         <source>SCM Revision: %1</source>
-        <translation type="unfinished"/>
+        <translation>SCM revisie: %1</translation>
     </message>
     <message>
-        <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
-        <translation type="unfinished"/>
+        <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
+        <translation>Ondersteun LibreCAD financieel voor het onderhoud van sourcecode en website. </translation>
     </message>
 </context>
 <context>
@@ -1953,7 +1987,11 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>&back</source>
-        <translation type="unfinished"/>
+        <translation type="obsolete">&terug</translation>
+    </message>
+    <message>
+        <source>&Selection pointer</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2024,8 +2062,8 @@ Auto-save disabled.</source>
         <translation>Blok aan het herbenoemen</translation>
     </message>
     <message>
-        <source>Could not name block. A block named "%1" already exists.</source>
-        <translation>Kon blok niet benoemen. Er bestaat al een blok genaamd "%1".</translation>
+        <source>Could not name block. A block named "%1" already exists.</source>
+        <translation>Kon blok niet benoemen. Er bestaat al een blok genaamd "%1".</translation>
     </message>
     <message>
         <source>&OK</source>
@@ -2349,48 +2387,48 @@ in een separate Venster</translation>
         <translation>Hoofd</translation>
     </message>
     <message>
-        <source>Show menu "Lines"</source>
-        <translation>Toon menu "Lijnen"</translation>
+        <source>Show menu "Lines"</source>
+        <translation>Toon menu "Lijnen"</translation>
     </message>
     <message>
-        <source>Show menu "Arcs"</source>
-        <translation>Toon menu "Bogen"</translation>
+        <source>Show menu "Arcs"</source>
+        <translation>Toon menu "Bogen"</translation>
     </message>
     <message>
-        <source>Show menu "Circles"</source>
-        <translation>Toon menu "Cirkels"</translation>
+        <source>Show menu "Circles"</source>
+        <translation>Toon menu "Cirkels"</translation>
     </message>
     <message>
-        <source>Show menu "Points"</source>
-        <translation type="obsolete">Toon menu "Punten"</translation>
+        <source>Show menu "Points"</source>
+        <translation type="obsolete">Toon menu "Punten"</translation>
     </message>
     <message>
-        <source>Show menu "Measure"</source>
-        <translation>Toon menu "Meten"</translation>
+        <source>Show menu "Measure"</source>
+        <translation>Toon menu "Meten"</translation>
     </message>
     <message>
-        <source>Show menu "Ellipses"</source>
-        <translation>Toon menu "Ovalen"</translation>
+        <source>Show menu "Ellipses"</source>
+        <translation>Toon menu "Ovalen"</translation>
     </message>
     <message>
         <source>Hatches / Solid Fills</source>
         <translation>Arceringen / Inkleuringen</translation>
     </message>
     <message>
-        <source>Show menu "Edit"</source>
-        <translation>Toon menu "Bewerken"</translation>
+        <source>Show menu "Edit"</source>
+        <translation>Toon menu "Bewerken"</translation>
     </message>
     <message>
-        <source>Show menu "Dimensions"</source>
-        <translation>Toon menu "Bematen"</translation>
+        <source>Show menu "Dimensions"</source>
+        <translation>Toon menu "Bematen"</translation>
     </message>
     <message>
         <source>Texts</source>
         <translation>Tekst</translation>
     </message>
     <message>
-        <source>Show menu "Select"</source>
-        <translation>Toon menu "Selecteer"</translation>
+        <source>Show menu "Select"</source>
+        <translation>Toon menu "Selecteer"</translation>
     </message>
     <message>
         <source>Create Block</source>
@@ -2433,7 +2471,7 @@ in een separate Venster</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Verplaats</translation>
+        <translation type="obsolete">Verplaats</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2477,7 +2515,7 @@ in een separate Venster</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Roteer om twee centers</translation>
+        <translation type="obsolete">Roteer om twee centers</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2503,6 +2541,14 @@ in een separate Venster</translation>
         <source>Edit Text</source>
         <translation>Bewerk Tekst</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Verplaats / Copieer</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Roteer Twee</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -3176,12 +3222,12 @@ in een separate Venster</translation>
         <translation>Welcom</translation>
     </message>
     <message>
-        <source><font size="+1"><b>Welcome to QCad</b>
+        <source><font size="+1"><b>Welcome to QCad</b>
 </font>
 <br>
 Please choose the unit you want to use for new drawings and your preferred language.<br>
 You can changes these settings later in the Options Dialog of QCad.</source>
-        <translation><font size="+1"><b>Welcom by QCad</b>
+        <translation><font size="+1"><b>Welcom by QCad</b>
 </font>
 <br>
 U kunt nu de eenheid kiezen voor nieuwe tekeningen en uw voorkeurstaal <br>
@@ -3550,7 +3596,7 @@ U kunt deze instellingen later wijzigen in de Opties Dialog van QCad.</translati
         <translation>Graden</translation>
     </message>
     <message>
-        <source>Surveyor's units</source>
+        <source>Surveyor's units</source>
         <translation>Te meten eenheid</translation>
     </message>
     <message>
@@ -3558,8 +3604,8 @@ U kunt deze instellingen later wijzigen in de Opties Dialog van QCad.</translati
         <translation>Opties</translation>
     </message>
     <message>
-        <source>For the length formats 'Engineering' and 'Architectural', the unit must be set to Inch.</source>
-        <translation>Voor de lengte formaten 'Werktuigbouw' en 'Bouwkunde' moet de eenheid naar Inch worden gezet.</translation>
+        <source>For the length formats 'Engineering' and 'Architectural', the unit must be set to Inch.</source>
+        <translation>Voor de lengte formaten 'Werktuigbouw' en 'Bouwkunde' moet de eenheid naar Inch worden gezet.</translation>
     </message>
     <message>
         <source>Extension line extension:</source>
@@ -5851,12 +5897,12 @@ U kunt deze instellingen later wijzigen in de Opties Dialog van QCad.</translati
         <translation>Wis Laag</translation>
     </message>
     <message>
-        <source>Layer "%1" and all entities on it will be removed.</source>
-        <translation>Laag "%1" en alle elementen daarop worden verwijderd.</translation>
+        <source>Layer "%1" and all entities on it will be removed.</source>
+        <translation>Laag "%1" en alle elementen daarop worden verwijderd.</translation>
     </message>
     <message>
-        <source>Layer "%1" can never be removed.</source>
-        <translation>Laag "%1" kan niet worden verwijderd.</translation>
+        <source>Layer "%1" can never be removed.</source>
+        <translation>Laag "%1" kan niet worden verwijderd.</translation>
     </message>
     <message>
         <source>Layer Dialog</source>
@@ -5867,16 +5913,16 @@ U kunt deze instellingen later wijzigen in de Opties Dialog van QCad.</translati
         <translation>Wis Blok</translation>
     </message>
     <message>
-        <source>Block "%1" and all its entities will be removed.</source>
-        <translation>Blok "%1" en alle elementen daarop worden verwijderd.</translation>
+        <source>Block "%1" and all its entities will be removed.</source>
+        <translation>Blok "%1" en alle elementen daarop worden verwijderd.</translation>
     </message>
     <message>
         <source>Layer Properties</source>
         <translation>Laag Eigenschappen</translation>
     </message>
     <message>
-        <source>Layer with a name "%1" already exists. Please specify a different name.</source>
-        <translation>De Laag met naam "%1" bestaat. Kies een andere naam.</translation>
+        <source>Layer with a name "%1" already exists. Please specify a different name.</source>
+        <translation>De Laag met naam "%1" bestaat. Kies een andere naam.</translation>
     </message>
 </context>
 <context>
@@ -6073,7 +6119,23 @@ Wilt u het vervangen?</translation>
     </message>
     <message>
         <source>Loading...</source>
-        <translation type="unfinished"/>
+        <translation>Laden....</translation>
+    </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation>Vul een geheel getal in</translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation>LibreCAD query</translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation>voer een getal in</translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation>voer tekst in</translation>
     </message>
 </context>
 <context>
@@ -6221,8 +6283,8 @@ Wilt u het vervangen?</translation>
         <translation>&Plaats Blok</translation>
     </message>
     <message>
-        <source/>
-        <translation/>
+        <source></source>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -6902,8 +6964,8 @@ Wilt u het vervangen?</translation>
         <translation type="obsolete">Voeg Afbeelding (Bitmap) in</translation>
     </message>
     <message>
-        <source/>
-        <translation/>
+        <source></source>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -7242,8 +7304,8 @@ Wilt u het vervangen?</translation>
         <translation type="obsolete">Teken veelhoek met center en hoekpunt</translation>
     </message>
     <message>
-        <source/>
-        <translation/>
+        <source></source>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -8096,12 +8158,12 @@ Wilt u het vervangen?</translation>
         <translation type="obsolete">Voegt een Object uit de Onderdeel Bibliotheek in.</translation>
     </message>
     <message>
-        <source/>
-        <translation/>
+        <source></source>
+        <translation></translation>
     </message>
     <message>
-        <source>Cannot open file '%1'</source>
-        <translation>Kan bestand '%1' niet openen</translation>
+        <source>Cannot open file '%1'</source>
+        <translation>Kan bestand '%1' niet openen</translation>
     </message>
 </context>
 <context>
@@ -8755,7 +8817,7 @@ Wilt u het vervangen?</translation>
         <translation>&Voeg node toe</translation>
     </message>
     <message>
-        <source>Add polyline's node</source>
+        <source>Add polyline's node</source>
         <translation>Voeg knooppunt toe aan vrije vorm</translation>
     </message>
     <message>
@@ -8779,7 +8841,7 @@ Wilt u het vervangen?</translation>
         <translation>Geef aan vrije vorm om knooppunten toe te voegen</translation>
     </message>
     <message>
-        <source>Specify adding node's point</source>
+        <source>Specify adding node's point</source>
         <translation>Geef toe te voegen knooppunt</translation>
     </message>
 </context>
@@ -8794,7 +8856,7 @@ Wilt u het vervangen?</translation>
         <translation>Knoo&ppunt toevoegen</translation>
     </message>
     <message>
-        <source>Append polyline's node</source>
+        <source>Append polyline's node</source>
         <translation>Voeg vrije vorm knooppunt</translation>
     </message>
     <message>
@@ -8841,7 +8903,7 @@ Wilt u het vervangen?</translation>
         <translation>&Verwijder knooppunt</translation>
     </message>
     <message>
-        <source>Delete polyline's node</source>
+        <source>Delete polyline's node</source>
         <translation>Verwijderen knooppunt uit vrije vorm</translation>
     </message>
     <message>
@@ -8865,7 +8927,7 @@ Wilt u het vervangen?</translation>
         <translation>Geef vrije vorm om knooppunt te verwijderen</translation>
     </message>
     <message>
-        <source>Specify deleting node's point</source>
+        <source>Specify deleting node's point</source>
         <translation>Geef de te verwijderen knoop punt</translation>
     </message>
 </context>
@@ -8989,7 +9051,7 @@ Wilt u het vervangen?</translation>
         <translation>&Knip Segmenten</translation>
     </message>
     <message>
-        <source>Trim polyline's segments</source>
+        <source>Trim polyline's segments</source>
         <translation>Knip uit vrije vorm segmenten</translation>
     </message>
     <message>
@@ -9744,7 +9806,7 @@ Wilt u het vervangen?</translation>
     </message>
     <message>
         <source>Available commands:</source>
-        <translation>Beschikbare commando's:</translation>
+        <translation>Beschikbare commando's:</translation>
     </message>
     <message>
         <source>ln</source>
@@ -10188,20 +10250,20 @@ Wilt u het vervangen?</translation>
     </message>
     <message>
         <source>kill</source>
-        <translation type="unfinished"/>
+        <translation>verwijder</translation>
     </message>
     <message>
         <source>k</source>
-        <translation type="unfinished"/>
+        <translation>k</translation>
     </message>
     <message>
         <source>back</source>
-        <translation type="unfinished"/>
+        <translation>terug</translation>
     </message>
     <message>
         <source>b</source>
         <comment>back</comment>
-        <translation type="unfinished"/>
+        <translation>b</translation>
     </message>
 </context>
 </TS>
diff --git a/ts/librecad_no.ts b/ts/librecad_no.ts
index 13c1a4b..a9de2f0 100644
--- a/ts/librecad_no.ts
+++ b/ts/librecad_no.ts
@@ -2,6 +2,39 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="no">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -212,10 +245,6 @@ Please check the permissions.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&CAM</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
@@ -283,10 +312,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -434,7 +459,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -909,10 +934,6 @@ in a separate window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Move</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Move and Rotate</source>
         <translation type="unfinished"></translation>
     </message>
@@ -941,10 +962,6 @@ in a separate window</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Rotate around two centers</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Explode</source>
         <translation type="unfinished"></translation>
     </message>
@@ -976,6 +993,14 @@ in a separate window</source>
         <source>Edit Text</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -4471,6 +4496,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_pa.ts b/ts/librecad_pa.ts
index d70133d..0e83b63 100644
--- a/ts/librecad_pa.ts
+++ b/ts/librecad_pa.ts
@@ -2,6 +2,39 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="pa">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">ਰੱਦ ਕਰੋ</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">ਰੱਦ ਕਰੋ</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">ਰੱਦ ਕਰੋ</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -257,7 +290,7 @@ Please check the permissions.</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -349,10 +382,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -677,7 +706,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1154,7 +1183,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Move</source>
-        <translation>ਹਿਲਾਉ</translation>
+        <translation type="obsolete">ਹਿਲਾਉ</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -1194,7 +1223,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>ਦੋ ਕੇਂਦਰਾਂ ਨਾਲ ਘੁੰਮਾਓ</translation>
+        <translation type="obsolete">ਦੋ ਕੇਂਦਰਾਂ ਨਾਲ ਘੁੰਮਾਓ</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -1220,6 +1249,14 @@ in a separate window</source>
         <source>Edit Text</source>
         <translation>ਪਾਠ ਸੋਧ</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">ਭੇਜੋ /  ਨਕਲ</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">ਦੋ ਘੁੰਮਾਓ</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -4744,6 +4781,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_pl.ts b/ts/librecad_pl.ts
index 5f157e5..bae0fed 100644
--- a/ts/librecad_pl.ts
+++ b/ts/librecad_pl.ts
@@ -2,6 +2,39 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="pl">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation>Wybierz obiekt:</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Anuluj</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation>Określ punkt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Anuluj</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation>Wybierz obiekty:</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Anuluj</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -264,7 +297,7 @@ Możesz teraz jedynie zapisać swoją pracę.</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Manual</source>
@@ -398,43 +431,43 @@ Autozapis wyłączony.</translation>
     </message>
     <message>
         <source>&Plugins</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">&Wtyczki</translation>
     </message>
     <message>
         <source>Import</source>
-        <translation type="unfinished"></translation>
+        <translation>Importuj</translation>
     </message>
     <message>
         <source>&Toolbars</source>
-        <translation type="unfinished"></translation>
+        <translation>&Paski narzędzi</translation>
     </message>
     <message>
         <source>Compiled on: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Skompilowano: %1</translation>
     </message>
     <message>
         <source>Program Icons Supplied by</source>
-        <translation type="unfinished"></translation>
+        <translation>Ikony dostarczone przez</translation>
     </message>
     <message>
         <source>Splash and Logo supplied by</source>
-        <translation type="unfinished"></translation>
+        <translation>Splash i logo dostarczył</translation>
     </message>
     <message>
         <source>Main Website : </source>
-        <translation type="unfinished"></translation>
+        <translation>Strona główna:</translation>
     </message>
     <message>
         <source>Version: %1</source>
-        <translation type="unfinished">Wersja: %1</translation>
+        <translation>Wersja: %1</translation>
     </message>
     <message>
         <source>SCM Revision: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Rewizja SCM: %1</translation>
     </message>
     <message>
         <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
-        <translation type="unfinished"></translation>
+        <translation>Prosimy o dotację, która umożliwi rozwój programu LibreCAD i strony internetowej. </translation>
     </message>
 </context>
 <context>
@@ -1950,6 +1983,10 @@ Autozapis wyłączony.</translation>
     </message>
     <message>
         <source>&back</source>
+        <translation type="obsolete">&wstecz</translation>
+    </message>
+    <message>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2430,7 +2467,7 @@ w oddzielnym oknie</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Przesuń</translation>
+        <translation type="obsolete">Przesuń</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2474,7 +2511,7 @@ w oddzielnym oknie</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Obracaj dookoła dwóch środków</translation>
+        <translation type="obsolete">Obracaj dookoła dwóch środków</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2500,6 +2537,14 @@ w oddzielnym oknie</translation>
         <source>Edit Text</source>
         <translation>Edytuj tekst</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Przesuń / kopiuj</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Obróć dwa</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -4903,7 +4948,7 @@ Powyższe ustawienia możesz później zmienić w oknie dialogowym opcji QCada.<
     </message>
     <message>
         <source>again Still No Text supplied.</source>
-        <translation type="unfinished"></translation>
+        <translation>znów nie dostarczono tekstu</translation>
     </message>
 </context>
 <context>
@@ -6066,8 +6111,24 @@ Czy chcesz zastąpić?</translation>
     </message>
     <message>
         <source>Loading...</source>
+        <translation>Ładuję...</translation>
+    </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation>wprowadź liczbę całkowitą</translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter a number</source>
+        <translation>wprowadź liczbę</translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation>wprowadź tekst</translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
@@ -10000,7 +10061,7 @@ Czy chcesz zastąpić?</translation>
     </message>
     <message>
         <source>dimregen</source>
-        <translation type="unfinished"></translation>
+        <translation>regwym</translation>
     </message>
     <message>
         <source>po</source>
@@ -10065,7 +10126,7 @@ Czy chcesz zastąpić?</translation>
     </message>
     <message>
         <source>da</source>
-        <translation type="unfinished">ww</translation>
+        <translation>wd</translation>
     </message>
     <message>
         <source>dh</source>
@@ -10169,7 +10230,7 @@ Czy chcesz zastąpić?</translation>
     </message>
     <message>
         <source>kill</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">zabij</translation>
     </message>
     <message>
         <source>k</source>
@@ -10177,7 +10238,7 @@ Czy chcesz zastąpić?</translation>
     </message>
     <message>
         <source>back</source>
-        <translation type="unfinished"></translation>
+        <translation>wstecz</translation>
     </message>
     <message>
         <source>b</source>
diff --git a/ts/librecad_pt.ts b/ts/librecad_pt.ts
index a39590f..1d3ba63 100644
--- a/ts/librecad_pt.ts
+++ b/ts/librecad_pt.ts
@@ -1,10 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.0" language="pt">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>&Arc</source>
@@ -123,12 +157,12 @@
         <translation type="obsolete">Ad&quira o Qcad Profissional agora</translation>
     </message>
     <message>
-        <source>Running script '%1'</source>
-        <translation>Rodando o roteiro '%1'</translation>
+        <source>Running script '%1'</source>
+        <translation>Rodando o roteiro '%1'</translation>
     </message>
     <message>
-        <source>Inserting block '%1'</source>
-        <translation>Inserindo o carimbo '%1'</translation>
+        <source>Inserting block '%1'</source>
+        <translation>Inserindo o carimbo '%1'</translation>
     </message>
     <message>
         <source>&About %1</source>
@@ -204,15 +238,15 @@
     </message>
     <message>
         <source>CTRL+M</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Insert Image</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Window</source>
@@ -220,11 +254,11 @@
     </message>
     <message>
         <source>De&bugging</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Command line</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Cascade</source>
@@ -236,15 +270,15 @@
     </message>
     <message>
         <source>Tile &Horizontally</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Creating new file...</source>
         <translation type="unfinished">Criando o novo arquivo...</translation>
     </message>
     <message>
-        <source>Block '%1'</source>
-        <translation type="unfinished">Carimbo '%1'</translation>
+        <source>Block '%1'</source>
+        <translation type="unfinished">Carimbo '%1'</translation>
     </message>
     <message>
         <source>unnamed document %1</source>
@@ -262,11 +296,11 @@
         <source>Cannot open the file
 %1
 Please check the permissions.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Loaded document: </source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Opening aborted</source>
@@ -294,18 +328,18 @@ Por favor verifique as permissões.</translation>
     </message>
     <message>
         <source>Auto-saving drawing...</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Auto-saved drawing</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Cannot auto-save the file
 %1
 Please check the permissions.
 Auto-save disabled.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Exporting drawing...</source>
@@ -345,63 +379,59 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>Modules: %1</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Help</source>
-        <translation type="unfinished"/>
-    </message>
-    <message>
-        <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"/>
+        <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Import</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Compiled on: %1</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Program Icons Supplied by</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Splash and Logo supplied by</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Main Website : </source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Version: %1</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>SCM Revision: %1</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
-        <translation type="unfinished"/>
+        <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>QC_MDIWindow</name>
     <message>
         <source>Do you really want to close the drawing?</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Do you really want to close the file
 %1?</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Closing Drawing</source>
@@ -427,7 +457,7 @@ Auto-save disabled.</source>
     <name>QG_ActionFactory</name>
     <message>
         <source>&Export...</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Close</source>
@@ -443,7 +473,7 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>CTRL-G</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Draft</source>
@@ -495,7 +525,7 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>Restrict&Vertically</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Preferences</source>
@@ -507,19 +537,19 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>Open IDE</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Run Script..</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Quit</source>
         <translation type="unfinished">&Encerre</translation>
     </message>
     <message>
-        <source>&back</source>
-        <translation type="unfinished"/>
+        <source>&Selection pointer</source>
+        <translation type="unfinished">&Ponteiro de Seleção</translation>
     </message>
 </context>
 <context>
@@ -534,7 +564,7 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>Arc Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -549,7 +579,7 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>Tangential Arc Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -590,8 +620,8 @@ Auto-save disabled.</source>
         <translation>Alt+O</translation>
     </message>
     <message>
-        <source>Could not name block. A block named "%1" already exists.</source>
-        <translation>Não pôde renomear o carimbo. Já existe um carimbo chamado "%1".</translation>
+        <source>Could not name block. A block named "%1" already exists.</source>
+        <translation>Não pôde renomear o carimbo. Já existe um carimbo chamado "%1".</translation>
     </message>
     <message>
         <source>Cancel</source>
@@ -611,51 +641,51 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>Block Name:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>QG_BlockWidget</name>
     <message>
         <source>Show all blocks</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Hide all blocks</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Add a block</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Remove the active block</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Rename the active block</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Edit the active block
 in a separate window</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Insert the active block</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Block Menu</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Defreeze all Blocks</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Freeze all Blocks</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Add Block</source>
@@ -683,7 +713,7 @@ in a separate window</source>
     </message>
     <message>
         <source>&Create New Block</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -697,7 +727,7 @@ in a separate window</source>
     <name>QG_CadToolBarArcs</name>
     <message>
         <source>Arcs</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Back to main menu</source>
@@ -705,42 +735,42 @@ in a separate window</source>
     </message>
     <message>
         <source>Concentric</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Arc with Center, Point, Angles</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Arc with three points</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Arc tangential to base entity with radius</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>QG_CadToolBarCircles</name>
     <message>
         <source>Circles</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Circle with two opposite points</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Circle with center and radius</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Circle with center and point</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Circle with three points</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Back to main menu</source>
@@ -748,7 +778,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Concentric</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -759,7 +789,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Dimensions</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Back to main menu</source>
@@ -771,19 +801,19 @@ in a separate window</source>
     </message>
     <message>
         <source>Linear Dimension</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Horizontal Dimension</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Vertical Dimension</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Radial Dimension</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Diametric Dimension</source>
@@ -802,7 +832,7 @@ in a separate window</source>
     <name>QG_CadToolBarEllipses</name>
     <message>
         <source>Ellipses</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Ellipse arc with center, two points and angles</source>
@@ -810,7 +840,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Ellipse with Center and two points</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Back to main menu</source>
@@ -821,15 +851,15 @@ in a separate window</source>
     <name>QG_CadToolBarInfo</name>
     <message>
         <source>Info</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Distance (Point, Point)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Distance (Entity, Point)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Back to main menu</source>
@@ -841,18 +871,18 @@ in a separate window</source>
     </message>
     <message>
         <source>Total length of selected entities</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Area of polygon</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>QG_CadToolBarLines</name>
     <message>
         <source>Lines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Back to main menu</source>
@@ -860,78 +890,78 @@ in a separate window</source>
     </message>
     <message>
         <source>Line with two points</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Line with given angle</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Horizontal lines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Vertical lines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Rectangles</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Bisectors</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Parallels with distance</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Tangents from point to circle</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Tangents from circle to circle</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Orthogonal lines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Lines with relative angles</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Polygons with Center and Corner</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Polygons with two Corners</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Freehand lines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Parallels through point</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>QG_CadToolBarMain</name>
     <message>
         <source>Show edit tools</source>
-        <translation type="obsolete">Exibe o menu "Edição"</translation>
+        <translation type="obsolete">Exibe o menu "Edição"</translation>
     </message>
     <message>
         <source>Show circle tools</source>
-        <translation type="obsolete">Exibe o menu "Círculo"</translation>
+        <translation type="obsolete">Exibe o menu "Círculo"</translation>
     </message>
     <message>
         <source>Show line tools</source>
-        <translation type="obsolete">Exibe o menu "Linha"</translation>
+        <translation type="obsolete">Exibe o menu "Linha"</translation>
     </message>
     <message>
         <source>Create Block</source>
@@ -939,83 +969,83 @@ in a separate window</source>
     </message>
     <message>
         <source>Show dimensioning tools</source>
-        <translation type="obsolete">Exibe o menu "Dimensão"</translation>
+        <translation type="obsolete">Exibe o menu "Dimensão"</translation>
     </message>
     <message>
         <source>Show ellipse tools</source>
-        <translation type="obsolete">Exibe o menu "Elipse"</translation>
+        <translation type="obsolete">Exibe o menu "Elipse"</translation>
     </message>
     <message>
         <source>Show arc tools</source>
-        <translation type="obsolete">Exibe o menu "Arco"</translation>
+        <translation type="obsolete">Exibe o menu "Arco"</translation>
     </message>
     <message>
         <source>Show polyline tools</source>
-        <translation type="obsolete">Exibe o menu "Multilinha"</translation>
+        <translation type="obsolete">Exibe o menu "Multilinha"</translation>
     </message>
     <message>
         <source>Show selection tools</source>
-        <translation type="obsolete">Exibe o menu "Seleção"</translation>
+        <translation type="obsolete">Exibe o menu "Seleção"</translation>
     </message>
     <message>
         <source>Show measuring tools</source>
-        <translation type="obsolete">Exibe o menu "Meça"</translation>
+        <translation type="obsolete">Exibe o menu "Meça"</translation>
     </message>
     <message>
         <source>Main</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show menu "Lines"</source>
-        <translation type="unfinished"/>
+        <source>Show menu "Lines"</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show menu "Arcs"</source>
-        <translation type="unfinished"/>
+        <source>Show menu "Arcs"</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Points</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Splines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show menu "Ellipses"</source>
-        <translation type="unfinished"/>
+        <source>Show menu "Ellipses"</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show menu "Circles"</source>
-        <translation type="unfinished"/>
+        <source>Show menu "Circles"</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Texts</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show menu "Dimensions"</source>
-        <translation type="unfinished"/>
+        <source>Show menu "Dimensions"</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Hatches / Solid Fills</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Raster Image</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show menu "Edit"</source>
-        <translation type="unfinished"/>
+        <source>Show menu "Edit"</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show menu "Measure"</source>
-        <translation type="unfinished"/>
+        <source>Show menu "Measure"</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Show menu "Select"</source>
-        <translation type="unfinished"/>
+        <source>Show menu "Select"</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Polylines</source>
@@ -1026,7 +1056,7 @@ in a separate window</source>
     <name>QG_CadToolBarModify</name>
     <message>
         <source>Modify</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Back to main menu</source>
@@ -1034,59 +1064,51 @@ in a separate window</source>
     </message>
     <message>
         <source>Stretch</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Round</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Bevel</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Trim by amount</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Trim / Extend</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Mirror</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Scale</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Rotate</source>
-        <translation type="unfinished"/>
-    </message>
-    <message>
-        <source>Move</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Move and Rotate</source>
-        <translation type="unfinished"/>
-    </message>
-    <message>
-        <source>Rotate around two centers</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Trim / Extend two</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Divide</source>
@@ -1094,19 +1116,27 @@ in a separate window</source>
     </message>
     <message>
         <source>Explode</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Explode Text into Letters</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Edit Entity Geometry</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Edit Text</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1121,7 +1151,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Points</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1136,38 +1166,38 @@ in a separate window</source>
     </message>
     <message>
         <source>Create Polyline</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Trim segments</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Delete between two nodes</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Delete node</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Add node</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Append node</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>QG_CadToolBarSelect</name>
     <message>
         <source>Select</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Select all</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Back to main menu</source>
@@ -1175,43 +1205,43 @@ in a separate window</source>
     </message>
     <message>
         <source>Select intersected entities</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Deselect intersected entities</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Deselect all</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Invert Selection</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Select layer</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>(De-)Select contour</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>(De-)Select entity</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Deselect Window</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Select Window</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Continue action</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1222,7 +1252,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Snap</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Back to main menu</source>
@@ -1230,7 +1260,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Snap to grid</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Free positioning</source>
@@ -1238,15 +1268,15 @@ in a separate window</source>
     </message>
     <message>
         <source>Snap to Endpoints</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Snap to closest point on entity</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Snap to center points</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Snap to middle points</source>
@@ -1254,39 +1284,39 @@ in a separate window</source>
     </message>
     <message>
         <source>Snap to point with given distance to endpoint</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Snap to intersections automatically</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>No Restriction</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Orthogonal Restriction</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Horizontal Restriction</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Vertical Restriction</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Move relative Zero</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Lock relative Zero</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Snap to intersections manually</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1301,7 +1331,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Splines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1316,7 +1346,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Circle Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1385,8 +1415,8 @@ in a separate window</source>
         <translation>Comando:</translation>
     </message>
     <message>
-        <source>Command '%1' not found</source>
-        <translation type="obsolete">Comando '%1' não encontrado</translation>
+        <source>Command '%1' not found</source>
+        <translation type="obsolete">Comando '%1' não encontrado</translation>
     </message>
 </context>
 <context>
@@ -1409,7 +1439,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Coordinates</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1447,7 +1477,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Linear Dimension Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1478,31 +1508,31 @@ in a separate window</source>
     </message>
     <message>
         <source>Dimension Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>ø</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>°</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>±</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>¶</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>×</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>÷</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>...</source>
@@ -1513,11 +1543,11 @@ in a separate window</source>
     <name>QG_DimensionLabelEditor</name>
     <message>
         <source>Dimension Label Editor</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Dimension Label:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Label:</source>
@@ -1529,27 +1559,27 @@ in a separate window</source>
     </message>
     <message utf8="true">
         <source>ø (Diameter)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>° (Degree)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>± (Plus / Minus)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>¶ (Pi)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>× (Times)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>÷ (Division)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1615,11 +1645,11 @@ in a separate window</source>
     </message>
     <message>
         <source>Start Angle:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>End Angle:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -1830,11 +1860,11 @@ in a separate window</source>
     </message>
     <message>
         <source>End Angle:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Start Angle:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Reversed</source>
@@ -1893,11 +1923,11 @@ in a separate window</source>
     </message>
     <message>
         <source>Solid Fill</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Enable Preview</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -2008,7 +2038,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="obsolete"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bem Vindo ao QCAD</p></body></html></translation>
+        <translation type="obsolete"><html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bem Vindo ao QCAD</p></body></html></translation>
     </message>
     <message>
         <source>Dialog</source>
@@ -2050,24 +2080,24 @@ in a separate window</source>
         <translation>Bem Vindo</translation>
     </message>
     <message>
-        <source><font size="+1"><b>Welcome to QCad</b>
+        <source><font size="+1"><b>Welcome to QCad</b>
 </font>
 <br>
 Please choose the unit you want to use for new drawings and your preferred language.<br>
 You can changes these settings later in the Options Dialog of QCad.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Default Unit:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>GUI Language:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Command Language:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2130,11 +2160,11 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Row Spacing:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Column Spacing:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -2248,19 +2278,19 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Mirroring Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Number of copies</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Delete Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Keep Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -2339,23 +2369,23 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Moving Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Number of copies</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Delete Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Keep Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Multiple Copies</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -2446,7 +2476,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Move/Rotate Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -2462,23 +2492,23 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Ctrl+S</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Number of copies</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Delete Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Keep Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Multiple Copies</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2543,8 +2573,8 @@ You can changes these settings later in the Options Dialog of QCad.</source>
         <translation>Graus Decimais</translation>
     </message>
     <message>
-        <source>For the length formats 'Engineering' and 'Architectural', the unit must be set to Inch.</source>
-        <translation>Para comprimentos formatados como 'Engenharia' ou 'Arquitetura', a unidade deve ser polegada.</translation>
+        <source>For the length formats 'Engineering' and 'Architectural', the unit must be set to Inch.</source>
+        <translation>Para comprimentos formatados como 'Engenharia' ou 'Arquitetura', a unidade deve ser polegada.</translation>
     </message>
     <message>
         <source>Dimension line gap:</source>
@@ -2655,7 +2685,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
         <translation>Tamanho da seta:</translation>
     </message>
     <message>
-        <source>Surveyor's units</source>
+        <source>Surveyor's units</source>
         <translation>Unidades de topógrafo</translation>
     </message>
     <message>
@@ -2728,15 +2758,15 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Paper &Height:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Paper &Width:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Length</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Angle</source>
@@ -2744,15 +2774,15 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Grid Settings</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Show Grid</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>X Spacing:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.01</source>
@@ -2772,11 +2802,11 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Y Spacing:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Text Height:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>2</source>
@@ -2788,7 +2818,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Splines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>4</source>
@@ -2983,67 +3013,67 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>&GUI Language:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Command Language:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Backgr&ound:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>G&rid Color:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>#000000</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>#ffffff</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>#c0c0c0</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>#808080</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Meta Grid Color:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>#404040</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>S&elected Color:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>#a54747</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>#739373</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Highlighted Color:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Fontsize</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Statusbar:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>5</source>
@@ -3083,15 +3113,15 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Graphic View</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Alt+S</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Alt+U</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0</source>
@@ -3111,7 +3141,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Minimal Grid Spacing (px):</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>4</source>
@@ -3127,39 +3157,39 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Translations:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Hatch Patterns:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Fonts:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Scripts:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Part Libraries:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Defaults for new drawings</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Program Defaults</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Time between automatc saving of thedocument in minutes.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Auto save time:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -3178,19 +3208,19 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     <name>QG_DlgOptionsVariables</name>
     <message>
         <source>Drawing Variables</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Variable</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Code</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Value</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -3202,7 +3232,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Esc</source>
@@ -3320,7 +3350,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Rotation Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -3336,19 +3366,19 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Number of copies</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Delete Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Keep Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Multiple Copies:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>...</source>
@@ -3439,19 +3469,19 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Number of copies</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Delete Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Keep Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Multiple Copies</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>...</source>
@@ -3538,7 +3568,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Scaling Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -3558,23 +3588,23 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>&Factor (f):</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Number of copies</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Delete Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Keep Original</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Multiple Copies</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -4256,491 +4286,491 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message utf8="true">
         <source>Diameter (ø)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>Degree (°)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>Plus / Minus (±)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>At (@)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Hash (#)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Dollar ($)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>Copyright (©)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>Registered (®)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>Paragraph (§)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>Pi (Ï€)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>Pound (£)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>Yen (Â¥)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>Times (×)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source>Division (÷)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0000-007F] Basic Latin</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0080-00FF] Latin-1 Supplementary</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0100-017F] Latin Extended-A</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0180-024F] Latin Extended-B</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0250-02AF] IPA Extensions</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[02B0-02FF] Spacing Modifier Letters</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0300-036F] Combining Diacritical Marks</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0370-03FF] Greek and Coptic</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0400-04FF] Cyrillic</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0500-052F] Cyrillic Supplementary</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0530-058F] Armenian</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0590-05FF] Hebrew</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0600-06FF] Arabic</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0700-074F] Syriac</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0780-07BF] Thaana</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0900-097F] Devanagari</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0980-09FF] Bengali</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0A00-0A7F] Gurmukhi</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0A80-0AFF] Gujarati</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0B00-0B7F] Oriya</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0B80-0BFF] Tamil</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0C00-0C7F] Telugu</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0C80-0CFF] Kannada</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0D00-0D7F] Malayalam</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0D80-0DFF] Sinhala</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0E00-0E7F] Thai</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0E80-0EFF] Lao</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[0F00-0FFF] Tibetan</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1000-109F] Myanmar</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[10A0-10FF] Georgian</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1100-11FF] Hangul Jamo</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1200-137F] Ethiopic</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[13A0-13FF] Cherokee</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1400-167F] Unified Canadian Aboriginal Syllabic</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1680-169F] Ogham</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[16A0-16FF] Runic</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1700-171F] Tagalog</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1720-173F] Hanunoo</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1740-175F] Buhid</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1760-177F] Tagbanwa</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1780-17FF] Khmer</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1800-18AF] Mongolian</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1E00-1EFF] Latin Extended Additional</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1F00-1FFF] Greek Extended</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2000-206F] General Punctuation</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2070-209F] Superscripts and Subscripts</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[20A0-20CF] Currency Symbols</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[20D0-20FF] Combining Marks for Symbols</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2100-214F] Letterlike Symbols</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2150-218F] Number Forms</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2190-21FF] Arrows</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2200-22FF] Mathematical Operators</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2300-23FF] Miscellaneous Technical</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2400-243F] Control Pictures</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2440-245F] Optical Character Recognition</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2460-24FF] Enclosed Alphanumerics</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2500-257F] Box Drawing</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2580-259F] Block Elements</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[25A0-25FF] Geometric Shapes</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2600-26FF] Miscellaneous Symbols</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2700-27BF] Dingbats</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[27C0-27EF] Miscellaneous Mathematical Symbols-A</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[27F0-27FF] Supplemental Arrows-A</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2800-28FF] Braille Patterns</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2900-297F] Supplemental Arrows-B</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2980-29FF] Miscellaneous Mathematical Symbols-B</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2A00-2AFF] Supplemental Mathematical Operators</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2E80-2EFF] CJK Radicals Supplement</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2F00-2FDF] Kangxi Radicals</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2FF0-2FFF] Ideographic Description Characters</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[3000-303F] CJK Symbols and Punctuation</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[3040-309F] Hiragana</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[30A0-30FF] Katakana</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[3100-312F] Bopomofo</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[3130-318F] Hangul Compatibility Jamo</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[3190-319F] Kanbun</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[31A0-31BF] Bopomofo Extended</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[3200-32FF] Enclosed CJK Letters and Months</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[3300-33FF] CJK Compatibility</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[3400-4DBF] CJK Unified Ideographs Extension A</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[4E00-9FAF] CJK Unified Ideographs</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[A000-A48F] Yi Syllables</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[A490-A4CF] Yi Radicals</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[AC00-D7AF] Hangul Syllables</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[D800-DBFF] High Surrogates</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[DC00-DFFF] Low Surrogate Area</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[E000-F8FF] Private Use Area</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[F900-FAFF] CJK Compatibility Ideographs</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[FB00-FB4F] Alphabetic Presentation Forms</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[FB50-FDFF] Arabic Presentation Forms-A</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[FE00-FE0F] Variation Selectors</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[FE20-FE2F] Combining Half Marks</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[FE30-FE4F] CJK Compatibility Forms</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[FE50-FE6F] Small Form Variants</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[FE70-FEFF] Arabic Presentation Forms-B</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[FF00-FFEF] Halfwidth and Fullwidth Forms</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[FFF0-FFFF] Specials</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[10300-1032F] Old Italic</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[10330-1034F] Gothic</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[10400-1044F] Deseret</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1D000-1D0FF] Byzantine Musical Symbols</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1D100-1D1FF] Musical Symbols</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[1D400-1D7FF] Mathematical Alphanumeric Symbols</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[20000-2A6DF] CJK Unified Ideographs Extension B</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[2F800-2FA1F] CJK Compatibility Ideographs Supplement</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[E0000-E007F] Tags</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[F0000-FFFFD] Supplementary Private Use Area-A</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>[100000-10FFFD] Supplementary Private Use Area-B</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&OK</source>
@@ -4814,15 +4844,15 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>QCad</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>C&lose</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>again Still No Text supplied.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -4849,18 +4879,18 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Rotation Angle</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Scale Factor</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>QG_ImageOptionsDialog</name>
     <message>
         <source>Image Export Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Bitmap Size</source>
@@ -4868,7 +4898,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Width:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Height:</source>
@@ -4976,7 +5006,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Esc</source>
@@ -5096,42 +5126,42 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Layer Name:</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>QG_LayerWidget</name>
     <message>
         <source>Show all layers</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Hide all layers</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Add a layer</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Remove the current layer</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Modify layer attributes / rename</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Layer Menu</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Defreeze all Layers</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Freeze all Layers</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Add Layer</source>
@@ -5228,7 +5258,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Line Angle Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5251,7 +5281,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Line Bisector Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5274,7 +5304,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Line Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5297,7 +5327,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Line Parallel Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Distance to original entity</source>
@@ -5316,7 +5346,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Line Parallel Through Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5331,7 +5361,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Polygon Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5346,7 +5376,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Polygon Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5369,7 +5399,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Line Relative Angle Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5594,8 +5624,8 @@ Por favor, verifique seus privilégios de acesso, o formato do arquivo e sua ext
         <translation type="obsolete">Novo Desenho criado.</translation>
     </message>
     <message>
-        <source>Block '%1'</source>
-        <translation type="obsolete">Carimbo '%1'</translation>
+        <source>Block '%1'</source>
+        <translation type="obsolete">Carimbo '%1'</translation>
     </message>
     <message>
         <source>Saved drawing: %1</source>
@@ -5651,9 +5681,9 @@ Do you want to save your changes or discard them?</source>
 Você deseja salvar suas modificações, ou as descartar?</translation>
     </message>
     <message>
-        <source>The drawing "%1" has been modified.
+        <source>The drawing "%1" has been modified.
 Do you want to save your changes or discard them?</source>
-        <translation type="obsolete">O desenho "%1" foi modificado.
+        <translation type="obsolete">O desenho "%1" foi modificado.
 Você deseja manter suas modificações, ou as descartar?</translation>
     </message>
     <message>
@@ -5673,7 +5703,7 @@ Você deseja manter suas modificações, ou as descartar?</translation>
     </message>
     <message>
         <source>Mouse</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Right</source>
@@ -5700,7 +5730,7 @@ Você deseja manter suas modificações, ou as descartar?</translation>
     </message>
     <message>
         <source>Move Rotate Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5758,11 +5788,11 @@ Você deseja manter suas modificações, ou as descartar?</translation>
     </message>
     <message>
         <source>Tangential</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Tan Radius</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Angle</source>
@@ -5931,7 +5961,7 @@ Você deseja manter suas modificações, ou as descartar?</translation>
     </message>
     <message>
         <source>Snap Distance Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5953,8 +5983,8 @@ Você deseja manter suas modificações, ou as descartar?</translation>
         <translation>Grau:</translation>
     </message>
     <message>
-        <source>Spline degree (the higher the 'smoother')</source>
-        <translation type="obsolete">Grau da Chaveta (quanto mais elevado mais 'suave')</translation>
+        <source>Spline degree (the higher the 'smoother')</source>
+        <translation type="obsolete">Grau da Chaveta (quanto mais elevado mais 'suave')</translation>
     </message>
     <message>
         <source>Tick for closed splines</source>
@@ -5962,7 +5992,7 @@ Você deseja manter suas modificações, ou as descartar?</translation>
     </message>
     <message>
         <source>Spline Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>1</source>
@@ -5993,7 +6023,7 @@ Você deseja manter suas modificações, ou as descartar?</translation>
     </message>
     <message>
         <source>Text Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -6008,11 +6038,11 @@ Você deseja manter suas modificações, ou as descartar?</translation>
     </message>
     <message>
         <source>Trim Amount Options</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Distance. Negative values for trimming, positive values for extending.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -6093,106 +6123,106 @@ Você deseja manter suas modificações, ou as descartar?</translation>
     </message>
     <message>
         <source>0.00mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.05mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.09mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.13mm (ISO)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.15mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.18mm (ISO)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.20mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.25mm (ISO)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.30mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.35mm (ISO)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.40mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.50mm (ISO)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.53mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.60mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.70mm (ISO)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.80mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>0.90mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>1.00mm (ISO)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>1.06mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>1.20mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>1.40mm (ISO)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>1.58mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>2.00mm (ISO)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>2.11mm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>QMessageBox</name>
     <message>
-        <source>Layer "%1" can never be removed.</source>
-        <translation>Camada "%1" não pode jamais ser removida.</translation>
+        <source>Layer "%1" can never be removed.</source>
+        <translation>Camada "%1" não pode jamais ser removida.</translation>
     </message>
     <message>
         <source>Remove Block</source>
@@ -6203,28 +6233,28 @@ Você deseja manter suas modificações, ou as descartar?</translation>
         <translation>Remove Camada</translation>
     </message>
     <message>
-        <source>Layer "%1" and all entities on it will be removed.</source>
-        <translation>Camada "%1" e todas as suas entidades serão removidas.</translation>
+        <source>Layer "%1" and all entities on it will be removed.</source>
+        <translation>Camada "%1" e todas as suas entidades serão removidas.</translation>
     </message>
     <message>
         <source>Layer Properties</source>
         <translation>Propriedades da Camada</translation>
     </message>
     <message>
-        <source>Layer with a name "%1" already exists. Please specify a different name.</source>
-        <translation>Camada com o nome "%1" já existe. Por favor especifique um nome diferente.</translation>
+        <source>Layer with a name "%1" already exists. Please specify a different name.</source>
+        <translation>Camada com o nome "%1" já existe. Por favor especifique um nome diferente.</translation>
     </message>
     <message>
         <source>Warning</source>
         <translation>Atenção</translation>
     </message>
     <message>
-        <source>Block "%1" and all its entities will be removed.</source>
-        <translation>Carimbo "%1" e todas as suas entidades serão removidas.</translation>
+        <source>Block "%1" and all its entities will be removed.</source>
+        <translation>Carimbo "%1" e todas as suas entidades serão removidas.</translation>
     </message>
     <message>
         <source>Layer Dialog</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -6884,15 +6914,31 @@ Você deseja manter suas modificações, ou as descartar?</translation>
     <message>
         <source>%1 already exists.
 Do you want to replace it?</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>QCad 1.x file %1</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Loading...</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -6995,11 +7041,11 @@ Do you want to replace it?</source>
     <name>RS_ActionBlocksFreezeAll</name>
     <message>
         <source>&Freeze all</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Defreeze all</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -7094,7 +7140,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Toggle Block Visibility</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -7537,7 +7583,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Arc: Tangential</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -7792,7 +7838,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>&Image</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -7874,11 +7920,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Vertical</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify position</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -7921,7 +7967,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Bisector</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Select second line</source>
@@ -7975,7 +8021,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Vertical</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8032,11 +8078,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Parallel</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Concentric</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8067,7 +8113,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Specify through point</source>
-        <translation>Indique o ponto "através de"</translation>
+        <translation>Indique o ponto "através de"</translation>
     </message>
     <message>
         <source>Draw parallel through a given point</source>
@@ -8079,7 +8125,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Parallel through point</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8180,7 +8226,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Rectangle</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8231,15 +8277,15 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Relative angle</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Orthogonal</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify position</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8270,7 +8316,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Tangent (P,C)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8301,7 +8347,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Tangent (C,C)</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8378,7 +8424,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Undo disallowed due a fatal bug somewhere. Sorry.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8602,7 +8648,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>&New...</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8740,7 +8786,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Angle between two lines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8783,7 +8829,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Polygonal Area</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8876,7 +8922,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Point inside contour</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8910,7 +8956,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Add Layer</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8939,11 +8985,11 @@ Do you want to replace it?</source>
     <name>RS_ActionLayersFreezeAll</name>
     <message>
         <source>&Freeze all</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>&Defreeze all</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -8995,7 +9041,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Toggle Layer Lock</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -9010,7 +9056,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>&Toggle Layer</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -9024,8 +9070,8 @@ Do you want to replace it?</source>
         <translation type="obsolete">Insira Objeto a partir de biblioteca de partes.</translation>
     </message>
     <message>
-        <source>Cannot open file '%1'</source>
-        <translation>Não pôde abrir o arquivo '%1'</translation>
+        <source>Cannot open file '%1'</source>
+        <translation>Não pôde abrir o arquivo '%1'</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
@@ -9049,7 +9095,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Insert Library Object</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -9114,7 +9160,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>&Bevel</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -9133,27 +9179,27 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Cutting point is invalid.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Cutting point is not on entity.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify entity to cut</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify cutting point</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -9195,35 +9241,35 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entities not in the same polyline.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Parent of second entity is not a polyline</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Parent of second entity is NULL</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>One of the chosen entities is NULL</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Parent of first entity is not a polyline</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Parent of first entity is NULL</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>First entity is NULL</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Second entity is NULL</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -9312,7 +9358,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>The chosen entity is not an atomic entity or cannot be cut.</source>
-        <translation type="obsolete">A entidade selecionada não é um "átomo" ou não pode ser cortada.</translation>
+        <translation type="obsolete">A entidade selecionada não é um "átomo" ou não pode ser cortada.</translation>
     </message>
     <message>
         <source>No entity found.</source>
@@ -9422,11 +9468,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Specify first point of mirror line</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify second point of mirror line</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -9706,7 +9752,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>&Trim Two</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -9767,7 +9813,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Current &Drawing Preferences</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -9817,11 +9863,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>&Add node</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add polyline's node</source>
-        <translation type="unfinished"/>
+        <source>Add polyline's node</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>No Entity found.</source>
@@ -9829,23 +9875,23 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Adding point is invalid.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Adding point is not on entity.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify polyline to add nodes</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Specify adding node's point</source>
-        <translation type="unfinished"/>
+        <source>Specify adding node's point</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -9876,11 +9922,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>A&ppend node</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Append polyline's node</source>
-        <translation type="unfinished"/>
+        <source>Append polyline's node</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>No Entity found.</source>
@@ -9888,15 +9934,15 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Click somewhere near the beginning or end of existing polyline.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify the polyline somewhere near the beginning or end point</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify next point or [%1]</source>
@@ -9904,7 +9950,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify next point</source>
@@ -9943,11 +9989,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>&Delete node</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Delete polyline's node</source>
-        <translation type="unfinished"/>
+        <source>Delete polyline's node</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>No Entity found.</source>
@@ -9955,23 +10001,23 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Adding point is invalid.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Adding point is not on entity.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify polyline to delete node</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Specify deleting node's point</source>
-        <translation type="unfinished"/>
+        <source>Specify deleting node's point</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10010,11 +10056,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Delete &between two nodes</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Delete between two nodes</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>No Entity found.</source>
@@ -10022,31 +10068,31 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Deletinging point is invalid.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Deleting point is not on entity.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Deleteinging point is not on entity.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify polyline to delete between two nodes</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify first node</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify second node</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10073,11 +10119,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Create &Equidistant Polylines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Create Equidistant Polylines</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>No Entity found.</source>
@@ -10085,11 +10131,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Choose the original polyline</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10115,11 +10161,11 @@ Do you want to replace it?</source>
     <name>RS_ActionPolylineSegment</name>
     <message>
         <source>Create Polyline from Existing &Segments</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Create Polyline from Existing Segments</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>No Entity found.</source>
@@ -10127,15 +10173,15 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a line or arc.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Choose one of the segments on the original polyline</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10170,11 +10216,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>&Trim segments</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Trim polyline's segments</source>
-        <translation type="unfinished"/>
+        <source>Trim polyline's segments</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>No Entity found.</source>
@@ -10182,19 +10228,19 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specifying point is invalid.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>No Segment found on entity.</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Specify polyline to trim</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10234,11 +10280,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Deselect &all</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Ctrl+K</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10253,7 +10299,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Entity must be an Atomic Entity.</source>
-        <translation>Entidade deve ser um "Átomo".</translation>
+        <translation>Entidade deve ser um "Átomo".</translation>
     </message>
 </context>
 <context>
@@ -10284,11 +10330,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Select Intersected Entities</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Deselect Intersected Entities</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10303,7 +10349,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Invert Selection</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10318,7 +10364,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>(De-)Select Layer</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10333,7 +10379,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Select Entity</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10364,11 +10410,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Select Window</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Deselect Window</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10391,11 +10437,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Set Relative Zero</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Set relative Zero</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10617,7 +10663,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Regenerate Dimension Entities</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -10785,171 +10831,171 @@ não são exibidas para melhorar a performance de exibição.</translation>
     <name>RS_Commands</name>
     <message>
         <source>line</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rectangle</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>text</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>regen</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>undo</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>u</source>
         <comment>undo</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>redo</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>arc</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>angle</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>factor</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>columns</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rows</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>columnspacing</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rowspacing</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ang</source>
         <comment>angle</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>a</source>
         <comment>angle</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>fact</source>
         <comment>factor</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>f</source>
         <comment>factor</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>cols</source>
         <comment>columns</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>c</source>
         <comment>columns</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>r</source>
         <comment>rows</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>columnspacing</source>
         <comment>columnspacing for inserts</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>colspacing</source>
         <comment>columnspacing for inserts</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>cs</source>
         <comment>columnspacing for inserts</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rowspacing</source>
         <comment>rowspacing for inserts</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rs</source>
         <comment>rowspacing for inserts</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>center</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>cen</source>
         <comment>center</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>c</source>
         <comment>center</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>reversed</source>
         <comment>reversed arc</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rev</source>
         <comment>reversed arc</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>r</source>
         <comment>reversed arc</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>point</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>po</source>
         <comment>point</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>offset</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>o</source>
         <comment>offset</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>parallel</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>length</source>
@@ -10957,24 +11003,24 @@ não são exibidas para melhorar a performance de exibição.</translation>
     </message>
     <message>
         <source>close</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>number</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>through</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>help</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>?</source>
         <comment>help</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>length</source>
@@ -10984,97 +11030,97 @@ não são exibidas para melhorar a performance de exibição.</translation>
     <message>
         <source>len</source>
         <comment>length</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>l</source>
         <comment>length</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>c</source>
         <comment>close</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>num</source>
         <comment>number</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>n</source>
         <comment>number</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>t</source>
         <comment>through</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>par</source>
         <comment>parallel</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>length1</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>length2</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>radius</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>trim</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>length1</source>
         <comment>length1</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>len1</source>
         <comment>length1</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>l1</source>
         <comment>length1</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>length2</source>
         <comment>length2</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>len2</source>
         <comment>length2</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>l2</source>
         <comment>length2</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>r</source>
         <comment>radius</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>t</source>
         <comment>text</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>chord length</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>length</source>
@@ -11084,11 +11130,11 @@ não são exibidas para melhorar a performance de exibição.</translation>
     <message>
         <source>l</source>
         <comment>chord length</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Command: %1</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>Available commands:</source>
@@ -11096,423 +11142,423 @@ não são exibidas para melhorar a performance de exibição.</translation>
     </message>
     <message>
         <source>circle</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ci</source>
         <comment>circle</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>zw</source>
         <comment>zoom - window</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>za</source>
         <comment>zoom - auto</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>zp</source>
         <comment>zoom - pan</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>li</source>
         <comment>line</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>re</source>
         <comment>rectangle</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rp</source>
         <comment>regular polygon</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>c2</source>
         <comment>2 point circle</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>c3</source>
         <comment>3 point circle</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ar</source>
         <comment>arc</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>a3</source>
         <comment>3 point arc</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ep</source>
         <comment>ellipse</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>tx</source>
         <comment>text</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>mt</source>
         <comment>text</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>da</source>
         <comment>dimension - aligned</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>dh</source>
         <comment>dimension - horizontal</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>dv</source>
         <comment>dimension - vertical</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>dr</source>
         <comment>dimension - linear</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ld</source>
         <comment>dimension - leader</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rd</source>
         <comment>redraw</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>zi</source>
         <comment>zoom - in</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>zo</source>
         <comment>zoom - out</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>os</source>
         <comment>snap - none</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>sg</source>
         <comment>snap - grid</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>se</source>
         <comment>snap - end</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>si</source>
         <comment>snap - intersection</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>sn</source>
         <comment>snap - center</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>sm</source>
         <comment>snap - middle</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>sn</source>
         <comment>snap - nearest</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>np</source>
         <comment>snap - nearest point</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>fr*</source>
         <comment>layers - freeze all</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>th*</source>
         <comment>layers - defreeze all</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>tn</source>
         <comment>Deselect all</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ch</source>
         <comment>modify - bevel (chamfer)</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>xt</source>
         <comment>modify - trim (extend)</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rm</source>
         <comment>modify - trim</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>mv</source>
         <comment>modify - move</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>mi</source>
         <comment>modify - mirror</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ro</source>
         <comment>modify - rotate</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>sz</source>
         <comment>modify - scale</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ss</source>
         <comment>modify - stretch</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>er</source>
         <comment>modify - delete (erase)</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>oo</source>
         <comment>modify - undo (oops)</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>uu</source>
         <comment>modify - redo</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>xp</source>
         <comment>modify - explode</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ex</source>
         <comment>modify - explode</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>dimregen</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>po</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ln</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>l</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>a</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ci</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rec</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rectang</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rg</source>
         <comment>zoom - redraw</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>zr</source>
         <comment>zoom - redraw</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>zv</source>
         <comment>zoom - previous</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>r</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>polyline</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>pa</source>
         <comment>parallel</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>tm</source>
         <comment>modify - multi trim (extend)</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>da</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>dh</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>dr</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>dv</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ld</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>tm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>xt</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>rm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>mv</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ch</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>mi</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ro</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>sz</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>ss</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>er</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>oo</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>uu</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>xp</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>os</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>sg</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>se</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>si</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>sn</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>sm</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>np</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>tn</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>kill</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>k</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>back</source>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <source>b</source>
         <comment>back</comment>
-        <translation type="unfinished"/>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 </TS>
diff --git a/ts/librecad_ru.ts b/ts/librecad_ru.ts
index a40c980..46b86db 100644
--- a/ts/librecad_ru.ts
+++ b/ts/librecad_ru.ts
@@ -32,6 +32,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Отмена</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Отмена</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Отмена</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -309,7 +342,7 @@ Please check the permissions.</source>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -401,10 +434,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1957,7 +1986,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2438,7 +2467,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Move</source>
-        <translation>Сдвиг</translation>
+        <translation type="obsolete">Сдвиг</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2482,7 +2511,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Вращать вокруг двух центров</translation>
+        <translation type="obsolete">Вращать вокруг двух центров</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2508,6 +2537,14 @@ in a separate window</source>
         <source>Edit Text</source>
         <translation>Редактировать текст</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Сдвиг / Копирование</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Вращать вокруг двух</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -6080,6 +6117,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_sk.ts b/ts/librecad_sk.ts
index 836cb8c..894b02d 100644
--- a/ts/librecad_sk.ts
+++ b/ts/librecad_sk.ts
@@ -32,6 +32,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Zrušiť</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Zrušiť</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Zrušiť</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -309,7 +342,7 @@ Prosím skontrolujte prístupové práva.</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -401,10 +434,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -993,7 +1022,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1474,7 +1503,7 @@ v inom okne</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Posunutie</translation>
+        <translation type="obsolete">Posunutie</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -1514,7 +1543,7 @@ v inom okne</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Otočenie okolo dvoch stredov</translation>
+        <translation type="obsolete">Otočenie okolo dvoch stredov</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -1540,6 +1569,14 @@ v inom okne</translation>
         <source>Edit Text</source>
         <translation>Uprav text</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Posuň / Kopíruj</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Otoč č. 2</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -5096,6 +5133,22 @@ Chcete ho nahradiť?</translation>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_sq_al.ts b/ts/librecad_sq_al.ts
new file mode 100644
index 0000000..715324c
--- /dev/null
+++ b/ts/librecad_sq_al.ts
@@ -0,0 +1,9516 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sq_al">
+<context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="38"/>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="40"/>
+        <source>Specify a point</source>
+        <translation>Vendos një pikë</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="129"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="40"/>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="47"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_ApplicationWindow</name>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="360"/>
+        <source>Running script '%1'</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="402"/>
+        <source>Inserting block '%1'</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="524"/>
+        <source>&File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="544"/>
+        <source>Import</source>
+        <translation>Importo</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="571"/>
+        <source>&Edit</source>
+        <translation>Edito</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="627"/>
+        <source>&View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
+        <source>&Toolbars</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="724"/>
+        <source>Focus on &Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="726"/>
+        <source>CTRL+M</source>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="738"/>
+        <source>&Select</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="775"/>
+        <source>&Draw</source>
+        <translation>&Vizato</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="779"/>
+        <source>&Point</source>
+        <translation>&Pikë</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="786"/>
+        <source>&Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="858"/>
+        <source>&Arc</source>
+        <translation>&Hark</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
+        <source>&Circle</source>
+        <translation>&Rreth</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="890"/>
+        <source>&Ellipse</source>
+        <translation>&Elips</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="902"/>
+        <source>&Spline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="909"/>
+        <source>&Polyline</source>
+        <translation>&Polivizë</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="953"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="955"/>
+        <source>&Dimension</source>
+        <translation>&Dimension</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="985"/>
+        <source>&Modify</source>
+        <translation>&Modifiko</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1068"/>
+        <source>&Snap</source>
+        <translation>&Ngjit</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1131"/>
+        <source>&Info</source>
+        <translation>&Info</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1159"/>
+        <source>&Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1186"/>
+        <source>&Block</source>
+        <translation>&Bllok</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1230"/>
+        <source>&Scripts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&CAM</source>
+        <translation type="obsolete">&CAM</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1248"/>
+        <source>About</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1255"/>
+        <source>&Manual</source>
+        <translation>&Manuali</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1300"/>
+        <source>Insert Image</source>
+        <translation>Vendos Imazh</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1360"/>
+        <source>&Window</source>
+        <translation>&Dritare</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1368"/>
+        <source>&Help</source>
+        <translation>&Ndihmë</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1376"/>
+        <source>De&bugging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1586"/>
+        <source>Layer List</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1607"/>
+        <source>Block List</source>
+        <translation>Lista e Blloqeve</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1628"/>
+        <source>Library Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1654"/>
+        <source>Command line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1868"/>
+        <source>&Cascade</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1870"/>
+        <source>&Tile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1872"/>
+        <source>Tile &Horizontally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2009"/>
+        <source>Creating new file...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2019"/>
+        <source>Block '%1'</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2021"/>
+        <source>unnamed document %1</source>
+        <translation>dokument i paemërtuar %1</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2061"/>
+        <source>New Drawing created.</source>
+        <translation>U krijua vizatim i ri.</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2095"/>
+        <source>Opening recent file...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2136"/>
+        <source>Cannot open the file
+%1
+Please check the permissions.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2170"/>
+        <source>Loaded document: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2174"/>
+        <source>Opening aborted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2188"/>
+        <source>Saving drawing...</source>
+        <translation>Duke ruajtur vizatimin...</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2200"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2250"/>
+        <source>Saved drawing: %1</source>
+        <translation>Vizatimi i ruajtur: %1</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2205"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2242"/>
+        <source>Cannot save the file
+%1
+Please check the permissions.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2222"/>
+        <source>Saving drawing under new filename...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2263"/>
+        <source>Auto-saving drawing...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2272"/>
+        <source>Auto-saved drawing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2277"/>
+        <source>Cannot auto-save the file
+%1
+Please check the permissions.
+Auto-save disabled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2294"/>
+        <source>Exporting drawing...</source>
+        <translation>Duke eksportuar vizatimin...</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2367"/>
+        <source>Exported: %1</source>
+        <translation>Eksportuar: %1</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2407"/>
+        <source>Exporting...</source>
+        <translation>Duke eksportuar...</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2462"/>
+        <source>Export complete</source>
+        <translation>Eksporti përfundoi
+</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2464"/>
+        <source>Export failed!</source>
+        <translation>Eksportimi dështoi!</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2530"/>
+        <source>Printing...</source>
+        <translation>Në printim...</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2593"/>
+        <source>Printing complete</source>
+        <translation>Printimi përfundoi</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2642"/>
+        <source>Print preview for %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2701"/>
+        <source>Exiting application...</source>
+        <translation>Duke mbyllur programin...</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
+        <source>None</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
+        <source>About...</source>
+        <translation>Rreth...</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
+        <source>Version: %1</source>
+        <translation>Versioni: %1</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
+        <source>SCM Revision: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2917"/>
+        <source>Compiled on: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2919"/>
+        <source>Program Icons Supplied by</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
+        <source>Splash and Logo supplied by</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2922"/>
+        <source>Modules: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2924"/>
+        <source>Main Website : </source>
+        <translation>Faqja Web Kryesore :</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2929"/>
+        <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
+        <translation>Të lutem dhuro për LibreCAD'in në mënyrë që të ndihmosh në mirëmbajtjen e kodit programor dhe faqes së saj web.</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2964"/>
+        <source>Help</source>
+        <translation>Ndihmë</translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2977"/>
+        <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_MDIWindow</name>
+    <message>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="405"/>
+        <source>Do you really want to close the drawing?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="411"/>
+        <source>Do you really want to close the file
+%1?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="414"/>
+        <source>Closing Drawing</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ActionFactory</name>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="214"/>
+        <source>&Export...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="223"/>
+        <source>&Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
+        <source>&Print...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="254"/>
+        <source>&Quit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="270"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="887"/>
+        <source>&Grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="272"/>
+        <source>CTRL-G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
+        <source>&Draft</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="289"/>
+        <source>&Statusbar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="371"/>
+        <source>&Selection pointer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="876"/>
+        <source>&Free</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="898"/>
+        <source>&Endpoints</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="909"/>
+        <source>&On Entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="920"/>
+        <source>&Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="931"/>
+        <source>&Middle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="942"/>
+        <source>&Distance from Endpoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="953"/>
+        <source>&Intersection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="973"/>
+        <source>Restrict &Nothing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="984"/>
+        <source>Restrict &Orthogonally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="995"/>
+        <source>Restrict &Horizontally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1006"/>
+        <source>Restrict&Vertically</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1176"/>
+        <source>&Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1178"/>
+        <source>&Application Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1201"/>
+        <source>Open IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1211"/>
+        <source>Run Script..</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ArcOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="26"/>
+        <source>Arc Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="62"/>
+        <source>Clockwise</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="82"/>
+        <source>Counter Clockwise</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ArcTangentialOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="26"/>
+        <source>Tangential Arc Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="35"/>
+        <source>Radius:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_BevelOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_beveloptions.ui" line="37"/>
+        <source>Bevel Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_beveloptions.ui" line="49"/>
+        <source>Trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_beveloptions.ui" line="52"/>
+        <source>Check to trim both entities to the bevel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_beveloptions.ui" line="77"/>
+        <source>Length 1:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_beveloptions.ui" line="90"/>
+        <source>Length 2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_BlockDialog</name>
+    <message>
+        <location filename="../src/ui/forms/qg_blockdialog.ui" line="23"/>
+        <source>Block Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_blockdialog.ui" line="46"/>
+        <source>Block Name:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_blockdialog.ui" line="99"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_blockdialog.ui" line="102"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_blockdialog.ui" line="115"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_blockdialog.ui" line="118"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="97"/>
+        <source>Renaming Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="98"/>
+        <source>Could not name block. A block named "%1" already exists.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_BlockWidget</name>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="77"/>
+        <source>Show all blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="85"/>
+        <source>Hide all blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="93"/>
+        <source>Add a block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="101"/>
+        <source>Remove the active block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="109"/>
+        <source>Rename the active block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="117"/>
+        <source>Edit the active block
+in a separate window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="126"/>
+        <source>Insert the active block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="304"/>
+        <source>Block Menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
+        <source>&Defreeze all Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
+        <source>&Freeze all Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
+        <source>&Add Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
+        <source>&Remove Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
+        <source>&Rename Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
+        <source>&Edit Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
+        <source>&Insert Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
+        <source>&Toggle Visibility</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="325"/>
+        <source>&Create New Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBar</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="26"/>
+        <source>CAD Tools</source>
+        <translation>Veglat CAD</translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarArcs</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbararcs.ui" line="26"/>
+        <source>Arcs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbararcs.ui" line="38"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbararcs.ui" line="58"/>
+        <source>Concentric</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbararcs.ui" line="78"/>
+        <source>Arc with Center, Point, Angles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbararcs.ui" line="98"/>
+        <source>Arc with three points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbararcs.ui" line="118"/>
+        <source>Arc tangential to base entity with radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarCircles</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarcircles.ui" line="26"/>
+        <source>Circles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarcircles.ui" line="38"/>
+        <source>Circle with two opposite points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarcircles.ui" line="58"/>
+        <source>Circle with center and radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarcircles.ui" line="78"/>
+        <source>Circle with center and point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarcircles.ui" line="98"/>
+        <source>Circle with three points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarcircles.ui" line="118"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarcircles.ui" line="138"/>
+        <source>Concentric</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarDim</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbardim.ui" line="26"/>
+        <source>Dimensions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbardim.ui" line="38"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbardim.ui" line="58"/>
+        <source>Aligned Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbardim.ui" line="78"/>
+        <source>Linear Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbardim.ui" line="98"/>
+        <source>Horizontal Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbardim.ui" line="118"/>
+        <source>Vertical Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbardim.ui" line="138"/>
+        <source>Radial Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbardim.ui" line="158"/>
+        <source>Diametric Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbardim.ui" line="178"/>
+        <source>Angular Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbardim.ui" line="198"/>
+        <source>Leader</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarEllipses</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarellipses.ui" line="26"/>
+        <source>Ellipses</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarellipses.ui" line="38"/>
+        <source>Ellipse arc with center, two points and angles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarellipses.ui" line="58"/>
+        <source>Ellipse with Center and two points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarellipses.ui" line="78"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarInfo</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarinfo.ui" line="26"/>
+        <source>Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarinfo.ui" line="38"/>
+        <source>Distance (Point, Point)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarinfo.ui" line="58"/>
+        <source>Distance (Entity, Point)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarinfo.ui" line="78"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarinfo.ui" line="98"/>
+        <source>Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarinfo.ui" line="118"/>
+        <source>Total length of selected entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarinfo.ui" line="138"/>
+        <source>Area of polygon</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarLines</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="26"/>
+        <source>Lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="38"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="58"/>
+        <source>Line with two points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="78"/>
+        <source>Line with given angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="98"/>
+        <source>Horizontal lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="118"/>
+        <source>Vertical lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="138"/>
+        <source>Rectangles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="158"/>
+        <source>Bisectors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="178"/>
+        <source>Parallels with distance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="198"/>
+        <source>Tangents from point to circle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="218"/>
+        <source>Tangents from circle to circle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="238"/>
+        <source>Orthogonal lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="258"/>
+        <source>Lines with relative angles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="278"/>
+        <source>Polygons with Center and Corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="298"/>
+        <source>Polygons with two Corners</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="318"/>
+        <source>Freehand lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarlines.ui" line="338"/>
+        <source>Parallels through point</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarMain</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="26"/>
+        <source>Main</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="38"/>
+        <source>Show menu "Lines"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="58"/>
+        <source>Show menu "Arcs"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="78"/>
+        <source>Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="98"/>
+        <source>Splines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="118"/>
+        <source>Show menu "Ellipses"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="138"/>
+        <source>Show menu "Circles"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="158"/>
+        <source>Texts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="178"/>
+        <source>Show menu "Dimensions"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="198"/>
+        <source>Hatches / Solid Fills</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="218"/>
+        <source>Raster Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="238"/>
+        <source>Show menu "Edit"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="258"/>
+        <source>Show menu "Measure"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="278"/>
+        <source>Create Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="298"/>
+        <source>Show menu "Select"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmain.ui" line="318"/>
+        <source>Polylines</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarModify</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="26"/>
+        <source>Modify</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="38"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="58"/>
+        <source>Stretch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="78"/>
+        <source>Round</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="98"/>
+        <source>Bevel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="118"/>
+        <source>Trim by amount</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="138"/>
+        <source>Trim / Extend</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="158"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="178"/>
+        <source>Edit Entity Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="198"/>
+        <source>Mirror</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="218"/>
+        <source>Scale</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="238"/>
+        <source>Rotate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="258"/>
+        <source>Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="278"/>
+        <source>Move and Rotate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="318"/>
+        <source>Trim / Extend two</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="338"/>
+        <source>Divide</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="358"/>
+        <source>Explode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="378"/>
+        <source>Explode Text into Letters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="398"/>
+        <source>Edit Entity Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="418"/>
+        <source>Edit Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarPoints</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpoints.ui" line="26"/>
+        <source>Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpoints.ui" line="38"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpoints.ui" line="58"/>
+        <source>Single points</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarPolylines</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpolylines.ui" line="26"/>
+        <source>Polylines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpolylines.ui" line="38"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpolylines.ui" line="58"/>
+        <source>Create Polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpolylines.ui" line="78"/>
+        <source>Trim segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpolylines.ui" line="98"/>
+        <source>Delete between two nodes</source>
+        <translation type="unfinished">Fshijë midis dy nyjeve</translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpolylines.ui" line="118"/>
+        <source>Delete node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpolylines.ui" line="138"/>
+        <source>Add node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarpolylines.ui" line="158"/>
+        <source>Append node</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarSelect</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="26"/>
+        <source>Select</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="38"/>
+        <source>Select all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="58"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="78"/>
+        <source>Select intersected entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="98"/>
+        <source>Deselect intersected entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="118"/>
+        <source>Deselect all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="138"/>
+        <source>Invert Selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="158"/>
+        <source>Select layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="178"/>
+        <source>(De-)Select contour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="198"/>
+        <source>(De-)Select entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="218"/>
+        <source>Deselect Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="238"/>
+        <source>Select Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarselect.ui" line="258"/>
+        <source>Continue action</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarSnap</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="26"/>
+        <source>Snap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="38"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="58"/>
+        <source>Snap to grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="81"/>
+        <source>Free positioning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="104"/>
+        <source>Snap to Endpoints</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="127"/>
+        <source>Snap to closest point on entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="150"/>
+        <source>Snap to center points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="173"/>
+        <source>Snap to middle points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="196"/>
+        <source>Snap to point with given distance to endpoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="219"/>
+        <source>Snap to intersections automatically</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="242"/>
+        <source>No Restriction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="265"/>
+        <source>Orthogonal Restriction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="288"/>
+        <source>Horizontal Restriction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="311"/>
+        <source>Vertical Restriction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="334"/>
+        <source>Move relative Zero</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="357"/>
+        <source>Lock relative Zero</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsnap.ui" line="380"/>
+        <source>Snap to intersections manually</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarSplines</name>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsplines.ui" line="26"/>
+        <source>Splines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsplines.ui" line="38"/>
+        <source>Back to main menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarsplines.ui" line="58"/>
+        <source>Spline</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CircleOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_circleoptions.ui" line="37"/>
+        <source>Circle Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_circleoptions.ui" line="46"/>
+        <source>Radius:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ColorBox</name>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
+        <source>Unchanged</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="172"/>
+        <source>By Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
+        <source>By Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
+        <source>Red</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
+        <source>Yellow</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
+        <source>Green</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
+        <source>Cyan</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
+        <source>Blue</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
+        <source>Magenta</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="94"/>
+        <source>Black / White</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="95"/>
+        <source>Gray</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="96"/>
+        <source>Light Gray</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_colorbox.cpp" line="97"/>
+        <source>Others..</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CommandWidget</name>
+    <message>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="15"/>
+        <source>Command Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="82"/>
+        <location filename="../src/ui/forms/qg_commandwidget.cpp" line="83"/>
+        <source>Command:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CoordinateWidget</name>
+    <message>
+        <location filename="../src/ui/forms/qg_coordinatewidget.ui" line="37"/>
+        <location filename="../src/ui/forms/qg_coordinatewidget.ui" line="69"/>
+        <location filename="../src/ui/forms/qg_coordinatewidget.ui" line="91"/>
+        <location filename="../src/ui/forms/qg_coordinatewidget.ui" line="127"/>
+        <location filename="../src/ui/forms/qg_coordinatewidget.ui" line="143"/>
+        <source>Coordinates</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DimLinearOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dimlinearoptions.ui" line="32"/>
+        <source>Linear Dimension Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dimlinearoptions.ui" line="59"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DimOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dimoptions.ui" line="32"/>
+        <source>Dimension Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dimoptions.ui" line="53"/>
+        <source>Label:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimoptions.ui" line="100"/>
+        <source>ø</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimoptions.ui" line="105"/>
+        <source>°</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimoptions.ui" line="110"/>
+        <source>±</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimoptions.ui" line="115"/>
+        <source>¶</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimoptions.ui" line="120"/>
+        <source>×</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimoptions.ui" line="125"/>
+        <source>÷</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dimoptions.ui" line="133"/>
+        <location filename="../src/ui/forms/qg_dimoptions.ui" line="154"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DimensionLabelEditor</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dimensionlabeleditor.ui" line="20"/>
+        <source>Dimension Label Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dimensionlabeleditor.ui" line="32"/>
+        <source>Dimension Label:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dimensionlabeleditor.ui" line="57"/>
+        <source>Label:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dimensionlabeleditor.ui" line="130"/>
+        <source>Insert:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimensionlabeleditor.ui" line="147"/>
+        <source>ø (Diameter)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimensionlabeleditor.ui" line="152"/>
+        <source>° (Degree)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimensionlabeleditor.ui" line="157"/>
+        <source>± (Plus / Minus)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimensionlabeleditor.ui" line="162"/>
+        <source>¶ (Pi)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimensionlabeleditor.ui" line="167"/>
+        <source>× (Times)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dimensionlabeleditor.ui" line="172"/>
+        <source>÷ (Division)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgArc</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="31"/>
+        <source>Arc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="51"/>
+        <source>Layer:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="80"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="86"/>
+        <source>Radius:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="106"/>
+        <source>Center (y):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="126"/>
+        <source>Center (x):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="146"/>
+        <source>Start Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="176"/>
+        <source>End Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="218"/>
+        <source>Reversed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="248"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="251"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="261"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgarc.ui" line="264"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgAttributes</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgattributes.ui" line="26"/>
+        <source>Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgattributes.ui" line="44"/>
+        <source>Layer:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgattributes.ui" line="91"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgattributes.ui" line="94"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgattributes.ui" line="104"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgattributes.ui" line="107"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgCircle</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgcircle.ui" line="31"/>
+        <source>Circle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgcircle.ui" line="51"/>
+        <source>Layer:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgcircle.ui" line="80"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgcircle.ui" line="86"/>
+        <source>Radius:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgcircle.ui" line="106"/>
+        <source>Center (y):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgcircle.ui" line="126"/>
+        <source>Center (x):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgcircle.ui" line="201"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgcircle.ui" line="204"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgcircle.ui" line="214"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgcircle.ui" line="217"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgDimLinear</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimlinear.ui" line="23"/>
+        <source>Linear Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimlinear.ui" line="52"/>
+        <source>Layer:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimlinear.ui" line="86"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimlinear.ui" line="112"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimlinear.ui" line="168"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimlinear.ui" line="171"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimlinear.ui" line="184"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimlinear.ui" line="187"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgDimension</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimension.ui" line="23"/>
+        <source>Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimension.ui" line="52"/>
+        <source>Layer:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimension.ui" line="104"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimension.ui" line="107"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimension.ui" line="120"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgdimension.ui" line="123"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgEllipse</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="31"/>
+        <source>Ellipse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="51"/>
+        <source>Layer:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="80"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="86"/>
+        <source>Center (y):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="106"/>
+        <source>Center (x):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="158"/>
+        <source>End Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="188"/>
+        <source>Start Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="198"/>
+        <source>Rotation:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="228"/>
+        <source>Minor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="238"/>
+        <source>Major:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="258"/>
+        <source>Reversed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="288"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="291"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="301"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgellipse.ui" line="304"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgHatch</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlghatch.ui" line="17"/>
+        <source>Choose Hatch Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlghatch.ui" line="25"/>
+        <source>Pattern</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlghatch.ui" line="37"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlghatch.ui" line="47"/>
+        <source>Scale:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlghatch.ui" line="60"/>
+        <source>Solid Fill</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlghatch.ui" line="70"/>
+        <source>Preview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlghatch.ui" line="76"/>
+        <source>Enable Preview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlghatch.ui" line="115"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlghatch.ui" line="118"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlghatch.ui" line="131"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgInitial</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginitial.ui" line="14"/>
+        <source>Welcome</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginitial.ui" line="64"/>
+        <source><font size="+1"><b>Welcome to QCad</b>
+</font>
+<br>
+Please choose the unit you want to use for new drawings and your preferred language.<br>
+You can changes these settings later in the Options Dialog of QCad.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginitial.ui" line="95"/>
+        <source>Default Unit:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginitial.ui" line="105"/>
+        <source>GUI Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginitial.ui" line="115"/>
+        <source>Command Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginitial.ui" line="149"/>
+        <source>OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginitial.ui" line="152"/>
+        <source>Enter</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgInsert</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="31"/>
+        <source>Insert</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="51"/>
+        <source>Layer:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="80"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="138"/>
+        <source>Insertion point (x):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="148"/>
+        <source>Insertion point (y):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="168"/>
+        <source>Scale:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="178"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="198"/>
+        <source>Rows:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="228"/>
+        <source>Columns:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="238"/>
+        <source>Row Spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="268"/>
+        <source>Column Spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="301"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="311"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlginsert.ui" line="314"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgLine</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgline.ui" line="29"/>
+        <source>Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgline.ui" line="47"/>
+        <source>Layer:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgline.ui" line="80"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgline.ui" line="86"/>
+        <source>End point (x):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgline.ui" line="116"/>
+        <source>End point (y):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgline.ui" line="126"/>
+        <source>Start point (y):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgline.ui" line="146"/>
+        <source>Start point (x):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgline.ui" line="221"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgline.ui" line="231"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgline.ui" line="234"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgMirror</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmirror.ui" line="26"/>
+        <source>Mirroring Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmirror.ui" line="32"/>
+        <source>Number of copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmirror.ui" line="50"/>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmirror.ui" line="69"/>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmirror.ui" line="95"/>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmirror.ui" line="102"/>
+        <source>Use current &layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmirror.ui" line="127"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmirror.ui" line="137"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmirror.ui" line="140"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmirror.ui" line="149"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgMove</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="26"/>
+        <source>Moving Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="32"/>
+        <source>Number of copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="50"/>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="69"/>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="88"/>
+        <source>&Multiple Copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="117"/>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="124"/>
+        <source>Use current &layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="149"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="152"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="162"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="165"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmove.ui" line="174"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgMoveRotate</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="26"/>
+        <source>Move/Rotate Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="50"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="60"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="63"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="74"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="87"/>
+        <source>Ctrl+S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="96"/>
+        <source>&Angle (a):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="130"/>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="137"/>
+        <source>Use current &layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="146"/>
+        <source>Number of copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="164"/>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="183"/>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgmoverotate.ui" line="202"/>
+        <source>&Multiple Copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgOptionsDrawing</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="14"/>
+        <source>Drawing Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="30"/>
+        <source>&Paper</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="36"/>
+        <source>Paper Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="67"/>
+        <source>&Landscape</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="74"/>
+        <source>P&ortrait</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="120"/>
+        <source>Paper &Height:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="133"/>
+        <source>Paper &Width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="171"/>
+        <source>&Units</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="177"/>
+        <source>Main Unit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="183"/>
+        <source>&Main drawing unit:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="222"/>
+        <source>Length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="228"/>
+        <source>&Format:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="247"/>
+        <source>P&recision:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="295"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="391"/>
+        <source>Preview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="301"/>
+        <source>linear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="318"/>
+        <source>Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="324"/>
+        <source>F&ormat:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="372"/>
+        <source>Pre&cision:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="397"/>
+        <source>angular</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="415"/>
+        <source>&Grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="421"/>
+        <source>Grid Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="429"/>
+        <source>Show Grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="488"/>
+        <source>X Spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="502"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="544"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="173"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="176"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="271"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="276"/>
+        <source>auto</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="507"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="549"/>
+        <source>0.01</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="512"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="554"/>
+        <source>0.1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="517"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="559"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="624"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="656"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="776"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="798"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="820"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="522"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="564"/>
+        <source>10</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="530"/>
+        <source>Y Spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="594"/>
+        <source>&Dimensions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="600"/>
+        <source>Text Height:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="610"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="674"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="684"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="838"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="848"/>
+        <source>units</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="629"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="661"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="781"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="803"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="825"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="881"/>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="634"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="666"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="786"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="808"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="830"/>
+        <source>5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="642"/>
+        <source>Extension line extension:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="742"/>
+        <source>Arrow size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="752"/>
+        <source>Dimension line gap:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="762"/>
+        <source>Extension line offset:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="859"/>
+        <source>Splines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="867"/>
+        <source>Number of line segments per spline patch:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="886"/>
+        <source>4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="891"/>
+        <source>8</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="896"/>
+        <source>16</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="901"/>
+        <source>32</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="906"/>
+        <source>64</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="954"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="957"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="970"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui" line="973"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="46"/>
+        <source>Scientific</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="47"/>
+        <source>Decimal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="48"/>
+        <source>Engineering</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="49"/>
+        <source>Architectural</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="50"/>
+        <source>Fractional</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="55"/>
+        <source>Decimal Degrees</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="56"/>
+        <source>Deg/min/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="57"/>
+        <source>Gradians</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="58"/>
+        <source>Radians</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="59"/>
+        <source>Surveyor's units</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="234"/>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsdrawing.ui.h" line="235"/>
+        <source>For the length formats 'Engineering' and 'Architectural', the unit must be set to Inch.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgOptionsGeneral</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="14"/>
+        <source>Application Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="30"/>
+        <source>&Appearance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="36"/>
+        <source>Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="42"/>
+        <source>&GUI Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="55"/>
+        <source>&Command Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="77"/>
+        <source>Colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="83"/>
+        <source>Backgr&ound:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="96"/>
+        <source>G&rid Color:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="113"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="150"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="185"/>
+        <source>#000000</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="118"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="145"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="190"/>
+        <source>#ffffff</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="123"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="140"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="195"/>
+        <source>#c0c0c0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="128"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="155"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="200"/>
+        <source>#808080</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="163"/>
+        <source>&Meta Grid Color:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="180"/>
+        <source>#404040</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="208"/>
+        <source>S&elected Color:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="225"/>
+        <source>#a54747</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="237"/>
+        <source>#739373</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="245"/>
+        <source>&Highlighted Color:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="293"/>
+        <source>Fontsize</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="299"/>
+        <source>Statusbar:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="313"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="521"/>
+        <source>5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="318"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="526"/>
+        <source>6</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="323"/>
+        <source>7</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="328"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="531"/>
+        <source>8</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="333"/>
+        <source>9</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="338"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="536"/>
+        <source>10</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="343"/>
+        <source>11</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="348"/>
+        <source>12</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="353"/>
+        <source>14</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="396"/>
+        <source>Graphic View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="402"/>
+        <source>&Show large crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="405"/>
+        <source>Alt+S</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="412"/>
+        <source>A&utomatically scale grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="415"/>
+        <source>Alt+U</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="454"/>
+        <source>Number of p&review entities:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="471"/>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="511"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="476"/>
+        <source>50</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="481"/>
+        <source>100</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="486"/>
+        <source>200</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="494"/>
+        <source>Minimal Grid Spacing (px):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="516"/>
+        <source>4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="541"/>
+        <source>15</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="546"/>
+        <source>20</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="590"/>
+        <source>&Paths</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="596"/>
+        <source>Translations:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="606"/>
+        <source>Hatch Patterns:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="616"/>
+        <source>Fonts:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="626"/>
+        <source>Scripts:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="636"/>
+        <source>Part Libraries:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="694"/>
+        <source>&Defaults</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="712"/>
+        <source>Defaults for new drawings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="724"/>
+        <source>&Unit:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="771"/>
+        <source>Program Defaults</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="783"/>
+        <source>Time between automatc saving of thedocument in minutes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="802"/>
+        <source>Auto save time:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="845"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="848"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="861"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui" line="864"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui.h" line="181"/>
+        <source>Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsgeneral.ui.h" line="182"/>
+        <source>Please restart the application to apply all changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgOptionsVariables</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsvariables.ui" line="17"/>
+        <source>Drawing Variables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsvariables.ui" line="54"/>
+        <source>Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsvariables.ui" line="59"/>
+        <source>Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsvariables.ui" line="64"/>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsvariables.ui" line="96"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsvariables.ui" line="99"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsvariables.ui" line="112"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgoptionsvariables.ui" line="115"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgPoint</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgpoint.ui" line="26"/>
+        <source>Point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgpoint.ui" line="44"/>
+        <source>Layer:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgpoint.ui" line="71"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgpoint.ui" line="77"/>
+        <source>Position (y):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgpoint.ui" line="97"/>
+        <source>Position (x):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgpoint.ui" line="172"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgpoint.ui" line="182"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgpoint.ui" line="185"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgRotate</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="26"/>
+        <source>Rotation Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="50"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="60"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="63"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="72"/>
+        <source>Number of copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="90"/>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="109"/>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="128"/>
+        <source>&Multiple Copies:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="159"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="178"/>
+        <source>&Angle (a):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="219"/>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate.ui" line="226"/>
+        <source>Use current &layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgRotate2</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="26"/>
+        <source>Rotate Two Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="50"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="60"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="72"/>
+        <source>Number of copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="90"/>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="109"/>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="128"/>
+        <source>&Multiple Copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="159"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="178"/>
+        <source>Angle (&a):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="214"/>
+        <source>Angle (&b):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="248"/>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgrotate2.ui" line="255"/>
+        <source>Use current &layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgScale</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="26"/>
+        <source>Scaling Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="50"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="60"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="63"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="74"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="93"/>
+        <source>&Factor (f):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="134"/>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="141"/>
+        <source>Use current &layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="150"/>
+        <source>Number of copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="168"/>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="187"/>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgscale.ui" line="206"/>
+        <source>&Multiple Copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgSpline</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="31"/>
+        <source>Spline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="51"/>
+        <source>Layer:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="88"/>
+        <source>Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="126"/>
+        <source>Degree:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="136"/>
+        <source>Closed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="150"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="155"/>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="160"/>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="191"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="194"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="204"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgspline.ui" line="207"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgText</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="14"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="33"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="52"/>
+        <source>&Height:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="107"/>
+        <source>Line &spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="136"/>
+        <source>&Default line spacing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="139"/>
+        <source>Alt+D</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="157"/>
+        <source>Alignment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="175"/>
+        <source>Top Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="204"/>
+        <source>Top Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="233"/>
+        <source>Middle Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="262"/>
+        <source>Middle Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="291"/>
+        <source>Middle Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="320"/>
+        <source>Bottom Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="349"/>
+        <source>Bottom Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="378"/>
+        <source>Bottom Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="407"/>
+        <source>Top Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="439"/>
+        <source>Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="482"/>
+        <source>Text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="508"/>
+        <source>Clear Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="522"/>
+        <source>Load Text From File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="536"/>
+        <source>Save Text To File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="550"/>
+        <source>Cut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="564"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="578"/>
+        <source>Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="619"/>
+        <source>Insert Symbol</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="632"/>
+        <source>Diameter (ø)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="637"/>
+        <source>Degree (°)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="642"/>
+        <source>Plus / Minus (±)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="647"/>
+        <source>At (@)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="652"/>
+        <source>Hash (#)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="657"/>
+        <source>Dollar ($)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="662"/>
+        <source>Copyright (©)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="667"/>
+        <source>Registered (®)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="672"/>
+        <source>Paragraph (§)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="677"/>
+        <source>Pi (Ï€)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="682"/>
+        <source>Pound (£)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="687"/>
+        <source>Yen (Â¥)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="692"/>
+        <source>Times (×)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="697"/>
+        <source>Division (÷)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="708"/>
+        <source>Insert Unicode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="714"/>
+        <source>Page:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="724"/>
+        <source>Char:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="747"/>
+        <source>[0000-007F] Basic Latin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="752"/>
+        <source>[0080-00FF] Latin-1 Supplementary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="757"/>
+        <source>[0100-017F] Latin Extended-A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="762"/>
+        <source>[0180-024F] Latin Extended-B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="767"/>
+        <source>[0250-02AF] IPA Extensions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="772"/>
+        <source>[02B0-02FF] Spacing Modifier Letters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="777"/>
+        <source>[0300-036F] Combining Diacritical Marks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="782"/>
+        <source>[0370-03FF] Greek and Coptic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="787"/>
+        <source>[0400-04FF] Cyrillic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="792"/>
+        <source>[0500-052F] Cyrillic Supplementary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="797"/>
+        <source>[0530-058F] Armenian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="802"/>
+        <source>[0590-05FF] Hebrew</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="807"/>
+        <source>[0600-06FF] Arabic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="812"/>
+        <source>[0700-074F] Syriac</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="817"/>
+        <source>[0780-07BF] Thaana</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="822"/>
+        <source>[0900-097F] Devanagari</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="827"/>
+        <source>[0980-09FF] Bengali</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="832"/>
+        <source>[0A00-0A7F] Gurmukhi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="837"/>
+        <source>[0A80-0AFF] Gujarati</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="842"/>
+        <source>[0B00-0B7F] Oriya</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="847"/>
+        <source>[0B80-0BFF] Tamil</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="852"/>
+        <source>[0C00-0C7F] Telugu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="857"/>
+        <source>[0C80-0CFF] Kannada</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="862"/>
+        <source>[0D00-0D7F] Malayalam</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="867"/>
+        <source>[0D80-0DFF] Sinhala</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="872"/>
+        <source>[0E00-0E7F] Thai</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="877"/>
+        <source>[0E80-0EFF] Lao</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="882"/>
+        <source>[0F00-0FFF] Tibetan</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="887"/>
+        <source>[1000-109F] Myanmar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="892"/>
+        <source>[10A0-10FF] Georgian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="897"/>
+        <source>[1100-11FF] Hangul Jamo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="902"/>
+        <source>[1200-137F] Ethiopic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="907"/>
+        <source>[13A0-13FF] Cherokee</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="912"/>
+        <source>[1400-167F] Unified Canadian Aboriginal Syllabic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="917"/>
+        <source>[1680-169F] Ogham</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="922"/>
+        <source>[16A0-16FF] Runic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="927"/>
+        <source>[1700-171F] Tagalog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="932"/>
+        <source>[1720-173F] Hanunoo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="937"/>
+        <source>[1740-175F] Buhid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="942"/>
+        <source>[1760-177F] Tagbanwa</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="947"/>
+        <source>[1780-17FF] Khmer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="952"/>
+        <source>[1800-18AF] Mongolian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="957"/>
+        <source>[1E00-1EFF] Latin Extended Additional</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="962"/>
+        <source>[1F00-1FFF] Greek Extended</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="967"/>
+        <source>[2000-206F] General Punctuation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="972"/>
+        <source>[2070-209F] Superscripts and Subscripts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="977"/>
+        <source>[20A0-20CF] Currency Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="982"/>
+        <source>[20D0-20FF] Combining Marks for Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="987"/>
+        <source>[2100-214F] Letterlike Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="992"/>
+        <source>[2150-218F] Number Forms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="997"/>
+        <source>[2190-21FF] Arrows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1002"/>
+        <source>[2200-22FF] Mathematical Operators</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1007"/>
+        <source>[2300-23FF] Miscellaneous Technical</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1012"/>
+        <source>[2400-243F] Control Pictures</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1017"/>
+        <source>[2440-245F] Optical Character Recognition</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1022"/>
+        <source>[2460-24FF] Enclosed Alphanumerics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1027"/>
+        <source>[2500-257F] Box Drawing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1032"/>
+        <source>[2580-259F] Block Elements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1037"/>
+        <source>[25A0-25FF] Geometric Shapes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1042"/>
+        <source>[2600-26FF] Miscellaneous Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1047"/>
+        <source>[2700-27BF] Dingbats</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1052"/>
+        <source>[27C0-27EF] Miscellaneous Mathematical Symbols-A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1057"/>
+        <source>[27F0-27FF] Supplemental Arrows-A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1062"/>
+        <source>[2800-28FF] Braille Patterns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1067"/>
+        <source>[2900-297F] Supplemental Arrows-B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1072"/>
+        <source>[2980-29FF] Miscellaneous Mathematical Symbols-B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1077"/>
+        <source>[2A00-2AFF] Supplemental Mathematical Operators</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1082"/>
+        <source>[2E80-2EFF] CJK Radicals Supplement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1087"/>
+        <source>[2F00-2FDF] Kangxi Radicals</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1092"/>
+        <source>[2FF0-2FFF] Ideographic Description Characters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1097"/>
+        <source>[3000-303F] CJK Symbols and Punctuation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1102"/>
+        <source>[3040-309F] Hiragana</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1107"/>
+        <source>[30A0-30FF] Katakana</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1112"/>
+        <source>[3100-312F] Bopomofo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1117"/>
+        <source>[3130-318F] Hangul Compatibility Jamo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1122"/>
+        <source>[3190-319F] Kanbun</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1127"/>
+        <source>[31A0-31BF] Bopomofo Extended</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1132"/>
+        <source>[3200-32FF] Enclosed CJK Letters and Months</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1137"/>
+        <source>[3300-33FF] CJK Compatibility</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1142"/>
+        <source>[3400-4DBF] CJK Unified Ideographs Extension A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1147"/>
+        <source>[4E00-9FAF] CJK Unified Ideographs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1152"/>
+        <source>[A000-A48F] Yi Syllables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1157"/>
+        <source>[A490-A4CF] Yi Radicals</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1162"/>
+        <source>[AC00-D7AF] Hangul Syllables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1167"/>
+        <source>[D800-DBFF] High Surrogates</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1172"/>
+        <source>[DC00-DFFF] Low Surrogate Area</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1177"/>
+        <source>[E000-F8FF] Private Use Area</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1182"/>
+        <source>[F900-FAFF] CJK Compatibility Ideographs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1187"/>
+        <source>[FB00-FB4F] Alphabetic Presentation Forms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1192"/>
+        <source>[FB50-FDFF] Arabic Presentation Forms-A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1197"/>
+        <source>[FE00-FE0F] Variation Selectors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1202"/>
+        <source>[FE20-FE2F] Combining Half Marks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1207"/>
+        <source>[FE30-FE4F] CJK Compatibility Forms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1212"/>
+        <source>[FE50-FE6F] Small Form Variants</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1217"/>
+        <source>[FE70-FEFF] Arabic Presentation Forms-B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1222"/>
+        <source>[FF00-FFEF] Halfwidth and Fullwidth Forms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1227"/>
+        <source>[FFF0-FFFF] Specials</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1232"/>
+        <source>[10300-1032F] Old Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1237"/>
+        <source>[10330-1034F] Gothic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1242"/>
+        <source>[10400-1044F] Deseret</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1247"/>
+        <source>[1D000-1D0FF] Byzantine Musical Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1252"/>
+        <source>[1D100-1D1FF] Musical Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1257"/>
+        <source>[1D400-1D7FF] Mathematical Alphanumeric Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1262"/>
+        <source>[20000-2A6DF] CJK Unified Ideographs Extension B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1267"/>
+        <source>[2F800-2FA1F] CJK Compatibility Ideographs Supplement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1272"/>
+        <source>[E0000-E007F] Tags</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1277"/>
+        <source>[F0000-FFFFD] Supplementary Private Use Area-A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1282"/>
+        <source>[100000-10FFFD] Supplementary Private Use Area-B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1354"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1367"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgtext.ui" line="1370"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ExitDialog</name>
+    <message>
+        <location filename="../src/ui/forms/qg_exitdialog.ui" line="26"/>
+        <source>QCad</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_exitdialog.ui" line="56"/>
+        <source>C&lose</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_exitdialog.ui" line="69"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_exitdialog.ui" line="76"/>
+        <source>Save &As..</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_exitdialog.ui" line="83"/>
+        <source>&Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_exitdialog.ui" line="120"/>
+        <source>again Still No Text supplied.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ImageOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_imageoptions.ui" line="37"/>
+        <source>Insert Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_imageoptions.ui" line="49"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_imageoptions.ui" line="59"/>
+        <source>Rotation Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_imageoptions.ui" line="66"/>
+        <source>Factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_imageoptions.ui" line="76"/>
+        <source>Scale Factor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ImageOptionsDialog</name>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="17"/>
+        <source>Image Export Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="26"/>
+        <source>Bitmap Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="32"/>
+        <source>Width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="42"/>
+        <source>Height:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="84"/>
+        <source>480</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="91"/>
+        <source>640</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="98"/>
+        <source>Resolution:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="112"/>
+        <source>auto</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="117"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="122"/>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="127"/>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="132"/>
+        <source>4</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="137"/>
+        <source>5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="142"/>
+        <source>10</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="147"/>
+        <source>15</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="152"/>
+        <source>20</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="157"/>
+        <source>25</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="162"/>
+        <source>50</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="167"/>
+        <source>75</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="172"/>
+        <source>100</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="177"/>
+        <source>150</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="182"/>
+        <source>300</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="187"/>
+        <source>600</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="192"/>
+        <source>1200</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="203"/>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="209"/>
+        <source>White</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="219"/>
+        <source>Black</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="269"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="272"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="285"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_dlgimageoptions.ui" line="288"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_InsertOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="37"/>
+        <source>Insert Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="49"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="59"/>
+        <source>Rotation Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="66"/>
+        <source>Factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="76"/>
+        <source>Scale Factor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="101"/>
+        <source>Array:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="117"/>
+        <source>Number of Columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="130"/>
+        <source>Number of Rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="137"/>
+        <source>Spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="147"/>
+        <source>Column Spacing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_insertoptions.ui" line="154"/>
+        <source>Row Spacing</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LayerBox</name>
+    <message>
+        <location filename="../src/ui/qg_layerbox.cpp" line="70"/>
+        <source>- Unchanged -</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LayerDialog</name>
+    <message>
+        <location filename="../src/ui/forms/qg_layerdialog.ui" line="23"/>
+        <source>Layer Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_layerdialog.ui" line="46"/>
+        <source>Layer Name:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_layerdialog.ui" line="102"/>
+        <source>&OK</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_layerdialog.ui" line="105"/>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_layerdialog.ui" line="118"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_layerdialog.ui" line="121"/>
+        <source>Esc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_layerdialog.ui.h" line="31"/>
+        <source>Default Pen</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LayerWidget</name>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="86"/>
+        <source>Show all layers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="94"/>
+        <source>Hide all layers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="102"/>
+        <source>Add a layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="110"/>
+        <source>Remove the current layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="118"/>
+        <source>Modify layer attributes / rename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="335"/>
+        <source>Layer Menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="340"/>
+        <source>&Defreeze all Layers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="342"/>
+        <source>&Freeze all Layers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="344"/>
+        <source>&Add Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="346"/>
+        <source>&Remove Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="348"/>
+        <source>&Edit Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_layerwidget.cpp" line="350"/>
+        <source>&Toggle Visibility</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LibraryInsertOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_libraryinsertoptions.ui" line="37"/>
+        <source>Library Insert Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_libraryinsertoptions.ui" line="49"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_libraryinsertoptions.ui" line="59"/>
+        <source>Rotation Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_libraryinsertoptions.ui" line="66"/>
+        <source>Factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_libraryinsertoptions.ui" line="76"/>
+        <source>Scale Factor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LibraryWidget</name>
+    <message>
+        <location filename="../src/ui/forms/qg_librarywidget.ui" line="17"/>
+        <source>Library Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_librarywidget.ui" line="53"/>
+        <source>Directories</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_librarywidget.ui" line="118"/>
+        <source>Insert</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineAngleOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_lineangleoptions.ui" line="37"/>
+        <source>Line Angle Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineangleoptions.ui" line="51"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineangleoptions.ui" line="69"/>
+        <source>Line angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineangleoptions.ui" line="84"/>
+        <source>Length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineangleoptions.ui" line="102"/>
+        <source>Length of line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineangleoptions.ui" line="109"/>
+        <source>Snap Point:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineangleoptions.ui" line="123"/>
+        <source>Start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineangleoptions.ui" line="128"/>
+        <source>Middle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineangleoptions.ui" line="133"/>
+        <source>End</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineBisectorOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_linebisectoroptions.ui" line="37"/>
+        <source>Line Bisector Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linebisectoroptions.ui" line="54"/>
+        <source>Length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linebisectoroptions.ui" line="64"/>
+        <source>Length of bisector</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linebisectoroptions.ui" line="71"/>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linebisectoroptions.ui" line="84"/>
+        <source>Number of bisectors to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_lineoptions.ui" line="37"/>
+        <source>Line Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineoptions.ui" line="46"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineoptions.ui" line="53"/>
+        <source>Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineParallelOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_lineparalleloptions.ui" line="37"/>
+        <source>Line Parallel Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineparalleloptions.ui" line="54"/>
+        <source>Distance:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineparalleloptions.ui" line="72"/>
+        <source>Distance to original entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineparalleloptions.ui" line="87"/>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineparalleloptions.ui" line="100"/>
+        <source>Number of parallels to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineParallelThroughOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_lineparallelthroughoptions.ui" line="37"/>
+        <source>Line Parallel Through Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineparallelthroughoptions.ui" line="54"/>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_lineparallelthroughoptions.ui" line="67"/>
+        <source>Number of parallels to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LinePolygon2Options</name>
+    <message>
+        <location filename="../src/ui/forms/qg_linepolygon2options.ui" line="37"/>
+        <source>Polygon Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linepolygon2options.ui" line="54"/>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linepolygon2options.ui" line="70"/>
+        <source>Number of edges</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LinePolygonOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_linepolygonoptions.ui" line="37"/>
+        <source>Polygon Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linepolygonoptions.ui" line="54"/>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linepolygonoptions.ui" line="70"/>
+        <source>Number of edges</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineRelAngleOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_linerelangleoptions.ui" line="37"/>
+        <source>Line Relative Angle Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linerelangleoptions.ui" line="54"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linerelangleoptions.ui" line="72"/>
+        <source>Line angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linerelangleoptions.ui" line="87"/>
+        <source>Length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_linerelangleoptions.ui" line="105"/>
+        <source>Length of line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineTypeBox</name>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="75"/>
+        <source>- Unchanged -</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="241"/>
+        <source>By Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="80"/>
+        <source>By Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
+        <source>No Pen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
+        <source>Continuous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
+        <source>Dot</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
+        <source>Dot (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
+        <source>Dot (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
+        <source>Dash</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
+        <source>Dash (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
+        <source>Dash (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
+        <source>Dash Dot</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
+        <source>Dash Dot (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
+        <source>Dash Dot (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
+        <source>Divide</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
+        <source>Divide (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
+        <source>Divide (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
+        <source>Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
+        <source>Center (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
+        <source>Center (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
+        <source>Border</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
+        <source>Border (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="101"/>
+        <source>Border (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_MouseWidget</name>
+    <message>
+        <location filename="../src/ui/forms/qg_mousewidget.ui" line="32"/>
+        <source>Mouse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_mousewidget.ui" line="67"/>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_mousewidget.ui" line="109"/>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_mousewidget.ui" line="122"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_MoveRotateOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_moverotateoptions.ui" line="37"/>
+        <source>Move Rotate Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_moverotateoptions.ui" line="46"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_PolylineOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="37"/>
+        <source>Polyline Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="46"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="53"/>
+        <source>Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="69"/>
+        <source>Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="74"/>
+        <source>Tangential</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="79"/>
+        <source>Tan Radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="84"/>
+        <source>Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="92"/>
+        <source>Radius:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="108"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="148"/>
+        <source>Clockwise</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_polylineoptions.ui" line="170"/>
+        <source>Counter Clockwise</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_PrintPreviewOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_printpreviewoptions.ui" line="26"/>
+        <source>Print Preview Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_printpreviewoptions.ui" line="63"/>
+        <source>Toggle Black / White mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_printpreviewoptions.ui" line="86"/>
+        <source>Center to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_printpreviewoptions.ui" line="106"/>
+        <source>Fit to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_RoundOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_roundoptions.ui" line="37"/>
+        <source>Round Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_roundoptions.ui" line="49"/>
+        <source>Trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_roundoptions.ui" line="52"/>
+        <source>Check to trim both edges to the rounding</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_roundoptions.ui" line="77"/>
+        <source>Radius:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_SelectionWidget</name>
+    <message>
+        <location filename="../src/ui/forms/qg_selectionwidget.ui" line="37"/>
+        <source>Selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_selectionwidget.ui" line="61"/>
+        <source>Selected Entities:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_selectionwidget.ui" line="77"/>
+        <source>0</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_SnapDistOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_snapdistoptions.ui" line="37"/>
+        <source>Snap Distance Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_snapdistoptions.ui" line="46"/>
+        <source>Distance:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_SplineOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_splineoptions.ui" line="37"/>
+        <source>Spline Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_splineoptions.ui" line="54"/>
+        <source>Degree:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_splineoptions.ui" line="73"/>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_splineoptions.ui" line="78"/>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_splineoptions.ui" line="83"/>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_splineoptions.ui" line="91"/>
+        <source>Closed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_splineoptions.ui" line="106"/>
+        <source>Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_TextOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_textoptions.ui" line="37"/>
+        <source>Text Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_textoptions.ui" line="49"/>
+        <source>Text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_textoptions.ui" line="89"/>
+        <source>Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_TrimAmountOptions</name>
+    <message>
+        <location filename="../src/ui/forms/qg_trimamountoptions.ui" line="37"/>
+        <source>Trim Amount Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_trimamountoptions.ui" line="40"/>
+        <source>Distance. Negative values for trimming, positive values for extending.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_trimamountoptions.ui" line="49"/>
+        <source>Amount:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_WidgetPen</name>
+    <message>
+        <location filename="../src/ui/forms/qg_widgetpen.ui" line="26"/>
+        <location filename="../src/ui/forms/qg_widgetpen.ui" line="38"/>
+        <source>Pen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_widgetpen.ui" line="66"/>
+        <source>Line type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_widgetpen.ui" line="98"/>
+        <source>Width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_widgetpen.ui" line="120"/>
+        <source>Color:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_WidthBox</name>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="73"/>
+        <source>- Unchanged -</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="76"/>
+        <location filename="../src/ui/qg_widthbox.cpp" line="283"/>
+        <source>By Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="77"/>
+        <source>By Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="79"/>
+        <source>Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="80"/>
+        <source>0.00mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="81"/>
+        <source>0.05mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="82"/>
+        <source>0.09mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="83"/>
+        <source>0.13mm (ISO)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="84"/>
+        <source>0.15mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="85"/>
+        <source>0.18mm (ISO)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="86"/>
+        <source>0.20mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="87"/>
+        <source>0.25mm (ISO)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="88"/>
+        <source>0.30mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="89"/>
+        <source>0.35mm (ISO)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="90"/>
+        <source>0.40mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="91"/>
+        <source>0.50mm (ISO)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="92"/>
+        <source>0.53mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="93"/>
+        <source>0.60mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="94"/>
+        <source>0.70mm (ISO)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="95"/>
+        <source>0.80mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="96"/>
+        <source>0.90mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="97"/>
+        <source>1.00mm (ISO)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="98"/>
+        <source>1.06mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="99"/>
+        <source>1.20mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="100"/>
+        <source>1.40mm (ISO)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="101"/>
+        <source>1.58mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="102"/>
+        <source>2.00mm (ISO)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_widthbox.cpp" line="103"/>
+        <source>2.11mm</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QMessageBox</name>
+    <message>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2135"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2204"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2241"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2276"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="140"/>
+        <source>Warning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_layerdialog.ui.h" line="49"/>
+        <source>Layer Properties</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_layerdialog.ui.h" line="50"/>
+        <source>Layer with a name "%1" already exists. Please specify a different name.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="226"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
+        <source>Remove Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="227"/>
+        <source>Layer "%1" and all entities on it will be removed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="238"/>
+        <source>Layer "%1" can never be removed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="283"/>
+        <source>Layer Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="398"/>
+        <source>Remove Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="399"/>
+        <source>Block "%1" and all its entities will be removed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="179"/>
+        <source>None</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="182"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="260"/>
+        <source>Inch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="185"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="262"/>
+        <source>Foot</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="188"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="264"/>
+        <source>Mile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="191"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="266"/>
+        <source>Millimeter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="194"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="268"/>
+        <source>Centimeter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="197"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="270"/>
+        <source>Meter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="200"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="272"/>
+        <source>Kilometer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="203"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="274"/>
+        <source>Microinch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="206"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="276"/>
+        <source>Mil</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="209"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="278"/>
+        <source>Yard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="212"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="280"/>
+        <source>Angstrom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="215"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="282"/>
+        <source>Nanometer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="218"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="284"/>
+        <source>Micron</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="221"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="286"/>
+        <source>Decimeter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="224"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="288"/>
+        <source>Decameter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="227"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="290"/>
+        <source>Hectometer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="230"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="292"/>
+        <source>Gigameter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="233"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="294"/>
+        <source>Astro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="236"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="296"/>
+        <source>Lightyear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lib/engine/rs_units.cpp" line="239"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="298"/>
+        <source>Parsec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="698"/>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="702"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="719"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="736"/>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="715"/>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="732"/>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/main.cpp" line="185"/>
+        <source>Loading..</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/main.cpp" line="211"/>
+        <source>Loading...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/main.cpp" line="226"/>
+        <source>Loading File %1..</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="561"/>
+        <source>All Image Files (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="562"/>
+        <source>All Files (*.*)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="569"/>
+        <source>Open Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1733"/>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1735"/>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1737"/>
+        <source>Graphics Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1739"/>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1741"/>
+        <source>Portable Bit Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1743"/>
+        <source>Portable Grey Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1745"/>
+        <source>Portable Network Graphic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1747"/>
+        <source>Portable Pixel Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1749"/>
+        <source>X Bitmap Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1751"/>
+        <source>X Pixel Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_filedialog.cpp" line="68"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="107"/>
+        <source>Save Drawing As</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
+        <source>%1 already exists.
+Do you want to replace it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_filedialog.cpp" line="173"/>
+        <source>Drawing Exchange %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_filedialog.cpp" line="174"/>
+        <source>QCad 1.x file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_filedialog.cpp" line="175"/>
+        <source>Font %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_filedialog.cpp" line="193"/>
+        <source>Open Drawing</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksAdd</name>
+    <message>
+        <location filename="../src/actions/rs_actionblocksadd.cpp" line="42"/>
+        <source>&Add Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksAttributes</name>
+    <message>
+        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="45"/>
+        <source>&Rename Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksCreate</name>
+    <message>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="54"/>
+        <source>&Create Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="162"/>
+        <source>Specify reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="163"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksEdit</name>
+    <message>
+        <location filename="../src/actions/rs_actionblocksedit.cpp" line="42"/>
+        <source>&Edit Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksExplode</name>
+    <message>
+        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="48"/>
+        <source>&Explode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksFreezeAll</name>
+    <message>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="49"/>
+        <source>&Freeze all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="55"/>
+        <source>&Defreeze all</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksInsert</name>
+    <message>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="50"/>
+        <source>&Insert Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="234"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="247"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="260"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="313"/>
+        <source>Specify reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="314"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="317"/>
+        <source>Enter angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="321"/>
+        <source>Enter factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="325"/>
+        <source>Enter columns:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="329"/>
+        <source>Enter rows:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="333"/>
+        <source>Enter column spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="337"/>
+        <source>Enter row spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksRemove</name>
+    <message>
+        <location filename="../src/actions/rs_actionblocksremove.cpp" line="43"/>
+        <source>&Remove Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksToggleView</name>
+    <message>
+        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="47"/>
+        <source>Toggle Block Visibility</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDefault</name>
+    <message>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
+        <source>Choose second edge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="358"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimAligned</name>
+    <message>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="51"/>
+        <source>&Aligned</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="267"/>
+        <source>Specify first extension line origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="268"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="272"/>
+        <source>Specify second extension line origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="273"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="278"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="277"/>
+        <source>Specify dimension line location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="281"/>
+        <source>Enter dimension text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimAngular</name>
+    <message>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="48"/>
+        <source>&Angular</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="289"/>
+        <source>Select first line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="294"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="293"/>
+        <source>Select second line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
+        <source>Specify dimension arc line location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="301"/>
+        <source>Enter dimension text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimDiametric</name>
+    <message>
+        <location filename="../src/actions/rs_actiondimdiametric.cpp" line="46"/>
+        <source>&Diametric</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimdiametric.cpp" line="177"/>
+        <source>Not a circle or arc entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimdiametric.cpp" line="258"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimdiametric.cpp" line="286"/>
+        <source>Select arc or circle entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimdiametric.cpp" line="287"/>
+        <location filename="../src/actions/rs_actiondimdiametric.cpp" line="291"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimdiametric.cpp" line="291"/>
+        <source>Specify dimension line location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimdiametric.cpp" line="294"/>
+        <source>Enter dimension text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimLeader</name>
+    <message>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="51"/>
+        <source>&Leader</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="234"/>
+        <source>Specify target point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="235"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="238"/>
+        <source>Specify next point</source>
+        <translation type="unfinished">Vendos një pikë</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="239"/>
+        <source>Finish</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimLinear</name>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="69"/>
+        <source>&Linear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="76"/>
+        <source>&Horizontal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="83"/>
+        <source>&Vertical</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="263"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="315"/>
+        <source>Specify first extension line origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="316"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="320"/>
+        <source>Specify second extension line origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="321"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="325"/>
+        <source>Specify dimension line location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="329"/>
+        <source>Enter dimension text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="333"/>
+        <source>Enter dimension line angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimRadial</name>
+    <message>
+        <location filename="../src/actions/rs_actiondimradial.cpp" line="46"/>
+        <source>&Radial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimradial.cpp" line="172"/>
+        <source>Not a circle or arc entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimradial.cpp" line="252"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimradial.cpp" line="280"/>
+        <source>Select arc or circle entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimradial.cpp" line="281"/>
+        <location filename="../src/actions/rs_actiondimradial.cpp" line="286"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimradial.cpp" line="285"/>
+        <source>Specify dimension line position or enter angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondimradial.cpp" line="289"/>
+        <source>Enter dimension text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawArc</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="50"/>
+        <source>&Center, Point, Angles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="309"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="324"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="345"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="340"/>
+        <source>Not a valid chord length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
+        <source>Specify center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
+        <source>Specify radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="381"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="385"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="389"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
+        <source>Specify start angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
+        <source>Specify end angle or [Angle/chord Length]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
+        <source>Specify included angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
+        <source>Specify chord length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawArc3P</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="52"/>
+        <source>&3 Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="101"/>
+        <source>Invalid arc data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="229"/>
+        <source>Specify startpoint or [Center]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="230"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
+        <source>Specify second point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
+        <source>Specify endpoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawArcTangential</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="52"/>
+        <source>Arc: Tangential</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
+        <source>Specify base entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="259"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
+        <source>Specify end angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawCircle</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="53"/>
+        <source>Center, &Point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="188"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
+        <source>Specify center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
+        <source>Specify radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawCircle2P</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="50"/>
+        <source>2 Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="100"/>
+        <source>Invalid Circle data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <source>Specify first point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
+        <source>Specify second point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawCircle3P</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="50"/>
+        <source>3 Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="100"/>
+        <source>Invalid circle data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="210"/>
+        <source>Specify first point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="214"/>
+        <source>Specify second point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="219"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="218"/>
+        <source>Specify third point</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawCircleCR</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="52"/>
+        <source>Center, &Radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="171"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
+        <source>Specify circle center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="206"/>
+        <source>Specify circle radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="207"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawEllipseAxis</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="65"/>
+        <source>&Ellipse Arc (Axis)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="70"/>
+        <source>&Ellipse (Axis)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="319"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="333"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="347"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="371"/>
+        <source>Specify ellipse center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="376"/>
+        <source>Specify endpoint of major axis</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="377"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="393"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="382"/>
+        <source>Specify endpoint or length of minor axis:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="387"/>
+        <source>Specify start angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="392"/>
+        <source>Specify end angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawHatch</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="47"/>
+        <source>&Hatch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="157"/>
+        <source>Hatch created successfully.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="162"/>
+        <source>Invalid hatch area. Please check that the entities chosen form one or more closed contours.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawImage</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="51"/>
+        <source>&Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="212"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="260"/>
+        <source>Specify reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="261"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="264"/>
+        <source>Enter angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="268"/>
+        <source>Enter factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLine</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="55"/>
+        <source>&2 Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="236"/>
+        <source>Specify first point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="237"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
+        <source>Specify next point or [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="253"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="257"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="256"/>
+        <source>Specify next point</source>
+        <translation type="unfinished">Vendos një pikë</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="306"/>
+        <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="321"/>
+        <source>Cannot undo: Not enough entities defined yet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineAngle</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="62"/>
+        <source>&Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="68"/>
+        <source>&Horizontal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="74"/>
+        <source>Vertical</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="229"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="264"/>
+        <source>Specify position</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <source>Enter angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
+        <source>Enter length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineBisector</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="54"/>
+        <source>Bisector</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="215"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="250"/>
+        <source>Select first line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="254"/>
+        <source>Select second line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="263"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="258"/>
+        <source>Enter bisector length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="262"/>
+        <source>Enter number of bisectors:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineFree</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="51"/>
+        <source>&Freehand Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
+        <source>Click and drag to draw a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineHorVert</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="53"/>
+        <source>Vertical</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="150"/>
+        <source>Specify first point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="154"/>
+        <source>Specify second point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="155"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineParallel</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="57"/>
+        <source>Parallel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="60"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="63"/>
+        <source>Concentric</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="132"/>
+        <source>Specify Distance <%1> or select entity or [%2]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="138"/>
+        <source>Enter number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="225"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="219"/>
+        <source>Not a valid number. Try 1..99</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineParallelThrough</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="52"/>
+        <source>Parallel through point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
+        <source>Select entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="177"/>
+        <source>Specify through point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="237"/>
+        <source>Not a valid number. Try 1..99</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="241"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLinePolygon</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="50"/>
+        <source>Pol&ygon (Cen,Cor)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="143"/>
+        <source>Specify center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="148"/>
+        <source>Specify a corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="152"/>
+        <source>Enter number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="213"/>
+        <source>Not a valid number. Try 1..9999</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="219"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLinePolygon2</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="50"/>
+        <source>Polygo&n (Cor,Cor)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="143"/>
+        <source>Specify first corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="144"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="148"/>
+        <source>Specify second corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="214"/>
+        <source>Not a valid number. Try 1..9999</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="220"/>
+        <source>Not a valid expression.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineRectangle</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="50"/>
+        <source>Rectangle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
+        <source>Specify first corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="200"/>
+        <source>Specify second corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="201"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineRelAngle</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="58"/>
+        <source>Relative angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="64"/>
+        <source>Orthogonal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="275"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="315"/>
+        <source>Select base entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="319"/>
+        <source>Specify position</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="320"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineTangent1</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="49"/>
+        <source>Tangent (P,C)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="180"/>
+        <source>Specify point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="181"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="184"/>
+        <source>Select circle, arc or ellipse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="185"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineTangent2</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="48"/>
+        <source>Tangent (C,C)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="164"/>
+        <source>Select first circle or arc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="165"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="168"/>
+        <source>Select second circle or arc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="169"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawPoint</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="45"/>
+        <source>&Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
+        <source>Specify location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawPolyline</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
+        <source>&Polyline</source>
+        <translation type="unfinished">&Polivizë</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="53"/>
+        <source>Draw polylines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
+        <source>Specify first point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="356"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
+        <source>Specify next point or [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="376"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
+        <source>Specify next point</source>
+        <translation type="unfinished">Vendos një pikë</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="430"/>
+        <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="460"/>
+        <source>Undo disallowed due a fatal bug somewhere. Sorry.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="463"/>
+        <source>Cannot undo: Not enough entities defined yet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawSpline</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="52"/>
+        <source>&Spline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="265"/>
+        <source>Specify first control point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="266"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="281"/>
+        <source>Specify next control point or [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="282"/>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="286"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="285"/>
+        <source>Specify next control point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="368"/>
+        <source>Cannot undo: Not enough entities defined yet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawText</name>
+    <message>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="49"/>
+        <source>&Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="276"/>
+        <source>Specify insertion point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="277"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="280"/>
+        <source>Enter text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="281"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionEditCopy</name>
+    <message>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="59"/>
+        <source>&Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="69"/>
+        <source>Cu&t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="134"/>
+        <source>Specify reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="135"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionEditPaste</name>
+    <message>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="52"/>
+        <source>&Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="135"/>
+        <source>Set reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="136"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionEditUndo</name>
+    <message>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="56"/>
+        <source>&Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="66"/>
+        <source>&Redo</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionFileNew</name>
+    <message>
+        <location filename="../src/actions/rs_actionfilenew.cpp" line="39"/>
+        <source>&New...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionFileOpen</name>
+    <message>
+        <location filename="../src/actions/rs_actionfileopen.cpp" line="40"/>
+        <source>&Open...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionFileSave</name>
+    <message>
+        <location filename="../src/actions/rs_actionfilesave.cpp" line="41"/>
+        <source>&Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionFileSaveAs</name>
+    <message>
+        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="39"/>
+        <source>Save &as...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoAngle</name>
+    <message>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="46"/>
+        <source>Angle between two lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="78"/>
+        <source>Angle: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="82"/>
+        <source>Lines are parallel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
+        <source>Specify first line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="148"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
+        <source>Specify second line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="153"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoArea</name>
+    <message>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="45"/>
+        <source>Polygonal Area</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="73"/>
+        <source>Area: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="74"/>
+        <source>Circumference: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="192"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="207"/>
+        <source>Point: %1/%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="235"/>
+        <source>Specify first point of polygon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="236"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="240"/>
+        <source>Specify next point of polygon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="241"/>
+        <source>Terminate</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoDist</name>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="42"/>
+        <source>&Distance Point to Point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="64"/>
+        <source>Distance: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
+        <source>Specify first point of distance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="152"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
+        <source>Specify second point of distance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="157"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoDist2</name>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="42"/>
+        <source>&Distance Entity to Point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="62"/>
+        <source>Distance: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
+        <source>Specify entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="138"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
+        <source>Specify point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="143"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoInside</name>
+    <message>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="61"/>
+        <source>Point inside contour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="70"/>
+        <source>Point is inside selected contour.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="72"/>
+        <source>Point is outside selected contour.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="103"/>
+        <source>Specify point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="104"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoTotalLength</name>
+    <message>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="41"/>
+        <source>&Total length of selected entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="75"/>
+        <source>Total Length of selected entities: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="77"/>
+        <source>At least one of the selected entities cannot be measured.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersAdd</name>
+    <message>
+        <location filename="../src/actions/rs_actionlayersadd.cpp" line="41"/>
+        <source>Add Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersEdit</name>
+    <message>
+        <location filename="../src/actions/rs_actionlayersedit.cpp" line="44"/>
+        <source>&Edit Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersFreezeAll</name>
+    <message>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="48"/>
+        <source>&Freeze all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="54"/>
+        <source>&Defreeze all</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersRemove</name>
+    <message>
+        <location filename="../src/actions/rs_actionlayersremove.cpp" line="42"/>
+        <source>Remove Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersToggleLock</name>
+    <message>
+        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="47"/>
+        <source>Toggle Layer Lock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersToggleView</name>
+    <message>
+        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="43"/>
+        <source>&Toggle Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLibraryInsert</name>
+    <message>
+        <location filename="../src/actions/rs_actionlibraryinsert.cpp" line="52"/>
+        <source>Insert Library Object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionlibraryinsert.cpp" line="78"/>
+        <source>Cannot open file '%1'</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionlibraryinsert.cpp" line="194"/>
+        <location filename="../src/actions/rs_actionlibraryinsert.cpp" line="207"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionlibraryinsert.cpp" line="256"/>
+        <source>Specify reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionlibraryinsert.cpp" line="257"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionlibraryinsert.cpp" line="260"/>
+        <source>Enter angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionlibraryinsert.cpp" line="264"/>
+        <source>Enter factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLockRelativeZero</name>
+    <message>
+        <location filename="../src/actions/rs_actionlockrelativezero.cpp" line="47"/>
+        <source>(Un-)&Lock Relative Zero</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyAttributes</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="45"/>
+        <source>&Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyBevel</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="50"/>
+        <source>&Bevel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="191"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="255"/>
+        <source>Select first entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="259"/>
+        <source>Select second entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="268"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="263"/>
+        <source>Enter length 1:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="267"/>
+        <source>Enter length 2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyCut</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="46"/>
+        <source>&Divide</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="125"/>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="114"/>
+        <source>Entity must be a line, arc, circle or ellipse.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
+        <source>Cutting point is invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="130"/>
+        <source>Cutting point is not on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="153"/>
+        <source>Specify entity to cut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="157"/>
+        <source>Specify cutting point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="158"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyDelete</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydelete.cpp" line="43"/>
+        <source>&Delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyDeleteFree</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="46"/>
+        <source>Delete Freehand</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="97"/>
+        <source>Entities not in the same polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="100"/>
+        <source>Parent of second entity is not a polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="103"/>
+        <source>Parent of second entity is NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="106"/>
+        <source>One of the chosen entities is NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="129"/>
+        <source>Parent of first entity is not a polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="133"/>
+        <source>Parent of first entity is NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="137"/>
+        <source>First entity is NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="149"/>
+        <source>Second entity is NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="162"/>
+        <source>Specify first break point on a polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="163"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
+        <source>Specify second break point on the same polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="168"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyDeleteQuick</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletequick.cpp" line="47"/>
+        <source>&Delete selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletequick.cpp" line="100"/>
+        <source>Pick entity to delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifydeletequick.cpp" line="101"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyEntity</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="45"/>
+        <source>&Properties</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyExplodeText</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="48"/>
+        <source>&Explode Text into Letters</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyMirror</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="42"/>
+        <source>&Mirror</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="165"/>
+        <source>Specify first point of mirror line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="166"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="170"/>
+        <source>Specify second point of mirror line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="171"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyMove</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="43"/>
+        <source>&Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="149"/>
+        <source>Specify reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="150"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="153"/>
+        <source>Specify target point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="154"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyMoveRotate</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="45"/>
+        <source>M&ove and Rotate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="174"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="225"/>
+        <source>Specify reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="229"/>
+        <source>Specify target point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="234"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="233"/>
+        <source>Enter rotation angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyRotate</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="44"/>
+        <source>&Rotate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="128"/>
+        <source>Specify reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="129"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyRotate2</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="44"/>
+        <source>Rotate T&wo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="163"/>
+        <source>Specify absolute reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="164"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="167"/>
+        <source>Specify relative reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="168"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyRound</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="49"/>
+        <source>&Round</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="224"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="295"/>
+        <source>Specify first entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="299"/>
+        <source>Specify second entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="303"/>
+        <source>Enter radius:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="304"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyScale</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="43"/>
+        <source>&Scale</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="121"/>
+        <source>Specify reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="122"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyStretch</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="49"/>
+        <source>&Stretch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="198"/>
+        <source>Specify first corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="202"/>
+        <source>Specify second corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="211"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="206"/>
+        <source>Specify reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="210"/>
+        <source>Specify target point</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyTrim</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="57"/>
+        <source>&Trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="64"/>
+        <source>&Trim Two</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
+        <source>Select first trim entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="184"/>
+        <source>Select limiting entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="185"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="194"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
+        <source>Select second trim entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="193"/>
+        <source>Select entity to trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyTrimAmount</name>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="49"/>
+        <source>&Lengthen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="96"/>
+        <source>No entity found. </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
+        <source>The chosen Entity is in a block. Please edit the block.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="103"/>
+        <source>The chosen Entity is not an atomic entity or cannot be trimmed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="135"/>
+        <source>Not a valid expression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="182"/>
+        <source>Select entity to trim or enter distance:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="183"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionOptionsDrawing</name>
+    <message>
+        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="44"/>
+        <source>Current &Drawing Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineAdd</name>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="44"/>
+        <source>&Add node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="46"/>
+        <source>Add polyline's node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="125"/>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="111"/>
+        <source>Entity must be a polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="127"/>
+        <source>Adding point is invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="135"/>
+        <source>Adding point is not on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="163"/>
+        <source>Specify polyline to add nodes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="167"/>
+        <source>Specify adding node's point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="168"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineAppend</name>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="40"/>
+        <source>A&ppend node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="42"/>
+        <source>Append polyline's node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="94"/>
+        <source>Entity must be a polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="111"/>
+        <source>Click somewhere near the beginning or end of existing polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="184"/>
+        <source>Specify the polyline somewhere near the beginning or end point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="185"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="200"/>
+        <source>Specify next point or [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="205"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="204"/>
+        <source>Specify next point</source>
+        <translation type="unfinished">Vendos një pikë</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineDel</name>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="44"/>
+        <source>&Delete node</source>
+        <translation>&Fshijë nyjen</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="46"/>
+        <source>Delete polyline's node</source>
+        <translation>Fshijë nyjen e polivijës</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="128"/>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="113"/>
+        <source>Entity must be a polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
+        <source>Adding point is invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="133"/>
+        <source>Adding point is not on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="159"/>
+        <source>Specify polyline to delete node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="163"/>
+        <source>Specify deleting node's point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="164"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineDelBetween</name>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="44"/>
+        <source>Delete &between two nodes</source>
+        <translation>Fshijë &midis dy nyjeve</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="46"/>
+        <source>Delete between two nodes</source>
+        <translation>Fshijë midis dy nyjeve</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="112"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="137"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="150"/>
+        <source>No Entity found.</source>
+        <translation>Asnjë njësi e gjendur</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="116"/>
+        <source>Entity must be a polyline.</source>
+        <translation>Njësia duhet të jetë një polivijë</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
+        <source>Deletinging point is invalid.</source>
+        <translation>Pika e fshirë nuk është e vlefshme</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="142"/>
+        <source>Deleting point is not on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="155"/>
+        <source>Deleteinging point is not on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="182"/>
+        <source>Specify polyline to delete between two nodes</source>
+        <translation>Zgjidh polivijën për të fshirë mes dy nyjeve</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="186"/>
+        <source>Specify first node</source>
+        <translation>Zgjidh nyjen e parë</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="191"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="190"/>
+        <source>Specify second node</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineEquidistant</name>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
+        <source>Create &Equidistant Polylines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="46"/>
+        <source>Create Equidistant Polylines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="200"/>
+        <source>No Entity found.</source>
+        <translation>Asnjë njësi e gjendur.</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="204"/>
+        <source>Entity must be a polyline.</source>
+        <translation>Njësia duhet të jetë polivijë.</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="258"/>
+        <source>Choose the original polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="259"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineSegment</name>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="43"/>
+        <source>Create Polyline from Existing &Segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="45"/>
+        <source>Create Polyline from Existing Segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="256"/>
+        <source>Entity must be a line or arc.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="295"/>
+        <source>Choose one of the segments on the original polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="296"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineTrim</name>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="44"/>
+        <source>&Trim segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="46"/>
+        <source>Trim polyline's segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="146"/>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="113"/>
+        <source>Entity must be a polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="129"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="148"/>
+        <source>Specifying point is invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="151"/>
+        <source>No Segment found on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
+        <source>Specify polyline to trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
+        <source>Specify first segment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="189"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="193"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="192"/>
+        <source>Specify second segment</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPrintPreview</name>
+    <message>
+        <location filename="../src/actions/rs_actionprintpreview.cpp" line="52"/>
+        <source>Print Pre&view</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectAll</name>
+    <message>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="46"/>
+        <source>Select &All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="52"/>
+        <source>Deselect &all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="54"/>
+        <source>Ctrl+K</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectContour</name>
+    <message>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="46"/>
+        <source>(De-)Select &Contour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="65"/>
+        <source>Entity must be an Atomic Entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectIntersected</name>
+    <message>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="55"/>
+        <source>Select Intersected Entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="59"/>
+        <source>Deselect Intersected Entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
+        <source>Choose first point of intersection line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
+        <source>Choose second point of intersection line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectInvert</name>
+    <message>
+        <location filename="../src/actions/rs_actionselectinvert.cpp" line="41"/>
+        <source>Invert Selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectLayer</name>
+    <message>
+        <location filename="../src/actions/rs_actionselectlayer.cpp" line="44"/>
+        <source>(De-)Select Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectSingle</name>
+    <message>
+        <location filename="../src/actions/rs_actionselectsingle.cpp" line="44"/>
+        <source>Select Entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectWindow</name>
+    <message>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="55"/>
+        <source>Select Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="59"/>
+        <source>Deselect Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
+        <source>Choose first edge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
+        <source>Choose second edge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSetRelativeZero</name>
+    <message>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="44"/>
+        <source>Set Relative Zero</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
+        <source>Set relative Zero</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSnapIntersectionManual</name>
+    <message>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="52"/>
+        <source>I&ntersection Manually</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="180"/>
+        <source>Select first entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="185"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="184"/>
+        <source>Select second entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionToolRegenerateDimensions</name>
+    <message>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="47"/>
+        <source>Regenerate Dimension Entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="82"/>
+        <source>Regenerated %1 dimension entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="84"/>
+        <source>No dimension entities found</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomAuto</name>
+    <message>
+        <location filename="../src/actions/rs_actionzoomauto.cpp" line="49"/>
+        <source>&Auto Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomIn</name>
+    <message>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="56"/>
+        <source>Zoom &In</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="66"/>
+        <source>Zoom &Out</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomPan</name>
+    <message>
+        <location filename="../src/actions/rs_actionzoompan.cpp" line="40"/>
+        <source>&Pan Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomPrevious</name>
+    <message>
+        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="45"/>
+        <source>&Previous View</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomRedraw</name>
+    <message>
+        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="47"/>
+        <source>&Redraw</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomWindow</name>
+    <message>
+        <location filename="../src/actions/rs_actionzoomwindow.cpp" line="52"/>
+        <source>&Window Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionzoomwindow.cpp" line="155"/>
+        <source>Specify first edge</source>
+        <translation>Zgjidh këndin e parë</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionzoomwindow.cpp" line="155"/>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionzoomwindow.cpp" line="158"/>
+        <source>Specify second edge</source>
+        <translation>Zgjidh këndin e dytë</translation>
+    </message>
+    <message>
+        <location filename="../src/actions/rs_actionzoomwindow.cpp" line="158"/>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_Commands</name>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="39"/>
+        <source>point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="40"/>
+        <source>po</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="42"/>
+        <source>line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="43"/>
+        <source>ln</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="44"/>
+        <source>l</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
+        <source>polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
+        <source>offset</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
+        <source>o</source>
+        <comment>offset</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
+        <source>parallel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="51"/>
+        <source>par</source>
+        <comment>parallel</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="53"/>
+        <source>arc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
+        <source>a</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
+        <source>circle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
+        <source>ci</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
+        <source>rectangle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
+        <source>rec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="61"/>
+        <source>rectang</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="416"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="532"/>
+        <source>text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="68"/>
+        <source>regen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
+        <source>rg</source>
+        <comment>zoom - redraw</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="70"/>
+        <source>zr</source>
+        <comment>zoom - redraw</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="72"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
+        <source>zw</source>
+        <comment>zoom - window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="308"/>
+        <source>za</source>
+        <comment>zoom - auto</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="314"/>
+        <source>zp</source>
+        <comment>zoom - pan</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="316"/>
+        <source>zv</source>
+        <comment>zoom - previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="81"/>
+        <source>kill</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
+        <source>k</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="422"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="542"/>
+        <source>undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="85"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="543"/>
+        <source>u</source>
+        <comment>undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
+        <source>redo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
+        <source>r</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
+        <source>da</source>
+        <comment>dimension - aligned</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="92"/>
+        <source>da</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <source>dh</source>
+        <comment>dimension - horizontal</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="95"/>
+        <source>dh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="297"/>
+        <source>dr</source>
+        <comment>dimension - linear</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
+        <source>dr</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="295"/>
+        <source>dv</source>
+        <comment>dimension - vertical</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
+        <source>dv</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="299"/>
+        <source>ld</source>
+        <comment>dimension - leader</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
+        <source>ld</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
+        <source>dimregen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
+        <source>tm</source>
+        <comment>modify - multi trim (extend)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="111"/>
+        <source>tm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="356"/>
+        <source>xt</source>
+        <comment>modify - trim (extend)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="114"/>
+        <source>xt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="358"/>
+        <source>rm</source>
+        <comment>modify - trim</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
+        <source>rm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="360"/>
+        <source>mv</source>
+        <comment>modify - move</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
+        <source>mv</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="352"/>
+        <source>ch</source>
+        <comment>modify - bevel (chamfer)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
+        <source>ch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="362"/>
+        <source>mi</source>
+        <comment>modify - mirror</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
+        <source>mi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="364"/>
+        <source>ro</source>
+        <comment>modify - rotate</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
+        <source>ro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="366"/>
+        <source>sz</source>
+        <comment>modify - scale</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
+        <source>sz</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="368"/>
+        <source>ss</source>
+        <comment>modify - stretch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
+        <source>ss</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="370"/>
+        <source>er</source>
+        <comment>modify - delete (erase)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
+        <source>er</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="372"/>
+        <source>oo</source>
+        <comment>modify - undo (oops)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
+        <source>oo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="374"/>
+        <source>uu</source>
+        <comment>modify - redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
+        <source>uu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="376"/>
+        <source>xp</source>
+        <comment>modify - explode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
+        <source>xp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
+        <source>os</source>
+        <comment>snap - none</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="151"/>
+        <source>os</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
+        <source>sg</source>
+        <comment>snap - grid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="154"/>
+        <source>sg</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="325"/>
+        <source>se</source>
+        <comment>snap - end</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
+        <source>se</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="327"/>
+        <source>si</source>
+        <comment>snap - intersection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
+        <source>si</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="329"/>
+        <source>sn</source>
+        <comment>snap - center</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="169"/>
+        <source>sn</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="331"/>
+        <source>sm</source>
+        <comment>snap - middle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
+        <source>sm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="333"/>
+        <source>sn</source>
+        <comment>snap - nearest</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="335"/>
+        <source>np</source>
+        <comment>snap - nearest point</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
+        <source>np</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
+        <source>tn</source>
+        <comment>Deselect all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="176"/>
+        <source>tn</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="236"/>
+        <source>Command: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="264"/>
+        <source>po</source>
+        <comment>point</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="266"/>
+        <source>li</source>
+        <comment>line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="268"/>
+        <source>pa</source>
+        <comment>parallel</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="270"/>
+        <source>re</source>
+        <comment>rectangle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="272"/>
+        <source>rp</source>
+        <comment>regular polygon</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="274"/>
+        <source>ci</source>
+        <comment>circle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="276"/>
+        <source>c2</source>
+        <comment>2 point circle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="278"/>
+        <source>c3</source>
+        <comment>3 point circle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="280"/>
+        <source>ar</source>
+        <comment>arc</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="282"/>
+        <source>a3</source>
+        <comment>3 point arc</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="284"/>
+        <source>ep</source>
+        <comment>ellipse</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
+        <source>tx</source>
+        <comment>text</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
+        <source>mt</source>
+        <comment>text</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
+        <source>rd</source>
+        <comment>redraw</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="310"/>
+        <source>zi</source>
+        <comment>zoom - in</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="312"/>
+        <source>zo</source>
+        <comment>zoom - out</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
+        <source>fr*</source>
+        <comment>layers - freeze all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
+        <source>th*</source>
+        <comment>layers - defreeze all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
+        <source>ex</source>
+        <comment>modify - explode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="390"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
+        <source>angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="392"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="463"/>
+        <source>close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="394"/>
+        <source>chord length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="396"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
+        <source>columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="398"/>
+        <source>columnspacing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="400"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
+        <source>factor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="402"/>
+        <source>length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="404"/>
+        <source>length1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="406"/>
+        <source>length2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="408"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="506"/>
+        <source>number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="410"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="512"/>
+        <source>radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="412"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
+        <source>rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="414"/>
+        <source>rowspacing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="418"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="537"/>
+        <source>through</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="420"/>
+        <source>trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="424"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="547"/>
+        <source>back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
+        <source>ang</source>
+        <comment>angle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="449"/>
+        <source>a</source>
+        <comment>angle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
+        <source>center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
+        <source>cen</source>
+        <comment>center</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="454"/>
+        <source>c</source>
+        <comment>center</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="458"/>
+        <source>length</source>
+        <comment>chord length</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="459"/>
+        <source>l</source>
+        <comment>chord length</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="464"/>
+        <source>c</source>
+        <comment>close</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
+        <source>cols</source>
+        <comment>columns</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="469"/>
+        <source>c</source>
+        <comment>columns</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="473"/>
+        <source>columnspacing</source>
+        <comment>columnspacing for inserts</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="474"/>
+        <source>colspacing</source>
+        <comment>columnspacing for inserts</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <source>cs</source>
+        <comment>columnspacing for inserts</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
+        <source>fact</source>
+        <comment>factor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
+        <source>f</source>
+        <comment>factor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
+        <source>help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
+        <source>?</source>
+        <comment>help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="488"/>
+        <source>length</source>
+        <comment>length</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="489"/>
+        <source>len</source>
+        <comment>length</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="490"/>
+        <source>l</source>
+        <comment>length</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="494"/>
+        <source>length1</source>
+        <comment>length1</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
+        <source>len1</source>
+        <comment>length1</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
+        <source>l1</source>
+        <comment>length1</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="500"/>
+        <source>length2</source>
+        <comment>length2</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
+        <source>len2</source>
+        <comment>length2</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
+        <source>l2</source>
+        <comment>length2</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
+        <source>num</source>
+        <comment>number</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
+        <source>n</source>
+        <comment>number</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
+        <source>r</source>
+        <comment>radius</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="517"/>
+        <source>reversed</source>
+        <comment>reversed arc</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="518"/>
+        <source>rev</source>
+        <comment>reversed arc</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
+        <source>r</source>
+        <comment>reversed arc</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
+        <source>r</source>
+        <comment>rows</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="527"/>
+        <source>rowspacing</source>
+        <comment>rowspacing for inserts</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="528"/>
+        <source>rs</source>
+        <comment>rowspacing for inserts</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="533"/>
+        <source>t</source>
+        <comment>text</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="538"/>
+        <source>t</source>
+        <comment>through</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="548"/>
+        <source>b</source>
+        <comment>back</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="561"/>
+        <source>Available commands:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/ts/librecad_sv.ts b/ts/librecad_sv.ts
new file mode 100644
index 0000000..9812e3e
--- /dev/null
+++ b/ts/librecad_sv.ts
@@ -0,0 +1,7879 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sv">
+<context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ApplicationWindow</name>
+    <message>
+        <source>&File</source>
+        <translation>&Arkiv</translation>
+    </message>
+    <message>
+        <source>&Edit</source>
+        <translation>R&edigera</translation>
+    </message>
+    <message>
+        <source>Focus on Command Line</source>
+        <translation type="obsolete">Fokusera på kommandoraden</translation>
+    </message>
+    <message>
+        <source>Focus on &Command Line</source>
+        <translation>Fokusera på &kommandorad</translation>
+    </message>
+    <message>
+        <source>&View</source>
+        <translation>&Visa</translation>
+    </message>
+    <message>
+        <source>&Select</source>
+        <translation>&Markera</translation>
+    </message>
+    <message>
+        <source>&Point</source>
+        <translation>&Punkt</translation>
+    </message>
+    <message>
+        <source>&Line</source>
+        <translation>&Linje</translation>
+    </message>
+    <message>
+        <source>&Arc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Circle</source>
+        <translation>&Cirkel</translation>
+    </message>
+    <message>
+        <source>&Ellipse</source>
+        <translation>&Ellips</translation>
+    </message>
+    <message>
+        <source>&Draw</source>
+        <translation>Ri&ta</translation>
+    </message>
+    <message>
+        <source>&Dimension</source>
+        <translation>&Dimension</translation>
+    </message>
+    <message>
+        <source>&Modify</source>
+        <translation>Än&dra</translation>
+    </message>
+    <message>
+        <source>&Snap</source>
+        <translation>Fä&st</translation>
+    </message>
+    <message>
+        <source>&Info</source>
+        <translation>&Info</translation>
+    </message>
+    <message>
+        <source>&Layer</source>
+        <translation>&Lager</translation>
+    </message>
+    <message>
+        <source>&Block</source>
+        <translation>&Block</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation>Om</translation>
+    </message>
+    <message>
+        <source>About the application</source>
+        <translation type="obsolete">Om programmet</translation>
+    </message>
+    <message>
+        <source>&Scripts</source>
+        <translation>&Skript</translation>
+    </message>
+    <message>
+        <source>&Help</source>
+        <translation>&Hjälp</translation>
+    </message>
+    <message>
+        <source>De&bugging</source>
+        <translation>Felsökn&ing</translation>
+    </message>
+    <message>
+        <source>&Cascade</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Tile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tile &Horizontally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Creating new file...</source>
+        <translation>Skapar ny fil...</translation>
+    </message>
+    <message>
+        <source>unnamed document %1</source>
+        <translation>namnlöst dokument %1</translation>
+    </message>
+    <message>
+        <source>Opening recent file...</source>
+        <translation>Öppnar tidigare fil...</translation>
+    </message>
+    <message>
+        <source>Loaded document: </source>
+        <translation>Läste in dokument: </translation>
+    </message>
+    <message>
+        <source>Opening aborted</source>
+        <translation>Öppnandet avbröts</translation>
+    </message>
+    <message>
+        <source>Printing...</source>
+        <translation>Skriver ut...</translation>
+    </message>
+    <message>
+        <source>Exiting application...</source>
+        <translation>Avslutar programmet...</translation>
+    </message>
+    <message>
+        <source>About...</source>
+        <translation>Om...</translation>
+    </message>
+    <message>
+        <source>File</source>
+        <translation type="obsolete">Arkiv</translation>
+    </message>
+    <message>
+        <source>Edit</source>
+        <translation type="obsolete">Redigera</translation>
+    </message>
+    <message>
+        <source>Vie&ws</source>
+        <translation type="obsolete">Vy&er</translation>
+    </message>
+    <message>
+        <source>Tool&bars</source>
+        <translation type="obsolete">Verktygsra&der</translation>
+    </message>
+    <message>
+        <source>View</source>
+        <translation type="obsolete">Visa</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation type="obsolete">Penna</translation>
+    </message>
+    <message>
+        <source>Tool Options</source>
+        <translation type="obsolete">Verktygsalternativ</translation>
+    </message>
+    <message>
+        <source>Layer List</source>
+        <translation>Lagerlista</translation>
+    </message>
+    <message>
+        <source>Block List</source>
+        <translation>Blocklista</translation>
+    </message>
+    <message>
+        <source>Library Browser</source>
+        <translation>Biblioteksvisare</translation>
+    </message>
+    <message>
+        <source>Print preview for %1</source>
+        <translation>Förhandsvisning av utskrift för %1</translation>
+    </message>
+    <message>
+        <source>New Drawing created.</source>
+        <translation>Ny ritning skapad.</translation>
+    </message>
+    <message>
+        <source>Saving drawing...</source>
+        <translation>Sparar ritning...</translation>
+    </message>
+    <message>
+        <source>Saved drawing: %1</source>
+        <translation>Sparade ritning: %1</translation>
+    </message>
+    <message>
+        <source>Saving drawing under new filename...</source>
+        <translation>Sparar ritning under nytt filnamn...</translation>
+    </message>
+    <message>
+        <source>Exporting drawing...</source>
+        <translation>Exporterar ritning...</translation>
+    </message>
+    <message>
+        <source>Exported: %1</source>
+        <translation>Exporterade: %1</translation>
+    </message>
+    <message>
+        <source>Exporting...</source>
+        <translation>Exporterar...</translation>
+    </message>
+    <message>
+        <source>Export complete</source>
+        <translation>Exporten är färdig</translation>
+    </message>
+    <message>
+        <source>Export failed!</source>
+        <translation>Exporten misslyckades!</translation>
+    </message>
+    <message>
+        <source>Printing complete</source>
+        <translation>Utskriften är färdig</translation>
+    </message>
+    <message>
+        <source>Command line</source>
+        <translation>Kommandorad</translation>
+    </message>
+    <message>
+        <source>Block '%1'</source>
+        <translation>Block "%1"</translation>
+    </message>
+    <message>
+        <source>Cannot open the file
+%1
+Please check the permissions.</source>
+        <translation>Kan inte öppna filen
+%1
+Kontrollera rättigheterna.</translation>
+    </message>
+    <message>
+        <source>Cannot save the file
+%1
+Please check the permissions.</source>
+        <translation>Kan inte spara filen
+%1
+Kontrollera rättigheterna.</translation>
+    </message>
+    <message>
+        <source>&Manual</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation>Ingen</translation>
+    </message>
+    <message>
+        <source>Version: %1 %2</source>
+        <translation type="obsolete">Version: %1 %2</translation>
+    </message>
+    <message>
+        <source>Modules: %1</source>
+        <translation>Moduler: %1</translation>
+    </message>
+    <message>
+        <source>&About %1</source>
+        <translation type="obsolete">&Om %1</translation>
+    </message>
+    <message>
+        <source>Date: %1</source>
+        <translation type="obsolete">Datum: %1</translation>
+    </message>
+    <message>
+        <source>This is a %1 version which terminates
+automatically after 10min. This software is
+not intended for production use. Please buy
+a full version of the application from
+%2.
+You can save your work now.</source>
+        <translation type="obsolete">Detta är en %1-version som avslutas
+automatiskt efter 10 minuter. Denna program-
+vara är inte tänkt för produktionssyfte. Köp
+en fullständig version av programmet från
+%2.
+Du kan spara ditt arbete nu.</translation>
+    </message>
+    <message>
+        <source>&Window</source>
+        <translation>&Fönster</translation>
+    </message>
+    <message>
+        <source>&Spline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Running script '%1'</source>
+        <translation>Kör skript "%1"</translation>
+    </message>
+    <message>
+        <source>Inserting block '%1'</source>
+        <translation>Infogar block "%1"</translation>
+    </message>
+    <message>
+        <source>&Polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Toolbars</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>CTRL+M</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insert Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Auto-saving drawing...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Auto-saved drawing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cannot auto-save the file
+%1
+Please check the permissions.
+Auto-save disabled.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Version: %1</source>
+        <translation type="unfinished">Version: %1</translation>
+    </message>
+    <message>
+        <source>SCM Revision: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Compiled on: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Program Icons Supplied by</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Splash and Logo supplied by</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Main Website : </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QC_MDIWindow</name>
+    <message>
+        <source>Do you really want to close the file
+%1?</source>
+        <translation>Vill du verkligen stänga filen
+%1?</translation>
+    </message>
+    <message>
+        <source>Do you really want to close the drawing?</source>
+        <translation>Vill du verkligen stänga ritningen?</translation>
+    </message>
+    <message>
+        <source>Closing Drawing</source>
+        <translation>Stänger ritning</translation>
+    </message>
+</context>
+<context>
+    <name>QG_ActionFactory</name>
+    <message>
+        <source>&Close</source>
+        <translation>S&täng</translation>
+    </message>
+    <message>
+        <source>Quits the application</source>
+        <translation type="obsolete">Avslutar programmet</translation>
+    </message>
+    <message>
+        <source>&Free</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Endpoints</source>
+        <translation type="obsolete">Slutpunkter</translation>
+    </message>
+    <message>
+        <source>&Endpoints</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&On Entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Middle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Distance from Endpoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Intersection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restrict &Nothing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restrict &Orthogonally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restrict &Horizontally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>General Application Preferences</source>
+        <translation type="obsolete">Allmänna programinställningar</translation>
+    </message>
+    <message>
+        <source>&Application Preferences</source>
+        <translation>&Programinställningar</translation>
+    </message>
+    <message>
+        <source>Statusbar</source>
+        <translation type="obsolete">Statusrad</translation>
+    </message>
+    <message>
+        <source>&Statusbar</source>
+        <translation>&Statusrad</translation>
+    </message>
+    <message>
+        <source>&Draft</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open IDE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Run Script..</source>
+        <translation>Kör skript..</translation>
+    </message>
+    <message>
+        <source>&Run Script..</source>
+        <translation type="obsolete">&Kör skript..</translation>
+    </message>
+    <message>
+        <source>Runs a script</source>
+        <translation type="obsolete">Kör ett skript</translation>
+    </message>
+    <message>
+        <source>&Preferences</source>
+        <translation>&Inställningar</translation>
+    </message>
+    <message>
+        <source>&Export...</source>
+        <translation>&Exportera...</translation>
+    </message>
+    <message>
+        <source>&Print...</source>
+        <translation>Skriv &ut...</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation type="obsolete">Avsluta</translation>
+    </message>
+    <message>
+        <source>&Quit</source>
+        <translation>A&vsluta</translation>
+    </message>
+    <message>
+        <source>CTRL-G</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restrict&Vertically</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Selection pointer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ArcOptions</name>
+    <message>
+        <source>Arc Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Clockwise</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Counter Clockwise</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ArcTangentialOptions</name>
+    <message>
+        <source>Tangential Arc Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Radius:</source>
+        <translation>Radie:</translation>
+    </message>
+</context>
+<context>
+    <name>QG_BevelOptions</name>
+    <message>
+        <source>Bevel Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check to trim both entities to the bevel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Length 1:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Length 2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_BlockDialog</name>
+    <message>
+        <source>Block Settings</source>
+        <translation>Blockinställningar</translation>
+    </message>
+    <message>
+        <source>Block Name:</source>
+        <translation>Blocknamn:</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Renaming Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Could not name block. A block named "%1" already exists.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_BlockWidget</name>
+    <message>
+        <source>Add a block</source>
+        <translation>Lägg till ett block</translation>
+    </message>
+    <message>
+        <source>Remove the active block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rename the active block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit the active block
+in a separate window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insert the active block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Block Menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Defreeze all Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Freeze all Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Add Block</source>
+        <translation type="unfinished">&Lägg till block</translation>
+    </message>
+    <message>
+        <source>&Remove Block</source>
+        <translation type="unfinished">&Ta bort block</translation>
+    </message>
+    <message>
+        <source>&Edit Block</source>
+        <translation type="unfinished">R&edigera block</translation>
+    </message>
+    <message>
+        <source>&Toggle Visibility</source>
+        <translation type="unfinished">&Växla synlighet</translation>
+    </message>
+    <message>
+        <source>Show all blocks</source>
+        <translation>Visa alla block</translation>
+    </message>
+    <message>
+        <source>Hide all blocks</source>
+        <translation>Dölj alla block</translation>
+    </message>
+    <message>
+        <source>&Rename Block</source>
+        <translation>&Byt namn på block</translation>
+    </message>
+    <message>
+        <source>&Insert Block</source>
+        <translation>&Infoga block</translation>
+    </message>
+    <message>
+        <source>&Create New Block</source>
+        <translation>&Skapa nytt block</translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBar</name>
+    <message>
+        <source>CAD Tools</source>
+        <translation>CAD-verktyg</translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarArcs</name>
+    <message>
+        <source>Arcs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Arc with three points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Arc with Center, Point, Angles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation type="unfinished">Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Concentric</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Arc tangential to base entity with radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarCircles</name>
+    <message>
+        <source>Circles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Circle with two opposite points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Circle with center and radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Circle with center and point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Circle with three points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation type="unfinished">Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Concentric</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarDim</name>
+    <message>
+        <source>Dimensions</source>
+        <translation>Dimensioner</translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation type="unfinished">Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Diametric Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Radial Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Vertical Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Horizontal Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Linear Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Aligned Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angular Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Leader</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarEllipses</name>
+    <message>
+        <source>Ellipses</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ellipse arc with center, two points and angles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ellipse with Center and two points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation type="unfinished">Tillbaka till huvudmenyn</translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarInfo</name>
+    <message>
+        <source>Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation type="unfinished">Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Distance (Point, Point)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Distance (Entity, Point)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle</source>
+        <translation type="unfinished">Vinkel</translation>
+    </message>
+    <message>
+        <source>Total length of selected entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Area of polygon</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarLines</name>
+    <message>
+        <source>Lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Freehand lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Orthogonal lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation type="unfinished">Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Bisectors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tangents from circle to circle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tangents from point to circle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Line with two points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Lines with relative angles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Line with given angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Horizontal lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Vertical lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rectangles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Polygons with Center and Corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Polygons with two Corners</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallels with distance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallels through point</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarMain</name>
+    <message>
+        <source>Main</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show menu "Lines"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show menu "Arcs"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show menu "Circles"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show menu "Measure"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show menu "Ellipses"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hatches / Solid Fills</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show menu "Edit"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show menu "Dimensions"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Texts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show menu "Select"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create Block</source>
+        <translation>Skapa block</translation>
+    </message>
+    <message>
+        <source>Raster Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Points</source>
+        <translation>Punkter</translation>
+    </message>
+    <message>
+        <source>Splines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Polylines</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarModify</name>
+    <message>
+        <source>Modify</source>
+        <translation>Ändra</translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation>Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Rotate</source>
+        <translation>Rotera</translation>
+    </message>
+    <message>
+        <source>Scale</source>
+        <translation>Skala</translation>
+    </message>
+    <message>
+        <source>Move</source>
+        <translation type="obsolete">Flytta</translation>
+    </message>
+    <message>
+        <source>Move and Rotate</source>
+        <translation>Flytta och rotera</translation>
+    </message>
+    <message>
+        <source>Explode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Ta bort</translation>
+    </message>
+    <message>
+        <source>Stretch</source>
+        <translation>Sträck ut</translation>
+    </message>
+    <message>
+        <source>Round</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bevel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trim by amount</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trim / Extend two</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trim / Extend</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit Entity Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit Entity Geometry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mirror</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Divide</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Explode Text into Letters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit Text</source>
+        <translation>Redigera text</translation>
+    </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarPoints</name>
+    <message>
+        <source>Points</source>
+        <translation>Punkter</translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation>Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Single points</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarPolylines</name>
+    <message>
+        <source>Polylines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation type="unfinished">Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Create Polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete between two nodes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add node</source>
+        <translation>Lägg till nod</translation>
+    </message>
+    <message>
+        <source>Delete node</source>
+        <translation>Ta bort nod</translation>
+    </message>
+    <message>
+        <source>Trim segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Append node</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarSelect</name>
+    <message>
+        <source>Select</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation type="unfinished">Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Select intersected entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deselect intersected entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deselect all</source>
+        <translation type="unfinished">Avmarkera allt</translation>
+    </message>
+    <message>
+        <source>Invert Selection</source>
+        <translation type="unfinished">Invertera markering</translation>
+    </message>
+    <message>
+        <source>Select layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>(De-)Select contour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>(De-)Select entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deselect Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Continue action</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarSnap</name>
+    <message>
+        <source>Snap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation type="unfinished">Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Snap to grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Free positioning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Snap to Endpoints</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Snap to closest point on entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Snap to center points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Snap to middle points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Snap to point with given distance to endpoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Snap to intersections automatically</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Restriction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Orthogonal Restriction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Horizontal Restriction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Vertical Restriction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move relative Zero</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Lock relative Zero</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Snap to intersections manually</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CadToolBarSplines</name>
+    <message>
+        <source>Splines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back to main menu</source>
+        <translation type="unfinished">Tillbaka till huvudmenyn</translation>
+    </message>
+    <message>
+        <source>Spline</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_CircleOptions</name>
+    <message>
+        <source>Circle Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Radius:</source>
+        <translation>Radie:</translation>
+    </message>
+</context>
+<context>
+    <name>QG_ColorBox</name>
+    <message>
+        <source>By Layer</source>
+        <translation>Efter lager</translation>
+    </message>
+    <message>
+        <source>By Block</source>
+        <translation>Efter block</translation>
+    </message>
+    <message>
+        <source>Red</source>
+        <translation>Röd</translation>
+    </message>
+    <message>
+        <source>Yellow</source>
+        <translation>Gul</translation>
+    </message>
+    <message>
+        <source>Green</source>
+        <translation>Grön</translation>
+    </message>
+    <message>
+        <source>Cyan</source>
+        <translation>Cyan</translation>
+    </message>
+    <message>
+        <source>Blue</source>
+        <translation>Blå</translation>
+    </message>
+    <message>
+        <source>Magenta</source>
+        <translation>Magenta</translation>
+    </message>
+    <message>
+        <source>Black / White</source>
+        <translation>Svart/vit</translation>
+    </message>
+    <message>
+        <source>Gray</source>
+        <translation>Grå</translation>
+    </message>
+    <message>
+        <source>Light Gray</source>
+        <translation>Ljusgrå</translation>
+    </message>
+    <message>
+        <source>Others..</source>
+        <translation>Övriga..</translation>
+    </message>
+    <message>
+        <source>Unchanged</source>
+        <translation>Oförändrat</translation>
+    </message>
+</context>
+<context>
+    <name>QG_CommandWidget</name>
+    <message>
+        <source>Command Line</source>
+        <translation>Kommandorad</translation>
+    </message>
+    <message>
+        <source>Command:</source>
+        <translation>Kommando:</translation>
+    </message>
+</context>
+<context>
+    <name>QG_CoordinateWidget</name>
+    <message>
+        <source>Coordinates</source>
+        <translation>Koordinater</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DimLinearOptions</name>
+    <message>
+        <source>Linear Dimension Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation>Vinkel:</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DimOptions</name>
+    <message>
+        <source>Dimension Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Label:</source>
+        <translation>Etikett:</translation>
+    </message>
+    <message utf8="true">
+        <source>ø</source>
+        <translation>ø</translation>
+    </message>
+    <message utf8="true">
+        <source>°</source>
+        <translation>°</translation>
+    </message>
+    <message utf8="true">
+        <source>±</source>
+        <translation>±</translation>
+    </message>
+    <message utf8="true">
+        <source>¶</source>
+        <translation>¶</translation>
+    </message>
+    <message utf8="true">
+        <source>×</source>
+        <translation>×</translation>
+    </message>
+    <message utf8="true">
+        <source>÷</source>
+        <translation>÷</translation>
+    </message>
+    <message>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DimensionLabelEditor</name>
+    <message>
+        <source>Dimension Label Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dimension Label:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Label:</source>
+        <translation>Etikett:</translation>
+    </message>
+    <message>
+        <source>Insert:</source>
+        <translation>Infoga:</translation>
+    </message>
+    <message utf8="true">
+        <source>ø (Diameter)</source>
+        <translation>ø (Diameter)</translation>
+    </message>
+    <message utf8="true">
+        <source>° (Degree)</source>
+        <translation>° (Grad)</translation>
+    </message>
+    <message utf8="true">
+        <source>± (Plus / Minus)</source>
+        <translation>± (Plus / Minus)</translation>
+    </message>
+    <message utf8="true">
+        <source>¶ (Pi)</source>
+        <translation>¶ (Pi)</translation>
+    </message>
+    <message utf8="true">
+        <source>× (Times)</source>
+        <translation>× (Multiplikation)</translation>
+    </message>
+    <message utf8="true">
+        <source>÷ (Division)</source>
+        <translation>÷ (Division)</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgArc</name>
+    <message>
+        <source>Arc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Layer:</source>
+        <translation>Lager:</translation>
+    </message>
+    <message>
+        <source>Geometry</source>
+        <translation>Geometri</translation>
+    </message>
+    <message>
+        <source>Radius:</source>
+        <translation>Radie:</translation>
+    </message>
+    <message>
+        <source>Center (y):</source>
+        <translation type="unfinished">Center (y):</translation>
+    </message>
+    <message>
+        <source>Center (x):</source>
+        <translation type="unfinished">Center (x):</translation>
+    </message>
+    <message>
+        <source>Start Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>End Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reversed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgAttributes</name>
+    <message>
+        <source>Attributes</source>
+        <translation>Attribut</translation>
+    </message>
+    <message>
+        <source>Layer:</source>
+        <translation>Lager:</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgCircle</name>
+    <message>
+        <source>Circle</source>
+        <translation>Cirkel</translation>
+    </message>
+    <message>
+        <source>Layer:</source>
+        <translation>Lager:</translation>
+    </message>
+    <message>
+        <source>Geometry</source>
+        <translation>Geometri</translation>
+    </message>
+    <message>
+        <source>Radius:</source>
+        <translation>Radie:</translation>
+    </message>
+    <message>
+        <source>Center (y):</source>
+        <translation>Center (y):</translation>
+    </message>
+    <message>
+        <source>Center (x):</source>
+        <translation>Center (x):</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgDimLinear</name>
+    <message>
+        <source>Linear Dimension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Layer:</source>
+        <translation>Lager:</translation>
+    </message>
+    <message>
+        <source>Geometry</source>
+        <translation>Geometri</translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation>Vinkel:</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgDimension</name>
+    <message>
+        <source>Layer:</source>
+        <translation>Lager:</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <source>Dimension</source>
+        <translation>Dimension</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgEllipse</name>
+    <message>
+        <source>Ellipse</source>
+        <translation>Ellips</translation>
+    </message>
+    <message>
+        <source>Layer:</source>
+        <translation>Lager:</translation>
+    </message>
+    <message>
+        <source>Geometry</source>
+        <translation>Geometri</translation>
+    </message>
+    <message>
+        <source>Center (y):</source>
+        <translation type="unfinished">Center (y):</translation>
+    </message>
+    <message>
+        <source>Center (x):</source>
+        <translation type="unfinished">Center (x):</translation>
+    </message>
+    <message>
+        <source>End Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start Angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rotation:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Minor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Major:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reversed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgHatch</name>
+    <message>
+        <source>Choose Hatch Attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pattern</source>
+        <translation>Mönster</translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation>Vinkel:</translation>
+    </message>
+    <message>
+        <source>Scale:</source>
+        <translation>Skala:</translation>
+    </message>
+    <message>
+        <source>Solid Fill</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable Preview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgInitial</name>
+    <message>
+        <source>Welcome</source>
+        <translation>Välkommen</translation>
+    </message>
+    <message>
+        <source><font size="+1"><b>Welcome to QCad</b>
+</font>
+<br>
+Please choose the unit you want to use for new drawings and your preferred language.<br>
+You can changes these settings later in the Options Dialog of QCad.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default Unit:</source>
+        <translation>Standardenhet:</translation>
+    </message>
+    <message>
+        <source>GUI Language:</source>
+        <translation>Språk för grafiskt gränssnitt:</translation>
+    </message>
+    <message>
+        <source>Command Language:</source>
+        <translation>Kommandospråk:</translation>
+    </message>
+    <message>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <source>Enter</source>
+        <translation>Enter</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgInsert</name>
+    <message>
+        <source>Insert</source>
+        <translation>Infoga</translation>
+    </message>
+    <message>
+        <source>Layer:</source>
+        <translation>Lager:</translation>
+    </message>
+    <message>
+        <source>Geometry</source>
+        <translation>Geometri</translation>
+    </message>
+    <message>
+        <source>Insertion point (x):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insertion point (y):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Scale:</source>
+        <translation>Skala:</translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation>Vinkel:</translation>
+    </message>
+    <message>
+        <source>Rows:</source>
+        <translation>Rader:</translation>
+    </message>
+    <message>
+        <source>Columns:</source>
+        <translation>Kolumner:</translation>
+    </message>
+    <message>
+        <source>Row Spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Column Spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgLine</name>
+    <message>
+        <source>Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Layer:</source>
+        <translation>Lager:</translation>
+    </message>
+    <message>
+        <source>Geometry</source>
+        <translation>Geometri</translation>
+    </message>
+    <message>
+        <source>End point (x):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>End point (y):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start point (y):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start point (x):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgMirror</name>
+    <message>
+        <source>Mirroring Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of copies</source>
+        <translation type="unfinished">Antal kopior</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &layer</source>
+        <translation type="unfinished">Använd aktuellt &lager</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgMove</name>
+    <message>
+        <source>Moving Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of copies</source>
+        <translation type="unfinished">Antal kopior</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+    <message>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Multiple Copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &layer</source>
+        <translation type="unfinished">Använd aktuellt &lager</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgMoveRotate</name>
+    <message>
+        <source>Move/Rotate Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Number of copies</source>
+        <translation>Antal kopior</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <source>&Angle (a):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &layer</source>
+        <translation type="unfinished">Använd aktuellt &lager</translation>
+    </message>
+    <message>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Multiple Copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgOptionsDrawing</name>
+    <message>
+        <source>Main Unit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Decimal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Scientific</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Engineering</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Architectural</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Fractional</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle</source>
+        <translation>Vinkel</translation>
+    </message>
+    <message>
+        <source>Decimal Degrees</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Radians</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>linear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>angular</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Paper Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Text Height:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>units</source>
+        <translation>enheter</translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+    <message>
+        <source>2</source>
+        <translation>2</translation>
+    </message>
+    <message>
+        <source>5</source>
+        <translation>5</translation>
+    </message>
+    <message>
+        <source>Deg/min/sec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Gradians</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Surveyor's units</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>For the length formats 'Engineering' and 'Architectural', the unit must be set to Inch.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extension line extension:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Arrow size:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extension line offset:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dimension line gap:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drawing Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Paper</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Landscape</source>
+        <translation>&Liggande</translation>
+    </message>
+    <message>
+        <source>P&ortrait</source>
+        <translation>S&tående</translation>
+    </message>
+    <message>
+        <source>Paper &Height:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Paper &Width:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Units</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Main drawing unit:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Format:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>P&recision:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F&ormat:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pre&cision:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Dimensions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Grid Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show Grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X Spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Y Spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>auto</source>
+        <translation type="unfinished">auto</translation>
+    </message>
+    <message>
+        <source>&Grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Splines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of line segments per spline patch:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>4</source>
+        <translation>4</translation>
+    </message>
+    <message>
+        <source>8</source>
+        <translation>8</translation>
+    </message>
+    <message>
+        <source>16</source>
+        <translation>16</translation>
+    </message>
+    <message>
+        <source>32</source>
+        <translation>32</translation>
+    </message>
+    <message>
+        <source>64</source>
+        <translation>64</translation>
+    </message>
+    <message>
+        <source>0.01</source>
+        <translation>0.01</translation>
+    </message>
+    <message>
+        <source>0.1</source>
+        <translation>0.1</translation>
+    </message>
+    <message>
+        <source>10</source>
+        <translation>10</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgOptionsGeneral</name>
+    <message>
+        <source>Preferences</source>
+        <translation>Inställningar</translation>
+    </message>
+    <message>
+        <source>Translations:</source>
+        <translation>Översättningar:</translation>
+    </message>
+    <message>
+        <source>Hatch Patterns:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Fonts:</source>
+        <translation>Typsnitt:</translation>
+    </message>
+    <message>
+        <source>Scripts:</source>
+        <translation>Skript:</translation>
+    </message>
+    <message>
+        <source>Part Libraries:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation>Språk</translation>
+    </message>
+    <message>
+        <source>Graphic View</source>
+        <translation>Grafisk vy</translation>
+    </message>
+    <message>
+        <source>0</source>
+        <translation>0</translation>
+    </message>
+    <message>
+        <source>50</source>
+        <translation>b</translation>
+    </message>
+    <message>
+        <source>100</source>
+        <translation>100</translation>
+    </message>
+    <message>
+        <source>200</source>
+        <translation>b</translation>
+    </message>
+    <message>
+        <source>Application Preferences</source>
+        <translation>Programinställningar</translation>
+    </message>
+    <message>
+        <source>Defaults for new drawings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Appearance</source>
+        <translation>&Utseende</translation>
+    </message>
+    <message>
+        <source>&GUI Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Command Language:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Show large crosshairs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of p&review entities:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Paths</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Defaults</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Unit:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <source>Colors</source>
+        <translation>Färger</translation>
+    </message>
+    <message>
+        <source>Backgr&ound:</source>
+        <translation>Bakgr&und:</translation>
+    </message>
+    <message>
+        <source>G&rid Color:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Meta Grid Color:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>#404040</source>
+        <translation>#404040</translation>
+    </message>
+    <message>
+        <source>Fontsize</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statusbar:</source>
+        <translation>Statusrad:</translation>
+    </message>
+    <message>
+        <source>5</source>
+        <translation>5</translation>
+    </message>
+    <message>
+        <source>6</source>
+        <translation>6</translation>
+    </message>
+    <message>
+        <source>7</source>
+        <translation>7</translation>
+    </message>
+    <message>
+        <source>8</source>
+        <translation>8</translation>
+    </message>
+    <message>
+        <source>9</source>
+        <translation>9</translation>
+    </message>
+    <message>
+        <source>10</source>
+        <translation>10</translation>
+    </message>
+    <message>
+        <source>11</source>
+        <translation>11</translation>
+    </message>
+    <message>
+        <source>12</source>
+        <translation>12</translation>
+    </message>
+    <message>
+        <source>14</source>
+        <translation>14</translation>
+    </message>
+    <message>
+        <source>#000000</source>
+        <translation>#000000</translation>
+    </message>
+    <message>
+        <source>#ffffff</source>
+        <translation>#ffffff</translation>
+    </message>
+    <message>
+        <source>#c0c0c0</source>
+        <translation>#c0c0c0</translation>
+    </message>
+    <message>
+        <source>#808080</source>
+        <translation>#808080</translation>
+    </message>
+    <message>
+        <source>A&utomatically scale grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>S&elected Color:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>#a54747</source>
+        <translation>#a54747</translation>
+    </message>
+    <message>
+        <source>#739373</source>
+        <translation>#739373</translation>
+    </message>
+    <message>
+        <source>&Highlighted Color:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>4</source>
+        <translation>4</translation>
+    </message>
+    <message>
+        <source>15</source>
+        <translation>15</translation>
+    </message>
+    <message>
+        <source>20</source>
+        <translation>20</translation>
+    </message>
+    <message>
+        <source>Please restart the application to apply all changes.</source>
+        <translation>Starta om programmet för att verkställa alla ändringar.</translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <translation>Alt+S</translation>
+    </message>
+    <message>
+        <source>Alt+U</source>
+        <translation>Alt+U</translation>
+    </message>
+    <message>
+        <source>Minimal Grid Spacing (px):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Program Defaults</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time between automatc saving of thedocument in minutes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Auto save time:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgOptionsVariables</name>
+    <message>
+        <source>Drawing Variables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation type="unfinished">&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation type="unfinished">Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgPoint</name>
+    <message>
+        <source>Point</source>
+        <translation>Punkt</translation>
+    </message>
+    <message>
+        <source>Layer:</source>
+        <translation>Lager:</translation>
+    </message>
+    <message>
+        <source>Geometry</source>
+        <translation>Geometri</translation>
+    </message>
+    <message>
+        <source>Position (y):</source>
+        <translation>Position (y):</translation>
+    </message>
+    <message>
+        <source>Position (x):</source>
+        <translation>Position (x):</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgRotate</name>
+    <message>
+        <source>Rotation Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of copies</source>
+        <translation type="unfinished">Antal kopior</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>&Cancel</source>
+        <translation>&Avbryt</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Multiple Copies:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Angle (a):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &layer</source>
+        <translation>Använd aktuellt &lager</translation>
+    </message>
+    <message>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgRotate2</name>
+    <message>
+        <source>Rotate Two Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Number of copies</source>
+        <translation type="unfinished">Antal kopior</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Multiple Copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle (&a):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle (&b):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &layer</source>
+        <translation type="unfinished">Använd aktuellt &lager</translation>
+    </message>
+    <message>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgScale</name>
+    <message>
+        <source>Scaling Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of copies</source>
+        <translation>Antal kopior</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>&Cancel</source>
+        <translation>&Avbryt</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <source>&Factor (f):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use current &layer</source>
+        <translation type="unfinished">Använd aktuellt &lager</translation>
+    </message>
+    <message>
+        <source>&Delete Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Keep Original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Multiple Copies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgSpline</name>
+    <message>
+        <source>Spline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Layer:</source>
+        <translation>Lager:</translation>
+    </message>
+    <message>
+        <source>Geometry</source>
+        <translation>Geometri</translation>
+    </message>
+    <message>
+        <source>Degree:</source>
+        <translation>Grad:</translation>
+    </message>
+    <message>
+        <source>Closed</source>
+        <translation>Stängd</translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+    <message>
+        <source>2</source>
+        <translation>2</translation>
+    </message>
+    <message>
+        <source>3</source>
+        <translation>3</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>Alt+O</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_DlgText</name>
+    <message>
+        <source>Text</source>
+        <translation>Text</translation>
+    </message>
+    <message>
+        <source>Text:</source>
+        <translation>Text:</translation>
+    </message>
+    <message>
+        <source>Clear Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Load Text From File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save Text To File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation>Klipp ut</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation>Kopiera</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation>Klistra in</translation>
+    </message>
+    <message>
+        <source>Font</source>
+        <translation>Typsnitt</translation>
+    </message>
+    <message>
+        <source>Alignment</source>
+        <translation>Justering</translation>
+    </message>
+    <message>
+        <source>Top Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Middle Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Middle Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Middle Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bottom Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bottom Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bottom Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle</source>
+        <translation type="unfinished">Vinkel</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Insert Symbol</source>
+        <translation>Infoga symbol</translation>
+    </message>
+    <message utf8="true">
+        <source>Diameter (ø)</source>
+        <translation>Diameter (ø)</translation>
+    </message>
+    <message utf8="true">
+        <source>Degree (°)</source>
+        <translation>Grad (°)</translation>
+    </message>
+    <message utf8="true">
+        <source>Plus / Minus (±)</source>
+        <translation>Plus / Minus (±)</translation>
+    </message>
+    <message>
+        <source>At (@)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hash (#)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dollar ($)</source>
+        <translation>Dollar ($)</translation>
+    </message>
+    <message utf8="true">
+        <source>Copyright (©)</source>
+        <translation>Copyright (©)</translation>
+    </message>
+    <message utf8="true">
+        <source>Registered (®)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source>Paragraph (§)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source>Pi (Ï€)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source>Pound (£)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source>Yen (Â¥)</source>
+        <translation>Yen (Â¥)</translation>
+    </message>
+    <message utf8="true">
+        <source>Times (×)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source>Division (÷)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insert Unicode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Char:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0000-007F] Basic Latin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0080-00FF] Latin-1 Supplementary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0100-017F] Latin Extended-A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0180-024F] Latin Extended-B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0250-02AF] IPA Extensions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[02B0-02FF] Spacing Modifier Letters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0300-036F] Combining Diacritical Marks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0370-03FF] Greek and Coptic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0400-04FF] Cyrillic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0500-052F] Cyrillic Supplementary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0530-058F] Armenian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0590-05FF] Hebrew</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0600-06FF] Arabic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0700-074F] Syriac</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0780-07BF] Thaana</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0900-097F] Devanagari</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0980-09FF] Bengali</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0A00-0A7F] Gurmukhi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0A80-0AFF] Gujarati</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0B00-0B7F] Oriya</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0B80-0BFF] Tamil</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0C00-0C7F] Telugu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0C80-0CFF] Kannada</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0D00-0D7F] Malayalam</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0D80-0DFF] Sinhala</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0E00-0E7F] Thai</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0E80-0EFF] Lao</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[0F00-0FFF] Tibetan</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1000-109F] Myanmar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[10A0-10FF] Georgian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1100-11FF] Hangul Jamo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1200-137F] Ethiopic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[13A0-13FF] Cherokee</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1400-167F] Unified Canadian Aboriginal Syllabic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1680-169F] Ogham</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[16A0-16FF] Runic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1700-171F] Tagalog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1720-173F] Hanunoo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1740-175F] Buhid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1760-177F] Tagbanwa</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1780-17FF] Khmer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1800-18AF] Mongolian</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1E00-1EFF] Latin Extended Additional</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1F00-1FFF] Greek Extended</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2000-206F] General Punctuation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2070-209F] Superscripts and Subscripts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[20A0-20CF] Currency Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[20D0-20FF] Combining Marks for Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2100-214F] Letterlike Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2150-218F] Number Forms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2190-21FF] Arrows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2200-22FF] Mathematical Operators</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2300-23FF] Miscellaneous Technical</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2400-243F] Control Pictures</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2440-245F] Optical Character Recognition</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2460-24FF] Enclosed Alphanumerics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2500-257F] Box Drawing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2580-259F] Block Elements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[25A0-25FF] Geometric Shapes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2600-26FF] Miscellaneous Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2700-27BF] Dingbats</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[27C0-27EF] Miscellaneous Mathematical Symbols-A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[27F0-27FF] Supplemental Arrows-A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2800-28FF] Braille Patterns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2900-297F] Supplemental Arrows-B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2980-29FF] Miscellaneous Mathematical Symbols-B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2A00-2AFF] Supplemental Mathematical Operators</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2E80-2EFF] CJK Radicals Supplement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2F00-2FDF] Kangxi Radicals</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2FF0-2FFF] Ideographic Description Characters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[3000-303F] CJK Symbols and Punctuation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[3040-309F] Hiragana</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[30A0-30FF] Katakana</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[3100-312F] Bopomofo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[3130-318F] Hangul Compatibility Jamo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[3190-319F] Kanbun</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[31A0-31BF] Bopomofo Extended</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[3200-32FF] Enclosed CJK Letters and Months</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[3300-33FF] CJK Compatibility</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[3400-4DBF] CJK Unified Ideographs Extension A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[4E00-9FAF] CJK Unified Ideographs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[A000-A48F] Yi Syllables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[A490-A4CF] Yi Radicals</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[AC00-D7AF] Hangul Syllables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[D800-DBFF] High Surrogates</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[DC00-DFFF] Low Surrogate Area</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[E000-F8FF] Private Use Area</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[F900-FAFF] CJK Compatibility Ideographs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[FB00-FB4F] Alphabetic Presentation Forms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[FB50-FDFF] Arabic Presentation Forms-A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[FE00-FE0F] Variation Selectors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[FE20-FE2F] Combining Half Marks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[FE30-FE4F] CJK Compatibility Forms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[FE50-FE6F] Small Form Variants</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[FE70-FEFF] Arabic Presentation Forms-B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[FF00-FFEF] Halfwidth and Fullwidth Forms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[FFF0-FFFF] Specials</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[10300-1032F] Old Italic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[10330-1034F] Gothic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[10400-1044F] Deseret</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1D000-1D0FF] Byzantine Musical Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1D100-1D1FF] Musical Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[1D400-1D7FF] Mathematical Alphanumeric Symbols</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[20000-2A6DF] CJK Unified Ideographs Extension B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[2F800-2FA1F] CJK Compatibility Ideographs Supplement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[E0000-E007F] Tags</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[F0000-FFFFD] Supplementary Private Use Area-A</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[100000-10FFFD] Supplementary Private Use Area-B</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Height:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Line &spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Default line spacing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <source>Alt+D</source>
+        <translation>Alt+D</translation>
+    </message>
+</context>
+<context>
+    <name>QG_ExitDialog</name>
+    <message>
+        <source>&Save</source>
+        <translation>&Spara</translation>
+    </message>
+    <message>
+        <source>Save &As..</source>
+        <translation>Spara so&m..</translation>
+    </message>
+    <message>
+        <source>&Cancel</source>
+        <translation>&Avbryt</translation>
+    </message>
+    <message>
+        <source>QCad</source>
+        <translation>QCad</translation>
+    </message>
+    <message>
+        <source>C&lose</source>
+        <translation>S&täng</translation>
+    </message>
+    <message>
+        <source>again Still No Text supplied.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ImageOptions</name>
+    <message>
+        <source>Insert Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation>Vinkel:</translation>
+    </message>
+    <message>
+        <source>Rotation Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Scale Factor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_ImageOptionsDialog</name>
+    <message>
+        <source>Image Export Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bitmap Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>640</source>
+        <translation>640</translation>
+    </message>
+    <message>
+        <source>480</source>
+        <translation>480</translation>
+    </message>
+    <message>
+        <source>Width:</source>
+        <translation>Bredd:</translation>
+    </message>
+    <message>
+        <source>Height:</source>
+        <translation>Höjd:</translation>
+    </message>
+    <message>
+        <source>Background</source>
+        <translation>Bakgrund</translation>
+    </message>
+    <message>
+        <source>White</source>
+        <translation>Vit</translation>
+    </message>
+    <message>
+        <source>Black</source>
+        <translation>Svart</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation type="unfinished">&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation type="unfinished">Alt+O</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation type="unfinished">Esc</translation>
+    </message>
+    <message>
+        <source>Resolution:</source>
+        <translation>Upplösning:</translation>
+    </message>
+    <message>
+        <source>auto</source>
+        <translation>auto</translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+    <message>
+        <source>2</source>
+        <translation>2</translation>
+    </message>
+    <message>
+        <source>3</source>
+        <translation>b</translation>
+    </message>
+    <message>
+        <source>4</source>
+        <translation>4</translation>
+    </message>
+    <message>
+        <source>5</source>
+        <translation>5</translation>
+    </message>
+    <message>
+        <source>10</source>
+        <translation>b</translation>
+    </message>
+    <message>
+        <source>15</source>
+        <translation>15</translation>
+    </message>
+    <message>
+        <source>20</source>
+        <translation>20</translation>
+    </message>
+    <message>
+        <source>25</source>
+        <translation>25</translation>
+    </message>
+    <message>
+        <source>50</source>
+        <translation>50</translation>
+    </message>
+    <message>
+        <source>75</source>
+        <translation>75</translation>
+    </message>
+    <message>
+        <source>100</source>
+        <translation>100</translation>
+    </message>
+    <message>
+        <source>150</source>
+        <translation>150</translation>
+    </message>
+    <message>
+        <source>300</source>
+        <translation>300</translation>
+    </message>
+    <message>
+        <source>600</source>
+        <translation>600</translation>
+    </message>
+    <message>
+        <source>1200</source>
+        <translation>1200</translation>
+    </message>
+</context>
+<context>
+    <name>QG_InsertOptions</name>
+    <message>
+        <source>Insert Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation type="unfinished">Vinkel:</translation>
+    </message>
+    <message>
+        <source>Rotation Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Scale Factor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Array:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of Columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of Rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Column Spacing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Row Spacing</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LayerBox</name>
+    <message>
+        <source>- Unchanged -</source>
+        <translation>- Oförändrad -</translation>
+    </message>
+</context>
+<context>
+    <name>QG_LayerDialog</name>
+    <message>
+        <source>Layer Settings</source>
+        <translation>Lagerinställningar</translation>
+    </message>
+    <message>
+        <source>Layer Name:</source>
+        <translation>Lagernamn:</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Default Pen</source>
+        <translation>Standardpenna</translation>
+    </message>
+    <message>
+        <source>&OK</source>
+        <translation>&OK</translation>
+    </message>
+    <message>
+        <source>Alt+O</source>
+        <translation>b</translation>
+    </message>
+    <message>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
+    <name>QG_LayerWidget</name>
+    <message>
+        <source>Show all layers</source>
+        <translation>Visa alla lager</translation>
+    </message>
+    <message>
+        <source>Hide all layers</source>
+        <translation>Dölj alla lager</translation>
+    </message>
+    <message>
+        <source>Add a layer</source>
+        <translation>Lägg till ett lager</translation>
+    </message>
+    <message>
+        <source>Remove the current layer</source>
+        <translation>Ta bort aktuellt lager</translation>
+    </message>
+    <message>
+        <source>Modify layer attributes / rename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Layer Menu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Defreeze all Layers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Freeze all Layers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Add Layer</source>
+        <translation>&Lägg till lager</translation>
+    </message>
+    <message>
+        <source>&Remove Layer</source>
+        <translation>&Ta bort lager</translation>
+    </message>
+    <message>
+        <source>&Edit Layer</source>
+        <translation>R&edigera lager</translation>
+    </message>
+    <message>
+        <source>&Toggle Visibility</source>
+        <translation>&Växla synlighet</translation>
+    </message>
+</context>
+<context>
+    <name>QG_LibraryInsertOptions</name>
+    <message>
+        <source>Library Insert Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation>Vinkel:</translation>
+    </message>
+    <message>
+        <source>Rotation Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Scale Factor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LibraryWidget</name>
+    <message>
+        <source>Library Browser</source>
+        <translation type="unfinished">Biblioteksvisare</translation>
+    </message>
+    <message>
+        <source>Directories</source>
+        <translation>Kataloger</translation>
+    </message>
+    <message>
+        <source>Insert</source>
+        <translation>Infoga</translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineAngleOptions</name>
+    <message>
+        <source>Line Angle Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation>Vinkel:</translation>
+    </message>
+    <message>
+        <source>Line angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Length:</source>
+        <translation>Längd:</translation>
+    </message>
+    <message>
+        <source>Length of line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Snap Point:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Middle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>End</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineBisectorOptions</name>
+    <message>
+        <source>Line Bisector Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Length:</source>
+        <translation type="unfinished">Längd:</translation>
+    </message>
+    <message>
+        <source>Length of bisector</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of bisectors to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineOptions</name>
+    <message>
+        <source>Line Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Stäng</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Ã…ngra</translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineParallelOptions</name>
+    <message>
+        <source>Line Parallel Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Distance:</source>
+        <translation>Avstånd:</translation>
+    </message>
+    <message>
+        <source>Distance to original entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of parallels to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineParallelThroughOptions</name>
+    <message>
+        <source>Line Parallel Through Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of parallels to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LinePolygon2Options</name>
+    <message>
+        <source>Polygon Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of edges</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LinePolygonOptions</name>
+    <message>
+        <source>Polygon Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of edges</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineRelAngleOptions</name>
+    <message>
+        <source>Line Relative Angle Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation>Vinkel:</translation>
+    </message>
+    <message>
+        <source>Line angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Length:</source>
+        <translation>Längd:</translation>
+    </message>
+    <message>
+        <source>Length of line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_LineTypeBox</name>
+    <message>
+        <source>By Layer</source>
+        <translation>Efter lager</translation>
+    </message>
+    <message>
+        <source>By Block</source>
+        <translation>Efter block</translation>
+    </message>
+    <message>
+        <source>No Pen</source>
+        <translation>Ingen penna</translation>
+    </message>
+    <message>
+        <source>Continuous</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dot</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dot (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dot (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dash</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dash (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dash (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dash Dot</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dash Dot (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dash Dot (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Divide</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Divide (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Divide (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Center (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Center (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Border</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Border (small)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Border (large)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>- Unchanged -</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_MouseWidget</name>
+    <message>
+        <source>Mouse</source>
+        <translation>Mus</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>Höger</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>Vänster</translation>
+    </message>
+    <message>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_MoveRotateOptions</name>
+    <message>
+        <source>Move Rotate Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation type="unfinished">Vinkel:</translation>
+    </message>
+</context>
+<context>
+    <name>QG_PolylineOptions</name>
+    <message>
+        <source>Polyline Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished">Stäng</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation type="unfinished">Ã…ngra</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tangential</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tan Radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle</source>
+        <translation type="unfinished">Vinkel</translation>
+    </message>
+    <message>
+        <source>Radius:</source>
+        <translation type="unfinished">Radie:</translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation type="unfinished">Vinkel:</translation>
+    </message>
+    <message>
+        <source>Clockwise</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Counter Clockwise</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_PrintPreviewOptions</name>
+    <message>
+        <source>Print Preview Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Toggle Black / White mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Center to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Fit to page</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_RoundOptions</name>
+    <message>
+        <source>Round Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check to trim both edges to the rounding</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Radius:</source>
+        <translation type="unfinished">Radie:</translation>
+    </message>
+</context>
+<context>
+    <name>QG_SelectionWidget</name>
+    <message>
+        <source>Selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Selected Entities:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>0</source>
+        <translation type="unfinished">0</translation>
+    </message>
+</context>
+<context>
+    <name>QG_SnapDistOptions</name>
+    <message>
+        <source>Snap Distance Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Distance:</source>
+        <translation type="unfinished">Avstånd:</translation>
+    </message>
+</context>
+<context>
+    <name>QG_SplineOptions</name>
+    <message>
+        <source>Spline Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Degree:</source>
+        <translation>Grad:</translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+    <message>
+        <source>2</source>
+        <translation>2</translation>
+    </message>
+    <message>
+        <source>3</source>
+        <translation>3</translation>
+    </message>
+    <message>
+        <source>Closed</source>
+        <translation>Stängd</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Ã…ngra</translation>
+    </message>
+</context>
+<context>
+    <name>QG_TextOptions</name>
+    <message>
+        <source>Text Options</source>
+        <translation>Textalternativ</translation>
+    </message>
+    <message>
+        <source>Text:</source>
+        <translation>Text:</translation>
+    </message>
+    <message>
+        <source>Angle:</source>
+        <translation>Vinkel:</translation>
+    </message>
+</context>
+<context>
+    <name>QG_TrimAmountOptions</name>
+    <message>
+        <source>Trim Amount Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Distance. Negative values for trimming, positive values for extending.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Amount:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QG_WidgetPen</name>
+    <message>
+        <source>Pen</source>
+        <translation>Penna</translation>
+    </message>
+    <message>
+        <source>Line type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Width:</source>
+        <translation>Bredd:</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation>Färg:</translation>
+    </message>
+</context>
+<context>
+    <name>QG_WidthBox</name>
+    <message>
+        <source>By Layer</source>
+        <translation>Efter lager</translation>
+    </message>
+    <message>
+        <source>By Block</source>
+        <translation>Efter block</translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation>Standard</translation>
+    </message>
+    <message>
+        <source>0.00mm</source>
+        <translation>0.00mm</translation>
+    </message>
+    <message>
+        <source>0.05mm</source>
+        <translation>0.05mm</translation>
+    </message>
+    <message>
+        <source>0.09mm</source>
+        <translation>0.09mm</translation>
+    </message>
+    <message>
+        <source>0.13mm (ISO)</source>
+        <translation>0.13mm (ISO)</translation>
+    </message>
+    <message>
+        <source>0.15mm</source>
+        <translation>0.15mm</translation>
+    </message>
+    <message>
+        <source>0.18mm (ISO)</source>
+        <translation>0.18mm (ISO)</translation>
+    </message>
+    <message>
+        <source>0.20mm</source>
+        <translation>0.20mm</translation>
+    </message>
+    <message>
+        <source>0.25mm (ISO)</source>
+        <translation>0.25mm (ISO)</translation>
+    </message>
+    <message>
+        <source>0.30mm</source>
+        <translation>0.30mm</translation>
+    </message>
+    <message>
+        <source>0.35mm (ISO)</source>
+        <translation>0.35mm (ISO)</translation>
+    </message>
+    <message>
+        <source>0.40mm</source>
+        <translation>0.40mm</translation>
+    </message>
+    <message>
+        <source>0.50mm (ISO)</source>
+        <translation>0.50mm (ISO)</translation>
+    </message>
+    <message>
+        <source>0.53mm</source>
+        <translation>0.53mm</translation>
+    </message>
+    <message>
+        <source>0.60mm</source>
+        <translation>0.60mm</translation>
+    </message>
+    <message>
+        <source>0.70mm (ISO)</source>
+        <translation>0.70mm (ISO)</translation>
+    </message>
+    <message>
+        <source>0.80mm</source>
+        <translation>0.80mm</translation>
+    </message>
+    <message>
+        <source>0.90mm</source>
+        <translation>0.90mm</translation>
+    </message>
+    <message>
+        <source>1.00mm (ISO)</source>
+        <translation>1.00mm (ISO)</translation>
+    </message>
+    <message>
+        <source>1.06mm</source>
+        <translation>1.06mm</translation>
+    </message>
+    <message>
+        <source>1.20mm</source>
+        <translation>1.20mm</translation>
+    </message>
+    <message>
+        <source>1.40mm (ISO)</source>
+        <translation>1.40mm (ISO)</translation>
+    </message>
+    <message>
+        <source>1.58mm</source>
+        <translation>1.58mm</translation>
+    </message>
+    <message>
+        <source>2.00mm (ISO)</source>
+        <translation>2.00mm (ISO)</translation>
+    </message>
+    <message>
+        <source>2.11mm</source>
+        <translation>2.11mm</translation>
+    </message>
+    <message>
+        <source>- Unchanged -</source>
+        <translation>- Oförändrat -</translation>
+    </message>
+</context>
+<context>
+    <name>QMessageBox</name>
+    <message>
+        <source>Warning</source>
+        <translation>Varning</translation>
+    </message>
+    <message>
+        <source>Remove Layer</source>
+        <translation>Ta bort lager</translation>
+    </message>
+    <message>
+        <source>Layer "%1" and all entities on it will be removed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Layer "%1" can never be removed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Layer Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove Block</source>
+        <translation>Ta bort block</translation>
+    </message>
+    <message>
+        <source>Block "%1" and all its entities will be removed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Layer Properties</source>
+        <translation>Lageregenskaper</translation>
+    </message>
+    <message>
+        <source>Layer with a name "%1" already exists. Please specify a different name.</source>
+        <translation>Lager med namnet "%1" finns redan. Ange ett annat namn.</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Save Drawing As</source>
+        <translation>Spara ritning som</translation>
+    </message>
+    <message>
+        <source>%1 already exists.
+Do you want to replace it?</source>
+        <translation type="unfinished">%1 finns redan.
+Vill du ersätta den?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation type="obsolete">Ja</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation type="obsolete">Nej</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="obsolete">Avbryt</translation>
+    </message>
+    <message>
+        <source>Open Drawing</source>
+        <translation>Öppna ritning</translation>
+    </message>
+    <message>
+        <source>Open Image</source>
+        <translation>Öppna bild</translation>
+    </message>
+    <message>
+        <source>Windows Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Joint Photographic Experts Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Multiple-image Network Graphics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portable Bit Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portable Grey Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portable Network Graphic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Portable Pixel Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X Bitmap Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X Pixel Map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All Image Files (%1)</source>
+        <translation>Alla bildfiler (%1)</translation>
+    </message>
+    <message>
+        <source>Graphics Interchange Format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drawing Exchange %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>QCad 1.x file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Font %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All Files (*.*)</source>
+        <translation>Alla filer (*.*)</translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation>Ingen</translation>
+    </message>
+    <message>
+        <source>Inch</source>
+        <translation>Tum</translation>
+    </message>
+    <message>
+        <source>Foot</source>
+        <translation>Fot</translation>
+    </message>
+    <message>
+        <source>Mile</source>
+        <translation>Engelsk mil</translation>
+    </message>
+    <message>
+        <source>Millimeter</source>
+        <translation>Millimeter</translation>
+    </message>
+    <message>
+        <source>Centimeter</source>
+        <translation>Centimeter</translation>
+    </message>
+    <message>
+        <source>Meter</source>
+        <translation>Meter</translation>
+    </message>
+    <message>
+        <source>Kilometer</source>
+        <translation>Kilometer</translation>
+    </message>
+    <message>
+        <source>Microinch</source>
+        <translation>Mikrotum</translation>
+    </message>
+    <message>
+        <source>Mil</source>
+        <translation>Mil</translation>
+    </message>
+    <message>
+        <source>Yard</source>
+        <translation>Yard</translation>
+    </message>
+    <message>
+        <source>Angstrom</source>
+        <translation>Ã…ngstrom</translation>
+    </message>
+    <message>
+        <source>Nanometer</source>
+        <translation>Nanometer</translation>
+    </message>
+    <message>
+        <source>Micron</source>
+        <translation>Mikron</translation>
+    </message>
+    <message>
+        <source>Decimeter</source>
+        <translation>Decimeter</translation>
+    </message>
+    <message>
+        <source>Decameter</source>
+        <translation>Decameter</translation>
+    </message>
+    <message>
+        <source>Hectometer</source>
+        <translation>Hektometer</translation>
+    </message>
+    <message>
+        <source>Gigameter</source>
+        <translation>Gigameter</translation>
+    </message>
+    <message>
+        <source>Astro</source>
+        <translation>Astro</translation>
+    </message>
+    <message>
+        <source>Lightyear</source>
+        <translation>Ljusår</translation>
+    </message>
+    <message>
+        <source>Parsec</source>
+        <translation>Parsec</translation>
+    </message>
+    <message>
+        <source>Export Image</source>
+        <translation type="obsolete">Exportera bild</translation>
+    </message>
+    <message>
+        <source>Loading..</source>
+        <translation>Läser in..</translation>
+    </message>
+    <message>
+        <source>Loading Library Paths..</source>
+        <translation type="obsolete">Läser in bibliotekssökvägar..</translation>
+    </message>
+    <message>
+        <source>Loading File %1..</source>
+        <translation>Läser in filen %1..</translation>
+    </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Loading...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksAdd</name>
+    <message>
+        <source>Add Block</source>
+        <translation type="obsolete">Lägg till block</translation>
+    </message>
+    <message>
+        <source>&Add Block</source>
+        <translation>&Lägg till block</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksAttributes</name>
+    <message>
+        <source>Rename Block</source>
+        <translation type="obsolete">Byt namn på block</translation>
+    </message>
+    <message>
+        <source>&Rename Block</source>
+        <translation>&Byt namn på block</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksCreate</name>
+    <message>
+        <source>Create Block</source>
+        <translation type="obsolete">Skapa block</translation>
+    </message>
+    <message>
+        <source>&Create Block</source>
+        <translation>&Skapa block</translation>
+    </message>
+    <message>
+        <source>Specify reference point</source>
+        <translation>Ange referenspunkt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksEdit</name>
+    <message>
+        <source>Edit Block</source>
+        <translation type="obsolete">Redigera block</translation>
+    </message>
+    <message>
+        <source>&Edit Block</source>
+        <translation>R&edigera block</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksExplode</name>
+    <message>
+        <source>&Explode</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksFreezeAll</name>
+    <message>
+        <source>&Freeze all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Defreeze all</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksInsert</name>
+    <message>
+        <source>Insert Block</source>
+        <translation type="obsolete">Infoga block</translation>
+    </message>
+    <message>
+        <source>&Insert Block</source>
+        <translation>&Infoga block</translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation>Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Specify reference point</source>
+        <translation>Ange referenspunkt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Enter angle:</source>
+        <translation>Ange vinkel:</translation>
+    </message>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Enter factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter columns:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter rows:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter column spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter row spacing:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksRemove</name>
+    <message>
+        <source>Remove Block</source>
+        <translation type="obsolete">Ta bort block</translation>
+    </message>
+    <message>
+        <source>&Remove Block</source>
+        <translation>&Ta bort block</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionBlocksToggleView</name>
+    <message>
+        <source>Toggle Block Visibility</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDefault</name>
+    <message>
+        <source>Choose second edge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimAligned</name>
+    <message>
+        <source>&Aligned</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first extension line origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second extension line origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify dimension line location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter dimension text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimAngular</name>
+    <message>
+        <source>&Angular</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select first line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Select second line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify dimension arc line location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter dimension text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimDiametric</name>
+    <message>
+        <source>&Diametric</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a circle or arc entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Select arc or circle entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify dimension line location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter dimension text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimLeader</name>
+    <message>
+        <source>&Leader</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify target point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify next point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Finish</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimLinear</name>
+    <message>
+        <source>&Linear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Horizontal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Vertical</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Specify first extension line origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second extension line origin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify dimension line location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter dimension text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter dimension line angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDimRadial</name>
+    <message>
+        <source>&Radial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a circle or arc entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Select arc or circle entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify dimension line position or enter angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter dimension text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawArc</name>
+    <message>
+        <source>&Center, Point, Angles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Not a valid chord length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify start angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify end angle or [Angle/chord Length]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify included angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify chord length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawArc3P</name>
+    <message>
+        <source>&3 Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid arc data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify startpoint or [Center]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify endpoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawArcTangential</name>
+    <message>
+        <source>Arc: Tangential</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify base entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify end angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawCircle</name>
+    <message>
+        <source>Center, &Point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Specify center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawCircle2P</name>
+    <message>
+        <source>2 Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid Circle data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawCircle3P</name>
+    <message>
+        <source>3 Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid circle data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify third point</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawCircleCR</name>
+    <message>
+        <source>Center, &Radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Specify circle center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify circle radius</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawEllipseAxis</name>
+    <message>
+        <source>&Ellipse Arc (Axis)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Ellipse (Axis)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Specify ellipse center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify endpoint of major axis</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify endpoint or length of minor axis:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify start angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify end angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawHatch</name>
+    <message>
+        <source>&Hatch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid hatch area. Please check that the entities chosen form one or more closed contours.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hatch created successfully.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawImage</name>
+    <message>
+        <source>Image</source>
+        <translation type="obsolete">Bild</translation>
+    </message>
+    <message>
+        <source>&Image</source>
+        <translation>&Bild</translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Specify reference point</source>
+        <translation type="unfinished">Ange referenspunkt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Enter angle:</source>
+        <translation type="unfinished">Ange vinkel:</translation>
+    </message>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Enter factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLine</name>
+    <message>
+        <source>&2 Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify next point or [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify next point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cannot undo: Not enough entities defined yet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineAngle</name>
+    <message>
+        <source>&Angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Specify position</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Enter angle:</source>
+        <translation type="unfinished">Ange vinkel:</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Horizontal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineBisector</name>
+    <message>
+        <source>Bisector</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Select first line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Select second line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter bisector length:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter number of bisectors:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineFree</name>
+    <message>
+        <source>&Freehand Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Click and drag to draw a line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineHorVert</name>
+    <message>
+        <source>Specify first point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineParallel</name>
+    <message>
+        <source>Parallel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify Distance <%1> or select entity or [%2]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Enter number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Not a valid number. Try 1..99</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Concentric</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineParallelThrough</name>
+    <message>
+        <source>Parallel through point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify through point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid number. Try 1..99</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLinePolygon</name>
+    <message>
+        <source>Pol&ygon (Cen,Cor)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Specify a corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid number. Try 1..9999</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLinePolygon2</name>
+    <message>
+        <source>Polygo&n (Cor,Cor)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid number. Try 1..9999</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineRectangle</name>
+    <message>
+        <source>Rectangle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineRelAngle</name>
+    <message>
+        <source>Relative angle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Select base entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify position</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Orthogonal</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineTangent1</name>
+    <message>
+        <source>Tangent (P,C)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Select circle, arc or ellipse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawLineTangent2</name>
+    <message>
+        <source>Tangent (C,C)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select first circle or arc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Select second circle or arc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawPoint</name>
+    <message>
+        <source>&Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawPolyline</name>
+    <message>
+        <source>&Polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Draw polylines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify next point or [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify next point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Undo disallowed due a fatal bug somewhere. Sorry.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cannot undo: Not enough entities defined yet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawSpline</name>
+    <message>
+        <source>&Spline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first control point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify next control point or [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify next control point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cannot undo: Not enough entities defined yet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionDrawText</name>
+    <message>
+        <source>Text</source>
+        <translation type="obsolete">Text</translation>
+    </message>
+    <message>
+        <source>&Text</source>
+        <translation>&Text</translation>
+    </message>
+    <message>
+        <source>Specify insertion point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Enter text:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionEditCopy</name>
+    <message>
+        <source>Copy</source>
+        <translation type="obsolete">Kopiera</translation>
+    </message>
+    <message>
+        <source>&Copy</source>
+        <translation>&Kopiera</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation type="obsolete">Klipp ut</translation>
+    </message>
+    <message>
+        <source>Cu&t</source>
+        <translation>Klipp &ut</translation>
+    </message>
+    <message>
+        <source>Specify reference point</source>
+        <translation type="unfinished">Ange referenspunkt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionEditPaste</name>
+    <message>
+        <source>Paste</source>
+        <translation type="obsolete">Klistra in</translation>
+    </message>
+    <message>
+        <source>&Paste</source>
+        <translation>Klistra &in</translation>
+    </message>
+    <message>
+        <source>Set reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionEditUndo</name>
+    <message>
+        <source>Undo</source>
+        <translation type="obsolete">Ã…ngra</translation>
+    </message>
+    <message>
+        <source>&Undo</source>
+        <translation>&Ã…ngra</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation type="obsolete">Gör om</translation>
+    </message>
+    <message>
+        <source>&Redo</source>
+        <translation>&Gör om</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionFileNew</name>
+    <message>
+        <source>New Drawing</source>
+        <translation type="obsolete">Ny ritning</translation>
+    </message>
+    <message>
+        <source>&New</source>
+        <translation type="obsolete">&Ny</translation>
+    </message>
+    <message>
+        <source>Creates a new drawing</source>
+        <translation type="obsolete">Skapar en ny ritning</translation>
+    </message>
+    <message>
+        <source>&New...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionFileOpen</name>
+    <message>
+        <source>Open Drawing</source>
+        <translation type="obsolete">Öppna ritning</translation>
+    </message>
+    <message>
+        <source>&Open...</source>
+        <translation>&Öppna...</translation>
+    </message>
+    <message>
+        <source>Opens an existing drawing</source>
+        <translation type="obsolete">Öppnar en befintlig ritning</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionFileSave</name>
+    <message>
+        <source>Save Drawing</source>
+        <translation type="obsolete">Spara ritning</translation>
+    </message>
+    <message>
+        <source>&Save</source>
+        <translation>&Spara</translation>
+    </message>
+    <message>
+        <source>Saves the current drawing</source>
+        <translation type="obsolete">Sparar aktuell ritning</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionFileSaveAs</name>
+    <message>
+        <source>Save Drawing As</source>
+        <translation type="obsolete">Spara ritning som</translation>
+    </message>
+    <message>
+        <source>Save &as...</source>
+        <translation>Spara so&m...</translation>
+    </message>
+    <message>
+        <source>Saves the current drawing under a new filename</source>
+        <translation type="obsolete">Sparar den aktuella ritningen under ett nytt filnamn</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoAngle</name>
+    <message>
+        <source>Angle between two lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Angle: %1%2</source>
+        <translation>Vinkel: %1%2</translation>
+    </message>
+    <message>
+        <source>Lines are parallel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoArea</name>
+    <message>
+        <source>Polygonal Area</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Area: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Circumference: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Point: %1/%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first point of polygon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify next point of polygon</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Terminate</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoDist</name>
+    <message>
+        <source>&Distance Point to Point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Distance: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first point of distance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second point of distance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoDist2</name>
+    <message>
+        <source>&Distance Entity to Point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Distance: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoInside</name>
+    <message>
+        <source>Point inside contour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Point is inside selected contour.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Point is outside selected contour.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionInfoTotalLength</name>
+    <message>
+        <source>&Total length of selected entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Total Length of selected entities: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>At least one of the selected entities cannot be measured.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersAdd</name>
+    <message>
+        <source>Add Layer</source>
+        <translation>Lägg till lager</translation>
+    </message>
+    <message>
+        <source>&Add Layer</source>
+        <translation type="obsolete">&Lägg till lager</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersEdit</name>
+    <message>
+        <source>Edit Layer</source>
+        <translation type="obsolete">Redigera lager</translation>
+    </message>
+    <message>
+        <source>&Edit Layer</source>
+        <translation>R&edigera lager</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersFreezeAll</name>
+    <message>
+        <source>&Freeze all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Defreeze all</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersRemove</name>
+    <message>
+        <source>Remove Layer</source>
+        <translation>Ta bort lager</translation>
+    </message>
+    <message>
+        <source>&Remove Layer</source>
+        <translation type="obsolete">&Ta bort lager</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersToggleLock</name>
+    <message>
+        <source>Toggle Layer Lock</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLayersToggleView</name>
+    <message>
+        <source>&Toggle Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLibraryInsert</name>
+    <message>
+        <source>Insert Library Object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Specify reference point</source>
+        <translation type="unfinished">Ange referenspunkt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Enter angle:</source>
+        <translation type="unfinished">Ange vinkel:</translation>
+    </message>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Enter factor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cannot open file '%1'</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionLockRelativeZero</name>
+    <message>
+        <source>(Un-)&Lock Relative Zero</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyAttributes</name>
+    <message>
+        <source>Attributes</source>
+        <translation type="obsolete">Attribut</translation>
+    </message>
+    <message>
+        <source>&Attributes</source>
+        <translation>&Attribut</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyBevel</name>
+    <message>
+        <source>&Bevel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Select first entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Select second entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter length 1:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter length 2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyCut</name>
+    <message>
+        <source>Cut</source>
+        <translation type="obsolete">Klipp ut</translation>
+    </message>
+    <message>
+        <source>&Cut</source>
+        <translation type="obsolete">Klipp &ut</translation>
+    </message>
+    <message>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cutting point is invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cutting point is not on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify entity to cut</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify cutting point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Divide</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Entity must be a line, arc, circle or ellipse.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyDelete</name>
+    <message>
+        <source>Delete</source>
+        <translation type="obsolete">Ta bort</translation>
+    </message>
+    <message>
+        <source>&Delete</source>
+        <translation>&Ta bort</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyDeleteFree</name>
+    <message>
+        <source>Delete Freehand</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first break point on a polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second break point on the same polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Entities not in the same polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parent of second entity is not a polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parent of second entity is NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>One of the chosen entities is NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parent of first entity is not a polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parent of first entity is NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>First entity is NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Second entity is NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyDeleteQuick</name>
+    <message>
+        <source>&Delete selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pick entity to delete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyEntity</name>
+    <message>
+        <source>Properties</source>
+        <translation type="obsolete">Egenskaper</translation>
+    </message>
+    <message>
+        <source>&Properties</source>
+        <translation>&Egenskaper</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyExplodeText</name>
+    <message>
+        <source>&Explode Text into Letters</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyMirror</name>
+    <message>
+        <source>&Mirror</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first point of mirror line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second point of mirror line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyMove</name>
+    <message>
+        <source>&Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify reference point</source>
+        <translation type="unfinished">Ange referenspunkt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify target point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyMoveRotate</name>
+    <message>
+        <source>M&ove and Rotate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Specify reference point</source>
+        <translation type="unfinished">Ange referenspunkt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify target point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter rotation angle:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyRotate</name>
+    <message>
+        <source>Rotate</source>
+        <translation type="obsolete">Rotera</translation>
+    </message>
+    <message>
+        <source>&Rotate</source>
+        <translation>&Rotera</translation>
+    </message>
+    <message>
+        <source>Specify reference point</source>
+        <translation type="unfinished">Ange referenspunkt</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyRotate2</name>
+    <message>
+        <source>Rotate T&wo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify absolute reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify relative reference point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyRound</name>
+    <message>
+        <source>&Round</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Specify first entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify second entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter radius:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyScale</name>
+    <message>
+        <source>&Scale</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify reference point</source>
+        <translation type="unfinished">Ange referenspunkt</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyStretch</name>
+    <message>
+        <source>&Stretch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second corner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify reference point</source>
+        <translation type="unfinished">Ange referenspunkt</translation>
+    </message>
+    <message>
+        <source>Specify target point</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyTrim</name>
+    <message>
+        <source>&Trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&Trim Two</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select first trim entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Select limiting entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select second trim entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select entity to trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionModifyTrimAmount</name>
+    <message>
+        <source>&Lengthen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No entity found. </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The chosen Entity is in a block. Please edit the block.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The chosen Entity is not an atomic entity or cannot be trimmed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid expression</source>
+        <translation type="unfinished">Inte ett giltigt uttryck</translation>
+    </message>
+    <message>
+        <source>Select entity to trim or enter distance:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionOptionsDrawing</name>
+    <message>
+        <source>Current &Drawing Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineAdd</name>
+    <message>
+        <source>&Add node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add polyline's node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Entity must be a polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Adding point is invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Adding point is not on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify polyline to add nodes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify adding node's point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineAppend</name>
+    <message>
+        <source>A&ppend node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Append polyline's node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Entity must be a polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Click somewhere near the beginning or end of existing polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify the polyline somewhere near the beginning or end point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify next point or [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify next point</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineDel</name>
+    <message>
+        <source>&Delete node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete polyline's node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Entity must be a polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Adding point is invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Adding point is not on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify polyline to delete node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify deleting node's point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineDelBetween</name>
+    <message>
+        <source>Delete &between two nodes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete between two nodes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Entity must be a polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deletinging point is invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deleting point is not on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deleteinging point is not on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify polyline to delete between two nodes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify first node</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify second node</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineEquidistant</name>
+    <message>
+        <source>Create &Equidistant Polylines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create Equidistant Polylines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Entity must be a polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Choose the original polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineSegment</name>
+    <message>
+        <source>Create Polyline from Existing &Segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create Polyline from Existing Segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Entity must be a line or arc.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Choose one of the segments on the original polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPolylineTrim</name>
+    <message>
+        <source>&Trim segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trim polyline's segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Entity found.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Entity must be a polyline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specifying point is invalid.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No Segment found on entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify polyline to trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify first segment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify second segment</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionPrintPreview</name>
+    <message>
+        <source>Print Pre&view</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectAll</name>
+    <message>
+        <source>Select All</source>
+        <translation type="obsolete">Markera allt</translation>
+    </message>
+    <message>
+        <source>Select &All</source>
+        <translation>Markera &allt</translation>
+    </message>
+    <message>
+        <source>Deselect all</source>
+        <translation type="obsolete">Avmarkera allt</translation>
+    </message>
+    <message>
+        <source>Deselect &all</source>
+        <translation>Avmarkera &allt</translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectContour</name>
+    <message>
+        <source>(De-)Select &Contour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Entity must be an Atomic Entity.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectIntersected</name>
+    <message>
+        <source>Select Intersected Entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deselect Intersected Entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Choose first point of intersection line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Choose second point of intersection line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectInvert</name>
+    <message>
+        <source>Invert Selection</source>
+        <translation>Invertera markering</translation>
+    </message>
+    <message>
+        <source>&Invert Selection</source>
+        <translation type="obsolete">&Invertera markering</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectLayer</name>
+    <message>
+        <source>(De-)Select Layer</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectSingle</name>
+    <message>
+        <source>Select Entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSelectWindow</name>
+    <message>
+        <source>Select Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deselect Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Choose first edge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Choose second edge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSetRelativeZero</name>
+    <message>
+        <source>Set Relative Zero</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Set relative Zero</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionSnapIntersectionManual</name>
+    <message>
+        <source>I&ntersection Manually</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select first entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select second entity</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionToolRegenerateDimensions</name>
+    <message>
+        <source>Regenerate Dimension Entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Regenerated %1 dimension entities</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No dimension entities found</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomAuto</name>
+    <message>
+        <source>&Auto Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomIn</name>
+    <message>
+        <source>Zoom in</source>
+        <translation type="obsolete">Zooma in</translation>
+    </message>
+    <message>
+        <source>Zoom &In</source>
+        <translation>Zooma &in</translation>
+    </message>
+    <message>
+        <source>Zooms in</source>
+        <translation type="obsolete">Zoomar in</translation>
+    </message>
+    <message>
+        <source>Zoom out</source>
+        <translation type="obsolete">Zooma ut</translation>
+    </message>
+    <message>
+        <source>Zoom &Out</source>
+        <translation>Zooma &ut</translation>
+    </message>
+    <message>
+        <source>Zooms out</source>
+        <translation type="obsolete">Zoomar ut</translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomPan</name>
+    <message>
+        <source>&Pan Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomPrevious</name>
+    <message>
+        <source>&Previous View</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomRedraw</name>
+    <message>
+        <source>&Redraw</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_ActionZoomWindow</name>
+    <message>
+        <source>&Window Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify first edge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Specify second edge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>RS_Commands</name>
+    <message>
+        <source>line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rectangle</source>
+        <translation>rektangel</translation>
+    </message>
+    <message>
+        <source>text</source>
+        <translation>text</translation>
+    </message>
+    <message>
+        <source>regen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>undo</source>
+        <translation>Ã¥ngra</translation>
+    </message>
+    <message>
+        <source>u</source>
+        <comment>undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>redo</source>
+        <translation>gör om</translation>
+    </message>
+    <message>
+        <source>arc</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>angle</source>
+        <translation>vinkel</translation>
+    </message>
+    <message>
+        <source>factor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>columns</source>
+        <translation>kolumner</translation>
+    </message>
+    <message>
+        <source>rows</source>
+        <translation>rader</translation>
+    </message>
+    <message>
+        <source>columnspacing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rowspacing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ang</source>
+        <comment>angle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>a</source>
+        <comment>angle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fact</source>
+        <comment>factor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>f</source>
+        <comment>factor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cols</source>
+        <comment>columns</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>c</source>
+        <comment>columns</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>r</source>
+        <comment>rows</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>columnspacing</source>
+        <comment>columnspacing for inserts</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>colspacing</source>
+        <comment>columnspacing for inserts</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cs</source>
+        <comment>columnspacing for inserts</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rowspacing</source>
+        <comment>rowspacing for inserts</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rs</source>
+        <comment>rowspacing for inserts</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>cen</source>
+        <comment>center</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>c</source>
+        <comment>center</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>reversed</source>
+        <comment>reversed arc</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rev</source>
+        <comment>reversed arc</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>r</source>
+        <comment>reversed arc</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>po</source>
+        <comment>point</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>offset</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>o</source>
+        <comment>offset</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>parallel</source>
+        <translation>parallell</translation>
+    </message>
+    <message>
+        <source>length</source>
+        <translation>längd</translation>
+    </message>
+    <message>
+        <source>close</source>
+        <translation>stäng</translation>
+    </message>
+    <message>
+        <source>number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>through</source>
+        <translation>genom</translation>
+    </message>
+    <message>
+        <source>help</source>
+        <translation>hjälp</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>length</source>
+        <comment>length</comment>
+        <translation>längd</translation>
+    </message>
+    <message>
+        <source>len</source>
+        <comment>length</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>l</source>
+        <comment>length</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>c</source>
+        <comment>close</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>num</source>
+        <comment>number</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>n</source>
+        <comment>number</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>t</source>
+        <comment>through</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>par</source>
+        <comment>parallel</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>length1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>length2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>radius</source>
+        <translation>radie</translation>
+    </message>
+    <message>
+        <source>trim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>length1</source>
+        <comment>length1</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>len1</source>
+        <comment>length1</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>l1</source>
+        <comment>length1</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>length2</source>
+        <comment>length2</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>len2</source>
+        <comment>length2</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>l2</source>
+        <comment>length2</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>r</source>
+        <comment>radius</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>t</source>
+        <comment>text</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>chord length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>length</source>
+        <comment>chord length</comment>
+        <translation type="unfinished">längd</translation>
+    </message>
+    <message>
+        <source>l</source>
+        <comment>chord length</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Command: %1</source>
+        <translation>Kommando: %1</translation>
+    </message>
+    <message>
+        <source>Available commands:</source>
+        <translation>Tillgängliga kommandon:</translation>
+    </message>
+    <message>
+        <source>circle</source>
+        <translation>cirkel</translation>
+    </message>
+    <message>
+        <source>ci</source>
+        <comment>circle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zw</source>
+        <comment>zoom - window</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>za</source>
+        <comment>zoom - auto</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zp</source>
+        <comment>zoom - pan</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>li</source>
+        <comment>line</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>re</source>
+        <comment>rectangle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rp</source>
+        <comment>regular polygon</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>c2</source>
+        <comment>2 point circle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>c3</source>
+        <comment>3 point circle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ar</source>
+        <comment>arc</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>a3</source>
+        <comment>3 point arc</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ep</source>
+        <comment>ellipse</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tx</source>
+        <comment>text</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>mt</source>
+        <comment>text</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>da</source>
+        <comment>dimension - aligned</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>dh</source>
+        <comment>dimension - horizontal</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>dv</source>
+        <comment>dimension - vertical</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>dr</source>
+        <comment>dimension - linear</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ld</source>
+        <comment>dimension - leader</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rd</source>
+        <comment>redraw</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zi</source>
+        <comment>zoom - in</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zo</source>
+        <comment>zoom - out</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>os</source>
+        <comment>snap - none</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sg</source>
+        <comment>snap - grid</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>se</source>
+        <comment>snap - end</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>si</source>
+        <comment>snap - intersection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sn</source>
+        <comment>snap - center</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sm</source>
+        <comment>snap - middle</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sn</source>
+        <comment>snap - nearest</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>np</source>
+        <comment>snap - nearest point</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>fr*</source>
+        <comment>layers - freeze all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>th*</source>
+        <comment>layers - defreeze all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tn</source>
+        <comment>Deselect all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ch</source>
+        <comment>modify - bevel (chamfer)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>xt</source>
+        <comment>modify - trim (extend)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rm</source>
+        <comment>modify - trim</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>mv</source>
+        <comment>modify - move</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>mi</source>
+        <comment>modify - mirror</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ro</source>
+        <comment>modify - rotate</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sz</source>
+        <comment>modify - scale</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ss</source>
+        <comment>modify - stretch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>er</source>
+        <comment>modify - delete (erase)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>oo</source>
+        <comment>modify - undo (oops)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uu</source>
+        <comment>modify - redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>xp</source>
+        <comment>modify - explode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ex</source>
+        <comment>modify - explode</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>dimregen</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>po</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ln</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>l</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>a</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ci</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rectang</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rg</source>
+        <comment>zoom - redraw</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zr</source>
+        <comment>zoom - redraw</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>zv</source>
+        <comment>zoom - previous</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>r</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>polyline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>pa</source>
+        <comment>parallel</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tm</source>
+        <comment>modify - multi trim (extend)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>kill</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>k</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>da</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>dh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>dr</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>dv</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ld</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>xt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>mv</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>mi</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ro</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sz</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ss</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>er</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>oo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>uu</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>xp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>os</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sg</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>se</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>si</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sn</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>sm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>np</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>tn</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>back</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>b</source>
+        <comment>back</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
diff --git a/ts/librecad_tr.ts b/ts/librecad_tr.ts
index 27f448e..85fee34 100644
--- a/ts/librecad_tr.ts
+++ b/ts/librecad_tr.ts
@@ -17,6 +17,39 @@
     </message>
 </context>
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Ä°ptal</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Ä°ptal</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Ä°ptal</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>&File</source>
@@ -280,7 +313,7 @@ Lütfen dosya izinlerine bakın.</translation>
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>Simulation Controls</source>
@@ -371,10 +404,6 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&Plugins</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
@@ -698,7 +727,7 @@ Auto-save disabled.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>&back</source>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1220,7 +1249,7 @@ için açar</translation>
     </message>
     <message>
         <source>Move</source>
-        <translation>Taşı</translation>
+        <translation type="obsolete">Taşı</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -1228,7 +1257,7 @@ için açar</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>İki merkezle döndür</translation>
+        <translation type="obsolete">İki merkezle döndür</translation>
     </message>
     <message>
         <source>Trim / Extend two</source>
@@ -1246,6 +1275,14 @@ için açar</translation>
         <source>Edit Text</source>
         <translation>Metni Düzenle</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished">Taşı / Kopyala</translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">İkili Döndür</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -4793,6 +4830,22 @@ Do you want to replace it?</source>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
diff --git a/ts/librecad_uk.ts b/ts/librecad_uk.ts
index adcba59..2948f27 100644
--- a/ts/librecad_uk.ts
+++ b/ts/librecad_uk.ts
@@ -2,6 +2,39 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="uk">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <source>Select object:</source>
+        <translation>Вибрати об’єкт: </translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Відміна</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <source>Specify a point</source>
+        <translation>Вкажіть точку</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Відміна</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <source>Select objects:</source>
+        <translation>Вибрати об’єкти: </translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Відміна</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
         <source>Running script '%1'</source>
@@ -93,7 +126,7 @@
     </message>
     <message>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
         <source>About</source>
@@ -220,119 +253,123 @@ Please check the permissions.</source>
 %1
 Please check the permissions.
 Auto-save disabled.</source>
-        <translation type="unfinished"></translation>
+        <translation>Неможливо автоматично зберегти файл
+%1
+Будь ласка, перевірте права доступу.
+Автозбереження вимкнуте.</translation>
     </message>
     <message>
         <source>Exporting drawing...</source>
-        <translation type="unfinished"></translation>
+        <translation>Експортування креслення…</translation>
     </message>
     <message>
         <source>Exported: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Експортовано: %1</translation>
     </message>
     <message>
         <source>Exporting...</source>
-        <translation type="unfinished"></translation>
+        <translation>Експортування…</translation>
     </message>
     <message>
         <source>Export complete</source>
-        <translation type="unfinished"></translation>
+        <translation>Експорт завершено</translation>
     </message>
     <message>
         <source>Export failed!</source>
-        <translation type="unfinished"></translation>
+        <translation>Помилка експорту!</translation>
     </message>
     <message>
         <source>Printing...</source>
-        <translation type="unfinished"></translation>
+        <translation>Друк…</translation>
     </message>
     <message>
         <source>Printing complete</source>
-        <translation type="unfinished"></translation>
+        <translation>Друк завершено</translation>
     </message>
     <message>
         <source>Print preview for %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Попередній перегляд перед друком для „%1“</translation>
     </message>
     <message>
         <source>Exiting application...</source>
-        <translation type="unfinished"></translation>
+        <translation>Вихід з програми…</translation>
     </message>
     <message>
         <source>None</source>
-        <translation type="unfinished"></translation>
+        <translation>Немає</translation>
     </message>
     <message>
         <source>About...</source>
-        <translation type="unfinished"></translation>
+        <translation>Про програму…</translation>
     </message>
     <message>
         <source>Modules: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Модулі: %1</translation>
     </message>
     <message>
         <source>Help</source>
-        <translation type="unfinished"></translation>
+        <translation>Довідка</translation>
     </message>
     <message>
         <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
-        <translation type="unfinished"></translation>
+        <translation>От чорт! Я не зміг знайти файли довідки у файловій системі.</translation>
     </message>
     <message>
         <source>&Plugins</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">&Додатки</translation>
     </message>
     <message>
         <source>Import</source>
-        <translation type="unfinished"></translation>
+        <translation>Імпорт</translation>
     </message>
     <message>
         <source>&Toolbars</source>
-        <translation type="unfinished"></translation>
+        <translation>Панелі &інструментів</translation>
     </message>
     <message>
         <source>Compiled on: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Скомпільовано на дату: %1</translation>
     </message>
     <message>
         <source>Program Icons Supplied by</source>
-        <translation type="unfinished"></translation>
+        <translation>Іконки для програми надано</translation>
     </message>
     <message>
         <source>Splash and Logo supplied by</source>
-        <translation type="unfinished"></translation>
+        <translation>Заставку та логотип надано</translation>
     </message>
     <message>
         <source>Main Website : </source>
-        <translation type="unfinished"></translation>
+        <translation>Основний веб-сайт: </translation>
     </message>
     <message>
         <source>Version: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Версія: %1</translation>
     </message>
     <message>
         <source>SCM Revision: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Ревізія SCM: %1</translation>
     </message>
     <message>
         <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
-        <translation type="unfinished"></translation>
+        <translation>Будь ласка, пожертвуйте кошти на підтримку й розвиток джерельного коду та сайту LibreCAD.</translation>
     </message>
 </context>
 <context>
     <name>QC_MDIWindow</name>
     <message>
         <source>Do you really want to close the drawing?</source>
-        <translation type="unfinished"></translation>
+        <translation>Ви справді хочете закрити це креслення?</translation>
     </message>
     <message>
         <source>Do you really want to close the file
 %1?</source>
-        <translation type="unfinished"></translation>
+        <translation>Ви справді бажаєте закрити файл
+%1?</translation>
     </message>
     <message>
         <source>Closing Drawing</source>
-        <translation type="unfinished"></translation>
+        <translation>Закриття креслення</translation>
     </message>
 </context>
 <context>
@@ -1819,18 +1856,22 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>&Quit</source>
-        <translation type="unfinished">&Вихід</translation>
+        <translation>&Вихід</translation>
     </message>
     <message>
         <source>CTRL-G</source>
-        <translation type="unfinished"></translation>
+        <translation>CTRL-G</translation>
     </message>
     <message>
         <source>Restrict&Vertically</source>
-        <translation type="unfinished"></translation>
+        <translation>Обмежити &вертикально</translation>
     </message>
     <message>
         <source>&back</source>
+        <translation type="obsolete">&назад</translation>
+    </message>
+    <message>
+        <source>&Selection pointer</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1853,11 +1894,11 @@ Auto-save disabled.</source>
     <name>QG_ArcTangentialOptions</name>
     <message>
         <source>Tangential Arc Options</source>
-        <translation type="unfinished"></translation>
+        <translation>Тангенціальні параметри дуги</translation>
     </message>
     <message>
         <source>Radius:</source>
-        <translation type="unfinished">Радіус:</translation>
+        <translation>Радіус: </translation>
     </message>
 </context>
 <context>
@@ -1872,7 +1913,7 @@ Auto-save disabled.</source>
     </message>
     <message>
         <source>Check to trim both entities to the bevel</source>
-        <translation>Встановіть, щоб усікти обидва базових об’єкти</translation>
+        <translation>Позначте, щоб усікти обидва об’єкти до фаски</translation>
     </message>
     <message>
         <source>Length 1:</source>
@@ -2146,7 +2187,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Area of polygon</source>
-        <translation type="unfinished"></translation>
+        <translation>Площа багатокутника</translation>
     </message>
 </context>
 <context>
@@ -2280,15 +2321,16 @@ in a separate window</source>
     </message>
     <message>
         <source>Points</source>
-        <translation type="unfinished">Точки</translation>
+        <translation>Точки</translation>
     </message>
     <message>
         <source>Splines</source>
-        <translation type="unfinished">Сплайни</translation>
+        <translation>Сплайни</translation>
     </message>
     <message>
         <source>Polylines</source>
-        <translation type="unfinished">Багатокутники</translation>
+        <translatorcomment>Багатокутники</translatorcomment>
+        <translation>Ламані</translation>
     </message>
 </context>
 <context>
@@ -2311,7 +2353,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Move</source>
-        <translation>Зрушення</translation>
+        <translation type="obsolete">Зрушення</translation>
     </message>
     <message>
         <source>Move and Rotate</source>
@@ -2319,7 +2361,7 @@ in a separate window</source>
     </message>
     <message>
         <source>Explode</source>
-        <translation>Зруйнувати</translation>
+        <translation>Розбити</translation>
     </message>
     <message>
         <source>Delete</source>
@@ -2343,19 +2385,19 @@ in a separate window</source>
     </message>
     <message>
         <source>Trim by amount</source>
-        <translation>Вирівняти на величину</translation>
+        <translation>Усікти на величину</translation>
     </message>
     <message>
         <source>Trim / Extend two</source>
-        <translation>Вирівняти/розтягнути два об’єкти</translation>
+        <translation>Усікти/розтягнути обидва</translation>
     </message>
     <message>
         <source>Trim / Extend</source>
-        <translation>Вирівняти/розтягнути</translation>
+        <translation>Усікти/розтягнути</translation>
     </message>
     <message>
         <source>Rotate around two centers</source>
-        <translation>Обертати навколо двох центрів</translation>
+        <translation type="obsolete">Обертати навколо двох центрів</translation>
     </message>
     <message>
         <source>Edit Entity Attributes</source>
@@ -2375,12 +2417,20 @@ in a separate window</source>
     </message>
     <message>
         <source>Explode Text into Letters</source>
-        <translation>Зруйнувати текст на букви</translation>
+        <translation>Розбити текст на букви</translation>
     </message>
     <message>
         <source>Edit Text</source>
         <translation>Редагувати текст</translation>
     </message>
+    <message>
+        <source>Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rotate Two</source>
+        <translation type="unfinished">Обертати навколо двох</translation>
+    </message>
 </context>
 <context>
     <name>QG_CadToolBarPoints</name>
@@ -2401,35 +2451,38 @@ in a separate window</source>
     <name>QG_CadToolBarPolylines</name>
     <message>
         <source>Polylines</source>
-        <translation type="unfinished">Багатокутники</translation>
+        <translatorcomment>Багатокутники</translatorcomment>
+        <translation>Ламані</translation>
     </message>
     <message>
         <source>Back to main menu</source>
-        <translation type="unfinished">Назад до головного меню</translation>
+        <translation>Назад до головного меню</translation>
     </message>
     <message>
         <source>Create Polyline</source>
-        <translation type="unfinished">Створити багатокутник</translation>
+        <translatorcomment>Створити багатокутник</translatorcomment>
+        <translation>Створити ламану</translation>
     </message>
     <message>
         <source>Delete between two nodes</source>
-        <translation type="unfinished"></translation>
+        <translation>Вилучити між двома вузлами</translation>
     </message>
     <message>
         <source>Add node</source>
-        <translation type="unfinished"></translation>
+        <translation>Додати вузол</translation>
     </message>
     <message>
         <source>Delete node</source>
-        <translation type="unfinished"></translation>
+        <translation>Вилучити вузол</translation>
     </message>
     <message>
         <source>Trim segments</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>вирівняти відрізки, сегменти</translatorcomment>
+        <translation>Усікти відрізки</translation>
     </message>
     <message>
         <source>Append node</source>
-        <translation type="unfinished"></translation>
+        <translation>Доповнити вузол</translation>
     </message>
 </context>
 <context>
@@ -2562,15 +2615,15 @@ in a separate window</source>
     <name>QG_CadToolBarSplines</name>
     <message>
         <source>Splines</source>
-        <translation type="unfinished">Сплайни</translation>
+        <translation>Сплайни</translation>
     </message>
     <message>
         <source>Back to main menu</source>
-        <translation type="unfinished">Назад до головного меню</translation>
+        <translation>Назад до головного меню</translation>
     </message>
     <message>
         <source>Spline</source>
-        <translation type="unfinished">Сплайн</translation>
+        <translation>Сплайн</translation>
     </message>
 </context>
 <context>
@@ -2680,31 +2733,31 @@ in a separate window</source>
     </message>
     <message utf8="true">
         <source>ø</source>
-        <translation></translation>
+        <translation>ø</translation>
     </message>
     <message utf8="true">
         <source>°</source>
-        <translation></translation>
+        <translation>°</translation>
     </message>
     <message utf8="true">
         <source>±</source>
-        <translation></translation>
+        <translation>±</translation>
     </message>
     <message utf8="true">
         <source>¶</source>
-        <translation></translation>
+        <translation>¶</translation>
     </message>
     <message utf8="true">
         <source>×</source>
-        <translation></translation>
+        <translation>×</translation>
     </message>
     <message utf8="true">
         <source>÷</source>
-        <translation></translation>
+        <translation>÷</translation>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>…</translation>
     </message>
 </context>
 <context>
@@ -2938,7 +2991,8 @@ in a separate window</source>
     </message>
     <message>
         <source>Dimension</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>хоча може конфліктувати зі Size</translatorcomment>
+        <translation>Розмір</translation>
     </message>
 </context>
 <context>
@@ -3091,7 +3145,11 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <br>
 Please choose the unit you want to use for new drawings and your preferred language.<br>
 You can changes these settings later in the Options Dialog of QCad.</source>
-        <translation type="unfinished"></translation>
+        <translation><font size="+1"><b>Ласкаво просимо до QCad</b>
+</font>
+<br>
+Будь ласка, виберіть одиниці вимірювання для нових креслень і вибір мови<br>
+Ці встановлення Ви посже зможете змінити в меню „Налаштування програми…“ QCad.</translation>
     </message>
 </context>
 <context>
@@ -3236,7 +3294,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>…</translation>
     </message>
 </context>
 <context>
@@ -3287,7 +3345,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>…</translation>
     </message>
 </context>
 <context>
@@ -3338,11 +3396,11 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>…</translation>
     </message>
     <message>
         <source>Ctrl+S</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+S</translation>
     </message>
 </context>
 <context>
@@ -3437,7 +3495,8 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Surveyor's units</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>?</translatorcomment>
+        <translation>Геометричні одиниці</translation>
     </message>
     <message>
         <source>Options</source>
@@ -3557,47 +3616,47 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Splines</source>
-        <translation type="unfinished">Сплайни</translation>
+        <translation>Сплайни</translation>
     </message>
     <message>
         <source>Number of line segments per spline patch:</source>
-        <translation type="unfinished"></translation>
+        <translation>Кількість відрізків на ділянку сплайна: </translation>
     </message>
     <message>
         <source>4</source>
-        <translation type="unfinished">4</translation>
+        <translation>4</translation>
     </message>
     <message>
         <source>8</source>
-        <translation type="unfinished">8</translation>
+        <translation>8</translation>
     </message>
     <message>
         <source>16</source>
-        <translation type="unfinished">16</translation>
+        <translation>16</translation>
     </message>
     <message>
         <source>32</source>
-        <translation type="unfinished">32</translation>
+        <translation>32</translation>
     </message>
     <message>
         <source>64</source>
-        <translation type="unfinished">64</translation>
+        <translation>64</translation>
     </message>
     <message>
         <source>0.01</source>
-        <translation type="unfinished">0.01</translation>
+        <translation>0.01</translation>
     </message>
     <message>
         <source>0.1</source>
-        <translation type="unfinished">0.1</translation>
+        <translation>0.1</translation>
     </message>
     <message>
         <source>10</source>
-        <translation type="unfinished">10</translation>
+        <translation>10</translation>
     </message>
     <message>
         <source>P&recision:</source>
-        <translation type="unfinished"></translation>
+        <translation>То&чність: </translation>
     </message>
 </context>
 <context>
@@ -3676,7 +3735,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>&Command Language:</source>
-        <translation>Мо&ва командної стрічки:</translation>
+        <translation>Мо&ва команд:</translation>
     </message>
     <message>
         <source>&Show large crosshairs</source>
@@ -3824,39 +3883,39 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Alt+U</source>
-        <translation type="unfinished"></translation>
+        <translation>Alt+U</translation>
     </message>
     <message>
         <source>Minimal Grid Spacing (px):</source>
-        <translation type="unfinished"></translation>
+        <translation>Мінімальний крок сітки (в пікселях): </translation>
     </message>
     <message>
         <source>#000000</source>
-        <translation type="unfinished"></translation>
+        <translation>#000000</translation>
     </message>
     <message>
         <source>#ffffff</source>
-        <translation type="unfinished"></translation>
+        <translation>#ffffff</translation>
     </message>
     <message>
         <source>#c0c0c0</source>
-        <translation type="unfinished"></translation>
+        <translation>#c0c0c0</translation>
     </message>
     <message>
         <source>#808080</source>
-        <translation type="unfinished"></translation>
+        <translation>#808080</translation>
     </message>
     <message>
         <source>#404040</source>
-        <translation type="unfinished"></translation>
+        <translation>#404040</translation>
     </message>
     <message>
         <source>#a54747</source>
-        <translation type="unfinished"></translation>
+        <translation>#a54747</translation>
     </message>
     <message>
         <source>#739373</source>
-        <translation type="unfinished"></translation>
+        <translation>#739373</translation>
     </message>
     <message>
         <source>Program Defaults</source>
@@ -3864,46 +3923,46 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Time between automatc saving of thedocument in minutes.</source>
-        <translation type="unfinished"></translation>
+        <translation>Час між авто-збереженнями файлу, в хвилинах.</translation>
     </message>
     <message>
         <source>Auto save time:</source>
-        <translation type="unfinished"></translation>
+        <translation>Час автозбереження: </translation>
     </message>
 </context>
 <context>
     <name>QG_DlgOptionsVariables</name>
     <message>
         <source>Drawing Variables</source>
-        <translation type="unfinished"></translation>
+        <translation>Змінні креслення</translation>
     </message>
     <message>
         <source>Variable</source>
-        <translation type="unfinished"></translation>
+        <translation>Змінна</translation>
     </message>
     <message>
         <source>Code</source>
-        <translation type="unfinished"></translation>
+        <translation>Код</translation>
     </message>
     <message>
         <source>Value</source>
-        <translation type="unfinished"></translation>
+        <translation>Значення</translation>
     </message>
     <message>
         <source>&OK</source>
-        <translation type="unfinished"></translation>
+        <translation>&Гаразд</translation>
     </message>
     <message>
         <source>Alt+O</source>
-        <translation type="unfinished">Alt + O</translation>
+        <translation>Alt+O</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Esc</source>
-        <translation type="unfinished">Esc</translation>
+        <translation>Esc</translation>
     </message>
 </context>
 <context>
@@ -3989,7 +4048,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>…</translation>
     </message>
 </context>
 <context>
@@ -4040,7 +4099,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>…</translation>
     </message>
 </context>
 <context>
@@ -4091,58 +4150,58 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>…</translation>
     </message>
 </context>
 <context>
     <name>QG_DlgSpline</name>
     <message>
         <source>Spline</source>
-        <translation type="unfinished">Сплайн</translation>
+        <translation>Сплайн</translation>
     </message>
     <message>
         <source>Layer:</source>
-        <translation type="unfinished">Шар:</translation>
+        <translation>Шар:</translation>
     </message>
     <message>
         <source>Geometry</source>
-        <translation type="unfinished">Геометрія</translation>
+        <translation>Геометрія</translation>
     </message>
     <message>
         <source>Degree:</source>
-        <translation type="unfinished"></translation>
+        <translation>Ступінь: </translation>
     </message>
     <message>
         <source>Closed</source>
-        <translation type="unfinished"></translation>
+        <translation>Закрито</translation>
     </message>
     <message>
         <source>1</source>
-        <translation type="unfinished">1</translation>
+        <translation>1</translation>
     </message>
     <message>
         <source>2</source>
-        <translation type="unfinished">2</translation>
+        <translation>2</translation>
     </message>
     <message>
         <source>3</source>
-        <translation type="unfinished">3</translation>
+        <translation>3</translation>
     </message>
     <message>
         <source>&OK</source>
-        <translation type="unfinished">&Гаразд</translation>
+        <translation>&Гаразд</translation>
     </message>
     <message>
         <source>Alt+O</source>
-        <translation type="unfinished">Alt + O</translation>
+        <translation>Alt+O</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Esc</source>
-        <translation type="unfinished">Esc</translation>
+        <translation>Esc</translation>
     </message>
 </context>
 <context>
@@ -4157,7 +4216,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Clear Text</source>
-        <translation>Очистити тескт</translation>
+        <translation>Очистити текст</translation>
     </message>
     <message>
         <source>Load Text From File</source>
@@ -4305,435 +4364,435 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>[0000-007F] Basic Latin</source>
-        <translation type="unfinished"></translation>
+        <translation>[0000-007F] Основна латиниця</translation>
     </message>
     <message>
         <source>[0080-00FF] Latin-1 Supplementary</source>
-        <translation type="unfinished"></translation>
+        <translation>[0080-00FF] Додаткова латиниця-1</translation>
     </message>
     <message>
         <source>[0100-017F] Latin Extended-A</source>
-        <translation type="unfinished"></translation>
+        <translation>[0100-017F] Розширена латиниця-A</translation>
     </message>
     <message>
         <source>[0180-024F] Latin Extended-B</source>
-        <translation type="unfinished"></translation>
+        <translation>[0180-024F] Розширена латиниця-B</translation>
     </message>
     <message>
         <source>[0250-02AF] IPA Extensions</source>
-        <translation type="unfinished"></translation>
+        <translation>[0250-02AF] Розширення міжнародного фонетичного алфавіту</translation>
     </message>
     <message>
         <source>[02B0-02FF] Spacing Modifier Letters</source>
-        <translation type="unfinished"></translation>
+        <translation>[02B0-02FF] Модифікатори відступу букв</translation>
     </message>
     <message>
         <source>[0300-036F] Combining Diacritical Marks</source>
-        <translation type="unfinished"></translation>
+        <translation>[0300-036F] Поєднувальні діакритичні знаки</translation>
     </message>
     <message>
         <source>[0370-03FF] Greek and Coptic</source>
-        <translation type="unfinished"></translation>
+        <translation>[0370-03FF] Грецькі та коптські</translation>
     </message>
     <message>
         <source>[0400-04FF] Cyrillic</source>
-        <translation type="unfinished"></translation>
+        <translation>[0400-04FF] Кирилиця</translation>
     </message>
     <message>
         <source>[0500-052F] Cyrillic Supplementary</source>
-        <translation type="unfinished"></translation>
+        <translation>[0500-052F] Кирилиця, додаткові</translation>
     </message>
     <message>
         <source>[0530-058F] Armenian</source>
-        <translation type="unfinished"></translation>
+        <translation>[0530-058F] Вірменські</translation>
     </message>
     <message>
         <source>[0590-05FF] Hebrew</source>
-        <translation type="unfinished"></translation>
+        <translation>[0590-05FF] Іврит</translation>
     </message>
     <message>
         <source>[0600-06FF] Arabic</source>
-        <translation type="unfinished"></translation>
+        <translation>[0600-06FF] Арабські</translation>
     </message>
     <message>
         <source>[0700-074F] Syriac</source>
-        <translation type="unfinished"></translation>
+        <translation>[0700-074F] Сирійські</translation>
     </message>
     <message>
         <source>[0780-07BF] Thaana</source>
-        <translation type="unfinished"></translation>
+        <translation>[0780-07BF] Таана</translation>
     </message>
     <message>
         <source>[0900-097F] Devanagari</source>
-        <translation type="unfinished"></translation>
+        <translation>[0900-097F] Деванаґарі</translation>
     </message>
     <message>
         <source>[0980-09FF] Bengali</source>
-        <translation type="unfinished"></translation>
+        <translation>[0980-09FF] Бенгальські</translation>
     </message>
     <message>
         <source>[0A00-0A7F] Gurmukhi</source>
-        <translation type="unfinished"></translation>
+        <translation>[0A00-0A7F] Ґурмукі</translation>
     </message>
     <message>
         <source>[0A80-0AFF] Gujarati</source>
-        <translation type="unfinished"></translation>
+        <translation>[0A80-0AFF] Гуджараті</translation>
     </message>
     <message>
         <source>[0B00-0B7F] Oriya</source>
-        <translation type="unfinished"></translation>
+        <translation>[0B00-0B7F] Орія</translation>
     </message>
     <message>
         <source>[0B80-0BFF] Tamil</source>
-        <translation type="unfinished"></translation>
+        <translation>[0B80-0BFF] Тамільські</translation>
     </message>
     <message>
         <source>[0C00-0C7F] Telugu</source>
-        <translation type="unfinished"></translation>
+        <translation>[0C00-0C7F] Телугу</translation>
     </message>
     <message>
         <source>[0C80-0CFF] Kannada</source>
-        <translation type="unfinished"></translation>
+        <translation>[0C80-0CFF] Каннада</translation>
     </message>
     <message>
         <source>[0D00-0D7F] Malayalam</source>
-        <translation type="unfinished"></translation>
+        <translation>[0D00-0D7F] Малаялам</translation>
     </message>
     <message>
         <source>[0D80-0DFF] Sinhala</source>
-        <translation type="unfinished"></translation>
+        <translation>[0D80-0DFF] Сингальські</translation>
     </message>
     <message>
         <source>[0E00-0E7F] Thai</source>
-        <translation type="unfinished"></translation>
+        <translation>[0E00-0E7F] Тайські</translation>
     </message>
     <message>
         <source>[0E80-0EFF] Lao</source>
-        <translation type="unfinished"></translation>
+        <translation>[0E80-0EFF] Лао</translation>
     </message>
     <message>
         <source>[0F00-0FFF] Tibetan</source>
-        <translation type="unfinished"></translation>
+        <translation>[0F00-0FFF] Тибетські</translation>
     </message>
     <message>
         <source>[1000-109F] Myanmar</source>
-        <translation type="unfinished"></translation>
+        <translation>[1000-109F] М’янма</translation>
     </message>
     <message>
         <source>[10A0-10FF] Georgian</source>
-        <translation type="unfinished"></translation>
+        <translation>[10A0-10FF] Грузинські</translation>
     </message>
     <message>
         <source>[1100-11FF] Hangul Jamo</source>
-        <translation type="unfinished"></translation>
+        <translation>[1100-11FF] Хангиль Чамо</translation>
     </message>
     <message>
         <source>[1200-137F] Ethiopic</source>
-        <translation type="unfinished"></translation>
+        <translation>[1200-137F] Ефіопські</translation>
     </message>
     <message>
         <source>[13A0-13FF] Cherokee</source>
-        <translation type="unfinished"></translation>
+        <translation>[13A0-13FF] Черокі</translation>
     </message>
     <message>
         <source>[1400-167F] Unified Canadian Aboriginal Syllabic</source>
-        <translation type="unfinished"></translation>
+        <translation>[1400-167F] Єдине канадське складове письмо</translation>
     </message>
     <message>
         <source>[1680-169F] Ogham</source>
-        <translation type="unfinished"></translation>
+        <translation>[1680-169F] Огам</translation>
     </message>
     <message>
         <source>[16A0-16FF] Runic</source>
-        <translation type="unfinished"></translation>
+        <translation>[16A0-16FF] Рунічні</translation>
     </message>
     <message>
         <source>[1700-171F] Tagalog</source>
-        <translation type="unfinished"></translation>
+        <translation>[1700-171F] Тагальські</translation>
     </message>
     <message>
         <source>[1720-173F] Hanunoo</source>
-        <translation type="unfinished"></translation>
+        <translation>[1720-173F] Хануноо</translation>
     </message>
     <message>
         <source>[1740-175F] Buhid</source>
-        <translation type="unfinished"></translation>
+        <translation>[1740-175F] Бухід</translation>
     </message>
     <message>
         <source>[1760-177F] Tagbanwa</source>
-        <translation type="unfinished"></translation>
+        <translation>[1760-177F] Тагбанва</translation>
     </message>
     <message>
         <source>[1780-17FF] Khmer</source>
-        <translation type="unfinished"></translation>
+        <translation>[1780-17FF] Кхмерські</translation>
     </message>
     <message>
         <source>[1800-18AF] Mongolian</source>
-        <translation type="unfinished"></translation>
+        <translation>[1800-18AF] Монгольські</translation>
     </message>
     <message>
         <source>[1E00-1EFF] Latin Extended Additional</source>
-        <translation type="unfinished"></translation>
+        <translation>[1E00-1EFF] Розширена латиниця, додаткові</translation>
     </message>
     <message>
         <source>[1F00-1FFF] Greek Extended</source>
-        <translation type="unfinished"></translation>
+        <translation>[1F00-1FFF] Грецькі, додаткові</translation>
     </message>
     <message>
         <source>[2000-206F] General Punctuation</source>
-        <translation type="unfinished"></translation>
+        <translation>[2000-206F] Знаки пунктуації</translation>
     </message>
     <message>
         <source>[2070-209F] Superscripts and Subscripts</source>
-        <translation type="unfinished"></translation>
+        <translation>[2070-209F] Верхні та нижні індекси</translation>
     </message>
     <message>
         <source>[20A0-20CF] Currency Symbols</source>
-        <translation type="unfinished"></translation>
+        <translation>[20A0-20CF] Символи валют</translation>
     </message>
     <message>
         <source>[20D0-20FF] Combining Marks for Symbols</source>
-        <translation type="unfinished"></translation>
+        <translation>[20D0-20FF] Об’єднувальні знаки для символів</translation>
     </message>
     <message>
         <source>[2100-214F] Letterlike Symbols</source>
-        <translation type="unfinished"></translation>
+        <translation>[2100-214F] Буквоподібні символи</translation>
     </message>
     <message>
         <source>[2150-218F] Number Forms</source>
-        <translation type="unfinished"></translation>
+        <translation>[2150-218F] Числові форми</translation>
     </message>
     <message>
         <source>[2190-21FF] Arrows</source>
-        <translation type="unfinished"></translation>
+        <translation>[2190-21FF] Стрілки</translation>
     </message>
     <message>
         <source>[2200-22FF] Mathematical Operators</source>
-        <translation type="unfinished"></translation>
+        <translation>[2200-22FF] Математичні оператори</translation>
     </message>
     <message>
         <source>[2300-23FF] Miscellaneous Technical</source>
-        <translation type="unfinished"></translation>
+        <translation>[2300-23FF] Різноманітні технічні</translation>
     </message>
     <message>
         <source>[2400-243F] Control Pictures</source>
-        <translation type="unfinished"></translation>
+        <translation>[2400-243F] Керуючі коди</translation>
     </message>
     <message>
         <source>[2440-245F] Optical Character Recognition</source>
-        <translation type="unfinished"></translation>
+        <translation>[2440-245F] Оптичне розпізнавання символів</translation>
     </message>
     <message>
         <source>[2460-24FF] Enclosed Alphanumerics</source>
-        <translation type="unfinished"></translation>
+        <translation>[2460-24FF] Закриті алфавітно-цифрові</translation>
     </message>
     <message>
         <source>[2500-257F] Box Drawing</source>
-        <translation type="unfinished"></translation>
+        <translation>[2500-257F] Малювання рамок</translation>
     </message>
     <message>
         <source>[2580-259F] Block Elements</source>
-        <translation type="unfinished"></translation>
+        <translation>[2580-259F] Блочні елементи</translation>
     </message>
     <message>
         <source>[25A0-25FF] Geometric Shapes</source>
-        <translation type="unfinished"></translation>
+        <translation>[25A0-25FF] Геометричні фігури</translation>
     </message>
     <message>
         <source>[2600-26FF] Miscellaneous Symbols</source>
-        <translation type="unfinished"></translation>
+        <translation>[2600-26FF] Різноманітні символи</translation>
     </message>
     <message>
         <source>[2700-27BF] Dingbats</source>
-        <translation type="unfinished"></translation>
+        <translation>[2700-27BF] Декоративні</translation>
     </message>
     <message>
         <source>[27C0-27EF] Miscellaneous Mathematical Symbols-A</source>
-        <translation type="unfinished"></translation>
+        <translation>[27C0-27EF] Різноманітні математичні символи-A</translation>
     </message>
     <message>
         <source>[27F0-27FF] Supplemental Arrows-A</source>
-        <translation type="unfinished"></translation>
+        <translation>[27F0-27FF] Додаткові стрілки-A</translation>
     </message>
     <message>
         <source>[2800-28FF] Braille Patterns</source>
-        <translation type="unfinished"></translation>
+        <translation>[2800-28FF] Шаблони Брайля</translation>
     </message>
     <message>
         <source>[2900-297F] Supplemental Arrows-B</source>
-        <translation type="unfinished"></translation>
+        <translation>[2900-297F] Додаткові стрілки-B</translation>
     </message>
     <message>
         <source>[2980-29FF] Miscellaneous Mathematical Symbols-B</source>
-        <translation type="unfinished"></translation>
+        <translation>[2980-29FF] Різноманітні математичні символи-B</translation>
     </message>
     <message>
         <source>[2A00-2AFF] Supplemental Mathematical Operators</source>
-        <translation type="unfinished"></translation>
+        <translation>[2A00-2AFF] Додаткові математичні оператори</translation>
     </message>
     <message>
         <source>[2E80-2EFF] CJK Radicals Supplement</source>
-        <translation type="unfinished"></translation>
+        <translation>[2E80-2EFF] Доповнення до китайсько/японсько/корейських радикалів</translation>
     </message>
     <message>
         <source>[2F00-2FDF] Kangxi Radicals</source>
-        <translation type="unfinished"></translation>
+        <translation>[2F00-2FDF] Радикали Кансі</translation>
     </message>
     <message>
         <source>[2FF0-2FFF] Ideographic Description Characters</source>
-        <translation type="unfinished"></translation>
+        <translation>[2FF0-2FFF] Символи ідеографічного опису</translation>
     </message>
     <message>
         <source>[3000-303F] CJK Symbols and Punctuation</source>
-        <translation type="unfinished"></translation>
+        <translation>[3000-303F] Китайсько/японсько/корейські символи та знаки пунктуації</translation>
     </message>
     <message>
         <source>[3040-309F] Hiragana</source>
-        <translation type="unfinished"></translation>
+        <translation>[3040-309F] Хірагана</translation>
     </message>
     <message>
         <source>[30A0-30FF] Katakana</source>
-        <translation type="unfinished"></translation>
+        <translation>[30A0-30FF] Катакана</translation>
     </message>
     <message>
         <source>[3100-312F] Bopomofo</source>
-        <translation type="unfinished"></translation>
+        <translation>[3100-312F] Бопомофо</translation>
     </message>
     <message>
         <source>[3130-318F] Hangul Compatibility Jamo</source>
-        <translation type="unfinished"></translation>
+        <translation>[3130-318F] Хангиль Чамо, узгодження</translation>
     </message>
     <message>
         <source>[3190-319F] Kanbun</source>
-        <translation type="unfinished"></translation>
+        <translation>[3190-319F] Канбун</translation>
     </message>
     <message>
         <source>[31A0-31BF] Bopomofo Extended</source>
-        <translation type="unfinished"></translation>
+        <translation>[31A0-31BF] Бопомофо, розширені</translation>
     </message>
     <message>
         <source>[3200-32FF] Enclosed CJK Letters and Months</source>
-        <translation type="unfinished"></translation>
+        <translation>[3200-32FF] Закриті китайсько/японсько/корейські символи та місяці</translation>
     </message>
     <message>
         <source>[3300-33FF] CJK Compatibility</source>
-        <translation type="unfinished"></translation>
+        <translation>[3300-33FF] Китайсько/японсько/корейські узгодження</translation>
     </message>
     <message>
         <source>[3400-4DBF] CJK Unified Ideographs Extension A</source>
-        <translation type="unfinished"></translation>
+        <translation>[3400-4DBF] Уніфіковані китайсько/японсько/корейські ієрогліфи, розширення A</translation>
     </message>
     <message>
         <source>[4E00-9FAF] CJK Unified Ideographs</source>
-        <translation type="unfinished"></translation>
+        <translation>[4E00-9FAF] Уніфіковані китайсько/японсько/корейські ієрогліфи</translation>
     </message>
     <message>
         <source>[A000-A48F] Yi Syllables</source>
-        <translation type="unfinished"></translation>
+        <translation>[A000-A48F] Склади Ї</translation>
     </message>
     <message>
         <source>[A490-A4CF] Yi Radicals</source>
-        <translation type="unfinished"></translation>
+        <translation>[A490-A4CF] Радикали Ї</translation>
     </message>
     <message>
         <source>[AC00-D7AF] Hangul Syllables</source>
-        <translation type="unfinished"></translation>
+        <translation>[AC00-D7AF] Хангиль, склади</translation>
     </message>
     <message>
         <source>[D800-DBFF] High Surrogates</source>
-        <translation type="unfinished"></translation>
+        <translation>[D800-DBFF] Високі сурогати</translation>
     </message>
     <message>
         <source>[DC00-DFFF] Low Surrogate Area</source>
-        <translation type="unfinished"></translation>
+        <translation>[DC00-DFFF] Область низьких сурогатів</translation>
     </message>
     <message>
         <source>[E000-F8FF] Private Use Area</source>
-        <translation type="unfinished"></translation>
+        <translation>[E000-F8FF] Область приватного використання</translation>
     </message>
     <message>
         <source>[F900-FAFF] CJK Compatibility Ideographs</source>
-        <translation type="unfinished"></translation>
+        <translation>[F900-FAFF] Китайсько/японсько/корейські ієрогліфи узгодження</translation>
     </message>
     <message>
         <source>[FB00-FB4F] Alphabetic Presentation Forms</source>
-        <translation type="unfinished"></translation>
+        <translation>[FB00-FB4F] Алфавітні декоративні форми</translation>
     </message>
     <message>
         <source>[FB50-FDFF] Arabic Presentation Forms-A</source>
-        <translation type="unfinished"></translation>
+        <translation>[FB50-FDFF] Арабські декоративні форми-A</translation>
     </message>
     <message>
         <source>[FE00-FE0F] Variation Selectors</source>
-        <translation type="unfinished"></translation>
+        <translation>[FE00-FE0F] Селектори різновидів</translation>
     </message>
     <message>
         <source>[FE20-FE2F] Combining Half Marks</source>
-        <translation type="unfinished"></translation>
+        <translation>[FE20-FE2F] Поєднувальні половинчасті знаки</translation>
     </message>
     <message>
         <source>[FE30-FE4F] CJK Compatibility Forms</source>
-        <translation type="unfinished"></translation>
+        <translation>[FE30-FE4F] Китайсько/японсько/корейські узгоджувальні форми</translation>
     </message>
     <message>
         <source>[FE50-FE6F] Small Form Variants</source>
-        <translation type="unfinished"></translation>
+        <translation>[FE50-FE6F] Малі форми різновидів</translation>
     </message>
     <message>
         <source>[FE70-FEFF] Arabic Presentation Forms-B</source>
-        <translation type="unfinished"></translation>
+        <translation>[FE70-FEFF] Арабські декоративні форми-B</translation>
     </message>
     <message>
         <source>[FF00-FFEF] Halfwidth and Fullwidth Forms</source>
-        <translation type="unfinished"></translation>
+        <translation>[FF00-FFEF] Форми половинної та повної ширини</translation>
     </message>
     <message>
         <source>[FFF0-FFFF] Specials</source>
-        <translation type="unfinished"></translation>
+        <translation>[FFF0-FFFF] Спеціальні</translation>
     </message>
     <message>
         <source>[10300-1032F] Old Italic</source>
-        <translation type="unfinished"></translation>
+        <translation>[10300-1032F] Старі італійські</translation>
     </message>
     <message>
         <source>[10330-1034F] Gothic</source>
-        <translation type="unfinished"></translation>
+        <translation>[10330-1034F] Готичні</translation>
     </message>
     <message>
         <source>[10400-1044F] Deseret</source>
-        <translation type="unfinished"></translation>
+        <translation>[10400-1044F] Дезеретскі</translation>
     </message>
     <message>
         <source>[1D000-1D0FF] Byzantine Musical Symbols</source>
-        <translation type="unfinished"></translation>
+        <translation>[1D000-1D0FF] Візантійські музичні символи</translation>
     </message>
     <message>
         <source>[1D100-1D1FF] Musical Symbols</source>
-        <translation type="unfinished"></translation>
+        <translation>[1D100-1D1FF] Музичні символи</translation>
     </message>
     <message>
         <source>[1D400-1D7FF] Mathematical Alphanumeric Symbols</source>
-        <translation type="unfinished"></translation>
+        <translation>[1D400-1D7FF] Математичні буквено-цифрові символи</translation>
     </message>
     <message>
         <source>[20000-2A6DF] CJK Unified Ideographs Extension B</source>
-        <translation type="unfinished"></translation>
+        <translation>[20000-2A6DF] Уніфіковані китайсько/японсько/корейські ієрогліфи, розширення B</translation>
     </message>
     <message>
         <source>[2F800-2FA1F] CJK Compatibility Ideographs Supplement</source>
-        <translation type="unfinished"></translation>
+        <translation>[2F800-2FA1F] Узгодження китайсько/японсько/корейських ієрогліфів, доповнення</translation>
     </message>
     <message>
         <source>[E0000-E007F] Tags</source>
-        <translation type="unfinished"></translation>
+        <translation>[E0000-E007F] Мітки</translation>
     </message>
     <message>
         <source>[F0000-FFFFD] Supplementary Private Use Area-A</source>
-        <translation type="unfinished"></translation>
+        <translation>[F0000-FFFFD] Додаткова область приватного користування -A</translation>
     </message>
     <message>
         <source>[100000-10FFFD] Supplementary Private Use Area-B</source>
-        <translation type="unfinished"></translation>
+        <translation>[100000-10FFFD] Додаткова область приватного користування -B</translation>
     </message>
     <message>
         <source>&Height:</source>
@@ -4761,11 +4820,11 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Alt+D</source>
-        <translation type="unfinished"></translation>
+        <translation>Alt+D</translation>
     </message>
     <message utf8="true">
         <source>Pi (Ï€)</source>
-        <translation type="unfinished"></translation>
+        <translation>Число Пі (π)</translation>
     </message>
 </context>
 <context>
@@ -4804,7 +4863,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>again Still No Text supplied.</source>
-        <translation type="unfinished"></translation>
+        <translation>знову ж таки, не був наданий текст</translation>
     </message>
 </context>
 <context>
@@ -5410,7 +5469,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>…</translation>
     </message>
 </context>
 <context>
@@ -5428,15 +5487,16 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     <name>QG_PolylineOptions</name>
     <message>
         <source>Polyline Options</source>
-        <translation type="unfinished">Параметри полілінії</translation>
+        <translatorcomment>Параметри полілінії</translatorcomment>
+        <translation>Параметри ламаної</translation>
     </message>
     <message>
         <source>Close</source>
-        <translation type="unfinished">Зачинити</translation>
+        <translation>Закрити</translation>
     </message>
     <message>
         <source>Undo</source>
-        <translation type="unfinished">Скасувати</translation>
+        <translation>Скасувати</translation>
     </message>
     <message>
         <source>Arc</source>
@@ -5444,15 +5504,15 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Radius:</source>
-        <translation type="unfinished">Радіус:</translation>
+        <translation>Радіус:</translation>
     </message>
     <message>
         <source>Line</source>
-        <translation type="unfinished">Лінія</translation>
+        <translation>Лінія</translation>
     </message>
     <message>
         <source>Tangential</source>
-        <translation type="unfinished"></translation>
+        <translation>Тангенціальний</translation>
     </message>
     <message>
         <source>Tan Radius</source>
@@ -5460,19 +5520,19 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     </message>
     <message>
         <source>Angle</source>
-        <translation type="unfinished">Кут</translation>
+        <translation>Кут</translation>
     </message>
     <message>
         <source>Angle:</source>
-        <translation type="unfinished">Кут:</translation>
+        <translation>Кут:</translation>
     </message>
     <message>
         <source>Clockwise</source>
-        <translation type="unfinished">За годинниковою стрілкою</translation>
+        <translation>За годинниковою стрілкою</translation>
     </message>
     <message>
         <source>Counter Clockwise</source>
-        <translation type="unfinished">Проти годинникової стрілки</translation>
+        <translation>Проти годинникової стрілки</translation>
     </message>
 </context>
 <context>
@@ -5543,31 +5603,31 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     <name>QG_SplineOptions</name>
     <message>
         <source>Spline Options</source>
-        <translation type="unfinished">Параметри сплайну</translation>
+        <translation>Параметри сплайну</translation>
     </message>
     <message>
         <source>Degree:</source>
-        <translation type="unfinished"></translation>
+        <translation>Ступінь:</translation>
     </message>
     <message>
         <source>1</source>
-        <translation type="unfinished">1</translation>
+        <translation>1</translation>
     </message>
     <message>
         <source>2</source>
-        <translation type="unfinished">2</translation>
+        <translation>2</translation>
     </message>
     <message>
         <source>3</source>
-        <translation type="unfinished">3</translation>
+        <translation>3</translation>
     </message>
     <message>
         <source>Closed</source>
-        <translation type="unfinished"></translation>
+        <translation>Закрито</translation>
     </message>
     <message>
         <source>Undo</source>
-        <translation type="unfinished">Скасувати</translation>
+        <translation>Скасувати</translation>
     </message>
 </context>
 <context>
@@ -5589,7 +5649,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
     <name>QG_TrimAmountOptions</name>
     <message>
         <source>Trim Amount Options</source>
-        <translation>Параметри вирівнювання на величину</translation>
+        <translation>Параметри усікання на величину</translation>
     </message>
     <message>
         <source>Distance. Negative values for trimming, positive values for extending.</source>
@@ -5811,35 +5871,35 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Joint Photographic Experts Group</source>
-        <translation type="unfinished"></translation>
+        <translation>Формат об’єднаної групи експертів-фотографів (JPEG)</translation>
     </message>
     <message>
         <source>Multiple-image Network Graphics</source>
-        <translation type="unfinished"></translation>
+        <translation>Формат мережевої графіки багатьох зображень (MNG)</translation>
     </message>
     <message>
         <source>Portable Bit Map</source>
-        <translation type="unfinished"></translation>
+        <translation>Формат переносимої  бітової карти (PBM)</translation>
     </message>
     <message>
         <source>Portable Grey Map</source>
-        <translation type="unfinished"></translation>
+        <translation>Формат переносимої сірої карти (PGM)</translation>
     </message>
     <message>
         <source>Portable Network Graphic</source>
-        <translation type="unfinished"></translation>
+        <translation>Формат переносимої мережевої графіки (PNG)</translation>
     </message>
     <message>
         <source>Portable Pixel Map</source>
-        <translation type="unfinished"></translation>
+        <translation>Формат переносимої піксельної карти (PPM)</translation>
     </message>
     <message>
         <source>X Bitmap Format</source>
-        <translation type="unfinished"></translation>
+        <translation>Формат бітової карти Х</translation>
     </message>
     <message>
         <source>X Pixel Map</source>
-        <translation type="unfinished"></translation>
+        <translation>Формат піксельної карти Х</translation>
     </message>
     <message>
         <source>All Image Files (%1)</source>
@@ -5847,11 +5907,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Graphics Interchange Format</source>
-        <translation type="unfinished"></translation>
+        <translation>Формат обміну графічними даними (GIF)</translation>
     </message>
     <message>
         <source>Drawing Exchange %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Формат обміну кресленнями %1</translation>
     </message>
     <message>
         <source>QCad 1.x file %1</source>
@@ -5867,228 +5927,244 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>None</source>
-        <translation type="unfinished"></translation>
+        <translation>Немає</translation>
     </message>
     <message>
         <source>Inch</source>
-        <translation type="unfinished"></translation>
+        <translation>Дюйм</translation>
     </message>
     <message>
         <source>Foot</source>
-        <translation type="unfinished"></translation>
+        <translation>Фут</translation>
     </message>
     <message>
         <source>Mile</source>
-        <translation type="unfinished"></translation>
+        <translation>Миля</translation>
     </message>
     <message>
         <source>Millimeter</source>
-        <translation type="unfinished"></translation>
+        <translation>Міліметр</translation>
     </message>
     <message>
         <source>Centimeter</source>
-        <translation type="unfinished"></translation>
+        <translation>Сантиметр</translation>
     </message>
     <message>
         <source>Meter</source>
-        <translation type="unfinished"></translation>
+        <translation>Метр</translation>
     </message>
     <message>
         <source>Kilometer</source>
-        <translation type="unfinished"></translation>
+        <translation>Кілометр</translation>
     </message>
     <message>
         <source>Microinch</source>
-        <translation type="unfinished"></translation>
+        <translation>Мікродюйм</translation>
     </message>
     <message>
         <source>Mil</source>
-        <translation type="unfinished"></translation>
+        <translation>Міл</translation>
     </message>
     <message>
         <source>Yard</source>
-        <translation type="unfinished"></translation>
+        <translation>Ярд</translation>
     </message>
     <message>
         <source>Angstrom</source>
-        <translation type="unfinished"></translation>
+        <translation>Ангстрем</translation>
     </message>
     <message>
         <source>Nanometer</source>
-        <translation type="unfinished"></translation>
+        <translation>Нанометр</translation>
     </message>
     <message>
         <source>Micron</source>
-        <translation type="unfinished"></translation>
+        <translation>Мікрон</translation>
     </message>
     <message>
         <source>Decimeter</source>
-        <translation type="unfinished"></translation>
+        <translation>Дециметр</translation>
     </message>
     <message>
         <source>Decameter</source>
-        <translation type="unfinished"></translation>
+        <translation>Декаметр</translation>
     </message>
     <message>
         <source>Hectometer</source>
-        <translation type="unfinished"></translation>
+        <translation>Гектометр</translation>
     </message>
     <message>
         <source>Gigameter</source>
-        <translation type="unfinished"></translation>
+        <translation>Гігаметр</translation>
     </message>
     <message>
         <source>Astro</source>
-        <translation type="unfinished"></translation>
+        <translation>Астрономічна одиниця</translation>
     </message>
     <message>
         <source>Lightyear</source>
-        <translation type="unfinished"></translation>
+        <translation>Світловий рік</translation>
     </message>
     <message>
         <source>Parsec</source>
-        <translation type="unfinished"></translation>
+        <translation>Парсек</translation>
     </message>
     <message>
         <source>Loading..</source>
-        <translation type="unfinished"></translation>
+        <translation>Завантаження…</translation>
     </message>
     <message>
         <source>Loading File %1..</source>
-        <translation type="unfinished"></translation>
+        <translation>Завантаження файлу „%1“…</translation>
     </message>
     <message>
         <source>Loading...</source>
-        <translation type="unfinished"></translation>
+        <translation>Завантаження…</translation>
+    </message>
+    <message>
+        <source>enter an integer number</source>
+        <translation>ввести ціле число</translation>
+    </message>
+    <message>
+        <source>LibreCAD query</source>
+        <translation>запит LibreCAD</translation>
+    </message>
+    <message>
+        <source>enter a number</source>
+        <translation>ввести число</translation>
+    </message>
+    <message>
+        <source>enter text</source>
+        <translation>ввести текст</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
     <message>
         <source>&Add Block</source>
-        <translation type="unfinished">До&дати блок</translation>
+        <translation>До&дати блок</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionBlocksAttributes</name>
     <message>
         <source>&Rename Block</source>
-        <translation type="unfinished"></translation>
+        <translation>&Перейменувати блок</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionBlocksCreate</name>
     <message>
         <source>&Create Block</source>
-        <translation type="unfinished">&Створити блок</translation>
+        <translation>&Створити блок</translation>
     </message>
     <message>
         <source>Specify reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку відліку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionBlocksEdit</name>
     <message>
         <source>&Edit Block</source>
-        <translation type="unfinished">&Редагувати блок</translation>
+        <translation>&Редагувати блок</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionBlocksExplode</name>
     <message>
         <source>&Explode</source>
-        <translation type="unfinished">&Зруйнувати</translation>
+        <translation>&Розбити</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionBlocksFreezeAll</name>
     <message>
         <source>&Freeze all</source>
-        <translation type="unfinished">&Заморозити усі</translation>
+        <translation>&Заморозити усі</translation>
     </message>
     <message>
         <source>&Defreeze all</source>
-        <translation type="unfinished">&Розморозити усі</translation>
+        <translation>&Розморозити усі</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionBlocksInsert</name>
     <message>
         <source>&Insert Block</source>
-        <translation type="unfinished">&Вставити блок</translation>
+        <translation>&Вставити блок</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Specify reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку відліку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Enter angle:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть кут:</translation>
     </message>
     <message>
         <source>Enter factor:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть коефіцієнт:</translation>
     </message>
     <message>
         <source>Enter columns:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть кількість стовпців:</translation>
     </message>
     <message>
         <source>Enter rows:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть кількість рядків:</translation>
     </message>
     <message>
         <source>Enter column spacing:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть проміжок між стовпцями:</translation>
     </message>
     <message>
         <source>Enter row spacing:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть проміжок між рядками:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionBlocksRemove</name>
     <message>
         <source>&Remove Block</source>
-        <translation type="unfinished">Ви&лучити блок</translation>
+        <translation>Ви&лучити блок</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionBlocksToggleView</name>
     <message>
         <source>Toggle Block Visibility</source>
-        <translation type="unfinished">Перемкнути видимість блоку</translation>
+        <translation>Перемкнути видимість блоку</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDefault</name>
     <message>
         <source>Choose second edge</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть другий край</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDimAligned</name>
     <message>
         <source>&Aligned</source>
-        <translation type="unfinished">Ви&рівняний</translation>
+        <translation>Ви&рівняний</translation>
     </message>
     <message>
         <source>Specify first extension line origin</source>
@@ -6096,7 +6172,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second extension line origin</source>
@@ -6104,73 +6180,73 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify dimension line location</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть розташування розмірної лінії</translation>
     </message>
     <message>
         <source>Enter dimension text:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть текст розмірного напису:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDimAngular</name>
     <message>
         <source>&Angular</source>
-        <translation type="unfinished">&Кутовий</translation>
+        <translation>&Кутовий</translation>
     </message>
     <message>
         <source>Select first line</source>
-        <translation type="unfinished"></translation>
+        <translation>Виділіть першу лінію</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Select second line</source>
-        <translation type="unfinished"></translation>
+        <translation>Виділіть другу лінію</translation>
     </message>
     <message>
         <source>Specify dimension arc line location</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Вкажіть розташування розмірної дуги</translation>
     </message>
     <message>
         <source>Enter dimension text:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть текст розмірного напису:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDimDiametric</name>
     <message>
         <source>&Diametric</source>
-        <translation type="unfinished">&Діаметральний</translation>
+        <translation>&Діаметральний</translation>
     </message>
     <message>
         <source>Not a circle or arc entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Не є колом чи дугою</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Select arc or circle entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виділіть дугу чи коло</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify dimension line location</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть положення розмірної лінії</translation>
     </message>
     <message>
         <source>Enter dimension text:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть текст розмірного напису:</translation>
     </message>
 </context>
 <context>
@@ -6181,15 +6257,15 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Specify target point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть цільову точку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify next point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть наступну точку</translation>
     </message>
     <message>
         <source>Finish</source>
@@ -6200,19 +6276,19 @@ Do you want to replace it?</source>
     <name>RS_ActionDimLinear</name>
     <message>
         <source>&Linear</source>
-        <translation type="unfinished">&Лінійний</translation>
+        <translation>&Лінійний</translation>
     </message>
     <message>
         <source>&Horizontal</source>
-        <translation type="unfinished">&Горизонтальна</translation>
+        <translation>&Горизонтальна</translation>
     </message>
     <message>
         <source>&Vertical</source>
-        <translation type="unfinished">&Вертикальна</translation>
+        <translation>&Вертикальна</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Specify first extension line origin</source>
@@ -6220,7 +6296,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second extension line origin</source>
@@ -6228,89 +6304,89 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify dimension line location</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть розташування розмірної лінії</translation>
     </message>
     <message>
         <source>Enter dimension text:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть текст розмірного напису:</translation>
     </message>
     <message>
         <source>Enter dimension line angle:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Введіть кут розмірного напису:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDimRadial</name>
     <message>
         <source>&Radial</source>
-        <translation type="unfinished">&Радіальний</translation>
+        <translation>&Радіальний</translation>
     </message>
     <message>
         <source>Not a circle or arc entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Не є колом чи дугою</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Select arc or circle entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виділіть дугу чи коло</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify dimension line position or enter angle:</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть розташування розмірної лінії чи введіть кут:</translation>
     </message>
     <message>
         <source>Enter dimension text:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Введіть текст розмірного напису:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawArc</name>
     <message>
         <source>&Center, Point, Angles</source>
-        <translation type="unfinished">&Центр, точка, кути</translation>
+        <translation>&Центр, точка, кути</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Not a valid chord length</source>
-        <translation type="unfinished"></translation>
+        <translation>Неприпустима довжина хорди</translation>
     </message>
     <message>
         <source>Specify center</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть центр</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify radius</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть радіус</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify start angle:</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть початковий кут:</translation>
     </message>
     <message>
         <source>Specify end angle or [Angle/chord Length]</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть кінцевий кут чи [кут/довжину хорди]</translation>
     </message>
     <message>
         <source>Specify included angle:</source>
@@ -6318,38 +6394,38 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Specify chord length:</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть довжину хорди:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawArc3P</name>
     <message>
         <source>&3 Points</source>
-        <translation type="unfinished">За &3-ма точками</translation>
+        <translation>За &3-ма точками</translation>
     </message>
     <message>
         <source>Invalid arc data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректні дані дуги.</translation>
     </message>
     <message>
         <source>Specify startpoint or [Center]</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть початкову точку чи [центр]</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другу точку</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify endpoint</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть кінцеву точку</translation>
     </message>
 </context>
 <context>
@@ -6364,541 +6440,541 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify end angle</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть кінцевий кут</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawCircle</name>
     <message>
         <source>Center, &Point</source>
-        <translation type="unfinished">Центр, &точка</translation>
+        <translation>Центр, &точка</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Не коректний вираз</translation>
     </message>
     <message>
         <source>Specify center</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть центр</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify radius</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть радіус</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawCircle2P</name>
     <message>
         <source>2 Points</source>
-        <translation type="unfinished">За 2-ма точками</translation>
+        <translation>За 2-ма точками</translation>
     </message>
     <message>
         <source>Invalid Circle data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректні дані кола.</translation>
     </message>
     <message>
         <source>Specify first point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу точку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другу точку</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawCircle3P</name>
     <message>
         <source>3 Points</source>
-        <translation type="unfinished">За 3-ма точками</translation>
+        <translation>За 3-ма точками</translation>
     </message>
     <message>
         <source>Invalid circle data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректні дані кола.</translation>
     </message>
     <message>
         <source>Specify first point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу точку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другу точку</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify third point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть третю точку</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawCircleCR</name>
     <message>
         <source>Center, &Radius</source>
-        <translation type="unfinished">Центр, &радіус</translation>
+        <translation>Центр, &радіус</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Specify circle center</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть центр кола</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify circle radius</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть радіус кола</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawEllipseAxis</name>
     <message>
         <source>&Ellipse Arc (Axis)</source>
-        <translation type="unfinished">&Дуга еліпса (з віссю)</translation>
+        <translation>&Дуга еліпса (з віссю)</translation>
     </message>
     <message>
         <source>&Ellipse (Axis)</source>
-        <translation type="unfinished">&Еліпс (з віссю)</translation>
+        <translation>&Еліпс (з віссю)</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Specify ellipse center</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть центр еліпса</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify endpoint of major axis</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть кінцеву точку великої осі</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify endpoint or length of minor axis:</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть кінцеву точку чи довжину меншої осі:</translation>
     </message>
     <message>
         <source>Specify start angle</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть початковий кут</translation>
     </message>
     <message>
         <source>Specify end angle</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть кінцевий кут</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawHatch</name>
     <message>
         <source>&Hatch</source>
-        <translation type="unfinished">&Штрихування</translation>
+        <translation>&Штрихування</translation>
     </message>
     <message>
         <source>Hatch created successfully.</source>
-        <translation type="unfinished"></translation>
+        <translation>Штрихування створена успішно.</translation>
     </message>
     <message>
         <source>Invalid hatch area. Please check that the entities chosen form one or more closed contours.</source>
-        <translation type="unfinished"></translation>
+        <translation>Неправильно задана область штрихування. Будь ласка, перевірте, що вибрані об’єкти формують один чи більше закритих контурів.</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawImage</name>
     <message>
         <source>&Image</source>
-        <translation type="unfinished">&Зображення</translation>
+        <translation>&Зображення</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Specify reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку відліку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Enter angle:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть кут:</translation>
     </message>
     <message>
         <source>Enter factor:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть коефіцієнт:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLine</name>
     <message>
         <source>&2 Points</source>
-        <translation type="unfinished">За &2-ма точками</translation>
+        <translation>За &2-ма точками</translation>
     </message>
     <message>
         <source>Specify first point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу точку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify next point or [%1]</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть наступну точку чи [%1]</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify next point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть наступну точку</translation>
     </message>
     <message>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
-        <translation type="unfinished"></translation>
+        <translation>Неможливо замкнути послідовність ліній: недостатньо об’єктів визначено.</translation>
     </message>
     <message>
         <source>Cannot undo: Not enough entities defined yet.</source>
-        <translation type="unfinished"></translation>
+        <translation>Скасування неможливе: недостатньо об’єктів визначено.</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLineAngle</name>
     <message>
         <source>&Angle</source>
-        <translation type="unfinished">Під &кутом</translation>
+        <translation>Під &кутом</translation>
     </message>
     <message>
         <source>&Horizontal</source>
-        <translation type="unfinished">&Горизонтальна</translation>
+        <translation>&Горизонтальна</translation>
     </message>
     <message>
         <source>Vertical</source>
-        <translation type="unfinished">Вертикальний</translation>
+        <translation>Вертикальний</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Specify position</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть положення</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Enter angle:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть кут:</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Enter length:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть довжину:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLineBisector</name>
     <message>
         <source>Bisector</source>
-        <translation type="unfinished">Бісектриса</translation>
+        <translation>Бісектриса</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Select first line</source>
-        <translation type="unfinished"></translation>
+        <translation>Виділіть першу лінію</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Select second line</source>
-        <translation type="unfinished"></translation>
+        <translation>Виділіть другу лінію</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Enter bisector length:</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть довжину бісектриси:</translation>
     </message>
     <message>
         <source>Enter number of bisectors:</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть кількість бісектрис:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLineFree</name>
     <message>
         <source>&Freehand Line</source>
-        <translation type="unfinished">&Довільна лінія (крива)</translation>
+        <translation>&Лінія від руки</translation>
     </message>
     <message>
         <source>Click and drag to draw a line</source>
-        <translation type="unfinished"></translation>
+        <translation>Клацніть мишкою та потягніть, щоб намалювати лінію</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLineHorVert</name>
     <message>
         <source>Vertical</source>
-        <translation type="unfinished">Вертикальний</translation>
+        <translation>Вертикальний</translation>
     </message>
     <message>
         <source>Specify first point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу точку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другу точку</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLineParallel</name>
     <message>
         <source>Parallel</source>
-        <translation type="unfinished">Паралельна</translation>
+        <translation>Паралельна</translation>
     </message>
     <message>
         <source>Concentric</source>
-        <translation type="unfinished">Концентрична</translation>
+        <translation>Концентрична</translation>
     </message>
     <message>
         <source>Specify Distance <%1> or select entity or [%2]</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть відстань <%1> чи виберіть об’єкт або ж [%2]</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Enter number:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть число:</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Not a valid number. Try 1..99</source>
-        <translation type="unfinished"></translation>
+        <translation>Неприпустиме число. Спробуйте 1..99</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLineParallelThrough</name>
     <message>
         <source>Parallel through point</source>
-        <translation type="unfinished">Паралельно через точку</translation>
+        <translation>Паралельно через точку</translation>
     </message>
     <message>
         <source>Select entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть об’єкт</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify through point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку „через“</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Number:</source>
-        <translation type="unfinished">Кількість:</translation>
+        <translation>Число:</translation>
     </message>
     <message>
         <source>Not a valid number. Try 1..99</source>
-        <translation type="unfinished"></translation>
+        <translation>Неприпустиме число. Спробуйте 1..99</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLinePolygon</name>
     <message>
         <source>Pol&ygon (Cen,Cor)</source>
-        <translation type="unfinished">Багато&кутник (центр, кут)</translation>
+        <translation>Багато&кутник (центр, кут)</translation>
     </message>
     <message>
         <source>Specify center</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть центр</translation>
     </message>
     <message>
         <source>Specify a corner</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть кут</translation>
     </message>
     <message>
         <source>Enter number:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть число:</translation>
     </message>
     <message>
         <source>Not a valid number. Try 1..9999</source>
-        <translation type="unfinished"></translation>
+        <translation>Неприпустиме число. Спробуйте 1..9999</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLinePolygon2</name>
     <message>
         <source>Polygo&n (Cor,Cor)</source>
-        <translation type="unfinished">Багато&кутник (кут, кут)</translation>
+        <translation>Багато&кутник (кут, кут)</translation>
     </message>
     <message>
         <source>Specify first corner</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть перший кут</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second corner</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другий кут</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Number:</source>
-        <translation type="unfinished">Кількість:</translation>
+        <translation>Число:</translation>
     </message>
     <message>
         <source>Not a valid number. Try 1..9999</source>
-        <translation type="unfinished"></translation>
+        <translation>Неприпустиме число. Спробуйте 1..9999</translation>
     </message>
     <message>
         <source>Not a valid expression.</source>
-        <translation type="unfinished"></translation>
+        <translation>Неприпустимий вираз.</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLineRectangle</name>
     <message>
         <source>Rectangle</source>
-        <translation type="unfinished">Прямокутник</translation>
+        <translation>Прямокутник</translation>
     </message>
     <message>
         <source>Specify first corner</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть перший кут</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second corner</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другий кут</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLineRelAngle</name>
     <message>
         <source>Relative angle</source>
-        <translation type="unfinished">Відносний кут</translation>
+        <translation>Відносний кут</translation>
     </message>
     <message>
         <source>Orthogonal</source>
-        <translation type="unfinished">Перпендикулярна</translation>
+        <translation>Ортогонально</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Неприпустимий вираз</translation>
     </message>
     <message>
         <source>Select base entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть базовий об’єкт</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify position</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть положення</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
@@ -6909,406 +6985,406 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Specify point</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Вкажіть точку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Select circle, arc or ellipse</source>
-        <translation type="unfinished"></translation>
+        <translation>Виділіть коло, дугу чи еліпс</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawLineTangent2</name>
     <message>
         <source>Tangent (C,C)</source>
-        <translation type="unfinished">Дотична (К,К)</translation>
+        <translation>Дотична (К,К)</translation>
     </message>
     <message>
         <source>Select first circle or arc</source>
-        <translation type="unfinished"></translation>
+        <translation>Виділіть першу коло чи дугу</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Select second circle or arc</source>
-        <translation type="unfinished"></translation>
+        <translation>Виділити друге коло чи дугу</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawPoint</name>
     <message>
         <source>&Points</source>
-        <translation type="unfinished">&Точки</translation>
+        <translation>&Точки</translation>
     </message>
     <message>
         <source>Specify location</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть розташування</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawPolyline</name>
     <message>
         <source>&Polyline</source>
-        <translation type="unfinished">&Ламана</translation>
+        <translation>&Ламана лінія</translation>
     </message>
     <message>
         <source>Draw polylines</source>
-        <translation type="unfinished"></translation>
+        <translation>Накреслити ламану лінію</translation>
     </message>
     <message>
         <source>Specify first point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу точку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify next point or [%1]</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть наступну точку чи [%1]</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify next point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть наступну точку</translation>
     </message>
     <message>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
-        <translation type="unfinished"></translation>
+        <translation>Не вдається закрити послідовність ліній: ще недостатньо визначено об’єктів.</translation>
     </message>
     <message>
         <source>Undo disallowed due a fatal bug somewhere. Sorry.</source>
-        <translation type="unfinished"></translation>
+        <translation>Скасувати заборонено через фатальну помилку де-небудь. Вибачте.</translation>
     </message>
     <message>
         <source>Cannot undo: Not enough entities defined yet.</source>
-        <translation type="unfinished"></translation>
+        <translation>Не вдається скасувати: недостатня кількість означених об’єктів.</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawSpline</name>
     <message>
         <source>&Spline</source>
-        <translation type="unfinished">&Сплайн</translation>
+        <translation>&Сплайн</translation>
     </message>
     <message>
         <source>Specify first control point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу контрольну точку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify next control point or [%1]</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть наступну контрольну точку чи [%1]</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify next control point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть наступну контрольну точку</translation>
     </message>
     <message>
         <source>Cannot undo: Not enough entities defined yet.</source>
-        <translation type="unfinished"></translation>
+        <translation>Не вдається скасувати: ще недостатньо визначено об’єктів.</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionDrawText</name>
     <message>
         <source>&Text</source>
-        <translation type="unfinished">&Текст</translation>
+        <translation>&Текст</translation>
     </message>
     <message>
         <source>Specify insertion point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку вставки</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Enter text:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть текст: </translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionEditCopy</name>
     <message>
         <source>&Copy</source>
-        <translation type="unfinished">&Копіювати</translation>
+        <translation>&Копіювати</translation>
     </message>
     <message>
         <source>Cu&t</source>
-        <translation type="unfinished">Ви&різати</translation>
+        <translation>Ви&різати</translation>
     </message>
     <message>
         <source>Specify reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку відліку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionEditPaste</name>
     <message>
         <source>&Paste</source>
-        <translation type="unfinished">&Вставити</translation>
+        <translation>&Вставити</translation>
     </message>
     <message>
         <source>Set reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Встановити точку відліку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionEditUndo</name>
     <message>
         <source>&Undo</source>
-        <translation type="unfinished">&Скасувати</translation>
+        <translation>&Скасувати</translation>
     </message>
     <message>
         <source>&Redo</source>
-        <translation type="unfinished">&Повторити</translation>
+        <translation>&Повторити</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionFileNew</name>
     <message>
         <source>&New...</source>
-        <translation type="unfinished"></translation>
+        <translation>&Новий…</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionFileOpen</name>
     <message>
         <source>&Open...</source>
-        <translation type="unfinished">&Відкрити…</translation>
+        <translation>&Відкрити…</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionFileSave</name>
     <message>
         <source>&Save</source>
-        <translation type="unfinished">&Зберегти</translation>
+        <translation>&Зберегти</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionFileSaveAs</name>
     <message>
         <source>Save &as...</source>
-        <translation type="unfinished">Зберегти &як…</translation>
+        <translation>Зберегти &як…</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionInfoAngle</name>
     <message>
         <source>Angle between two lines</source>
-        <translation type="unfinished">Кут між двома лініями</translation>
+        <translation>Кут між двома лініями</translation>
     </message>
     <message>
         <source>Angle: %1%2</source>
-        <translation type="unfinished"></translation>
+        <translation>Кут: %1%2</translation>
     </message>
     <message>
         <source>Lines are parallel</source>
-        <translation type="unfinished"></translation>
+        <translation>Лінії паралельні</translation>
     </message>
     <message>
         <source>Specify first line</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу лінію</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second line</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другу лінію</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionInfoArea</name>
     <message>
         <source>Polygonal Area</source>
-        <translation type="unfinished"></translation>
+        <translation>Площа багатокутника</translation>
     </message>
     <message>
         <source>Area: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Площа: %1</translation>
     </message>
     <message>
         <source>Circumference: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Обвід: %1</translation>
     </message>
     <message>
         <source>Point: %1/%2</source>
-        <translation type="unfinished"></translation>
+        <translation>Точка: %1/%2</translation>
     </message>
     <message>
         <source>Specify first point of polygon</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу точку багатокутника</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify next point of polygon</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть наступну точку багатокутника</translation>
     </message>
     <message>
         <source>Terminate</source>
-        <translation type="unfinished"></translation>
+        <translation>Припинити</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionInfoDist</name>
     <message>
         <source>&Distance Point to Point</source>
-        <translation type="unfinished">&Відстань від точки до точки</translation>
+        <translation>&Відстань від точки до точки</translation>
     </message>
     <message>
         <source>Distance: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Відстань: %1</translation>
     </message>
     <message>
         <source>Specify first point of distance</source>
-        <translation type="unfinished"></translation>
+        <translation>Зазначте першу точку вимірюваної відстані</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second point of distance</source>
-        <translation type="unfinished"></translation>
+        <translation>Зазначте другу точку вимірюваної відстані</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionInfoDist2</name>
     <message>
         <source>&Distance Entity to Point</source>
-        <translation type="unfinished">Від&стань від об’єкта до точки</translation>
+        <translation>Від&стань від об’єкта до точки</translation>
     </message>
     <message>
         <source>Distance: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Відстань: %1</translation>
     </message>
     <message>
         <source>Specify entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть об’єкт</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionInfoInside</name>
     <message>
         <source>Point inside contour</source>
-        <translation type="unfinished">Точка всередині контуру</translation>
+        <translation>Точка всередині контуру</translation>
     </message>
     <message>
         <source>Point is inside selected contour.</source>
-        <translation type="unfinished"></translation>
+        <translation>Точка знаходиться всередині вибраного контура.</translation>
     </message>
     <message>
         <source>Point is outside selected contour.</source>
-        <translation type="unfinished"></translation>
+        <translation>Точка знаходиться зовні вибраного контура.</translation>
     </message>
     <message>
         <source>Specify point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionInfoTotalLength</name>
     <message>
         <source>&Total length of selected entities</source>
-        <translation type="unfinished">Су&марна довжина вибраних об’єктів</translation>
+        <translation>Су&марна довжина вибраних об’єктів</translation>
     </message>
     <message>
         <source>Total Length of selected entities: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Сумарна довжина вибраних об’єктів: %1</translation>
     </message>
     <message>
         <source>At least one of the selected entities cannot be measured.</source>
-        <translation type="unfinished"></translation>
+        <translation>Принаймні один з вибраних об’єктів не може бути виміряний.</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionLayersAdd</name>
     <message>
         <source>Add Layer</source>
-        <translation type="unfinished">Додати шар</translation>
+        <translation>Додати шар</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionLayersEdit</name>
     <message>
         <source>&Edit Layer</source>
-        <translation type="unfinished">&Редагувати шар</translation>
+        <translation>&Редагувати шар</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionLayersFreezeAll</name>
     <message>
         <source>&Freeze all</source>
-        <translation type="unfinished">&Заморозити усі</translation>
+        <translation>&Заморозити усі</translation>
     </message>
     <message>
         <source>&Defreeze all</source>
@@ -7319,858 +7395,865 @@ Do you want to replace it?</source>
     <name>RS_ActionLayersRemove</name>
     <message>
         <source>Remove Layer</source>
-        <translation type="unfinished">Вилучити шар</translation>
+        <translation>Вилучити шар</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionLayersToggleLock</name>
     <message>
         <source>Toggle Layer Lock</source>
-        <translation type="unfinished"></translation>
+        <translation>Перемкнути захист шару</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionLayersToggleView</name>
     <message>
         <source>&Toggle Layer</source>
-        <translation type="unfinished">&Видимість шару</translation>
+        <translation>&Перемикач шару</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionLibraryInsert</name>
     <message>
         <source>Insert Library Object</source>
-        <translation type="unfinished"></translation>
+        <translation>Вставити об’єкт з бібліотеки</translation>
     </message>
     <message>
         <source>Cannot open file '%1'</source>
-        <translation type="unfinished"></translation>
+        <translation>Не вдається відкрити файл „%1“</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Specify reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку відліку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Enter angle:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть кут:</translation>
     </message>
     <message>
         <source>Enter factor:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть коефіцієнт:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionLockRelativeZero</name>
     <message>
         <source>(Un-)&Lock Relative Zero</source>
-        <translation type="unfinished">Увімкн./в&имкн. відносний нуль</translation>
+        <translation>Увімкн./в&имкн. відносний нуль</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyAttributes</name>
     <message>
         <source>&Attributes</source>
-        <translation type="unfinished">А&трибути</translation>
+        <translation>А&трибути</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyBevel</name>
     <message>
         <source>&Bevel</source>
+        <translatorcomment>скіс; скісна́ лі́нія</translatorcomment>
         <translation type="unfinished">&Фаска</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Select first entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть перший об’єкт</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Select second entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть другий об’єкт</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Enter length 1:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть довжину 1:</translation>
     </message>
     <message>
         <source>Enter length 2:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть довжину 2:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyCut</name>
     <message>
         <source>&Divide</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>поділ, ділення</translatorcomment>
+        <translation type="unfinished">&Частка</translation>
     </message>
     <message>
         <source>No Entity found.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт не знайдено.</translation>
     </message>
     <message>
         <source>Entity must be a line, arc, circle or ellipse.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт повинен бути лінією, дугою, колом чи еліпсом.</translation>
     </message>
     <message>
         <source>Cutting point is invalid.</source>
-        <translation type="unfinished"></translation>
+        <translation>Неприпустима точка розбиття.</translation>
     </message>
     <message>
         <source>Cutting point is not on entity.</source>
-        <translation type="unfinished"></translation>
+        <translation>Точка розбиття не належить об’єкту.</translation>
     </message>
     <message>
         <source>Specify entity to cut</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть об’єкт для розбиття</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify cutting point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку розбиття</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyDelete</name>
     <message>
         <source>&Delete</source>
-        <translation type="unfinished">Ви&лучити</translation>
+        <translation>Ви&лучити</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyDeleteFree</name>
     <message>
         <source>Delete Freehand</source>
-        <translation type="unfinished">Вилучити довільну криву</translation>
+        <translation>Вилучити криву від руки</translation>
     </message>
     <message>
         <source>Entities not in the same polyline.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкти, не лежать на одній ламаній.</translation>
     </message>
     <message>
         <source>Parent of second entity is not a polyline</source>
-        <translation type="unfinished"></translation>
+        <translation>Батько другого об’єкта не є ламаною</translation>
     </message>
     <message>
         <source>Parent of second entity is NULL</source>
-        <translation type="unfinished"></translation>
+        <translation>Батько другого об’єкту порожній (NULL)</translation>
     </message>
     <message>
         <source>One of the chosen entities is NULL</source>
-        <translation type="unfinished"></translation>
+        <translation>Один з вибраних об’єктів порожній (NULL)</translation>
     </message>
     <message>
         <source>Parent of first entity is not a polyline</source>
-        <translation type="unfinished"></translation>
+        <translation>Батько першого об’єкту не є ламаною</translation>
     </message>
     <message>
         <source>Parent of first entity is NULL</source>
-        <translation type="unfinished"></translation>
+        <translation>Батько першого об’єкта порожній (NULL)</translation>
     </message>
     <message>
         <source>First entity is NULL</source>
-        <translation type="unfinished"></translation>
+        <translation>Перший об’єкт порожній (NULL)</translation>
     </message>
     <message>
         <source>Second entity is NULL</source>
-        <translation type="unfinished"></translation>
+        <translation>Другий об’єкт порожній (NULL)</translation>
     </message>
     <message>
         <source>Specify first break point on a polyline</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу точку розриву ламаної</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second break point on the same polyline</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другу точку розриву на тій же ламаній</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyDeleteQuick</name>
     <message>
         <source>&Delete selected</source>
-        <translation type="unfinished">Ви&лучити вибране</translation>
+        <translation>Ви&лучити вибране</translation>
     </message>
     <message>
         <source>Pick entity to delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть об’єкт для вилучення</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyEntity</name>
     <message>
         <source>&Properties</source>
-        <translation type="unfinished">Власти&вості</translation>
+        <translation>Власти&вості</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyExplodeText</name>
     <message>
         <source>&Explode Text into Letters</source>
-        <translation type="unfinished"></translation>
+        <translation>&Розбити текст на букви</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyMirror</name>
     <message>
         <source>&Mirror</source>
-        <translation type="unfinished">&Дзеркально відобразити</translation>
+        <translation>&Віддзеркалити</translation>
     </message>
     <message>
         <source>Specify first point of mirror line</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу точку на лінії відображення</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second point of mirror line</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другу точку на лінії відображення</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyMove</name>
     <message>
         <source>&Move / Copy</source>
-        <translation type="unfinished"></translation>
+        <translation>&Зрушення/копіювання</translation>
     </message>
     <message>
         <source>Specify reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку відліку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify target point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть цільову точку</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyMoveRotate</name>
     <message>
         <source>M&ove and Rotate</source>
-        <translation type="unfinished">Зрушення й &обертання</translation>
+        <translation>Зрушення й &обертання</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Specify reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку відліку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify target point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть цільову точку</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Enter rotation angle:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть кут повороту:</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyRotate</name>
     <message>
         <source>&Rotate</source>
-        <translation type="unfinished">&Обертання</translation>
+        <translation>&Обертання</translation>
     </message>
     <message>
         <source>Specify reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку відліку</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyRotate2</name>
     <message>
         <source>Rotate T&wo</source>
-        <translation type="unfinished">Обертати навколо &двох</translation>
+        <translation>Обертати навколо &двох</translation>
     </message>
     <message>
         <source>Specify absolute reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть абсолютну точку відліку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify relative reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть відносну точку відліку</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyRound</name>
     <message>
         <source>&Round</source>
-        <translation type="unfinished">&Округлення</translation>
+        <translation>&Округлення</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Specify first entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть перший об’єкт</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify second entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другий об’єкт</translation>
     </message>
     <message>
         <source>Enter radius:</source>
-        <translation type="unfinished"></translation>
+        <translation>Введіть радіус:</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyScale</name>
     <message>
         <source>&Scale</source>
-        <translation type="unfinished">&Масштабувати</translation>
+        <translation>&Масштабувати</translation>
     </message>
     <message>
         <source>Specify reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку відліку</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyStretch</name>
     <message>
         <source>&Stretch</source>
-        <translation type="unfinished">&Витягнути</translation>
+        <translation>&Витягнути</translation>
     </message>
     <message>
         <source>Specify first corner</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть перший кут</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second corner</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другий кут</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify reference point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точку відліку</translation>
     </message>
     <message>
         <source>Specify target point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть цільову точку</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyTrim</name>
     <message>
         <source>&Trim</source>
-        <translation type="unfinished">&Вирівняти</translation>
+        <translation>&Усікти</translation>
     </message>
     <message>
         <source>&Trim Two</source>
-        <translation type="unfinished">Ви&рівняти два</translation>
+        <translation>У&сікти обидва</translation>
     </message>
     <message>
         <source>Select first trim entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть перший об’єкт для усікання</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Select limiting entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть обмежуючий об’єкт</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Select second trim entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть другий об’єкт для усікання</translation>
     </message>
     <message>
         <source>Select entity to trim</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть об’єкт для усікання</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionModifyTrimAmount</name>
     <message>
         <source>&Lengthen</source>
-        <translation type="unfinished">По&довжити</translation>
+        <translation>По&довжити</translation>
     </message>
     <message>
         <source>No entity found. </source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт не знайдено. </translation>
     </message>
     <message>
         <source>The chosen Entity is in a block. Please edit the block.</source>
-        <translation type="unfinished"></translation>
+        <translation>Обраний об’єкт знаходиться всередині блоку. Відредагуйте, будь ласка, блок.</translation>
     </message>
     <message>
         <source>The chosen Entity is not an atomic entity or cannot be trimmed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Обраний об'єкт не є елементарним об’єктом чи його неможливо усікти.</translation>
     </message>
     <message>
         <source>Not a valid expression</source>
-        <translation type="unfinished"></translation>
+        <translation>Некоректний вираз</translation>
     </message>
     <message>
         <source>Select entity to trim or enter distance:</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть об’єкт для усікання або ж введіть відстань:</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionOptionsDrawing</name>
     <message>
         <source>Current &Drawing Preferences</source>
-        <translation type="unfinished">Поточні параметри &креслення</translation>
+        <translation>Поточні налаштування &креслення</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionPolylineAdd</name>
     <message>
         <source>&Add node</source>
-        <translation type="unfinished"></translation>
+        <translation>&Додати вузол</translation>
     </message>
     <message>
         <source>Add polyline's node</source>
-        <translation type="unfinished"></translation>
+        <translation>Додати вузол ламаної</translation>
     </message>
     <message>
         <source>No Entity found.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт не знайдено.</translation>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт повинен бути ламаною лінією.</translation>
     </message>
     <message>
         <source>Adding point is invalid.</source>
-        <translation type="unfinished"></translation>
+        <translation>Додавана точка є неправильною.</translation>
     </message>
     <message>
         <source>Adding point is not on entity.</source>
-        <translation type="unfinished"></translation>
+        <translation>Додавана точка не лежить на об’єкті.</translation>
     </message>
     <message>
         <source>Specify polyline to add nodes</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть ламану лінію, щоб додати вузли</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify adding node's point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть нову точку вузла</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionPolylineAppend</name>
     <message>
         <source>A&ppend node</source>
-        <translation type="unfinished"></translation>
+        <translation>До&повнити вузол</translation>
     </message>
     <message>
         <source>Append polyline's node</source>
-        <translation type="unfinished"></translation>
+        <translation>Доповнити вузол ламаної</translation>
     </message>
     <message>
         <source>No Entity found.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт не знайдено.</translation>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт повинен бути ламаною лінією.</translation>
     </message>
     <message>
         <source>Click somewhere near the beginning or end of existing polyline.</source>
-        <translation type="unfinished"></translation>
+        <translation>Натисніть де-небудь ближче до початку чи кінця існуючої ламаної.</translation>
     </message>
     <message>
         <source>Specify the polyline somewhere near the beginning or end point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть ламану за допомогою точки десь спочатку чи в кінці</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify next point or [%1]</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть наступну точку чи [%1]</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify next point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть наступну точку</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionPolylineDel</name>
     <message>
         <source>&Delete node</source>
-        <translation type="unfinished"></translation>
+        <translation>&Вилучити вузол</translation>
     </message>
     <message>
         <source>Delete polyline's node</source>
-        <translation type="unfinished"></translation>
+        <translation>Вилучити вузол ламаної</translation>
     </message>
     <message>
         <source>No Entity found.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт не знайдено.</translation>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт повинен бути ламаною лінією.</translation>
     </message>
     <message>
         <source>Adding point is invalid.</source>
-        <translation type="unfinished"></translation>
+        <translation>Додавання точки не вдалося.</translation>
     </message>
     <message>
         <source>Adding point is not on entity.</source>
-        <translation type="unfinished"></translation>
+        <translation>Додавана точка не лежить на об’єкті.</translation>
     </message>
     <message>
         <source>Specify polyline to delete node</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть ламану, щоб вилучити вузол</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify deleting node's point</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть точки вузла для вилучення</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionPolylineDelBetween</name>
     <message>
         <source>Delete &between two nodes</source>
-        <translation type="unfinished"></translation>
+        <translation>Вилучити &між двома вузлами</translation>
     </message>
     <message>
         <source>Delete between two nodes</source>
-        <translation type="unfinished"></translation>
+        <translation>Вилучити між двома вузлами</translation>
     </message>
     <message>
         <source>No Entity found.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт не знайдено.</translation>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт повинен бути ламаною лінією.</translation>
     </message>
     <message>
         <source>Deletinging point is invalid.</source>
-        <translation type="unfinished"></translation>
+        <translation>Вилучувана точка є недійсною.</translation>
     </message>
     <message>
         <source>Deleting point is not on entity.</source>
-        <translation type="unfinished"></translation>
+        <translation>Вилучувана точка не лежать на об’єкті.</translation>
     </message>
     <message>
         <source>Deleteinging point is not on entity.</source>
-        <translation type="unfinished"></translation>
+        <translation>Вилучувана точка не лежать на об’єкті.</translation>
     </message>
     <message>
         <source>Specify polyline to delete between two nodes</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть ламану для вилучення між двома вузлами</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify first node</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть перший вузол</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify second node</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другий вузол</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionPolylineEquidistant</name>
     <message>
         <source>Create &Equidistant Polylines</source>
-        <translation type="unfinished"></translation>
+        <translation>Створити &рівновіддалені ламані</translation>
     </message>
     <message>
         <source>Create Equidistant Polylines</source>
-        <translation type="unfinished"></translation>
+        <translation>Створити рівновіддалені ламані</translation>
     </message>
     <message>
         <source>No Entity found.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт не знайдено.</translation>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт повинен бути ламаною лінією.</translation>
     </message>
     <message>
         <source>Choose the original polyline</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть початкову ламану</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionPolylineSegment</name>
     <message>
         <source>Create Polyline from Existing &Segments</source>
-        <translation type="unfinished"></translation>
+        <translation>Створити ламану лінію з &існуючих відрізків</translation>
     </message>
     <message>
         <source>Create Polyline from Existing Segments</source>
-        <translation type="unfinished"></translation>
+        <translation>Створити ламану лінію з існуючих відрізків</translation>
     </message>
     <message>
         <source>No Entity found.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт не знайдено.</translation>
     </message>
     <message>
         <source>Entity must be a line or arc.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт повинен бути лінією чи дугою.</translation>
     </message>
     <message>
         <source>Choose one of the segments on the original polyline</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть один із відрізків на початковій ламаній</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionPolylineTrim</name>
     <message>
         <source>&Trim segments</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>відсікти, вирівняти</translatorcomment>
+        <translation>&Усікти відрізки</translation>
     </message>
     <message>
         <source>Trim polyline's segments</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>відсікти, вирівняти</translatorcomment>
+        <translation>Усікти відрізки ламаної</translation>
     </message>
     <message>
         <source>No Entity found.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт не знайдено.</translation>
     </message>
     <message>
         <source>Entity must be a polyline.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт повинен бути ламаною лінією.</translation>
     </message>
     <message>
         <source>Specifying point is invalid.</source>
-        <translation type="unfinished"></translation>
+        <translation>Обрана точка є недійсною.</translation>
     </message>
     <message>
         <source>No Segment found on entity.</source>
-        <translation type="unfinished"></translation>
+        <translation>Не знайдено відрізку на об’єкті.</translation>
     </message>
     <message>
         <source>Specify polyline to trim</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>усікання, вирівнювання</translatorcomment>
+        <translation>Вкажіть ламану для усікання</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify first segment</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть перший сегмент</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Specify second segment</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другий сегмент</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionPrintPreview</name>
     <message>
         <source>Print Pre&view</source>
-        <translation type="unfinished">&Попередній перегляд</translation>
+        <translation>&Попередній перегляд  перед друком</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionSelectAll</name>
     <message>
         <source>Select &All</source>
-        <translation type="unfinished">Вибр&ати усе</translation>
+        <translation>Вибр&ати усе</translation>
     </message>
     <message>
         <source>Deselect &all</source>
-        <translation type="unfinished">Скасувати ви&бір усіх об’єктів</translation>
+        <translation>Скасувати ви&бір усіх об’єктів</translation>
     </message>
     <message>
         <source>Ctrl+K</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+K</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionSelectContour</name>
     <message>
         <source>(De-)Select &Contour</source>
-        <translation type="unfinished">Вибрати &замкнутий контур (скасов. вибір)</translation>
+        <translation>Вибрати (чи скасувати вибір) &замкнутий контур</translation>
     </message>
     <message>
         <source>Entity must be an Atomic Entity.</source>
-        <translation type="unfinished"></translation>
+        <translation>Об’єкт повинен бути елементарним.</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionSelectIntersected</name>
     <message>
         <source>Select Intersected Entities</source>
+        <translatorcomment>Вибрати об’єкти які перетинаються</translatorcomment>
         <translation type="unfinished">Вибрати об’єкти січною</translation>
     </message>
     <message>
         <source>Deselect Intersected Entities</source>
+        <translatorcomment>Зняти вибір об’єктів, які перетинаються</translatorcomment>
         <translation type="unfinished">Скасувати вибір січної</translation>
     </message>
     <message>
         <source>Choose first point of intersection line</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть першу точку лінії перетину</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Choose second point of intersection line</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другу точку лінії перетину</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionSelectInvert</name>
     <message>
         <source>Invert Selection</source>
-        <translation type="unfinished">Інвертувати вибір</translation>
+        <translation>Інвертувати вибір</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionSelectLayer</name>
     <message>
         <source>(De-)Select Layer</source>
-        <translation type="unfinished">Вибрати шар (скасов. вибір)</translation>
+        <translation>Вибрати (чи зняти вибір) шар</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionSelectSingle</name>
     <message>
         <source>Select Entity</source>
-        <translation type="unfinished">Вибрати об’єкт</translation>
+        <translation>Вибрати об’єкт</translation>
     </message>
 </context>
 <context>
@@ -8185,107 +8268,107 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Choose first edge</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть перший край</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Choose second edge</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть другий край</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionSetRelativeZero</name>
     <message>
         <source>Set Relative Zero</source>
-        <translation type="unfinished">Встановити відносний нуль</translation>
+        <translation>Встановити відносний нуль</translation>
     </message>
     <message>
         <source>Set relative Zero</source>
-        <translation type="unfinished"></translation>
+        <translation>Встановити відносний нуль</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionSnapIntersectionManual</name>
     <message>
         <source>I&ntersection Manually</source>
-        <translation type="unfinished">&Перетини вручну</translation>
+        <translation>&Перетини вручну</translation>
     </message>
     <message>
         <source>Select first entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть перший об’єкт</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
     <message>
         <source>Select second entity</source>
-        <translation type="unfinished"></translation>
+        <translation>Виберіть другий об’єкт</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionToolRegenerateDimensions</name>
     <message>
         <source>Regenerate Dimension Entities</source>
-        <translation type="unfinished"></translation>
+        <translation>Перебудувати елементи розмірів</translation>
     </message>
     <message>
         <source>Regenerated %1 dimension entities</source>
-        <translation type="unfinished"></translation>
+        <translation>Перебудовано %1 елементів розмірів</translation>
     </message>
     <message>
         <source>No dimension entities found</source>
-        <translation type="unfinished"></translation>
+        <translation>Не знайдені елементи розмірів</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionZoomAuto</name>
     <message>
         <source>&Auto Zoom</source>
-        <translation type="unfinished">&Показати усі</translation>
+        <translation>&Автомасштабування</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionZoomIn</name>
     <message>
         <source>Zoom &In</source>
-        <translation type="unfinished">На&близити</translation>
+        <translation>На&близити</translation>
     </message>
     <message>
         <source>Zoom &Out</source>
-        <translation type="unfinished">Від&далити</translation>
+        <translation>Від&далити</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionZoomPan</name>
     <message>
         <source>&Pan Zoom</source>
-        <translation type="unfinished">З&рушити</translation>
+        <translation>З&рушити</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionZoomPrevious</name>
     <message>
         <source>&Previous View</source>
-        <translation type="unfinished"></translation>
+        <translation>&Попередній вигляд</translation>
     </message>
 </context>
 <context>
     <name>RS_ActionZoomRedraw</name>
     <message>
         <source>&Redraw</source>
-        <translation type="unfinished">&Оновити зображення</translation>
+        <translation>&Оновити зображення</translation>
     </message>
 </context>
 <context>
@@ -8296,26 +8379,26 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Specify first edge</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть перший край</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Відміна</translation>
+        <translation>Відміна</translation>
     </message>
     <message>
         <source>Specify second edge</source>
-        <translation type="unfinished"></translation>
+        <translation>Вкажіть другий край</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Назад</translation>
     </message>
 </context>
 <context>
     <name>RS_Commands</name>
     <message>
         <source>point</source>
-        <translation type="unfinished"></translation>
+        <translation>точка</translation>
     </message>
     <message>
         <source>po</source>
@@ -8323,7 +8406,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>line</source>
-        <translation type="unfinished"></translation>
+        <translation>лінія</translation>
     </message>
     <message>
         <source>ln</source>
@@ -8335,7 +8418,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>polyline</source>
-        <translation type="unfinished"></translation>
+        <translation>ламана</translation>
     </message>
     <message>
         <source>offset</source>
@@ -8348,7 +8431,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>parallel</source>
-        <translation type="unfinished"></translation>
+        <translation>паралельний</translation>
     </message>
     <message>
         <source>par</source>
@@ -8357,7 +8440,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>arc</source>
-        <translation type="unfinished"></translation>
+        <translation>дуга</translation>
     </message>
     <message>
         <source>a</source>
@@ -8365,7 +8448,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>circle</source>
-        <translation type="unfinished"></translation>
+        <translation>коло</translation>
     </message>
     <message>
         <source>ci</source>
@@ -8373,7 +8456,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>rectangle</source>
-        <translation type="unfinished"></translation>
+        <translation>прямокутник</translation>
     </message>
     <message>
         <source>rec</source>
@@ -8385,7 +8468,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>text</source>
-        <translation type="unfinished"></translation>
+        <translation>текст</translation>
     </message>
     <message>
         <source>regen</source>
@@ -8423,7 +8506,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>undo</source>
-        <translation type="unfinished"></translation>
+        <translation>скасувати</translation>
     </message>
     <message>
         <source>u</source>
@@ -8432,7 +8515,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>redo</source>
-        <translation type="unfinished"></translation>
+        <translation>повторити</translation>
     </message>
     <message>
         <source>r</source>
@@ -8683,7 +8766,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Command: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Команда: %1</translation>
     </message>
     <message>
         <source>po</source>
@@ -8782,63 +8865,63 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>angle</source>
-        <translation type="unfinished"></translation>
+        <translation>кут</translation>
     </message>
     <message>
         <source>close</source>
-        <translation type="unfinished"></translation>
+        <translation>закрито</translation>
     </message>
     <message>
         <source>chord length</source>
-        <translation type="unfinished"></translation>
+        <translation>довжина хорди</translation>
     </message>
     <message>
         <source>columns</source>
-        <translation type="unfinished"></translation>
+        <translation>стовпці</translation>
     </message>
     <message>
         <source>columnspacing</source>
-        <translation type="unfinished"></translation>
+        <translation>відступ між стовпцями</translation>
     </message>
     <message>
         <source>factor</source>
-        <translation type="unfinished"></translation>
+        <translation>коефіцієнт</translation>
     </message>
     <message>
         <source>length</source>
-        <translation type="unfinished"></translation>
+        <translation>довжина</translation>
     </message>
     <message>
         <source>length1</source>
-        <translation type="unfinished"></translation>
+        <translation>довжина1</translation>
     </message>
     <message>
         <source>length2</source>
-        <translation type="unfinished"></translation>
+        <translation>довжина2</translation>
     </message>
     <message>
         <source>number</source>
-        <translation type="unfinished"></translation>
+        <translation>число</translation>
     </message>
     <message>
         <source>radius</source>
-        <translation type="unfinished"></translation>
+        <translation>радіус</translation>
     </message>
     <message>
         <source>rows</source>
-        <translation type="unfinished"></translation>
+        <translation>рядки</translation>
     </message>
     <message>
         <source>rowspacing</source>
-        <translation type="unfinished"></translation>
+        <translation>відступ між рядками</translation>
     </message>
     <message>
         <source>through</source>
-        <translation type="unfinished"></translation>
+        <translation>через</translation>
     </message>
     <message>
         <source>trim</source>
-        <translation type="unfinished"></translation>
+        <translation>усікти</translation>
     </message>
     <message>
         <source>ang</source>
@@ -8852,7 +8935,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>center</source>
-        <translation type="unfinished"></translation>
+        <translation>центр</translation>
     </message>
     <message>
         <source>cen</source>
@@ -8867,7 +8950,7 @@ Do you want to replace it?</source>
     <message>
         <source>length</source>
         <comment>chord length</comment>
-        <translation type="unfinished"></translation>
+        <translation>довжина</translation>
     </message>
     <message>
         <source>l</source>
@@ -8892,7 +8975,7 @@ Do you want to replace it?</source>
     <message>
         <source>columnspacing</source>
         <comment>columnspacing for inserts</comment>
-        <translation type="unfinished"></translation>
+        <translation>відступ між колонками</translation>
     </message>
     <message>
         <source>colspacing</source>
@@ -8916,17 +8999,17 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>help</source>
-        <translation type="unfinished"></translation>
+        <translation>довідка</translation>
     </message>
     <message>
         <source>?</source>
         <comment>help</comment>
-        <translation type="unfinished"></translation>
+        <translation>?</translation>
     </message>
     <message>
         <source>length</source>
         <comment>length</comment>
-        <translation type="unfinished"></translation>
+        <translation>довжина</translation>
     </message>
     <message>
         <source>len</source>
@@ -8941,37 +9024,37 @@ Do you want to replace it?</source>
     <message>
         <source>length1</source>
         <comment>length1</comment>
-        <translation type="unfinished"></translation>
+        <translation>довжина1</translation>
     </message>
     <message>
         <source>len1</source>
         <comment>length1</comment>
-        <translation type="unfinished"></translation>
+        <translation>довж1</translation>
     </message>
     <message>
         <source>l1</source>
         <comment>length1</comment>
-        <translation type="unfinished"></translation>
+        <translation>д1</translation>
     </message>
     <message>
         <source>length2</source>
         <comment>length2</comment>
-        <translation type="unfinished"></translation>
+        <translation>довжина2</translation>
     </message>
     <message>
         <source>len2</source>
         <comment>length2</comment>
-        <translation type="unfinished"></translation>
+        <translation>довж2</translation>
     </message>
     <message>
         <source>l2</source>
         <comment>length2</comment>
-        <translation type="unfinished"></translation>
+        <translation>д2</translation>
     </message>
     <message>
         <source>num</source>
         <comment>number</comment>
-        <translation type="unfinished"></translation>
+        <translation>числ</translation>
     </message>
     <message>
         <source>n</source>
@@ -8986,7 +9069,7 @@ Do you want to replace it?</source>
     <message>
         <source>reversed</source>
         <comment>reversed arc</comment>
-        <translation type="unfinished"></translation>
+        <translation>зворотньо</translation>
     </message>
     <message>
         <source>rev</source>
@@ -9006,7 +9089,7 @@ Do you want to replace it?</source>
     <message>
         <source>rowspacing</source>
         <comment>rowspacing for inserts</comment>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">відступ між рядками</translation>
     </message>
     <message>
         <source>rs</source>
@@ -9025,11 +9108,11 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>Available commands:</source>
-        <translation type="unfinished"></translation>
+        <translation>Доступні команди:</translation>
     </message>
     <message>
         <source>kill</source>
-        <translation type="unfinished"></translation>
+        <translation>вбити</translation>
     </message>
     <message>
         <source>k</source>
@@ -9037,7 +9120,7 @@ Do you want to replace it?</source>
     </message>
     <message>
         <source>back</source>
-        <translation type="unfinished"></translation>
+        <translation>назад</translation>
     </message>
     <message>
         <source>b</source>
diff --git a/ts/librecad_zh_cn.ts b/ts/librecad_zh_cn.ts
index afd33ae..428dba3 100644
--- a/ts/librecad_zh_cn.ts
+++ b/ts/librecad_zh_cn.ts
@@ -2,235 +2,272 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="zh_CN">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="38"/>
+        <source>Select object:</source>
+        <translation>选择对象:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="40"/>
+        <source>Specify a point</source>
+        <translation>指定点</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="129"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="40"/>
+        <source>Select objects:</source>
+        <translation>选择对象:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="47"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="188"/>
         <source>&Plugins</source>
-        <translation>插件(&P)</translation>
+        <translation type="obsolete">插件(&P)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="329"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="360"/>
         <source>Running script '%1'</source>
         <translation>运行脚本 '%1'</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="371"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="402"/>
         <source>Inserting block '%1'</source>
         <translation>插入图块 '%1'</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="493"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="524"/>
         <source>&File</source>
         <translation>文件(&F)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="513"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="544"/>
         <source>Import</source>
         <translation>导入</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="540"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="571"/>
         <source>&Edit</source>
         <translation>编辑(&E)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="596"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="627"/>
         <source>&View</source>
         <translation>视图(&V)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="664"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
         <source>&Toolbars</source>
-        <translation type="unfinished"></translation>
+        <translation>工具栏(&T)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="693"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="724"/>
         <source>Focus on &Command Line</source>
         <translation>聚焦命令行(&C)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="726"/>
         <source>CTRL+M</source>
         <translation>CTRL+M</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="707"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="738"/>
         <source>&Select</source>
         <translation>选择(&S)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="744"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="775"/>
         <source>&Draw</source>
         <translation>绘图(&D)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="748"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="779"/>
         <source>&Point</source>
         <translation>点(&P)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="755"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="786"/>
         <source>&Line</source>
         <translation>直线(&L)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="827"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="858"/>
         <source>&Arc</source>
         <translation>圆弧(&A)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="840"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
         <source>&Circle</source>
         <translation>圆(&C)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="859"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="890"/>
         <source>&Ellipse</source>
         <translation>椭圆(&E)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="902"/>
         <source>&Spline</source>
         <translation>样条曲线(&S)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="878"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="909"/>
         <source>&Polyline</source>
         <translation>多段线(&P)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="922"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="924"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="953"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="955"/>
         <source>&Dimension</source>
         <translation>标注(&D)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="954"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="985"/>
         <source>&Modify</source>
         <translation>修改(&M)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1037"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1068"/>
         <source>&Snap</source>
         <translation>捕捉(&S)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1100"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1131"/>
         <source>&Info</source>
         <translation>查询(&I)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1124"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1159"/>
         <source>&Layer</source>
         <translation>图层(&L)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1151"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1186"/>
         <source>&Block</source>
         <translation>图块(&B)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1195"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1230"/>
         <source>&Scripts</source>
         <translation>脚本(&S)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1208"/>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1221"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1248"/>
         <source>About</source>
         <translation>关于</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1228"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1255"/>
         <source>&Manual</source>
         <translation>手册(&M)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1273"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1300"/>
         <source>Insert Image</source>
         <translation>插入图像</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1333"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1360"/>
         <source>&Window</source>
         <translation>窗口(&W)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1341"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1368"/>
         <source>&Help</source>
         <translation>帮助(&H)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1349"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1376"/>
         <source>De&bugging</source>
         <translation>调试(&b)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1557"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1586"/>
         <source>Layer List</source>
         <translation>图层列表</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1578"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1607"/>
         <source>Block List</source>
         <translation>图块列表</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1599"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1628"/>
         <source>Library Browser</source>
         <translation>库浏览器</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1625"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1654"/>
         <source>Command line</source>
         <translation>命令行</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1839"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1868"/>
         <source>&Cascade</source>
         <translation>层叠(&C)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1841"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1870"/>
         <source>&Tile</source>
         <translation>平铺(&T)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1843"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1872"/>
         <source>Tile &Horizontally</source>
         <translation>水平平铺(&H)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2003"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2009"/>
         <source>Creating new file...</source>
         <translation>新建文件...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2013"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2019"/>
         <source>Block '%1'</source>
         <translation>图块 '%1'</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2015"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2021"/>
         <source>unnamed document %1</source>
         <translation>未命名文档 %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2055"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2061"/>
         <source>New Drawing created.</source>
         <translation>新图纸已创建.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2089"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2095"/>
         <source>Opening recent file...</source>
         <translation>最近打开文件...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2130"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2136"/>
         <source>Cannot open the file
 %1
 Please check the permissions.</source>
@@ -239,29 +276,29 @@ Please check the permissions.</source>
 请检查权限.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2164"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2170"/>
         <source>Loaded document: </source>
         <translation>已加载文档: </translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2168"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2174"/>
         <source>Opening aborted</source>
         <translation>打开中止</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2182"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2188"/>
         <source>Saving drawing...</source>
         <translation>保存图纸...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2194"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2244"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2200"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2250"/>
         <source>Saved drawing: %1</source>
         <translation>已保存图纸: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2199"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2236"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2205"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2242"/>
         <source>Cannot save the file
 %1
 Please check the permissions.</source>
@@ -270,22 +307,22 @@ Please check the permissions.</source>
 请检查权限.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2216"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2222"/>
         <source>Saving drawing under new filename...</source>
         <translation>使用新文件名保存图纸...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2257"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2263"/>
         <source>Auto-saving drawing...</source>
         <translation>自动保存图纸...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2266"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2272"/>
         <source>Auto-saved drawing</source>
         <translation>自动保存的图纸</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2271"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2277"/>
         <source>Cannot auto-save the file
 %1
 Please check the permissions.
@@ -296,69 +333,69 @@ Auto-save disabled.</source>
 自动保存已禁用.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2288"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2294"/>
         <source>Exporting drawing...</source>
         <translation>导出图纸...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2361"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2367"/>
         <source>Exported: %1</source>
         <translation>导出: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2401"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2407"/>
         <source>Exporting...</source>
         <translation>导出...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2456"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2462"/>
         <source>Export complete</source>
         <translation>导出所有</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2458"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2464"/>
         <source>Export failed!</source>
         <translation>导出失败!</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2524"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2530"/>
         <source>Printing...</source>
         <translation>打印...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2587"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2593"/>
         <source>Printing complete</source>
         <translation>打印所有</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2636"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2642"/>
         <source>Print preview for %1</source>
         <translation>%1 打印预览</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2695"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2701"/>
         <source>Exiting application...</source>
         <translation>退出程序...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2897"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
         <source>None</source>
         <translation>æ— </translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2901"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
         <source>About...</source>
         <translation>关于...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
         <source>Version: %1</source>
-        <translation type="unfinished">版本: %1</translation>
+        <translation>版本: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2906"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
         <source>SCM Revision: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>SCM 版本: %1</translation>
     </message>
     <message>
         <source>Version: %1 %2</source>
@@ -369,46 +406,46 @@ Auto-save disabled.</source>
         <translation type="obsolete">SVN修订: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2908"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2917"/>
         <source>Compiled on: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>编译时间: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2919"/>
         <source>Program Icons Supplied by</source>
-        <translation type="unfinished"></translation>
+        <translation>程序图标提供者</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2911"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
         <source>Splash and Logo supplied by</source>
-        <translation type="unfinished"></translation>
+        <translation>启动界面及标识提供者</translation>
     </message>
     <message>
         <source>Date: %1</source>
         <translation type="obsolete">日期: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2922"/>
         <source>Modules: %1</source>
         <translation>模块: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2924"/>
         <source>Main Website : </source>
-        <translation type="unfinished"></translation>
+        <translation>主页: </translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2929"/>
         <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
-        <translation type="unfinished"></translation>
+        <translation>请捐助LibreCAD项目以帮助维护源码和网站.</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2955"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2964"/>
         <source>Help</source>
         <translation>帮助</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2968"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2977"/>
         <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
         <translation>错误,无法自文件系统找到帮助文件.</translation>
     </message>
@@ -416,19 +453,19 @@ Auto-save disabled.</source>
 <context>
     <name>QC_MDIWindow</name>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="406"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="405"/>
         <source>Do you really want to close the drawing?</source>
         <translation>确定要关闭图纸?</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="412"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="411"/>
         <source>Do you really want to close the file
 %1?</source>
         <translation>确定要关闭文件
 %1?</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="415"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="414"/>
         <source>Closing Drawing</source>
         <translation>关闭图纸</translation>
     </message>
@@ -436,123 +473,127 @@ Auto-save disabled.</source>
 <context>
     <name>QG_ActionFactory</name>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="224"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="214"/>
         <source>&Export...</source>
         <translation>导出(&E)...</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="223"/>
         <source>&Close</source>
         <translation>关闭(&C)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="243"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
         <source>&Print...</source>
         <translation>打印(&P)...</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="264"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="254"/>
         <source>&Quit</source>
         <translation>退出(&Q)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="897"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="270"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="887"/>
         <source>&Grid</source>
         <translation>网格(&G)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="282"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="272"/>
         <source>CTRL-G</source>
         <translation>CTRL-G</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="290"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
         <source>&Draft</source>
         <translation>草图(&D)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="299"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="289"/>
         <source>&Statusbar</source>
         <translation>状态栏(&S)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="381"/>
         <source>&back</source>
-        <translation>返回(&b)</translation>
+        <translation type="obsolete">返回(&b)</translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="371"/>
+        <source>&Selection pointer</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="886"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="876"/>
         <source>&Free</source>
         <translation>自由(&F)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="908"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="898"/>
         <source>&Endpoints</source>
         <translation>端点(&E)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="919"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="909"/>
         <source>&On Entity</source>
         <translation>在实体上(&O)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="930"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="920"/>
         <source>&Center</source>
         <translation>中心(&C)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="941"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="931"/>
         <source>&Middle</source>
         <translation>中点(&M)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="952"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="942"/>
         <source>&Distance from Endpoint</source>
         <translation>距端点(&D)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="963"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="953"/>
         <source>&Intersection</source>
         <translation>交点(&I)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="983"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="973"/>
         <source>Restrict &Nothing</source>
         <translation>无约束(&N)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="994"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="984"/>
         <source>Restrict &Orthogonally</source>
         <translation>正交约束(&O)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1005"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="995"/>
         <source>Restrict &Horizontally</source>
         <translation>水平约束(&H)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1016"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1006"/>
         <source>Restrict&Vertically</source>
         <translation>垂直约束(&V)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1180"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1176"/>
         <source>&Preferences</source>
         <translation>选项(&P)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1182"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1178"/>
         <source>&Application Preferences</source>
         <translation>应用程序选项(&A)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1205"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1201"/>
         <source>Open IDE</source>
         <translation>打开IDE</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1215"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1211"/>
         <source>Run Script..</source>
         <translation>运行脚本..</translation>
     </message>
@@ -565,12 +606,12 @@ Auto-save disabled.</source>
         <translation>圆弧选项</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arcoptions.ui" line="56"/>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="62"/>
         <source>Clockwise</source>
         <translation>顺时针</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arcoptions.ui" line="76"/>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="82"/>
         <source>Counter Clockwise</source>
         <translation>逆时针</translation>
     </message>
@@ -578,12 +619,12 @@ Auto-save disabled.</source>
 <context>
     <name>QG_ArcTangentialOptions</name>
     <message>
-        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="31"/>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="26"/>
         <source>Tangential Arc Options</source>
         <translation>切向弧选项</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="40"/>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="35"/>
         <source>Radius:</source>
         <translation>半径:</translation>
     </message>
@@ -649,12 +690,12 @@ Auto-save disabled.</source>
         <translation>Esc</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_blockdialog.ui.h" line="62"/>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="97"/>
         <source>Renaming Block</source>
         <translation>重命名图块</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_blockdialog.ui.h" line="63"/>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="98"/>
         <source>Could not name block. A block named "%1" already exists.</source>
         <translation>无法命名图块. 图块名"%1"已存在.</translation>
     </message>
@@ -662,89 +703,89 @@ Auto-save disabled.</source>
 <context>
     <name>QG_BlockWidget</name>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="75"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="77"/>
         <source>Show all blocks</source>
         <translation>显示所有图块</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="83"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="85"/>
         <source>Hide all blocks</source>
         <translation>隐藏所有图块</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="91"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="93"/>
         <source>Add a block</source>
         <translation>添加图块</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="99"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="101"/>
         <source>Remove the active block</source>
         <translation>移除当前图块</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="107"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="109"/>
         <source>Rename the active block</source>
         <translation>重命名当前图块</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="115"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="117"/>
         <source>Edit the active block
 in a separate window</source>
         <translation>在独立窗口中
 编辑当前图块</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="124"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="126"/>
         <source>Insert the active block</source>
         <translation>插入当前图块</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="302"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="304"/>
         <source>Block Menu</source>
         <translation>图块菜单</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="307"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
         <source>&Defreeze all Blocks</source>
         <translation>解冻所有图块(&D)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
         <source>&Freeze all Blocks</source>
         <translation>冻结所有图块(&F)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
         <source>&Add Block</source>
         <translation>添加图块(&A)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
         <source>&Remove Block</source>
         <translation>移除图块(&R)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
         <source>&Rename Block</source>
         <translation>重命名图块(&R)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
         <source>&Edit Block</source>
         <translation>编辑图块(&E)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
         <source>&Insert Block</source>
         <translation>插入图块(&I)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
         <source>&Toggle Visibility</source>
         <translation>切换可见性(&T)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="325"/>
         <source>&Create New Block</source>
         <translation>新建图块(&C)</translation>
     </message>
@@ -752,7 +793,7 @@ in a separate window</source>
 <context>
     <name>QG_CadToolBar</name>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="31"/>
+        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="26"/>
         <source>CAD Tools</source>
         <translation>CAD 工具</translation>
     </message>
@@ -1177,8 +1218,17 @@ in a separate window</source>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="258"/>
+        <source>Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Move</source>
-        <translation>移动</translation>
+        <translation type="obsolete">移动</translation>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="278"/>
@@ -1186,9 +1236,8 @@ in a separate window</source>
         <translation>移动并旋转</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
         <source>Rotate around two centers</source>
-        <translation>绕两中心旋转</translation>
+        <translation type="obsolete">绕两中心旋转</translation>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="318"/>
@@ -1472,68 +1521,68 @@ in a separate window</source>
 <context>
     <name>QG_ColorBox</name>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="77"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
         <source>Unchanged</source>
         <translation>无变化</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="80"/>
-        <location filename="../src/ui/qg_colorbox.cpp" line="167"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="172"/>
         <source>By Layer</source>
         <translation>随层</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
         <source>By Block</source>
         <translation>随块</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
         <source>Red</source>
         <translation>红</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
         <source>Yellow</source>
         <translation>黄</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="86"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
         <source>Green</source>
         <translation>绿</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="87"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
         <source>Cyan</source>
         <translation>青</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
         <source>Blue</source>
         <translation>蓝</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
         <source>Magenta</source>
         <translation>品红</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="94"/>
         <source>Black / White</source>
         <translation>黑/白</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="95"/>
         <source>Gray</source>
         <translation>灰</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="96"/>
         <source>Light Gray</source>
         <translation>浅灰</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="97"/>
         <source>Others..</source>
         <translation>其他..</translation>
     </message>
@@ -1541,13 +1590,13 @@ in a separate window</source>
 <context>
     <name>QG_CommandWidget</name>
     <message>
-        <location filename="../src/ui/forms/qg_commandwidget.ui" line="17"/>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="15"/>
         <source>Command Line</source>
         <translation>命令行</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_commandwidget.ui" line="80"/>
-        <location filename="../src/ui/forms/qg_commandwidget.ui.h" line="49"/>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="82"/>
+        <location filename="../src/ui/forms/qg_commandwidget.cpp" line="83"/>
         <source>Command:</source>
         <translation>命令:</translation>
     </message>
@@ -4439,7 +4488,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QG_LayerBox</name>
     <message>
-        <location filename="../src/ui/qg_layerbox.cpp" line="69"/>
+        <location filename="../src/ui/qg_layerbox.cpp" line="70"/>
         <source>- Unchanged -</source>
         <translation>- 无变化 -</translation>
     </message>
@@ -4798,118 +4847,118 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QG_LineTypeBox</name>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="74"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="75"/>
         <source>- Unchanged -</source>
         <translation>- 无变化 -</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="78"/>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="239"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="241"/>
         <source>By Layer</source>
         <translation>随层</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="80"/>
         <source>By Block</source>
         <translation>随块</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="81"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
         <source>No Pen</source>
         <translation>无画笔</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
         <source>Continuous</source>
         <translation>Continuous</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
         <source>Dot</source>
         <translation>Dot</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
         <source>Dot (small)</source>
         <translation>Dot (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
         <source>Dot (large)</source>
         <translation>Dot (大)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
         <source>Dash</source>
         <translation>Dash</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
         <source>Dash (small)</source>
         <translation>Dash (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
         <source>Dash (large)</source>
         <translation>Dash (大)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
         <source>Dash Dot</source>
         <translation>Dash Dot</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
         <source>Dash Dot (small)</source>
         <translation>Dash Dot (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
         <source>Dash Dot (large)</source>
         <translation>Dash Dot (大)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
         <source>Divide</source>
         <translation>Divide</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
         <source>Divide (small)</source>
         <translation>Divide (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
         <source>Divide (large)</source>
         <translation>Divide (大)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
         <source>Center</source>
         <translation>Center</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
         <source>Center (small)</source>
         <translation>Center (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
         <source>Center (large)</source>
         <translation>Center (大)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
         <source>Border</source>
         <translation>Border</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
         <source>Border (small)</source>
         <translation>Border (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="101"/>
         <source>Border (large)</source>
         <translation>Border (大)</translation>
     </message>
@@ -5330,11 +5379,11 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QMessageBox</name>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2129"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2198"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2235"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2270"/>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="150"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2135"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2204"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2241"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2276"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="140"/>
         <source>Warning</source>
         <translation>警告</translation>
     </message>
@@ -5349,33 +5398,33 @@ You can changes these settings later in the Options Dialog of QCad.</source>
         <translation>图层"%1"已存在. 请另选名称.</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="236"/>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="247"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="226"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
         <source>Remove Layer</source>
         <translation>删除图层</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="227"/>
         <source>Layer "%1" and all entities on it will be removed.</source>
         <translation>图层"%1"及其上所有实体将被删除.</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="248"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="238"/>
         <source>Layer "%1" can never be removed.</source>
         <translation>图层"%1"无法删除.</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="293"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="283"/>
         <source>Layer Dialog</source>
         <translation>图层对话框</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="408"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="398"/>
         <source>Remove Block</source>
         <translation>删除图块</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="409"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="399"/>
         <source>Block "%1" and all its entities will be removed.</source>
         <translation>图块"%1"及其所有实体将被删除.</translation>
     </message>
@@ -5383,252 +5432,274 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="180"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="179"/>
         <source>None</source>
         <translation>æ— </translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="183"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="261"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="182"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="260"/>
         <source>Inch</source>
         <translation>英寸</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="186"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="263"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="185"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="262"/>
         <source>Foot</source>
         <translation>英尺</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="189"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="265"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="188"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="264"/>
         <source>Mile</source>
         <translation>英里</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="192"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="267"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="191"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="266"/>
         <source>Millimeter</source>
         <translation>毫米</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="195"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="269"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="194"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="268"/>
         <source>Centimeter</source>
         <translation>厘米</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="198"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="271"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="197"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="270"/>
         <source>Meter</source>
         <translation>ç±³</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="201"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="273"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="200"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="272"/>
         <source>Kilometer</source>
         <translation>千米</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="204"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="275"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="203"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="274"/>
         <source>Microinch</source>
         <translation>微英寸</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="207"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="277"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="206"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="276"/>
         <source>Mil</source>
         <translation>米尔</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="210"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="279"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="209"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="278"/>
         <source>Yard</source>
         <translation>码</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="213"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="281"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="212"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="280"/>
         <source>Angstrom</source>
         <translation>埃</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="216"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="283"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="215"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="282"/>
         <source>Nanometer</source>
         <translation>纳米</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="219"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="285"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="218"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="284"/>
         <source>Micron</source>
         <translation>美光</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="222"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="287"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="221"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="286"/>
         <source>Decimeter</source>
         <translation>公寸</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="225"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="289"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="224"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="288"/>
         <source>Decameter</source>
         <translation>公丈</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="228"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="291"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="227"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="290"/>
         <source>Hectometer</source>
         <translation>公引</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="231"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="293"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="230"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="292"/>
         <source>Gigameter</source>
         <translation>京米</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="234"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="295"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="233"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="294"/>
         <source>Astro</source>
         <translation>天文</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="237"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="297"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="236"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="296"/>
         <source>Lightyear</source>
         <translation>光年</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="240"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="299"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="239"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="298"/>
         <source>Parsec</source>
         <translation>秒差距</translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="188"/>
+        <location filename="../src/main/main.cpp" line="185"/>
         <source>Loading..</source>
         <translation>加载..</translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="214"/>
+        <location filename="../src/main/main.cpp" line="211"/>
         <source>Loading...</source>
-        <translation type="unfinished"></translation>
+        <translation>加载...</translation>
     </message>
     <message>
         <source>Loading Library Paths..</source>
         <translation type="obsolete">库加载路径..</translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="229"/>
+        <location filename="../src/main/main.cpp" line="226"/>
         <source>Loading File %1..</source>
         <translation>加载文件 %1..</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="571"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="561"/>
         <source>All Image Files (%1)</source>
         <translation>所有图像文件(%1)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="572"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="562"/>
         <source>All Files (*.*)</source>
         <translation>所有文件(*.*)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="579"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="569"/>
         <source>Open Image</source>
         <translation>打开图像</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1778"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1733"/>
         <source>Windows Bitmap</source>
         <translation>Windows位图</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1780"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1735"/>
         <source>Joint Photographic Experts Group</source>
         <translation>联合图像专家组</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1782"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1737"/>
         <source>Graphics Interchange Format</source>
         <translation>图形交换格式</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1784"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1739"/>
         <source>Multiple-image Network Graphics</source>
         <translation>多重图像网络图形</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1786"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1741"/>
         <source>Portable Bit Map</source>
         <translation>便携式位图</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1788"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1743"/>
         <source>Portable Grey Map</source>
         <translation>便携式灰度图</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1790"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1745"/>
         <source>Portable Network Graphic</source>
         <translation>便携式网络图形</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1792"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1747"/>
         <source>Portable Pixel Map</source>
         <translation>便携式像素图</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1794"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1749"/>
         <source>X Bitmap Format</source>
         <translation>X位图格式</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1796"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1751"/>
         <source>X Pixel Map</source>
         <translation>X像素图</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="72"/>
-        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="68"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="107"/>
         <source>Save Drawing As</source>
         <translation>图纸另存为</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="109"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
         <source>%1 already exists.
 Do you want to replace it?</source>
         <translation>%1已存在.
 确定要覆盖吗?</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="169"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="173"/>
         <source>Drawing Exchange %1</source>
         <translation>图形交换 %1</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="170"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="174"/>
         <source>QCad 1.x file %1</source>
         <translation>QCad 1.x 文件 %1</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="171"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="175"/>
         <source>Font %1</source>
         <translation>字体 %1</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="189"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="193"/>
         <source>Open Drawing</source>
         <translation>打开图纸</translation>
     </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="698"/>
+        <source>enter an integer number</source>
+        <translation>输入整数</translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="702"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="719"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="736"/>
+        <source>LibreCAD query</source>
+        <translation>LibreCAD查询</translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="715"/>
+        <source>enter a number</source>
+        <translation>输入数值</translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="732"/>
+        <source>enter text</source>
+        <translation>输入文字</translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksadd.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionblocksadd.cpp" line="42"/>
         <source>&Add Block</source>
         <translation>添加图块(&A)</translation>
     </message>
@@ -5636,7 +5707,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksAttributes</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="45"/>
         <source>&Rename Block</source>
         <translation>重命名图块(&R)</translation>
     </message>
@@ -5644,17 +5715,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksCreate</name>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="52"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="54"/>
         <source>&Create Block</source>
         <translation>创建图块(&C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="162"/>
         <source>Specify reference point</source>
         <translation>指定参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="163"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -5662,7 +5733,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksEdit</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksedit.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionblocksedit.cpp" line="42"/>
         <source>&Edit Block</source>
         <translation>编辑图块(&E)</translation>
     </message>
@@ -5670,7 +5741,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksExplode</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="48"/>
         <source>&Explode</source>
         <translation>分解(&E)</translation>
     </message>
@@ -5678,12 +5749,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksFreezeAll</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="49"/>
         <source>&Freeze all</source>
         <translation>冻结所有(&F)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="55"/>
         <source>&Defreeze all</source>
         <translation>解冻所有(&D)</translation>
     </message>
@@ -5691,57 +5762,57 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksInsert</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="48"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="50"/>
         <source>&Insert Block</source>
         <translation>插入图块(&I)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="193"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="206"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="219"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="232"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="245"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="258"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="234"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="247"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="260"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="311"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="313"/>
         <source>Specify reference point</source>
         <translation>指定参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="312"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="314"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="315"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="317"/>
         <source>Enter angle:</source>
         <translation>输入角度:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="319"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="321"/>
         <source>Enter factor:</source>
         <translation>输入因子:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="323"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="325"/>
         <source>Enter columns:</source>
         <translation>输入列数:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="327"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="329"/>
         <source>Enter rows:</source>
         <translation>输入行数:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="331"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="333"/>
         <source>Enter column spacing:</source>
         <translation>输入列距:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="335"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="337"/>
         <source>Enter row spacing:</source>
         <translation>输入行距:</translation>
     </message>
@@ -5757,7 +5828,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksToggleView</name>
     <message>
-        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="45"/>
+        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="47"/>
         <source>Toggle Block Visibility</source>
         <translation>切换图块可见性</translation>
     </message>
@@ -5765,12 +5836,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDefault</name>
     <message>
-        <location filename="../src/actions/rs_actiondefault.cpp" line="356"/>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
         <source>Choose second edge</source>
         <translation>选择第二条边</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="358"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -5778,38 +5849,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimAligned</name>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="51"/>
         <source>&Aligned</source>
         <translation>对齐(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="265"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="267"/>
         <source>Specify first extension line origin</source>
         <translation>指定第一延伸线的起点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="266"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="268"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="270"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="272"/>
         <source>Specify second extension line origin</source>
         <translation>指定第二延伸线的起点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="271"/>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="273"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="278"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="275"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="277"/>
         <source>Specify dimension line location</source>
         <translation>指定尺寸线位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="279"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="281"/>
         <source>Enter dimension text:</source>
         <translation>输入标注文字:</translation>
     </message>
@@ -5817,34 +5888,34 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimAngular</name>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="48"/>
         <source>&Angular</source>
         <translation>角度(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="287"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="289"/>
         <source>Select first line</source>
         <translation>选择第一根直线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="288"/>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="292"/>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="296"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="294"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="291"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="293"/>
         <source>Select second line</source>
         <translation>选择第二根直线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="296"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
         <source>Specify dimension arc line location</source>
         <translation>指定圆弧标注位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="299"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="301"/>
         <source>Enter dimension text:</source>
         <translation>输入标注文字:</translation>
     </message>
@@ -5891,27 +5962,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimLeader</name>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="51"/>
         <source>&Leader</source>
         <translation>引线(&L)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="227"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="234"/>
         <source>Specify target point</source>
         <translation>指定目标点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="228"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="235"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="231"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="238"/>
         <source>Specify next point</source>
         <translation>指定下一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="239"/>
         <source>Finish</source>
         <translation>完成</translation>
     </message>
@@ -5919,58 +5990,58 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimLinear</name>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="66"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="69"/>
         <source>&Linear</source>
         <translation>线性(&L)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="73"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="76"/>
         <source>&Horizontal</source>
         <translation>æ°´å¹³(&H)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="80"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="83"/>
         <source>&Vertical</source>
         <translation>åž‚ç›´(&V)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="263"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="312"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="315"/>
         <source>Specify first extension line origin</source>
         <translation>指定第一延伸线的起点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="313"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="316"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="320"/>
         <source>Specify second extension line origin</source>
         <translation>指定第二延伸线的起点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="318"/>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="323"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="321"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="322"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="325"/>
         <source>Specify dimension line location</source>
         <translation>指定尺寸线位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="329"/>
         <source>Enter dimension text:</source>
         <translation>输入标注文字:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="330"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="333"/>
         <source>Enter dimension line angle:</source>
         <translation>输入尺寸线角度:</translation>
     </message>
@@ -6017,65 +6088,65 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArc</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="50"/>
         <source>&Center, Point, Angles</source>
         <translation>中心, 起点, 角度(&C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="275"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="289"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="308"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="323"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="344"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="309"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="324"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="345"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="339"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="340"/>
         <source>Not a valid chord length</source>
         <translation>无效弦长</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
         <source>Specify center</source>
         <translation>指定中心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="371"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
         <source>Specify radius</source>
         <translation>指定半径</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="371"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="375"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="381"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="385"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="389"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="375"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
         <source>Specify start angle:</source>
         <translation>指定起始角度:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="379"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
         <source>Specify end angle or [Angle/chord Length]</source>
         <translation>指定终止角度或[角度/弦长]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
         <source>Specify included angle:</source>
         <translation>指定夹角:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="387"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
         <source>Specify chord length:</source>
         <translation>指定弦长:</translation>
     </message>
@@ -6083,38 +6154,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArc3P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="52"/>
         <source>&3 Points</source>
         <translation>三点(&3)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="99"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="101"/>
         <source>Invalid arc data.</source>
         <translation>无效圆弧数据.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="227"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="229"/>
         <source>Specify startpoint or [Center]</source>
         <translation>指定起始点或[中心]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="228"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="230"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
         <source>Specify second point</source>
         <translation>指定第二点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="232"/>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="236"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="236"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
         <source>Specify endpoint</source>
         <translation>指定终点</translation>
     </message>
@@ -6122,27 +6193,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArcTangential</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="52"/>
         <source>Arc: Tangential</source>
         <translation>圆弧: 相切</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="257"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
         <source>Specify base entity</source>
         <translation>指定基准实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="259"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
         <source>Specify end angle</source>
         <translation>指定终止角度</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6150,32 +6221,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="53"/>
         <source>Center, &Point</source>
         <translation>中心, 点(&P)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="185"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="188"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
         <source>Specify center</source>
         <translation>指定中心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
         <source>Specify radius</source>
         <translation>指定半径</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6183,32 +6254,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle2P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="50"/>
         <source>2 Points</source>
         <translation>两点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="96"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="100"/>
         <source>Invalid Circle data.</source>
         <translation>圆参数无效.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="206"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
         <source>Specify first point</source>
         <translation>指定第一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="206"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
         <source>Specify second point</source>
         <translation>指定第二点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6216,38 +6287,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle3P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="50"/>
         <source>3 Points</source>
         <translation>三点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="97"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="100"/>
         <source>Invalid circle data.</source>
         <translation>圆参数无效.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="207"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="210"/>
         <source>Specify first point</source>
         <translation>指定第一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="208"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="214"/>
         <source>Specify second point</source>
         <translation>指定第二点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="212"/>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="219"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="218"/>
         <source>Specify third point</source>
         <translation>指定第三点</translation>
     </message>
@@ -6255,32 +6326,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircleCR</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="48"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="52"/>
         <source>Center, &Radius</source>
         <translation>中心, 半径(&R)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="167"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="171"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="198"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
         <source>Specify circle center</source>
         <translation>指定圆心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="206"/>
         <source>Specify circle radius</source>
         <translation>指定半径</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="207"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6288,57 +6359,57 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawEllipseAxis</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="61"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="65"/>
         <source>&Ellipse Arc (Axis)</source>
         <translation>椭圆弧(轴)(&E)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="66"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="70"/>
         <source>&Ellipse (Axis)</source>
         <translation>椭圆(轴)(&E)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="315"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="329"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="343"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="319"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="333"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="347"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="367"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="371"/>
         <source>Specify ellipse center</source>
         <translation>指定椭圆中心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="376"/>
         <source>Specify endpoint of major axis</source>
         <translation>指定长轴端点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="373"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="379"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="384"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="389"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="377"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="393"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="378"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="382"/>
         <source>Specify endpoint or length of minor axis:</source>
         <translation>指定短轴的端点或长度</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="387"/>
         <source>Specify start angle</source>
         <translation>指定起始角度</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="392"/>
         <source>Specify end angle</source>
         <translation>指定终止角度</translation>
     </message>
@@ -6346,17 +6417,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawHatch</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="47"/>
         <source>&Hatch</source>
         <translation>å¡«å……(&H)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="154"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="157"/>
         <source>Hatch created successfully.</source>
         <translation>成功创建填充.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="159"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="162"/>
         <source>Invalid hatch area. Please check that the entities chosen form one or more closed contours.</source>
         <translation>填充区域无效. 请选择封闭轮廓线.</translation>
     </message>
@@ -6364,33 +6435,33 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawImage</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="51"/>
         <source>&Image</source>
         <translation>图像(&I)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="197"/>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="212"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="260"/>
         <source>Specify reference point</source>
         <translation>指定参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="261"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="264"/>
         <source>Enter angle:</source>
         <translation>输入角度:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="266"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="268"/>
         <source>Enter factor:</source>
         <translation>输入因子:</translation>
     </message>
@@ -6398,43 +6469,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLine</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="55"/>
         <source>&2 Points</source>
         <translation>两点(&2)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="236"/>
         <source>Specify first point</source>
         <translation>指定第一个点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="233"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="237"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="248"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
         <source>Specify next point or [%1]</source>
         <translation>指定下一点或[%1]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="249"/>
         <location filename="../src/actions/rs_actiondrawline.cpp" line="253"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="257"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="256"/>
         <source>Specify next point</source>
         <translation>指定下一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="302"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="306"/>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
         <translation>无法闭合直线序列. 实体数目尚不足.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="321"/>
         <source>Cannot undo: Not enough entities defined yet.</source>
         <translation>无法撤消: 实体数目尚不足.</translation>
     </message>
@@ -6442,49 +6513,49 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineAngle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="58"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="62"/>
         <source>&Angle</source>
         <translation>角度(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="64"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="68"/>
         <source>&Horizontal</source>
         <translation>æ°´å¹³(&H)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="70"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="74"/>
         <source>Vertical</source>
         <translation>åž‚ç›´</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="212"/>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="225"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="229"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="264"/>
         <source>Specify position</source>
         <translation>指定位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="261"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
         <source>Enter angle:</source>
         <translation>输入角度:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
         <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
         <source>Enter length:</source>
         <translation>输入长度:</translation>
     </message>
@@ -6492,45 +6563,45 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineBisector</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="54"/>
         <source>Bisector</source>
         <translation>角均分线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="199"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="212"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="215"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="247"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="250"/>
         <source>Select first line</source>
         <translation>选择第一根直线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="248"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="254"/>
         <source>Select second line</source>
         <translation>选择第二根直线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="252"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="256"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="263"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="258"/>
         <source>Enter bisector length:</source>
         <translation>输入角均分线长度:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="262"/>
         <source>Enter number of bisectors:</source>
         <translation>输入角均分线数量:</translation>
     </message>
@@ -6538,17 +6609,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineFree</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="51"/>
         <source>&Freehand Line</source>
         <translation>徒手绘线(&F)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="126"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
         <source>Click and drag to draw a line</source>
         <translation>点击及拖曳绘制直线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="126"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -6556,27 +6627,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineHorVert</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="53"/>
         <source>Vertical</source>
         <translation>åž‚ç›´</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="147"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="150"/>
         <source>Specify first point</source>
         <translation>指定第一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="148"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="154"/>
         <source>Specify second point</source>
         <translation>指定第二点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="152"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="155"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6584,39 +6655,39 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineParallel</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="53"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="57"/>
         <source>Parallel</source>
         <translation>平行线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="56"/>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="59"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="60"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="63"/>
         <source>Concentric</source>
         <translation>同心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="128"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="132"/>
         <source>Specify Distance <%1> or select entity or [%2]</source>
         <translation>指定距离<%1> 或 选择实体 或 [%2]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="130"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="138"/>
         <source>Enter number:</source>
         <translation>输入数值:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="195"/>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="221"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="225"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="219"/>
         <source>Not a valid number. Try 1..99</source>
         <translation>无效数值. 请输入1..99</translation>
     </message>
@@ -6624,43 +6695,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineParallelThrough</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="52"/>
         <source>Parallel through point</source>
         <translation>过指定点平行线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="170"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
         <source>Select entity</source>
         <translation>选择实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="170"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="174"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="177"/>
         <source>Specify through point</source>
         <translation>指定通过点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="175"/>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
         <source>Number:</source>
         <translation>数值:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="237"/>
         <source>Not a valid number. Try 1..99</source>
         <translation>无效数值. 请输入1..99</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="238"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="241"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
@@ -6668,32 +6739,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLinePolygon</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="50"/>
         <source>Pol&ygon (Cen,Cor)</source>
         <translation>多边形(中心,角点)(&y)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="140"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="143"/>
         <source>Specify center</source>
         <translation>指定中心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="145"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="148"/>
         <source>Specify a corner</source>
         <translation>指定角点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="152"/>
         <source>Enter number:</source>
         <translation>输入数值:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="213"/>
         <source>Not a valid number. Try 1..9999</source>
         <translation>无效数值. 请输入1..9999</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="219"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
@@ -6701,43 +6772,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLinePolygon2</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="50"/>
         <source>Polygo&n (Cor,Cor)</source>
         <translation>多边形(角点,角点)(&n)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="140"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="143"/>
         <source>Specify first corner</source>
         <translation>指定第一角点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="141"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="144"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="145"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="148"/>
         <source>Specify second corner</source>
         <translation>指定第二角点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="146"/>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="150"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="150"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
         <source>Number:</source>
         <translation>数值:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="214"/>
         <source>Not a valid number. Try 1..9999</source>
         <translation>无效数值. 请输入1..9999</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="217"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="220"/>
         <source>Not a valid expression.</source>
         <translation>无效表达式</translation>
     </message>
@@ -6745,27 +6816,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineRectangle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="50"/>
         <source>Rectangle</source>
         <translation>矩形</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="192"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
         <source>Specify first corner</source>
         <translation>指定第一角点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="193"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="200"/>
         <source>Specify second corner</source>
         <translation>指定第二角点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="201"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6773,38 +6844,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineRelAngle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="55"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="58"/>
         <source>Relative angle</source>
         <translation>相对角度</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="61"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="64"/>
         <source>Orthogonal</source>
         <translation>正交</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="255"/>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="272"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="275"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="312"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="315"/>
         <source>Select base entity</source>
         <translation>选择基准实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="313"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="319"/>
         <source>Specify position</source>
         <translation>指定位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="320"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6812,27 +6883,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineTangent1</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="49"/>
         <source>Tangent (P,C)</source>
         <translation>切线(点,圆)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="180"/>
         <source>Specify point</source>
         <translation>指定点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="181"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="182"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="184"/>
         <source>Select circle, arc or ellipse</source>
         <translation>选择圆, 圆弧或椭圆</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="183"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="185"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6840,27 +6911,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineTangent2</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="48"/>
         <source>Tangent (C,C)</source>
         <translation>切线(圆,圆)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="162"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="164"/>
         <source>Select first circle or arc</source>
         <translation>选择第一个圆或圆弧</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="163"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="165"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="166"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="168"/>
         <source>Select second circle or arc</source>
         <translation>选择第二个圆或圆弧</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="167"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="169"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6868,17 +6939,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawPoint</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="41"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="45"/>
         <source>&Points</source>
         <translation>点(&P)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="121"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
         <source>Specify location</source>
         <translation>指定位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="121"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -6886,53 +6957,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawPolyline</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
         <source>&Polyline</source>
         <translation>多段线(&P)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="53"/>
         <source>Draw polylines</source>
         <translation>绘制多段线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="354"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
         <source>Specify first point</source>
         <translation>指定第一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="356"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="370"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
         <source>Specify next point or [%1]</source>
         <translation>指定下一点或[%1]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="376"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="374"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
         <source>Specify next point</source>
         <translation>指定下一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="429"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="430"/>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
         <translation>无法闭合直线序列. 实体数目尚不足.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="459"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="460"/>
         <source>Undo disallowed due a fatal bug somewhere. Sorry.</source>
         <translation>抱歉, 由于某处致命错误无法撤消.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="462"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="463"/>
         <source>Cannot undo: Not enough entities defined yet.</source>
         <translation>无法撤消: 实体数目尚不足.</translation>
     </message>
@@ -6940,7 +7011,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawSpline</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawspline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="52"/>
         <source>&Spline</source>
         <translation>样条曲线(&P)</translation>
     </message>
@@ -6979,27 +7050,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawText</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="49"/>
         <source>&Text</source>
         <translation>文本(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="274"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="276"/>
         <source>Specify insertion point</source>
         <translation>指定插入点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="275"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="277"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="278"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="280"/>
         <source>Enter text:</source>
         <translation>输入文本:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="279"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="281"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7007,22 +7078,22 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditCopy</name>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="55"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="59"/>
         <source>&Copy</source>
         <translation>复制(&C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="65"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="69"/>
         <source>Cu&t</source>
         <translation>剪切(&t)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="130"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="134"/>
         <source>Specify reference point</source>
         <translation>指定参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="131"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="135"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -7030,17 +7101,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditPaste</name>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="49"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="52"/>
         <source>&Paste</source>
         <translation>粘贴(&P)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="132"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="135"/>
         <source>Set reference point</source>
         <translation>设置参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="133"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="136"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -7048,12 +7119,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditUndo</name>
     <message>
-        <location filename="../src/actions/rs_actioneditundo.cpp" line="53"/>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="56"/>
         <source>&Undo</source>
         <translation>撤消(&U)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditundo.cpp" line="63"/>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="66"/>
         <source>&Redo</source>
         <translation>重做(&R)</translation>
     </message>
@@ -7061,7 +7132,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionFileNew</name>
     <message>
-        <location filename="../src/actions/rs_actionfilenew.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionfilenew.cpp" line="39"/>
         <source>&New...</source>
         <translation>新建(&N)...</translation>
     </message>
@@ -7085,7 +7156,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionFileSaveAs</name>
     <message>
-        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="38"/>
+        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="39"/>
         <source>Save &as...</source>
         <translation>另存为(&a)...</translation>
     </message>
@@ -7093,37 +7164,37 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoAngle</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="45"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="46"/>
         <source>Angle between two lines</source>
         <translation>两直线夹角</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="77"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="78"/>
         <source>Angle: %1%2</source>
         <translation>角度: %1%2</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="81"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="82"/>
         <source>Lines are parallel</source>
         <translation>直线相互平行</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="146"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
         <source>Specify first line</source>
         <translation>指定第一根直线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="148"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="151"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
         <source>Specify second line</source>
         <translation>指定第二根直线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="153"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7131,43 +7202,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoArea</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="43"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="45"/>
         <source>Polygonal Area</source>
         <translation>多边形面积</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="70"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="73"/>
         <source>Area: %1</source>
         <translation>面积: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="71"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="74"/>
         <source>Circumference: %1</source>
         <translation>周长: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="189"/>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="204"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="192"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="207"/>
         <source>Point: %1/%2</source>
         <translation>点: %1/%2</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="232"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="235"/>
         <source>Specify first point of polygon</source>
         <translation>指定多边形第一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="233"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="236"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="237"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="240"/>
         <source>Specify next point of polygon</source>
         <translation>指定多边形下一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="238"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="241"/>
         <source>Terminate</source>
         <translation>结束</translation>
     </message>
@@ -7175,32 +7246,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoDist</name>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="41"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="42"/>
         <source>&Distance Point to Point</source>
         <translation>点到点距离(&D)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="63"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="64"/>
         <source>Distance: %1</source>
         <translation>距离: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="150"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
         <source>Specify first point of distance</source>
         <translation>指定距离的第一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="152"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="155"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
         <source>Specify second point of distance</source>
         <translation>指定距离的第二点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="157"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7208,32 +7279,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoDist2</name>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="41"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="42"/>
         <source>&Distance Entity to Point</source>
         <translation>实体到点距离(&D)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="61"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="62"/>
         <source>Distance: %1</source>
         <translation>距离: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="136"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
         <source>Specify entity</source>
         <translation>指定实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="138"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="141"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
         <source>Specify point</source>
         <translation>指定点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="143"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7241,27 +7312,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoInside</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="58"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="61"/>
         <source>Point inside contour</source>
         <translation>轮廓内点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="67"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="70"/>
         <source>Point is inside selected contour.</source>
         <translation>点位于选中轮廓内.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="69"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="72"/>
         <source>Point is outside selected contour.</source>
         <translation>点位于选中轮廓外.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="100"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="103"/>
         <source>Specify point</source>
         <translation>指定点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="101"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="104"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -7269,17 +7340,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoTotalLength</name>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="44"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="41"/>
         <source>&Total length of selected entities</source>
         <translation>选中实体总长(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="78"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="75"/>
         <source>Total Length of selected entities: %1</source>
         <translation>选中实体总长: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="80"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="77"/>
         <source>At least one of the selected entities cannot be measured.</source>
         <translation>至少有一个选中实体无法测量.</translation>
     </message>
@@ -7287,7 +7358,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersadd.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionlayersadd.cpp" line="41"/>
         <source>Add Layer</source>
         <translation>添加图层</translation>
     </message>
@@ -7295,7 +7366,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersEdit</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersedit.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionlayersedit.cpp" line="44"/>
         <source>&Edit Layer</source>
         <translation>编辑图层(&E)</translation>
     </message>
@@ -7303,12 +7374,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersFreezeAll</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="48"/>
         <source>&Freeze all</source>
         <translation>冻结所有(&F)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="54"/>
         <source>&Defreeze all</source>
         <translation>解冻所有(&D)</translation>
     </message>
@@ -7316,7 +7387,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersRemove</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersremove.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionlayersremove.cpp" line="42"/>
         <source>Remove Layer</source>
         <translation>删除图层</translation>
     </message>
@@ -7324,7 +7395,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersToggleLock</name>
     <message>
-        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="47"/>
         <source>Toggle Layer Lock</source>
         <translation>切换图层锁定</translation>
     </message>
@@ -7332,7 +7403,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersToggleView</name>
     <message>
-        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="43"/>
         <source>&Toggle Layer</source>
         <translation>切换图层(&T)</translation>
     </message>
@@ -7387,7 +7458,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyAttributes</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="45"/>
         <source>&Attributes</source>
         <translation>属性(&A)</translation>
     </message>
@@ -7395,45 +7466,45 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyBevel</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="50"/>
         <source>&Bevel</source>
         <translation>倒角(&B)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="175"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="191"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="252"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="255"/>
         <source>Select first entity</source>
         <translation>指定第一实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="253"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="259"/>
         <source>Select second entity</source>
         <translation>指定第二实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="257"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="261"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="265"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="268"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="263"/>
         <source>Enter length 1:</source>
         <translation>输入长度1:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="267"/>
         <source>Enter length 2:</source>
         <translation>输入长度2:</translation>
     </message>
@@ -7441,48 +7512,48 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyCut</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="46"/>
         <source>&Divide</source>
         <translation>打断(&D)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="104"/>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="122"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="125"/>
         <source>No Entity found.</source>
         <translation>未发现实体.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="111"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="114"/>
         <source>Entity must be a line, arc, circle or ellipse.</source>
         <translation>实体类型必须为直线, 圆弧, 圆或椭圆.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="124"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
         <source>Cutting point is invalid.</source>
         <translation>剪切点无效.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="130"/>
         <source>Cutting point is not on entity.</source>
         <translation>剪切点不在实体上.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="150"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="153"/>
         <source>Specify entity to cut</source>
         <translation>指定待剪切实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="151"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="157"/>
         <source>Specify cutting point</source>
         <translation>指定剪切点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="155"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="158"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7498,67 +7569,67 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyDeleteFree</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="46"/>
         <source>Delete Freehand</source>
         <translation>删除手绘线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="95"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="97"/>
         <source>Entities not in the same polyline.</source>
         <translation>实体不属于同一多段线.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="98"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="100"/>
         <source>Parent of second entity is not a polyline</source>
         <translation>第二个实体的父对象不是多段线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="101"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="103"/>
         <source>Parent of second entity is NULL</source>
         <translation>第二个实体的父对象为空</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="104"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="106"/>
         <source>One of the chosen entities is NULL</source>
         <translation>所选实体之一为空</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="129"/>
         <source>Parent of first entity is not a polyline</source>
         <translation>第一个实体的父对象不是多段线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="131"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="133"/>
         <source>Parent of first entity is NULL</source>
         <translation>第一个实体的父对象为空</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="135"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="137"/>
         <source>First entity is NULL</source>
         <translation>第一个实体为空</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="149"/>
         <source>Second entity is NULL</source>
         <translation>第二个实体为空</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="162"/>
         <source>Specify first break point on a polyline</source>
         <translation>指定多段线上的第一个打断点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="163"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
         <source>Specify second break point on the same polyline</source>
         <translation>指定同一多段线上的第二个打断点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="168"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7584,7 +7655,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyEntity</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="45"/>
         <source>&Properties</source>
         <translation>特性(&P)</translation>
     </message>
@@ -7592,7 +7663,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyExplodeText</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="48"/>
         <source>&Explode Text into Letters</source>
         <translation>分解文本为字符(&E)</translation>
     </message>
@@ -7600,27 +7671,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMirror</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="42"/>
         <source>&Mirror</source>
         <translation>镜像(&M)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="163"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="165"/>
         <source>Specify first point of mirror line</source>
         <translation>指定镜像轴第一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="166"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="168"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="170"/>
         <source>Specify second point of mirror line</source>
         <translation>指定镜像轴第二点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="171"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7628,27 +7699,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMove</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="43"/>
         <source>&Move / Copy</source>
         <translation>移动/复制(&M)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="149"/>
         <source>Specify reference point</source>
         <translation>指定参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="148"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="150"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="151"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="153"/>
         <source>Specify target point</source>
         <translation>指定目标点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="154"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7656,38 +7727,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMoveRotate</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="45"/>
         <source>M&ove and Rotate</source>
         <translation>移动及旋转(&o)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="171"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="174"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="222"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="225"/>
         <source>Specify reference point</source>
         <translation>指定参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="223"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="229"/>
         <source>Specify target point</source>
         <translation>指定目标点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="227"/>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="231"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="234"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="233"/>
         <source>Enter rotation angle:</source>
         <translation>输入旋转角度:</translation>
     </message>
@@ -7695,17 +7766,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRotate</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="44"/>
         <source>&Rotate</source>
         <translation>旋转(&R)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="125"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="128"/>
         <source>Specify reference point</source>
         <translation>指定参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="126"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="129"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7713,27 +7784,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRotate2</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="44"/>
         <source>Rotate T&wo</source>
         <translation>两点旋转(&w)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="163"/>
         <source>Specify absolute reference point</source>
         <translation>指定绝对参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="162"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="164"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="165"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="167"/>
         <source>Specify relative reference point</source>
         <translation>指定相对参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="166"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="168"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7741,38 +7812,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRound</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="46"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="49"/>
         <source>&Round</source>
         <translation>圆角(&R)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="224"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="292"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="295"/>
         <source>Specify first entity</source>
         <translation>指定第一实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="293"/>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="297"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="299"/>
         <source>Specify second entity</source>
         <translation>指定第二实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="303"/>
         <source>Enter radius:</source>
         <translation>输入半径:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="301"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="304"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -7780,17 +7851,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyScale</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="43"/>
         <source>&Scale</source>
         <translation>缩放(&S)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="119"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="121"/>
         <source>Specify reference point</source>
         <translation>指定参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="120"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="122"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -7798,39 +7869,39 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyStretch</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="46"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="49"/>
         <source>&Stretch</source>
         <translation>拉伸(&S)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="198"/>
         <source>Specify first corner</source>
         <translation>指定第一角点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="196"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="202"/>
         <source>Specify second corner</source>
         <translation>指定第二角点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="200"/>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="204"/>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="211"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="206"/>
         <source>Specify reference point</source>
         <translation>指定参照点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="210"/>
         <source>Specify target point</source>
         <translation>指定目标点</translation>
     </message>
@@ -7838,44 +7909,44 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyTrim</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="57"/>
         <source>&Trim</source>
         <translation>修剪(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="61"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="64"/>
         <source>&Trim Two</source>
         <translation>修剪两实体(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
         <source>Select first trim entity</source>
         <translation>选择第一个修剪实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="179"/>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="184"/>
         <source>Select limiting entity</source>
         <translation>选择限制实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="185"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="194"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
         <source>Select second trim entity</source>
         <translation>选择第二个修剪实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="193"/>
         <source>Select entity to trim</source>
         <translation>选择待修剪实体</translation>
     </message>
@@ -7883,37 +7954,37 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyTrimAmount</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="45"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="49"/>
         <source>&Lengthen</source>
         <translation>延长(&L)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="92"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="96"/>
         <source>No entity found. </source>
         <translation>未发现实体. </translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="95"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
         <source>The chosen Entity is in a block. Please edit the block.</source>
         <translation>所选实体属于图块. 请编辑图块.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="103"/>
         <source>The chosen Entity is not an atomic entity or cannot be trimmed.</source>
         <translation>所选实体不是元实体或无法修剪.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="131"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="135"/>
         <source>Not a valid expression</source>
         <translation>无效表达式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="182"/>
         <source>Select entity to trim or enter distance:</source>
         <translation>选择待修剪实体或输入距离:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="179"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="183"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7921,7 +7992,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionOptionsDrawing</name>
     <message>
-        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="44"/>
         <source>Current &Drawing Preferences</source>
         <translation>当前图纸选项(&D)</translation>
     </message>
@@ -7929,53 +8000,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="44"/>
         <source>&Add node</source>
         <translation>添加节点(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="46"/>
         <source>Add polyline's node</source>
         <translation>添加多段线节点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="104"/>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="122"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="125"/>
         <source>No Entity found.</source>
         <translation>未发现实体.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="108"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="111"/>
         <source>Entity must be a polyline.</source>
         <translation>实体类型必须为多段线.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="124"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="127"/>
         <source>Adding point is invalid.</source>
         <translation>添加点无效.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="135"/>
         <source>Adding point is not on entity.</source>
         <translation>添加点不在实体上.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="163"/>
         <source>Specify polyline to add nodes</source>
         <translation>指定待添加节点多段线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="167"/>
         <source>Specify adding node's point</source>
         <translation>指定添加节点点位</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="165"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="168"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7983,53 +8054,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineAppend</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="37"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="40"/>
         <source>A&ppend node</source>
         <translation>追加节点(&p)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="42"/>
         <source>Append polyline's node</source>
         <translation>追加多段线节点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="88"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
         <source>No Entity found.</source>
         <translation>未发现实体.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="94"/>
         <source>Entity must be a polyline.</source>
         <translation>实体类型必须为多段线.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="108"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="111"/>
         <source>Click somewhere near the beginning or end of existing polyline.</source>
         <translation>点击现有多段线起点或终点的附近区域.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="184"/>
         <source>Specify the polyline somewhere near the beginning or end point</source>
         <translation>在起点或终点的附近区域指定多段线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="185"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="197"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="200"/>
         <source>Specify next point or [%1]</source>
         <translation>指定下一点或[%1]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="198"/>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="202"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="205"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="204"/>
         <source>Specify next point</source>
         <translation>指定下一点</translation>
     </message>
@@ -8037,53 +8108,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineDel</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="44"/>
         <source>&Delete node</source>
         <translation>删除节点(&D)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="46"/>
         <source>Delete polyline's node</source>
         <translation>删除多段线节点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="106"/>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="125"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="128"/>
         <source>No Entity found.</source>
         <translation>未发现实体.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="113"/>
         <source>Entity must be a polyline.</source>
         <translation>实体类型必须为多段线.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
         <source>Adding point is invalid.</source>
         <translation>添加点无效.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="133"/>
         <source>Adding point is not on entity.</source>
         <translation>添加点不在实体上.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="156"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="159"/>
         <source>Specify polyline to delete node</source>
         <translation>指定待删除节点多段线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="157"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="163"/>
         <source>Specify deleting node's point</source>
         <translation>指定删除节点点位</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="164"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -8091,66 +8162,66 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineDelBetween</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="44"/>
         <source>Delete &between two nodes</source>
         <translation>删除两节点间(&b)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="46"/>
         <source>Delete between two nodes</source>
         <translation>删除两节点间</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="109"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="134"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="112"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="137"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="150"/>
         <source>No Entity found.</source>
         <translation>未发现实体.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="113"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="116"/>
         <source>Entity must be a polyline.</source>
         <translation>实体类型必须为多段线.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="136"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
         <source>Deletinging point is invalid.</source>
         <translation>删除点无效.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="142"/>
         <source>Deleting point is not on entity.</source>
         <translation>删除点不在实体上.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="155"/>
         <source>Deleteinging point is not on entity.</source>
         <translation>删除点不在实体上.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="179"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="182"/>
         <source>Specify polyline to delete between two nodes</source>
         <translation>指定多段线以删除两节点间</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="180"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="186"/>
         <source>Specify first node</source>
         <translation>指定第一个节点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="184"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="191"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="190"/>
         <source>Specify second node</source>
         <translation>指定第二个节点</translation>
     </message>
@@ -8158,32 +8229,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineEquidistant</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
         <source>Create &Equidistant Polylines</source>
         <translation>创建等距多段线(&E)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="46"/>
         <source>Create Equidistant Polylines</source>
         <translation>创建等距多段线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="198"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="200"/>
         <source>No Entity found.</source>
         <translation>未发现实体.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="202"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="204"/>
         <source>Entity must be a polyline.</source>
         <translation>实体类型必须为多段线.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="256"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="258"/>
         <source>Choose the original polyline</source>
         <translation>选择原始多段线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="257"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="259"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -8191,32 +8262,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineSegment</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="43"/>
         <source>Create Polyline from Existing &Segments</source>
         <translation>从现有分段创建多段线(&S)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="45"/>
         <source>Create Polyline from Existing Segments</source>
         <translation>从现有分段创建多段线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="250"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
         <source>No Entity found.</source>
         <translation>未发现实体.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="256"/>
         <source>Entity must be a line or arc.</source>
         <translation>实体类型必须为直线或圆弧.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="292"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="295"/>
         <source>Choose one of the segments on the original polyline</source>
         <translation>选择原始多段线上的某一分段</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="293"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="296"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -8224,62 +8295,62 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineTrim</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="44"/>
         <source>&Trim segments</source>
         <translation>修剪分段(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="46"/>
         <source>Trim polyline's segments</source>
         <translation>修剪多段线分段</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="106"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="123"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="142"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="146"/>
         <source>No Entity found.</source>
         <translation>未发现实体.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="113"/>
         <source>Entity must be a polyline.</source>
         <translation>实体类型必须为多段线.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="125"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="144"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="129"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="148"/>
         <source>Specifying point is invalid.</source>
         <translation>指定点无效.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="128"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="151"/>
         <source>No Segment found on entity.</source>
         <translation>实体上未发现分段.</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="180"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
         <source>Specify polyline to trim</source>
         <translation>指定待修剪多段线</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
         <source>Specify first segment</source>
         <translation>指定第一分段</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
         <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="189"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="193"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="192"/>
         <source>Specify second segment</source>
         <translation>指定第二分段</translation>
     </message>
@@ -8287,7 +8358,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPrintPreview</name>
     <message>
-        <location filename="../src/actions/rs_actionprintpreview.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionprintpreview.cpp" line="52"/>
         <source>Print Pre&view</source>
         <translation>打印预览(&v)</translation>
     </message>
@@ -8295,17 +8366,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectAll</name>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="46"/>
         <source>Select &All</source>
         <translation>选择所有(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="49"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="52"/>
         <source>Deselect &all</source>
         <translation>放弃所有(&a)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="51"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="54"/>
         <source>Ctrl+K</source>
         <translation>Ctrl+K</translation>
     </message>
@@ -8313,12 +8384,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectContour</name>
     <message>
-        <location filename="../src/actions/rs_actionselectcontour.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="46"/>
         <source>(De-)Select &Contour</source>
         <translation>(放弃)选择轮廓(&C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectcontour.cpp" line="62"/>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="65"/>
         <source>Entity must be an Atomic Entity.</source>
         <translation>实体类型必须为元实体.</translation>
     </message>
@@ -8326,32 +8397,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectIntersected</name>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="55"/>
         <source>Select Intersected Entities</source>
         <translation>选择相交实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="58"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="59"/>
         <source>Deselect Intersected Entities</source>
         <translation>放弃选择相交实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
         <source>Choose first point of intersection line</source>
         <translation>选择相交直线的第一点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
         <source>Choose second point of intersection line</source>
         <translation>选择相交直线的第二点</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -8359,7 +8430,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectInvert</name>
     <message>
-        <location filename="../src/actions/rs_actionselectinvert.cpp" line="38"/>
+        <location filename="../src/actions/rs_actionselectinvert.cpp" line="41"/>
         <source>Invert Selection</source>
         <translation>反向选择</translation>
     </message>
@@ -8367,7 +8438,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectLayer</name>
     <message>
-        <location filename="../src/actions/rs_actionselectlayer.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionselectlayer.cpp" line="44"/>
         <source>(De-)Select Layer</source>
         <translation>(放弃)选择图层</translation>
     </message>
@@ -8375,7 +8446,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectSingle</name>
     <message>
-        <location filename="../src/actions/rs_actionselectsingle.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectsingle.cpp" line="44"/>
         <source>Select Entity</source>
         <translation>选择实体</translation>
     </message>
@@ -8383,32 +8454,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectWindow</name>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="55"/>
         <source>Select Window</source>
         <translation>选择窗口</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="58"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="59"/>
         <source>Deselect Window</source>
         <translation>放弃选择窗口</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
         <source>Choose first edge</source>
         <translation>选择第一条边</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="172"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
         <source>Choose second edge</source>
         <translation>选择第二条边</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="172"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -8416,17 +8487,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSetRelativeZero</name>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="44"/>
         <source>Set Relative Zero</source>
         <translation>相对原点设置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="93"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
         <source>Set relative Zero</source>
         <translation>相对原点设置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="93"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -8434,23 +8505,23 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSnapIntersectionManual</name>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="50"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="52"/>
         <source>I&ntersection Manually</source>
         <translation>手动求交</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="180"/>
         <source>Select first entity</source>
         <translation>选择第一个实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="179"/>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="183"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="185"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="184"/>
         <source>Select second entity</source>
         <translation>选择第二个实体</translation>
     </message>
@@ -8458,17 +8529,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionToolRegenerateDimensions</name>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="44"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="47"/>
         <source>Regenerate Dimension Entities</source>
         <translation>重生成标注实体</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="79"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="82"/>
         <source>Regenerated %1 dimension entities</source>
         <translation>重生成标注实体%1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="81"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="84"/>
         <source>No dimension entities found</source>
         <translation>未发现标注实体</translation>
     </message>
@@ -8476,7 +8547,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomAuto</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomauto.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionzoomauto.cpp" line="49"/>
         <source>&Auto Zoom</source>
         <translation>自动缩放(&A)</translation>
     </message>
@@ -8484,12 +8555,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomIn</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomin.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="56"/>
         <source>Zoom &In</source>
         <translation>放大(&I)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionzoomin.cpp" line="63"/>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="66"/>
         <source>Zoom &Out</source>
         <translation>缩小(&O)</translation>
     </message>
@@ -8497,7 +8568,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomPan</name>
     <message>
-        <location filename="../src/actions/rs_actionzoompan.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionzoompan.cpp" line="40"/>
         <source>&Pan Zoom</source>
         <translation>拖拉缩放(&P)</translation>
     </message>
@@ -8505,7 +8576,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomPrevious</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="45"/>
         <source>&Previous View</source>
         <translation>前一视图(&P)</translation>
     </message>
@@ -8513,7 +8584,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomRedraw</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="47"/>
         <source>&Redraw</source>
         <translation>重画(&R)</translation>
     </message>
@@ -8549,940 +8620,940 @@ Do you want to replace it?</source>
 <context>
     <name>RS_Commands</name>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="45"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="39"/>
         <source>point</source>
         <translation>point</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="40"/>
         <source>po</source>
         <translation>po</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="42"/>
         <source>line</source>
         <translation>line</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="43"/>
         <source>ln</source>
         <translation>ln</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="44"/>
         <source>l</source>
         <translation>l</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="52"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
         <source>polyline</source>
         <translation>polyline</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
         <source>offset</source>
         <translation>offset</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="55"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
         <source>o</source>
         <comment>offset</comment>
         <translation>o</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
         <source>parallel</source>
         <translation>parallel</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="51"/>
         <source>par</source>
         <comment>parallel</comment>
         <translation>par</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="53"/>
         <source>arc</source>
         <translation>arc</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
         <source>a</source>
         <translation>a</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="62"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
         <source>circle</source>
         <translation>circle</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
         <source>ci</source>
         <translation>ci</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
         <source>rectangle</source>
         <translation>rectangle</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="66"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
         <source>rec</source>
         <translation>rec</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="67"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="61"/>
         <source>rectang</source>
         <translation>rectang</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="71"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="423"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="539"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="416"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="532"/>
         <source>text</source>
         <translation>text</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="68"/>
         <source>regen</source>
         <translation>regen</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="75"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
         <source>rg</source>
         <comment>zoom - redraw</comment>
         <translation>rg</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="70"/>
         <source>zr</source>
         <comment>zoom - redraw</comment>
         <translation>zr</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="313"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="72"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
         <source>zw</source>
         <comment>zoom - window</comment>
         <translation>zw</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="80"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="315"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="308"/>
         <source>za</source>
         <comment>zoom - auto</comment>
         <translation>za</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="314"/>
         <source>zp</source>
         <comment>zoom - pan</comment>
         <translation>zp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="316"/>
         <source>zv</source>
         <comment>zoom - previous</comment>
         <translation>zv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="81"/>
         <source>kill</source>
         <translation>kill</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
         <source>k</source>
         <translation>k</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="90"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="429"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="549"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="422"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="542"/>
         <source>undo</source>
         <translation>undo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="550"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="85"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="543"/>
         <source>u</source>
         <comment>undo</comment>
         <translation>u</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="93"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
         <source>redo</source>
         <translation>redo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
         <source>r</source>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="298"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
         <source>da</source>
         <comment>dimension - aligned</comment>
         <translation>da</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="92"/>
         <source>da</source>
         <translation>da</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="300"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
         <source>dh</source>
         <comment>dimension - horizontal</comment>
         <translation>dh</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="95"/>
         <source>dh</source>
         <translation>dh</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="297"/>
         <source>dr</source>
         <comment>dimension - linear</comment>
         <translation>dr</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
         <source>dr</source>
         <translation>dr</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="106"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="302"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="295"/>
         <source>dv</source>
         <comment>dimension - vertical</comment>
         <translation>dv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
         <source>dv</source>
         <translation>dv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="109"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="299"/>
         <source>ld</source>
         <comment>dimension - leader</comment>
         <translation>ld</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
         <source>ld</source>
         <translation>ld</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
         <source>dimregen</source>
         <translation>dimregen</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="361"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
         <source>tm</source>
         <comment>modify - multi trim (extend)</comment>
         <translation>tm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="111"/>
         <source>tm</source>
         <translation>tm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="363"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="356"/>
         <source>xt</source>
         <comment>modify - trim (extend)</comment>
         <translation>xt</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="114"/>
         <source>xt</source>
         <translation>xt</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="365"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="358"/>
         <source>rm</source>
         <comment>modify - trim</comment>
         <translation>rm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
         <source>rm</source>
         <translation>rm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="367"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="360"/>
         <source>mv</source>
         <comment>modify - move</comment>
         <translation>mv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
         <source>mv</source>
         <translation>mv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="359"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="352"/>
         <source>ch</source>
         <comment>modify - bevel (chamfer)</comment>
         <translation>ch</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
         <source>ch</source>
         <translation>ch</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="369"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="362"/>
         <source>mi</source>
         <comment>modify - mirror</comment>
         <translation>mi</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
         <source>mi</source>
         <translation>mi</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="371"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="364"/>
         <source>ro</source>
         <comment>modify - rotate</comment>
         <translation>ro</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
         <source>ro</source>
         <translation>ro</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="373"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="366"/>
         <source>sz</source>
         <comment>modify - scale</comment>
         <translation>sz</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
         <source>sz</source>
         <translation>sz</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="375"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="368"/>
         <source>ss</source>
         <comment>modify - stretch</comment>
         <translation>ss</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
         <source>ss</source>
         <translation>ss</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="370"/>
         <source>er</source>
         <comment>modify - delete (erase)</comment>
         <translation>er</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
         <source>er</source>
         <translation>er</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="379"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="372"/>
         <source>oo</source>
         <comment>modify - undo (oops)</comment>
         <translation>oo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
         <source>oo</source>
         <translation>oo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="149"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="381"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="374"/>
         <source>uu</source>
         <comment>modify - redo</comment>
         <translation>uu</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
         <source>uu</source>
         <translation>uu</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="152"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="383"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="376"/>
         <source>xp</source>
         <comment>modify - explode</comment>
         <translation>xp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
         <source>xp</source>
         <translation>xp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="328"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
         <source>os</source>
         <comment>snap - none</comment>
         <translation>os</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="151"/>
         <source>os</source>
         <translation>os</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="330"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
         <source>sg</source>
         <comment>snap - grid</comment>
         <translation>sg</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="154"/>
         <source>sg</source>
         <translation>sg</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="332"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="325"/>
         <source>se</source>
         <comment>snap - end</comment>
         <translation>se</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
         <source>se</source>
         <translation>se</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="334"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="327"/>
         <source>si</source>
         <comment>snap - intersection</comment>
         <translation>si</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
         <source>si</source>
         <translation>si</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="336"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="329"/>
         <source>sn</source>
         <comment>snap - center</comment>
         <translation>sn</translation>
     </message>
     <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
         <location filename="../src/cmd/rs_commands.cpp" line="169"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
         <source>sn</source>
         <translation>sn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="338"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="331"/>
         <source>sm</source>
         <comment>snap - middle</comment>
         <translation>sm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
         <source>sm</source>
         <translation>sm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="174"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="333"/>
         <source>sn</source>
         <comment>snap - nearest</comment>
         <translation>sn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="177"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="335"/>
         <source>np</source>
         <comment>snap - nearest point</comment>
         <translation>np</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="178"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
         <source>np</source>
         <translation>np</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="181"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
         <source>tn</source>
         <comment>Deselect all</comment>
         <translation>tn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="182"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="176"/>
         <source>tn</source>
         <translation>tn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="244"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="236"/>
         <source>Command: %1</source>
         <translation>命令: %1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="271"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="264"/>
         <source>po</source>
         <comment>point</comment>
         <translation>po</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="273"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="266"/>
         <source>li</source>
         <comment>line</comment>
         <translation>li</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="275"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="268"/>
         <source>pa</source>
         <comment>parallel</comment>
         <translation>pa</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="277"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="270"/>
         <source>re</source>
         <comment>rectangle</comment>
         <translation>re</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="279"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="272"/>
         <source>rp</source>
         <comment>regular polygon</comment>
         <translation>rp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="281"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="274"/>
         <source>ci</source>
         <comment>circle</comment>
         <translation>ci</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="283"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="276"/>
         <source>c2</source>
         <comment>2 point circle</comment>
         <translation>c2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="285"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="278"/>
         <source>c3</source>
         <comment>3 point circle</comment>
         <translation>c3</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="287"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="280"/>
         <source>ar</source>
         <comment>arc</comment>
         <translation>ar</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="289"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="282"/>
         <source>a3</source>
         <comment>3 point arc</comment>
         <translation>a3</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="284"/>
         <source>ep</source>
         <comment>ellipse</comment>
         <translation>ep</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
         <source>tx</source>
         <comment>text</comment>
         <translation>tx</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
         <source>mt</source>
         <comment>text</comment>
         <translation>mt</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="311"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
         <source>rd</source>
         <comment>redraw</comment>
         <translation>rd</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="317"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="310"/>
         <source>zi</source>
         <comment>zoom - in</comment>
         <translation>zi</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="319"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="312"/>
         <source>zo</source>
         <comment>zoom - out</comment>
         <translation>zo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
         <source>fr*</source>
         <comment>layers - freeze all</comment>
         <translation>fr*</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="349"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
         <source>th*</source>
         <comment>layers - defreeze all</comment>
         <translation>th*</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="384"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
         <source>ex</source>
         <comment>modify - explode</comment>
         <translation>ex</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="397"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="455"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="390"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
         <source>angle</source>
         <translation>角度</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="399"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="470"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="392"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="463"/>
         <source>close</source>
         <translation>闭合</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="401"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="394"/>
         <source>chord length</source>
         <translation>弦长</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="403"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="396"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
         <source>columns</source>
         <translation>列数</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="405"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="398"/>
         <source>columnspacing</source>
         <translation>列距</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="407"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="486"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="400"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
         <source>factor</source>
         <translation>因子</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="409"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="402"/>
         <source>length</source>
         <translation>长度</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="411"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="404"/>
         <source>length1</source>
         <translation>长度1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="413"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="406"/>
         <source>length2</source>
         <translation>长度2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="415"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="408"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="506"/>
         <source>number</source>
         <translation>数值</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="417"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="410"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="512"/>
         <source>radius</source>
         <translation>半径</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="419"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="530"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="412"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
         <source>rows</source>
         <translation>行数</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="421"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="414"/>
         <source>rowspacing</source>
         <translation>行距</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="425"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="544"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="418"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="537"/>
         <source>through</source>
         <translation>通过</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="427"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="420"/>
         <source>trim</source>
         <translation>修剪</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="431"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="554"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="424"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="547"/>
         <source>back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="455"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
         <source>ang</source>
         <comment>angle</comment>
         <translation>ang</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="456"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="449"/>
         <source>a</source>
         <comment>angle</comment>
         <translation>a</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="460"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
         <source>center</source>
         <translation>中心</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="460"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
         <source>cen</source>
         <comment>center</comment>
         <translation>cen</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="461"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="454"/>
         <source>c</source>
         <comment>center</comment>
         <translation>c</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="465"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="458"/>
         <source>length</source>
         <comment>chord length</comment>
         <translation>length</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="466"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="459"/>
         <source>l</source>
         <comment>chord length</comment>
         <translation>l</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="471"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="464"/>
         <source>c</source>
         <comment>close</comment>
         <translation>c</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
         <source>cols</source>
         <comment>columns</comment>
         <translation>cols</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="476"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="469"/>
         <source>c</source>
         <comment>columns</comment>
         <translation>c</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="473"/>
         <source>columnspacing</source>
         <comment>columnspacing for inserts</comment>
         <translation>columnspacing</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="481"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="474"/>
         <source>colspacing</source>
         <comment>columnspacing for inserts</comment>
         <translation>colspacing</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="482"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
         <source>cs</source>
         <comment>columnspacing for inserts</comment>
         <translation>cs</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="486"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
         <source>fact</source>
         <comment>factor</comment>
         <translation>fact</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="487"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
         <source>f</source>
         <comment>factor</comment>
         <translation>f</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="491"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
         <source>help</source>
         <translation>帮助</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="491"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
         <source>?</source>
         <comment>help</comment>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="488"/>
         <source>length</source>
         <comment>length</comment>
         <translation>length</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="489"/>
         <source>len</source>
         <comment>length</comment>
         <translation>len</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="497"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="490"/>
         <source>l</source>
         <comment>length</comment>
         <translation>l</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="494"/>
         <source>length1</source>
         <comment>length1</comment>
         <translation>length1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
         <source>len1</source>
         <comment>length1</comment>
         <translation>len1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="503"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
         <source>l1</source>
         <comment>length1</comment>
         <translation>l1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="500"/>
         <source>length2</source>
         <comment>length2</comment>
         <translation>length2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
         <source>len2</source>
         <comment>length2</comment>
         <translation>len2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="509"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
         <source>l2</source>
         <comment>length2</comment>
         <translation>l2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="514"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
         <source>num</source>
         <comment>number</comment>
         <translation>num</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="515"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
         <source>n</source>
         <comment>number</comment>
         <translation>n</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="520"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
         <source>r</source>
         <comment>radius</comment>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="524"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="517"/>
         <source>reversed</source>
         <comment>reversed arc</comment>
         <translation>reversed</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="525"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="518"/>
         <source>rev</source>
         <comment>reversed arc</comment>
         <translation>rev</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="526"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
         <source>r</source>
         <comment>reversed arc</comment>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="530"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
         <source>r</source>
         <comment>rows</comment>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="534"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="527"/>
         <source>rowspacing</source>
         <comment>rowspacing for inserts</comment>
         <translation>rowspacing</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="535"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="528"/>
         <source>rs</source>
         <comment>rowspacing for inserts</comment>
         <translation>rs</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="540"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="533"/>
         <source>t</source>
         <comment>text</comment>
         <translation>t</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="545"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="538"/>
         <source>t</source>
         <comment>through</comment>
         <translation>t</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="555"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="548"/>
         <source>b</source>
         <comment>back</comment>
         <translation>b</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="568"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="561"/>
         <source>Available commands:</source>
         <translation>可用命令:</translation>
     </message>
diff --git a/ts/librecad_zh_tw.ts b/ts/librecad_zh_tw.ts
index ce1a834..8ff0367 100644
--- a/ts/librecad_zh_tw.ts
+++ b/ts/librecad_zh_tw.ts
@@ -2,236 +2,273 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="zh_TW">
 <context>
+    <name>QC_ActionGetEnt</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="38"/>
+        <source>Select object:</source>
+        <translation>選取物件:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetent.cpp" line="45"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetPoint</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="40"/>
+        <source>Specify a point</source>
+        <translation>指定點</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetpoint.cpp" line="129"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
+    <name>QC_ActionGetSelect</name>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="40"/>
+        <source>Select objects:</source>
+        <translation>選取對象:</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/intern/qc_actiongetselect.cpp" line="47"/>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
     <name>QC_ApplicationWindow</name>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="188"/>
         <source>&Plugins</source>
-        <translation>外掛程式(&P)</translation>
+        <translation type="obsolete">外掛程式(&P)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="329"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="360"/>
         <source>Running script '%1'</source>
         <translation>執行腳本 '%1'</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="371"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="402"/>
         <source>Inserting block '%1'</source>
         <translation>插入圖塊 '%1'</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="493"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="524"/>
         <source>&File</source>
         <translation>檔案(&F)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="513"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="544"/>
         <source>Import</source>
         <translation>匯入</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="540"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="571"/>
         <source>&Edit</source>
         <translation>編輯(&E)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="596"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="627"/>
         <source>&View</source>
         <translation>檢視(&V)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="664"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
         <source>&Toolbars</source>
-        <translation type="unfinished"></translation>
+        <translation>工具列(&T)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="693"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="724"/>
         <source>Focus on &Command Line</source>
         <translation>進入指令列(&C)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="695"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="726"/>
         <source>CTRL+M</source>
         <translation>CTRL+M</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="707"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="738"/>
         <source>&Select</source>
         <translation>選取(&S)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="744"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="775"/>
         <source>&Draw</source>
         <translation>繪圖(&D)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="748"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="779"/>
         <source>&Point</source>
         <translatorcomment>點(&P)</translatorcomment>
         <translation>點(&P)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="755"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="786"/>
         <source>&Line</source>
         <translation>ç·š(&L)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="827"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="858"/>
         <source>&Arc</source>
         <translation>弧(&A)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="840"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
         <source>&Circle</source>
         <translation>圓(&C)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="859"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="890"/>
         <source>&Ellipse</source>
         <translation>橢圓(&E)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="871"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="902"/>
         <source>&Spline</source>
         <translation>雲形線(&S)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="878"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="909"/>
         <source>&Polyline</source>
         <translation>聚合線(&P)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="922"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="924"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="953"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="955"/>
         <source>&Dimension</source>
         <translation>標註(&D)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="954"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="985"/>
         <source>&Modify</source>
         <translation>修改(&M)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1037"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1068"/>
         <source>&Snap</source>
         <translation>貼齊(&S)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1100"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1131"/>
         <source>&Info</source>
         <translation>資訊(&I)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1124"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1159"/>
         <source>&Layer</source>
         <translation>圖層(&L)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1151"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1186"/>
         <source>&Block</source>
         <translation>圖塊(&B)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1195"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1230"/>
         <source>&Scripts</source>
         <translation>腳本(&S)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1208"/>
         <source>&CAM</source>
-        <translation>&CAM</translation>
+        <translation type="obsolete">&CAM</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1221"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1248"/>
         <source>About</source>
         <translation>關於</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1228"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1255"/>
         <source>&Manual</source>
         <translation>手冊(&M)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1273"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1300"/>
         <source>Insert Image</source>
         <translation>插入影像</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1333"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1360"/>
         <source>&Window</source>
         <translation>視窗(&W)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1341"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1368"/>
         <source>&Help</source>
         <translation>說明(&H)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1349"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1376"/>
         <source>De&bugging</source>
         <translation>除錯(&B)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1557"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1586"/>
         <source>Layer List</source>
         <translation>圖層清單</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1578"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1607"/>
         <source>Block List</source>
         <translation>圖塊清單</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1599"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1628"/>
         <source>Library Browser</source>
         <translation>資料庫瀏覽器</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1625"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1654"/>
         <source>Command line</source>
         <translation>指令列</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1839"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1868"/>
         <source>&Cascade</source>
         <translation>重疊顯示(&C)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1841"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1870"/>
         <source>&Tile</source>
         <translation>並排(&T)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="1843"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="1872"/>
         <source>Tile &Horizontally</source>
         <translation>水平並排(&H)</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2003"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2009"/>
         <source>Creating new file...</source>
         <translation>新建圖檔...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2013"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2019"/>
         <source>Block '%1'</source>
         <translation>圖塊 '%1'</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2015"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2021"/>
         <source>unnamed document %1</source>
         <translation>未命名文件 %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2055"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2061"/>
         <source>New Drawing created.</source>
         <translation>新繪圖已建立。</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2089"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2095"/>
         <source>Opening recent file...</source>
         <translation>開啟最近的檔案...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2130"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2136"/>
         <source>Cannot open the file
 %1
 Please check the permissions.</source>
@@ -240,29 +277,29 @@ Please check the permissions.</source>
 請檢查檔案權限。</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2164"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2170"/>
         <source>Loaded document: </source>
         <translation>載入的文件:</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2168"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2174"/>
         <source>Opening aborted</source>
         <translation>已中止開啟</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2182"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2188"/>
         <source>Saving drawing...</source>
         <translation>繪圖儲存中...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2194"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2244"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2200"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2250"/>
         <source>Saved drawing: %1</source>
         <translation>已儲存繪圖: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2199"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2236"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2205"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2242"/>
         <source>Cannot save the file
 %1
 Please check the permissions.</source>
@@ -271,22 +308,22 @@ Please check the permissions.</source>
 請檢查檔案權限。</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2216"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2222"/>
         <source>Saving drawing under new filename...</source>
         <translation>以新檔名儲存繪圖...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2257"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2263"/>
         <source>Auto-saving drawing...</source>
         <translation>繪圖自動儲存中...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2266"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2272"/>
         <source>Auto-saved drawing</source>
         <translation>繪圖已自動儲存</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2271"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2277"/>
         <source>Cannot auto-save the file
 %1
 Please check the permissions.
@@ -297,69 +334,69 @@ Auto-save disabled.</source>
 無法自動儲存。</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2288"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2294"/>
         <source>Exporting drawing...</source>
         <translation>正在匯出繪圖...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2361"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2367"/>
         <source>Exported: %1</source>
         <translation>已匯出: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2401"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2407"/>
         <source>Exporting...</source>
         <translation>匯出...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2456"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2462"/>
         <source>Export complete</source>
         <translation>匯出完成</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2458"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2464"/>
         <source>Export failed!</source>
         <translation>匯出失敗!</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2524"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2530"/>
         <source>Printing...</source>
         <translation>列印...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2587"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2593"/>
         <source>Printing complete</source>
         <translation>列印完成</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2636"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2642"/>
         <source>Print preview for %1</source>
         <translation>預覽列印 %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2695"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2701"/>
         <source>Exiting application...</source>
         <translation>退出程式...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2897"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
         <source>None</source>
         <translation>ç„¡</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2901"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
         <source>About...</source>
         <translation>關於...</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2904"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
         <source>Version: %1</source>
-        <translation type="unfinished">版本: %1</translation>
+        <translation>版本: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2906"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
         <source>SCM Revision: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>SCM 版本: %1</translation>
     </message>
     <message>
         <source>Version: %1 %2</source>
@@ -370,46 +407,46 @@ Auto-save disabled.</source>
         <translation type="obsolete">SVN 修訂: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2908"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2917"/>
         <source>Compiled on: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>編譯: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2910"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2919"/>
         <source>Program Icons Supplied by</source>
-        <translation type="unfinished"></translation>
+        <translation>程式圖示提供</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2911"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
         <source>Splash and Logo supplied by</source>
-        <translation type="unfinished"></translation>
+        <translation>登入畫面與標誌提供</translation>
     </message>
     <message>
         <source>Date: %1</source>
         <translation type="obsolete">日期: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2913"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2922"/>
         <source>Modules: %1</source>
         <translation>模組: %1</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2915"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2924"/>
         <source>Main Website : </source>
-        <translation type="unfinished"></translation>
+        <translation>主網站:</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2920"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2929"/>
         <source>Please donate to LibreCAD to help maintain the sourcecode and it's website.</source>
-        <translation type="unfinished"></translation>
+        <translation>請捐贈 LibreCAD,以幫助維持源碼與其網站。</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2955"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2964"/>
         <source>Help</source>
         <translation>求助</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2968"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2977"/>
         <source>Bugger, I couldn't find the helpfiles on the filesystem.</source>
         <translation>報錯,我在檔案系統上無法找到說明文件。</translation>
     </message>
@@ -417,19 +454,19 @@ Auto-save disabled.</source>
 <context>
     <name>QC_MDIWindow</name>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="406"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="405"/>
         <source>Do you really want to close the drawing?</source>
         <translation>您確定要關閉這個繪圖?</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="412"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="411"/>
         <source>Do you really want to close the file
 %1?</source>
         <translation>您確定要關閉這個檔案
 %1 嗎?</translation>
     </message>
     <message>
-        <location filename="../src/main/qc_mdiwindow.cpp" line="415"/>
+        <location filename="../src/main/qc_mdiwindow.cpp" line="414"/>
         <source>Closing Drawing</source>
         <translation>繪圖關閉</translation>
     </message>
@@ -437,123 +474,127 @@ Auto-save disabled.</source>
 <context>
     <name>QG_ActionFactory</name>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="224"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="214"/>
         <source>&Export...</source>
         <translation>匯出(&E)...</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="223"/>
         <source>&Close</source>
         <translation>關閉(&C)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="243"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="233"/>
         <source>&Print...</source>
         <translation>列印(&P)...</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="264"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="254"/>
         <source>&Quit</source>
         <translation>&離開</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="897"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="270"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="887"/>
         <source>&Grid</source>
         <translation>格點(&G)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="282"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="272"/>
         <source>CTRL-G</source>
         <translation>CTRL-G</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="290"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="280"/>
         <source>&Draft</source>
         <translation>草圖(&D)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="299"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="289"/>
         <source>&Statusbar</source>
         <translation>狀態列(&S)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="381"/>
         <source>&back</source>
-        <translation>返回(&b)</translation>
+        <translation type="obsolete">返回(&b)</translation>
+    </message>
+    <message>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="371"/>
+        <source>&Selection pointer</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="886"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="876"/>
         <source>&Free</source>
         <translation>自由(&F)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="908"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="898"/>
         <source>&Endpoints</source>
         <translation>端點(&E)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="919"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="909"/>
         <source>&On Entity</source>
         <translation>物件(&O)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="930"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="920"/>
         <source>&Center</source>
         <translation>中心(&C)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="941"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="931"/>
         <source>&Middle</source>
         <translation>中點(&M)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="952"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="942"/>
         <source>&Distance from Endpoint</source>
         <translation>端點距離(&D)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="963"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="953"/>
         <source>&Intersection</source>
         <translation>交點(&I)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="983"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="973"/>
         <source>Restrict &Nothing</source>
         <translation>無限制(&N)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="994"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="984"/>
         <source>Restrict &Orthogonally</source>
         <translation>正交限制(&O)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1005"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="995"/>
         <source>Restrict &Horizontally</source>
         <translation>水平限制(&H)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1016"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1006"/>
         <source>Restrict&Vertically</source>
         <translation>垂直限制(&V)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1180"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1176"/>
         <source>&Preferences</source>
         <translation>偏好設定(&P)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1182"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1178"/>
         <source>&Application Preferences</source>
         <translation>應用程式偏好設定(&A)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1205"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1201"/>
         <source>Open IDE</source>
         <translation>é–‹å•Ÿ IDE</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_actionfactory.cpp" line="1215"/>
+        <location filename="../src/ui/qg_actionfactory.cpp" line="1211"/>
         <source>Run Script..</source>
         <translation>執行腳本..</translation>
     </message>
@@ -566,12 +607,12 @@ Auto-save disabled.</source>
         <translation>弧選項</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arcoptions.ui" line="56"/>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="62"/>
         <source>Clockwise</source>
         <translation>順時針</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arcoptions.ui" line="76"/>
+        <location filename="../src/ui/forms/qg_arcoptions.ui" line="82"/>
         <source>Counter Clockwise</source>
         <translation>逆時針</translation>
     </message>
@@ -579,12 +620,12 @@ Auto-save disabled.</source>
 <context>
     <name>QG_ArcTangentialOptions</name>
     <message>
-        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="31"/>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="26"/>
         <source>Tangential Arc Options</source>
         <translation>相切弧選項</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="40"/>
+        <location filename="../src/ui/forms/qg_arctangentialoptions.ui" line="35"/>
         <source>Radius:</source>
         <translation>半徑:</translation>
     </message>
@@ -650,12 +691,12 @@ Auto-save disabled.</source>
         <translation>Esc</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_blockdialog.ui.h" line="62"/>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="97"/>
         <source>Renaming Block</source>
         <translation>重新命名圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_blockdialog.ui.h" line="63"/>
+        <location filename="../src/ui/forms/qg_blockdialog.cpp" line="98"/>
         <source>Could not name block. A block named "%1" already exists.</source>
         <translation>無法命名圖塊。名為 "%1" 的圖塊已經存在。</translation>
     </message>
@@ -663,89 +704,89 @@ Auto-save disabled.</source>
 <context>
     <name>QG_BlockWidget</name>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="75"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="77"/>
         <source>Show all blocks</source>
         <translation>顯示所有圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="83"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="85"/>
         <source>Hide all blocks</source>
         <translation>隱藏所有圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="91"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="93"/>
         <source>Add a block</source>
         <translation>新增圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="99"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="101"/>
         <source>Remove the active block</source>
         <translation>移除作用中圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="107"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="109"/>
         <source>Rename the active block</source>
         <translation>重新命名作用中圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="115"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="117"/>
         <source>Edit the active block
 in a separate window</source>
         <translation>在分離視窗中
 編輯作用中圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="124"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="126"/>
         <source>Insert the active block</source>
         <translation>插入作用中圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="302"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="304"/>
         <source>Block Menu</source>
         <translation>圖塊選單</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="307"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
         <source>&Defreeze all Blocks</source>
         <translation>解凍所有圖塊(&D)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="309"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
         <source>&Freeze all Blocks</source>
         <translation>凍結所有圖塊(&F)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="311"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
         <source>&Add Block</source>
         <translation>新增圖塊(&A)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="313"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
         <source>&Remove Block</source>
         <translation>移除圖塊(&R)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="315"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
         <source>&Rename Block</source>
         <translation>重新命名圖塊(&R)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="317"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
         <source>&Edit Block</source>
         <translation>編輯圖塊(&E)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="319"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
         <source>&Insert Block</source>
         <translation>插入圖塊(&I)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="321"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
         <source>&Toggle Visibility</source>
         <translation>切換可見性(&T)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_blockwidget.cpp" line="323"/>
+        <location filename="../src/ui/qg_blockwidget.cpp" line="325"/>
         <source>&Create New Block</source>
         <translation>建立新圖塊(&C)</translation>
     </message>
@@ -753,7 +794,7 @@ in a separate window</source>
 <context>
     <name>QG_CadToolBar</name>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="31"/>
+        <location filename="../src/ui/forms/qg_cadtoolbar.ui" line="26"/>
         <source>CAD Tools</source>
         <translation>CAD 工具</translation>
     </message>
@@ -1178,8 +1219,17 @@ in a separate window</source>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="258"/>
+        <source>Move / Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
+        <source>Rotate Two</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Move</source>
-        <translation>移動</translation>
+        <translation type="obsolete">移動</translation>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="278"/>
@@ -1187,9 +1237,8 @@ in a separate window</source>
         <translation>移動並旋轉</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="298"/>
         <source>Rotate around two centers</source>
-        <translation>繞兩中心旋轉</translation>
+        <translation type="obsolete">繞兩中心旋轉</translation>
     </message>
     <message>
         <location filename="../src/ui/forms/qg_cadtoolbarmodify.ui" line="318"/>
@@ -1473,68 +1522,68 @@ in a separate window</source>
 <context>
     <name>QG_ColorBox</name>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="77"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
         <source>Unchanged</source>
         <translation>未改變</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="80"/>
-        <location filename="../src/ui/qg_colorbox.cpp" line="167"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="172"/>
         <source>By Layer</source>
         <translation>依圖層</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="81"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
         <source>By Block</source>
         <translation>依圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="84"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
         <source>Red</source>
         <translation>ç´…</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="85"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
         <source>Yellow</source>
         <translation>黃</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="86"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
         <source>Green</source>
         <translation>綠</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="87"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
         <source>Cyan</source>
         <translation>青</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="88"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
         <source>Blue</source>
         <translation>藍</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="89"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
         <source>Magenta</source>
         <translation>æ´‹ç´…</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="90"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="94"/>
         <source>Black / White</source>
         <translation>黑/白</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="91"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="95"/>
         <source>Gray</source>
         <translation>灰</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="92"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="96"/>
         <source>Light Gray</source>
         <translation>淺灰</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_colorbox.cpp" line="93"/>
+        <location filename="../src/ui/qg_colorbox.cpp" line="97"/>
         <source>Others..</source>
         <translation>其他..</translation>
     </message>
@@ -1542,13 +1591,13 @@ in a separate window</source>
 <context>
     <name>QG_CommandWidget</name>
     <message>
-        <location filename="../src/ui/forms/qg_commandwidget.ui" line="17"/>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="15"/>
         <source>Command Line</source>
         <translation>指令列</translation>
     </message>
     <message>
-        <location filename="../src/ui/forms/qg_commandwidget.ui" line="80"/>
-        <location filename="../src/ui/forms/qg_commandwidget.ui.h" line="49"/>
+        <location filename="../src/ui/forms/qg_commandwidget.ui" line="82"/>
+        <location filename="../src/ui/forms/qg_commandwidget.cpp" line="83"/>
         <source>Command:</source>
         <translation>指令:</translation>
     </message>
@@ -4440,7 +4489,7 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QG_LayerBox</name>
     <message>
-        <location filename="../src/ui/qg_layerbox.cpp" line="69"/>
+        <location filename="../src/ui/qg_layerbox.cpp" line="70"/>
         <source>- Unchanged -</source>
         <translation>- 未變更 -</translation>
     </message>
@@ -4799,118 +4848,118 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QG_LineTypeBox</name>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="74"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="75"/>
         <source>- Unchanged -</source>
         <translation>- 未變更 -</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="78"/>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="239"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="241"/>
         <source>By Layer</source>
         <translation>依圖層</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="79"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="80"/>
         <source>By Block</source>
         <translation>依圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="81"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
         <source>No Pen</source>
         <translation>ç„¡é‚Šç·š</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="82"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
         <source>Continuous</source>
         <translation>Continuous</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="83"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
         <source>Dot</source>
         <translation>Dot</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="84"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
         <source>Dot (small)</source>
         <translation>Dot (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="85"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
         <source>Dot (large)</source>
         <translation>Dot (大)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="86"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
         <source>Dash</source>
         <translation>Dash</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="87"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
         <source>Dash (small)</source>
         <translation>Dash (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="88"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
         <source>Dash (large)</source>
         <translation>Dash (大)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="89"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
         <source>Dash Dot</source>
         <translation>Dash Dot</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="90"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
         <source>Dash Dot (small)</source>
         <translation>Dash Dot (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="91"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
         <source>Dash Dot (large)</source>
         <translation>Dash Dot (大)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="92"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
         <source>Divide</source>
         <translation>Divide</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="93"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
         <source>Divide (small)</source>
         <translation>Divide (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="94"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
         <source>Divide (large)</source>
         <translation>Divide (大)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="95"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
         <source>Center</source>
         <translation>Center</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="96"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
         <source>Center (small)</source>
         <translation>Center (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="97"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
         <source>Center (large)</source>
         <translation>Center (大)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="98"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
         <source>Border</source>
         <translation>Border</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="99"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
         <source>Border (small)</source>
         <translation>Border (小)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_linetypebox.cpp" line="100"/>
+        <location filename="../src/ui/qg_linetypebox.cpp" line="101"/>
         <source>Border (large)</source>
         <translation>Border (大)</translation>
     </message>
@@ -5331,11 +5380,11 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QMessageBox</name>
     <message>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2129"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2198"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2235"/>
-        <location filename="../src/main/qc_applicationwindow.cpp" line="2270"/>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="150"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2135"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2204"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2241"/>
+        <location filename="../src/main/qc_applicationwindow.cpp" line="2276"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="140"/>
         <source>Warning</source>
         <translation>警告</translation>
     </message>
@@ -5350,33 +5399,33 @@ You can changes these settings later in the Options Dialog of QCad.</source>
         <translation>相同名稱 "%1" 的圖層已經存在。請指定不同的名稱。</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="236"/>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="247"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="226"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
         <source>Remove Layer</source>
         <translation>移除圖層</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="237"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="227"/>
         <source>Layer "%1" and all entities on it will be removed.</source>
         <translation>圖層"%1"與其所有物件將被移除。</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="248"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="238"/>
         <source>Layer "%1" can never be removed.</source>
         <translation>無法刪除圖層"%1"。</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="293"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="283"/>
         <source>Layer Dialog</source>
         <translation>圖層對話框</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="408"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="398"/>
         <source>Remove Block</source>
         <translation>移除圖塊</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="409"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="399"/>
         <source>Block "%1" and all its entities will be removed.</source>
         <translation>圖塊"%1"與其所有物件將被移除。</translation>
     </message>
@@ -5384,137 +5433,137 @@ You can changes these settings later in the Options Dialog of QCad.</source>
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="180"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="179"/>
         <source>None</source>
         <translation>ç„¡</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="183"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="261"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="182"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="260"/>
         <source>Inch</source>
         <translation>英吋</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="186"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="263"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="185"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="262"/>
         <source>Foot</source>
         <translation>英呎</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="189"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="265"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="188"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="264"/>
         <source>Mile</source>
         <translation>英哩</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="192"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="267"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="191"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="266"/>
         <source>Millimeter</source>
         <translation>公厘</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="195"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="269"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="194"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="268"/>
         <source>Centimeter</source>
         <translation>公分</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="198"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="271"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="197"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="270"/>
         <source>Meter</source>
         <translation>公尺</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="201"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="273"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="200"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="272"/>
         <source>Kilometer</source>
         <translation>公里</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="204"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="275"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="203"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="274"/>
         <source>Microinch</source>
         <translation>微英吋</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="207"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="277"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="206"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="276"/>
         <source>Mil</source>
         <translation>密爾(千分之一英吋)</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="210"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="279"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="209"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="278"/>
         <source>Yard</source>
         <translation>碼</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="213"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="281"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="212"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="280"/>
         <source>Angstrom</source>
         <translation>埃(光譜)</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="216"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="283"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="215"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="282"/>
         <source>Nanometer</source>
         <translation>奈米</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="219"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="285"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="218"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="284"/>
         <source>Micron</source>
         <translation>微米</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="222"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="287"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="221"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="286"/>
         <source>Decimeter</source>
         <translation>公寸</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="225"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="289"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="224"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="288"/>
         <source>Decameter</source>
         <translation>公丈</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="228"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="291"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="227"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="290"/>
         <source>Hectometer</source>
         <translation>公引</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="231"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="293"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="230"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="292"/>
         <source>Gigameter</source>
         <translation>百萬公里</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="234"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="295"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="233"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="294"/>
         <source>Astro</source>
         <translation>天文單位</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="237"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="297"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="236"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="296"/>
         <source>Lightyear</source>
         <translation>光年</translation>
     </message>
     <message>
-        <location filename="../src/lib/engine/rs_units.cpp" line="240"/>
-        <location filename="../src/lib/engine/rs_units.cpp" line="299"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="239"/>
+        <location filename="../src/lib/engine/rs_units.cpp" line="298"/>
         <source>Parsec</source>
         <translation>秒差距</translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="188"/>
+        <location filename="../src/main/main.cpp" line="185"/>
         <source>Loading..</source>
         <translation>正在載入..</translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="214"/>
+        <location filename="../src/main/main.cpp" line="211"/>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5523,113 +5572,135 @@ You can changes these settings later in the Options Dialog of QCad.</source>
         <translation type="obsolete">載入資料庫路徑..</translation>
     </message>
     <message>
-        <location filename="../src/main/main.cpp" line="229"/>
+        <location filename="../src/main/main.cpp" line="226"/>
         <source>Loading File %1..</source>
         <translation>正在載入檔案 %1..</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="571"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="561"/>
         <source>All Image Files (%1)</source>
         <translation>所有影像檔(%1)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="572"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="562"/>
         <source>All Files (*.*)</source>
         <translation>所有檔案 (*.*)</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="579"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="569"/>
         <source>Open Image</source>
         <translation>開啟影像</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1778"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1733"/>
         <source>Windows Bitmap</source>
         <translation>Windows 點陣圖</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1780"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1735"/>
         <source>Joint Photographic Experts Group</source>
         <translation>聯合影像專業組織</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1782"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1737"/>
         <source>Graphics Interchange Format</source>
         <translation>圖形交換格式</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1784"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1739"/>
         <source>Multiple-image Network Graphics</source>
         <translation>多重影像網路圖形</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1786"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1741"/>
         <source>Portable Bit Map</source>
         <translation>可攜式點陣圖</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1788"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1743"/>
         <source>Portable Grey Map</source>
         <translation>可攜式灰階圖</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1790"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1745"/>
         <source>Portable Network Graphic</source>
         <translation>可攜式網路圖形</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1792"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1747"/>
         <source>Portable Pixel Map</source>
         <translation>可攜式像素圖</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1794"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1749"/>
         <source>X Bitmap Format</source>
         <translation>X 點陣圖格式</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_dialogfactory.cpp" line="1796"/>
+        <location filename="../src/ui/qg_dialogfactory.cpp" line="1751"/>
         <source>X Pixel Map</source>
         <translation>X像素圖</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="72"/>
-        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="68"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="107"/>
         <source>Save Drawing As</source>
         <translation>另存圖形為</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="109"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="108"/>
         <source>%1 already exists.
 Do you want to replace it?</source>
         <translation>%1 已經存在。
 您確定要取代它嗎?</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="169"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="173"/>
         <source>Drawing Exchange %1</source>
         <translation>圖形交換%1</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="170"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="174"/>
         <source>QCad 1.x file %1</source>
         <translation>QCad 1.x 檔案 %1</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="171"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="175"/>
         <source>Font %1</source>
         <translation>å­—åž‹ %1</translation>
     </message>
     <message>
-        <location filename="../src/ui/qg_filedialog.cpp" line="189"/>
+        <location filename="../src/ui/qg_filedialog.cpp" line="193"/>
         <source>Open Drawing</source>
         <translation>開啟繪圖</translation>
     </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="698"/>
+        <source>enter an integer number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="702"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="719"/>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="736"/>
+        <source>LibreCAD query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="715"/>
+        <source>enter a number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/main/doc_plugin_interface.cpp" line="732"/>
+        <source>enter text</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>RS_ActionBlocksAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksadd.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionblocksadd.cpp" line="42"/>
         <source>&Add Block</source>
         <translation>新增圖塊(&A)</translation>
     </message>
@@ -5637,7 +5708,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksAttributes</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionblocksattributes.cpp" line="45"/>
         <source>&Rename Block</source>
         <translation>重新命名圖塊(&R)</translation>
     </message>
@@ -5645,17 +5716,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksCreate</name>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="52"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="54"/>
         <source>&Create Block</source>
         <translation>建立圖塊(&C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="162"/>
         <source>Specify reference point</source>
         <translation>指定參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblockscreate.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionblockscreate.cpp" line="163"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -5663,7 +5734,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksEdit</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksedit.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionblocksedit.cpp" line="42"/>
         <source>&Edit Block</source>
         <translation>編輯圖塊(&E)</translation>
     </message>
@@ -5671,7 +5742,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksExplode</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionblocksexplode.cpp" line="48"/>
         <source>&Explode</source>
         <translation>分解(&E)</translation>
     </message>
@@ -5679,12 +5750,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksFreezeAll</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="49"/>
         <source>&Freeze all</source>
         <translation>全部凍結(&F)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionblocksfreezeall.cpp" line="55"/>
         <source>&Defreeze all</source>
         <translation>全部解除凍結(&D)</translation>
     </message>
@@ -5692,57 +5763,57 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksInsert</name>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="48"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="50"/>
         <source>&Insert Block</source>
         <translation>插入圖塊(&I)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="193"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="206"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="219"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="232"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="245"/>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="258"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="234"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="247"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="260"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="311"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="313"/>
         <source>Specify reference point</source>
         <translation>指定參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="312"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="314"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="315"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="317"/>
         <source>Enter angle:</source>
         <translation>輸入角度:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="319"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="321"/>
         <source>Enter factor:</source>
         <translation>輸入係數:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="323"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="325"/>
         <source>Enter columns:</source>
         <translation>輸入欄:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="327"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="329"/>
         <source>Enter rows:</source>
         <translation>輸入列:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="331"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="333"/>
         <source>Enter column spacing:</source>
         <translation>輸入欄寬:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="335"/>
+        <location filename="../src/actions/rs_actionblocksinsert.cpp" line="337"/>
         <source>Enter row spacing:</source>
         <translation>輸入列高:</translation>
     </message>
@@ -5758,7 +5829,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionBlocksToggleView</name>
     <message>
-        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="45"/>
+        <location filename="../src/actions/rs_actionblockstoggleview.cpp" line="47"/>
         <source>Toggle Block Visibility</source>
         <translation>切換圖塊可見性</translation>
     </message>
@@ -5766,12 +5837,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDefault</name>
     <message>
-        <location filename="../src/actions/rs_actiondefault.cpp" line="356"/>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
         <source>Choose second edge</source>
         <translation>選擇第二個邊</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondefault.cpp" line="357"/>
+        <location filename="../src/actions/rs_actiondefault.cpp" line="358"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -5779,38 +5850,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimAligned</name>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="51"/>
         <source>&Aligned</source>
         <translation>對齊(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="265"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="267"/>
         <source>Specify first extension line origin</source>
         <translation>指定第一條延伸線原點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="266"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="268"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="270"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="272"/>
         <source>Specify second extension line origin</source>
         <translation>指定第二條延伸線原點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="271"/>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="273"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="278"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="275"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="277"/>
         <source>Specify dimension line location</source>
         <translation>指定標註線位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimaligned.cpp" line="279"/>
+        <location filename="../src/actions/rs_actiondimaligned.cpp" line="281"/>
         <source>Enter dimension text:</source>
         <translation>輸入標註文字:</translation>
     </message>
@@ -5818,34 +5889,34 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimAngular</name>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="48"/>
         <source>&Angular</source>
         <translation>角度(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="287"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="289"/>
         <source>Select first line</source>
         <translation>選取第一條線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="288"/>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="292"/>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="296"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="294"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="291"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="293"/>
         <source>Select second line</source>
         <translation>選取第二條線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="296"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="298"/>
         <source>Specify dimension arc line location</source>
         <translation>指定標註弧線位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimangular.cpp" line="299"/>
+        <location filename="../src/actions/rs_actiondimangular.cpp" line="301"/>
         <source>Enter dimension text:</source>
         <translation>輸入標註文字:</translation>
     </message>
@@ -5892,27 +5963,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimLeader</name>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="51"/>
         <source>&Leader</source>
         <translation>引線(&L)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="227"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="234"/>
         <source>Specify target point</source>
         <translation>指定目標點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="228"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="235"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="231"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="238"/>
         <source>Specify next point</source>
         <translation>指定下一點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimleader.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondimleader.cpp" line="239"/>
         <source>Finish</source>
         <translation>結束</translation>
     </message>
@@ -5920,58 +5991,58 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDimLinear</name>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="66"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="69"/>
         <source>&Linear</source>
         <translation>線性(&L)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="73"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="76"/>
         <source>&Horizontal</source>
         <translation>æ°´å¹³(&H)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="80"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="83"/>
         <source>&Vertical</source>
         <translation>åž‚ç›´(&V)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="263"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="312"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="315"/>
         <source>Specify first extension line origin</source>
         <translation>指定第一條延伸線原點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="313"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="316"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="320"/>
         <source>Specify second extension line origin</source>
         <translation>指定第二條延伸線原點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="318"/>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="323"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="321"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="322"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="325"/>
         <source>Specify dimension line location</source>
         <translation>指定標註線位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="326"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="329"/>
         <source>Enter dimension text:</source>
         <translation>輸入標註文字:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondimlinear.cpp" line="330"/>
+        <location filename="../src/actions/rs_actiondimlinear.cpp" line="333"/>
         <source>Enter dimension line angle:</source>
         <translation>輸入標註線角度:</translation>
     </message>
@@ -6018,65 +6089,65 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArc</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="50"/>
         <source>&Center, Point, Angles</source>
         <translation>中心, 點, 角度(&C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="275"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="289"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="308"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="323"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="344"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="276"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="290"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="309"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="324"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="345"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="339"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="340"/>
         <source>Not a valid chord length</source>
         <translation>不正確的弦長</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
         <source>Specify center</source>
         <translation>指定中心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="369"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="371"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
         <source>Specify radius</source>
         <translation>指定半徑</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="371"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="375"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="381"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="385"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="389"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="375"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="376"/>
         <source>Specify start angle:</source>
         <translation>指定起始角度:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="379"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="380"/>
         <source>Specify end angle or [Angle/chord Length]</source>
         <translation>指定結束角度或[角度 / 弦長]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="384"/>
         <source>Specify included angle:</source>
         <translation>指定夾角:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc.cpp" line="387"/>
+        <location filename="../src/actions/rs_actiondrawarc.cpp" line="388"/>
         <source>Specify chord length:</source>
         <translation>指定弦長:</translation>
     </message>
@@ -6084,38 +6155,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArc3P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="52"/>
         <source>&3 Points</source>
         <translation>3 點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="99"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="101"/>
         <source>Invalid arc data.</source>
         <translation>無效的弧形數據。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="227"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="229"/>
         <source>Specify startpoint or [Center]</source>
         <translation>指定起點或 [中心點]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="228"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="230"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
         <source>Specify second point</source>
         <translation>指定第二個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="232"/>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="236"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="236"/>
+        <location filename="../src/actions/rs_actiondrawarc3p.cpp" line="238"/>
         <source>Specify endpoint</source>
         <translation>指定端點</translation>
     </message>
@@ -6123,27 +6194,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawArcTangential</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="52"/>
         <source>Arc: Tangential</source>
         <translation>弧: 正切</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="257"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
         <source>Specify base entity</source>
         <translation>指定基準物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="259"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
         <source>Specify end angle</source>
         <translation>指定結束角度</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawarctangential.cpp" line="263"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6151,32 +6222,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="53"/>
         <source>Center, &Point</source>
         <translation>中心, 點(&P)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="185"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="188"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
         <source>Specify center</source>
         <translation>指定中心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="214"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
         <source>Specify radius</source>
         <translation>指定半徑</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle.cpp" line="219"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6184,32 +6255,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle2P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="50"/>
         <source>2 Points</source>
         <translation>2 點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="96"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="100"/>
         <source>Invalid Circle data.</source>
         <translation>無效的圓形資料。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="206"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
         <source>Specify first point</source>
         <translation>指定第一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="206"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
         <source>Specify second point</source>
         <translation>指定第二個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawcircle2p.cpp" line="214"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6217,38 +6288,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircle3P</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="50"/>
         <source>3 Points</source>
         <translation>3 點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="97"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="100"/>
         <source>Invalid circle data.</source>
         <translation>無效的圓形資料。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="207"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="210"/>
         <source>Specify first point</source>
         <translation>指定第一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="208"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="214"/>
         <source>Specify second point</source>
         <translation>指定第二個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="212"/>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="219"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawcircle3p.cpp" line="218"/>
         <source>Specify third point</source>
         <translation>指定第三個點</translation>
     </message>
@@ -6256,32 +6327,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawCircleCR</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="48"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="52"/>
         <source>Center, &Radius</source>
         <translation>圓心, 半徑(&R)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="167"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="171"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="198"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
         <source>Specify circle center</source>
         <translation>指定圓心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="206"/>
         <source>Specify circle radius</source>
         <translation>指定半徑</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="203"/>
+        <location filename="../src/actions/rs_actiondrawcirclecr.cpp" line="207"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6289,57 +6360,57 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawEllipseAxis</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="61"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="65"/>
         <source>&Ellipse Arc (Axis)</source>
         <translation>橢圓弧 (長短軸)(&E)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="66"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="70"/>
         <source>&Ellipse (Axis)</source>
         <translation>橢圓形 (長短軸)(&E)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="315"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="329"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="343"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="319"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="333"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="347"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="367"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="371"/>
         <source>Specify ellipse center</source>
         <translation>指定橢圓中心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="368"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="376"/>
         <source>Specify endpoint of major axis</source>
         <translation>指定長軸端點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="373"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="379"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="384"/>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="389"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="377"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="393"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="378"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="382"/>
         <source>Specify endpoint or length of minor axis:</source>
         <translation>指定短軸長度或端點:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="383"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="387"/>
         <source>Specify start angle</source>
         <translation>指定起始角度</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="388"/>
+        <location filename="../src/actions/rs_actiondrawellipseaxis.cpp" line="392"/>
         <source>Specify end angle</source>
         <translation>指定結束角度</translation>
     </message>
@@ -6347,17 +6418,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawHatch</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="47"/>
         <source>&Hatch</source>
         <translation>剖面線(&H)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="154"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="157"/>
         <source>Hatch created successfully.</source>
         <translation>剖面線繪製成功。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="159"/>
+        <location filename="../src/actions/rs_actiondrawhatch.cpp" line="162"/>
         <source>Invalid hatch area. Please check that the entities chosen form one or more closed contours.</source>
         <translation>無效的剖面線範圍。請檢查是否選擇一個或多個封閉輪廓。</translation>
     </message>
@@ -6365,33 +6436,33 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawImage</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="51"/>
         <source>&Image</source>
         <translation>影像(&I)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="197"/>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="212"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="260"/>
         <source>Specify reference point</source>
         <translation>指定參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="261"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="262"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="264"/>
         <source>Enter angle:</source>
         <translation>輸入角度:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawimage.cpp" line="266"/>
+        <location filename="../src/actions/rs_actiondrawimage.cpp" line="268"/>
         <source>Enter factor:</source>
         <translation>輸入係數:</translation>
     </message>
@@ -6399,43 +6470,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLine</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="55"/>
         <source>&2 Points</source>
         <translation>2 點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="232"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="236"/>
         <source>Specify first point</source>
         <translation>指定第一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="233"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="237"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="248"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
         <source>Specify next point or [%1]</source>
         <translation>指定下一個點或 [%1]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="249"/>
         <location filename="../src/actions/rs_actiondrawline.cpp" line="253"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="257"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="252"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="256"/>
         <source>Specify next point</source>
         <translation>指定下一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="302"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="306"/>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
         <translation>無法閉合線條序列: 輪廓不夠明確。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawline.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondrawline.cpp" line="321"/>
         <source>Cannot undo: Not enough entities defined yet.</source>
         <translation>無法復原: 輪廓不夠明確。</translation>
     </message>
@@ -6443,49 +6514,49 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineAngle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="58"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="62"/>
         <source>&Angle</source>
         <translation>角度(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="64"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="68"/>
         <source>&Horizontal</source>
         <translation>æ°´å¹³(&H)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="70"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="74"/>
         <source>Vertical</source>
         <translation>åž‚ç›´</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="212"/>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="225"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="229"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="264"/>
         <source>Specify position</source>
         <translation>指定位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="261"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
         <source>Enter angle:</source>
         <translation>輸入角度:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="265"/>
         <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="269"/>
+        <location filename="../src/actions/rs_actiondrawlineangle.cpp" line="273"/>
         <source>Enter length:</source>
         <translation>輸入長度:</translation>
     </message>
@@ -6493,45 +6564,45 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineBisector</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="54"/>
         <source>Bisector</source>
         <translation>角平分線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="199"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="212"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="202"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="215"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="247"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="250"/>
         <source>Select first line</source>
         <translation>選擇第一條線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="248"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="251"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="254"/>
         <source>Select second line</source>
         <translation>選擇第二條線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="252"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="256"/>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="260"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="263"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="255"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="258"/>
         <source>Enter bisector length:</source>
         <translation>輸入角平分線長度:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="259"/>
+        <location filename="../src/actions/rs_actiondrawlinebisector.cpp" line="262"/>
         <source>Enter number of bisectors:</source>
         <translation>輸入角平分線數目:</translation>
     </message>
@@ -6539,17 +6610,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineFree</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="51"/>
         <source>&Freehand Line</source>
         <translation>手繪線(&F)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="126"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
         <source>Click and drag to draw a line</source>
         <translation>點擊並拖曳以繪製線條</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="126"/>
+        <location filename="../src/actions/rs_actiondrawlinefree.cpp" line="128"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -6557,27 +6628,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineHorVert</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="50"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="53"/>
         <source>Vertical</source>
         <translation>åž‚ç›´çš„</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="147"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="150"/>
         <source>Specify first point</source>
         <translation>指定第一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="148"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="151"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="154"/>
         <source>Specify second point</source>
         <translation>指定第二個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="152"/>
+        <location filename="../src/actions/rs_actiondrawlinehorvert.cpp" line="155"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6585,39 +6656,39 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineParallel</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="53"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="57"/>
         <source>Parallel</source>
         <translation>平行線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="56"/>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="59"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="60"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="63"/>
         <source>Concentric</source>
         <translation>同心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="128"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="132"/>
         <source>Specify Distance <%1> or select entity or [%2]</source>
         <translation>指定距離 <%1> 或選擇實體或 [%2]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="130"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="134"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="138"/>
         <source>Enter number:</source>
         <translation>輸入數字:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="195"/>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="221"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="199"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="225"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="215"/>
+        <location filename="../src/actions/rs_actiondrawlineparallel.cpp" line="219"/>
         <source>Not a valid number. Try 1..99</source>
         <translation>無效的數值。請輸入 1..99</translation>
     </message>
@@ -6625,43 +6696,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineParallelThrough</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="49"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="52"/>
         <source>Parallel through point</source>
         <translation>通過一點的平行線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="170"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
         <source>Select entity</source>
         <translation>選擇物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="170"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="173"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="174"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="177"/>
         <source>Specify through point</source>
         <translation>指定通過點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="175"/>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="182"/>
         <source>Number:</source>
         <translation>數字:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="234"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="237"/>
         <source>Not a valid number. Try 1..99</source>
         <translation>無效的數值。請輸入 1..99</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="238"/>
+        <location filename="../src/actions/rs_actiondrawlineparallelthrough.cpp" line="241"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
@@ -6669,32 +6740,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLinePolygon</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="50"/>
         <source>Pol&ygon (Cen,Cor)</source>
         <translation>多邊形 (中心,頂點)(&Y)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="140"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="143"/>
         <source>Specify center</source>
         <translation>指定中心</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="145"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="148"/>
         <source>Specify a corner</source>
         <translation>指定頂點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="152"/>
         <source>Enter number:</source>
         <translation>輸入數字:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="210"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="213"/>
         <source>Not a valid number. Try 1..9999</source>
         <translation>無效的數值。請輸入 1..9999</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="216"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon.cpp" line="219"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
@@ -6702,43 +6773,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLinePolygon2</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="50"/>
         <source>Polygo&n (Cor,Cor)</source>
         <translation>多邊形 (頂點,頂點)(&N)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="140"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="143"/>
         <source>Specify first corner</source>
         <translation>指定第一個頂點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="141"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="144"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="145"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="148"/>
         <source>Specify second corner</source>
         <translation>指定第二個頂點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="146"/>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="150"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="149"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="150"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="153"/>
         <source>Number:</source>
         <translation>數字:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="211"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="214"/>
         <source>Not a valid number. Try 1..9999</source>
         <translation>無效的數值。請輸入 1..9999</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="217"/>
+        <location filename="../src/actions/rs_actiondrawlinepolygon2.cpp" line="220"/>
         <source>Not a valid expression.</source>
         <translation>不正確的表示式。</translation>
     </message>
@@ -6746,27 +6817,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineRectangle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="50"/>
         <source>Rectangle</source>
         <translation>矩形</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="192"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
         <source>Specify first corner</source>
         <translation>指定第一個頂點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="193"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="196"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="200"/>
         <source>Specify second corner</source>
         <translation>指定第二個頂點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="197"/>
+        <location filename="../src/actions/rs_actiondrawlinerectangle.cpp" line="201"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6774,38 +6845,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineRelAngle</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="55"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="58"/>
         <source>Relative angle</source>
         <translation>相對角度</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="61"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="64"/>
         <source>Orthogonal</source>
         <translation>正交</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="255"/>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="272"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="258"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="275"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="312"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="315"/>
         <source>Select base entity</source>
         <translation>選擇基本物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="313"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="316"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="319"/>
         <source>Specify position</source>
         <translation>指定位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="317"/>
+        <location filename="../src/actions/rs_actiondrawlinerelangle.cpp" line="320"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6813,27 +6884,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineTangent1</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="49"/>
         <source>Tangent (P,C)</source>
         <translation>切線 (P,C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="178"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="180"/>
         <source>Specify point</source>
         <translation>指定點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="179"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="181"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="182"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="184"/>
         <source>Select circle, arc or ellipse</source>
         <translation>選擇圓、弧或橢圓</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="183"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent1.cpp" line="185"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6841,27 +6912,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawLineTangent2</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="46"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="48"/>
         <source>Tangent (C,C)</source>
         <translation>切線 (C,C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="162"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="164"/>
         <source>Select first circle or arc</source>
         <translation>選擇第一個圓或弧</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="163"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="165"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="166"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="168"/>
         <source>Select second circle or arc</source>
         <translation>選擇第二個圓或弧</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="167"/>
+        <location filename="../src/actions/rs_actiondrawlinetangent2.cpp" line="169"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -6869,17 +6940,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawPoint</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="41"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="45"/>
         <source>&Points</source>
         <translation>點(&P)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="121"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
         <source>Specify location</source>
         <translation>指定位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="121"/>
+        <location filename="../src/actions/rs_actiondrawpoint.cpp" line="125"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -6887,53 +6958,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawPolyline</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
         <source>&Polyline</source>
         <translation>聚合線(&P)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="52"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="53"/>
         <source>Draw polylines</source>
         <translation>繪製聚合線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="354"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
         <source>Specify first point</source>
         <translation>指定第一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="355"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="356"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="370"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
         <source>Specify next point or [%1]</source>
         <translation>指定下一個點或 [%1]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="371"/>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="372"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="376"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="374"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="375"/>
         <source>Specify next point</source>
         <translation>指定下一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="429"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="430"/>
         <source>Cannot close sequence of lines: Not enough entities defined yet.</source>
         <translation>無法閉合線型序列:物件定義值不足。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="459"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="460"/>
         <source>Undo disallowed due a fatal bug somewhere. Sorry.</source>
         <translation>對不起!因為嚴重的錯誤無法復原。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="462"/>
+        <location filename="../src/actions/rs_actiondrawpolyline.cpp" line="463"/>
         <source>Cannot undo: Not enough entities defined yet.</source>
         <translation>無法復原,物件定義值不足。</translation>
     </message>
@@ -6941,7 +7012,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawSpline</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawspline.cpp" line="51"/>
+        <location filename="../src/actions/rs_actiondrawspline.cpp" line="52"/>
         <source>&Spline</source>
         <translation>雲形線(&S)</translation>
     </message>
@@ -6980,27 +7051,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionDrawText</name>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="47"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="49"/>
         <source>&Text</source>
         <translation>文字(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="274"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="276"/>
         <source>Specify insertion point</source>
         <translation>指定插入點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="275"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="277"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="278"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="280"/>
         <source>Enter text:</source>
         <translation>輸入文字:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiondrawtext.cpp" line="279"/>
+        <location filename="../src/actions/rs_actiondrawtext.cpp" line="281"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7008,22 +7079,22 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditCopy</name>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="55"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="59"/>
         <source>&Copy</source>
         <translation>複製(&C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="65"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="69"/>
         <source>Cu&t</source>
         <translation>剪下(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="130"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="134"/>
         <source>Specify reference point</source>
         <translation>指定參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditcopy.cpp" line="131"/>
+        <location filename="../src/actions/rs_actioneditcopy.cpp" line="135"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -7031,17 +7102,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditPaste</name>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="49"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="52"/>
         <source>&Paste</source>
         <translation>貼上(&P)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="132"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="135"/>
         <source>Set reference point</source>
         <translation>設定參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditpaste.cpp" line="133"/>
+        <location filename="../src/actions/rs_actioneditpaste.cpp" line="136"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -7049,12 +7120,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionEditUndo</name>
     <message>
-        <location filename="../src/actions/rs_actioneditundo.cpp" line="53"/>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="56"/>
         <source>&Undo</source>
         <translation>復原(&U)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioneditundo.cpp" line="63"/>
+        <location filename="../src/actions/rs_actioneditundo.cpp" line="66"/>
         <source>&Redo</source>
         <translation>重做(&R)</translation>
     </message>
@@ -7062,7 +7133,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionFileNew</name>
     <message>
-        <location filename="../src/actions/rs_actionfilenew.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionfilenew.cpp" line="39"/>
         <source>&New...</source>
         <translation>新建(&N)...</translation>
     </message>
@@ -7086,7 +7157,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionFileSaveAs</name>
     <message>
-        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="38"/>
+        <location filename="../src/actions/rs_actionfilesaveas.cpp" line="39"/>
         <source>Save &as...</source>
         <translation>另存新檔(&A)...</translation>
     </message>
@@ -7094,37 +7165,37 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoAngle</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="45"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="46"/>
         <source>Angle between two lines</source>
         <translation>兩線之間的角度</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="77"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="78"/>
         <source>Angle: %1%2</source>
         <translation>角度: %1%2</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="81"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="82"/>
         <source>Lines are parallel</source>
         <translation>線條平行</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="146"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
         <source>Specify first line</source>
         <translation>指定第一條線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="147"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="148"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="151"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
         <source>Specify second line</source>
         <translation>指定第二條線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoangle.cpp" line="152"/>
+        <location filename="../src/actions/rs_actioninfoangle.cpp" line="153"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7132,43 +7203,43 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoArea</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="43"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="45"/>
         <source>Polygonal Area</source>
         <translation>多邊形面積</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="70"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="73"/>
         <source>Area: %1</source>
         <translation>面積: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="71"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="74"/>
         <source>Circumference: %1</source>
         <translation>圓周: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="189"/>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="204"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="192"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="207"/>
         <source>Point: %1/%2</source>
         <translation>點: %1/%2</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="232"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="235"/>
         <source>Specify first point of polygon</source>
         <translation>指定多邊形的第一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="233"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="236"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="237"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="240"/>
         <source>Specify next point of polygon</source>
         <translation>指定多邊形的下一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoarea.cpp" line="238"/>
+        <location filename="../src/actions/rs_actioninfoarea.cpp" line="241"/>
         <source>Terminate</source>
         <translation>終止</translation>
     </message>
@@ -7176,32 +7247,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoDist</name>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="41"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="42"/>
         <source>&Distance Point to Point</source>
         <translation>兩點之間的距離(&D)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="63"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="64"/>
         <source>Distance: %1</source>
         <translation>距離: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="150"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
         <source>Specify first point of distance</source>
         <translation>指定距離的第一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="151"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="152"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="155"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
         <source>Specify second point of distance</source>
         <translation>指定距離的第二個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist.cpp" line="156"/>
+        <location filename="../src/actions/rs_actioninfodist.cpp" line="157"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7209,32 +7280,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoDist2</name>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="41"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="42"/>
         <source>&Distance Entity to Point</source>
         <translation>物件到點的距離(&D)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="61"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="62"/>
         <source>Distance: %1</source>
         <translation>距離: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="136"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
         <source>Specify entity</source>
         <translation>指定物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="137"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="138"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="141"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
         <source>Specify point</source>
         <translation>指定點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfodist2.cpp" line="142"/>
+        <location filename="../src/actions/rs_actioninfodist2.cpp" line="143"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7242,27 +7313,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoInside</name>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="58"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="61"/>
         <source>Point inside contour</source>
         <translation>輪廓內的點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="67"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="70"/>
         <source>Point is inside selected contour.</source>
         <translation>點在選取的輪廓內。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="69"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="72"/>
         <source>Point is outside selected contour.</source>
         <translation>點在選取的輪廓外。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="100"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="103"/>
         <source>Specify point</source>
         <translation>指定點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfoinside.cpp" line="101"/>
+        <location filename="../src/actions/rs_actioninfoinside.cpp" line="104"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -7270,17 +7341,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionInfoTotalLength</name>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="44"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="41"/>
         <source>&Total length of selected entities</source>
         <translation>選取物件的總長度(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="78"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="75"/>
         <source>Total Length of selected entities: %1</source>
         <translation>選取物件的總長度: %1</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actioninfototallength.cpp" line="80"/>
+        <location filename="../src/actions/rs_actioninfototallength.cpp" line="77"/>
         <source>At least one of the selected entities cannot be measured.</source>
         <translation>選取的物件裡至少有一個無法測量。</translation>
     </message>
@@ -7288,7 +7359,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersadd.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionlayersadd.cpp" line="41"/>
         <source>Add Layer</source>
         <translation>新建圖層</translation>
     </message>
@@ -7296,7 +7367,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersEdit</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersedit.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionlayersedit.cpp" line="44"/>
         <source>&Edit Layer</source>
         <translation>編輯圖層(&E)</translation>
     </message>
@@ -7304,12 +7375,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersFreezeAll</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="48"/>
         <source>&Freeze all</source>
         <translation>全部凍結(&F)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionlayersfreezeall.cpp" line="54"/>
         <source>&Defreeze all</source>
         <translation>全部解除凍結(&D)</translation>
     </message>
@@ -7317,7 +7388,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersRemove</name>
     <message>
-        <location filename="../src/actions/rs_actionlayersremove.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionlayersremove.cpp" line="42"/>
         <source>Remove Layer</source>
         <translation>移除圖層</translation>
     </message>
@@ -7325,7 +7396,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersToggleLock</name>
     <message>
-        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionlayerstogglelock.cpp" line="47"/>
         <source>Toggle Layer Lock</source>
         <translation>切換圖層鎖定</translation>
     </message>
@@ -7333,7 +7404,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionLayersToggleView</name>
     <message>
-        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionlayerstoggleview.cpp" line="43"/>
         <source>&Toggle Layer</source>
         <translation>切換圖層(&T)</translation>
     </message>
@@ -7388,7 +7459,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyAttributes</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifyattributes.cpp" line="45"/>
         <source>&Attributes</source>
         <translation>屬性(&A)</translation>
     </message>
@@ -7396,45 +7467,45 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyBevel</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="50"/>
         <source>&Bevel</source>
         <translation>倒角(&B)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="175"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="191"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="252"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="255"/>
         <source>Select first entity</source>
         <translation>選擇第一個物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="253"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="256"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="259"/>
         <source>Select second entity</source>
         <translation>選擇第二個物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="257"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="261"/>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="265"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="268"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="260"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="263"/>
         <source>Enter length 1:</source>
         <translation>輸入長度 1:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="264"/>
+        <location filename="../src/actions/rs_actionmodifybevel.cpp" line="267"/>
         <source>Enter length 2:</source>
         <translation>輸入長度 2:</translation>
     </message>
@@ -7442,48 +7513,48 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyCut</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="46"/>
         <source>&Divide</source>
         <translation>等分(&D)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="104"/>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="122"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="125"/>
         <source>No Entity found.</source>
         <translation>找不到物件。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="111"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="114"/>
         <source>Entity must be a line, arc, circle or ellipse.</source>
         <translation>物件必須是線, 弧, 圓或橢圓。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="124"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
         <source>Cutting point is invalid.</source>
         <translation>剪切點無效。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="130"/>
         <source>Cutting point is not on entity.</source>
         <translation>剪切點不在物件上。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="150"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="153"/>
         <source>Specify entity to cut</source>
         <translation>指定要剪切的物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="151"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="154"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="157"/>
         <source>Specify cutting point</source>
         <translation>指定剪切點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifycut.cpp" line="155"/>
+        <location filename="../src/actions/rs_actionmodifycut.cpp" line="158"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7499,67 +7570,67 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyDeleteFree</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="46"/>
         <source>Delete Freehand</source>
         <translation>刪除手繪</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="95"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="97"/>
         <source>Entities not in the same polyline.</source>
         <translation>物件不在同一條聚合線上。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="98"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="100"/>
         <source>Parent of second entity is not a polyline</source>
         <translation>第二個物件的母體不是聚合線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="101"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="103"/>
         <source>Parent of second entity is NULL</source>
         <translation>第二個物件的母體是空的</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="104"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="106"/>
         <source>One of the chosen entities is NULL</source>
         <translation>其中一個選擇的物件是空的</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="129"/>
         <source>Parent of first entity is not a polyline</source>
         <translation>第一個物件的母體不是聚合線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="131"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="133"/>
         <source>Parent of first entity is NULL</source>
         <translation>第一個物件的母體是空的</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="135"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="137"/>
         <source>First entity is NULL</source>
         <translation>第一個物件是空的</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="149"/>
         <source>Second entity is NULL</source>
         <translation>第二個物件是空的</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="162"/>
         <source>Specify first break point on a polyline</source>
         <translation>指定聚合線上的第一個斷點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="163"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
         <source>Specify second break point on the same polyline</source>
         <translation>指定同一條聚合線上的第二個斷點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="166"/>
+        <location filename="../src/actions/rs_actionmodifydeletefree.cpp" line="168"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7585,7 +7656,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyEntity</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionmodifyentity.cpp" line="45"/>
         <source>&Properties</source>
         <translation>性質(&P)</translation>
     </message>
@@ -7593,7 +7664,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyExplodeText</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionmodifyexplodetext.cpp" line="48"/>
         <source>&Explode Text into Letters</source>
         <translation>將文字分解成字母(&E)</translation>
     </message>
@@ -7601,27 +7672,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMirror</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="42"/>
         <source>&Mirror</source>
         <translation>鏡射(&M)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="163"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="165"/>
         <source>Specify first point of mirror line</source>
         <translation>指定鏡射線的第一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="166"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="168"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="170"/>
         <source>Specify second point of mirror line</source>
         <translation>指定鏡射線的第二個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionmodifymirror.cpp" line="171"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7629,27 +7700,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMove</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="43"/>
         <source>&Move / Copy</source>
         <translation>移動/複製(&M)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="149"/>
         <source>Specify reference point</source>
         <translation>指定參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="148"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="150"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="151"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="153"/>
         <source>Specify target point</source>
         <translation>選取目標點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymove.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionmodifymove.cpp" line="154"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7657,38 +7728,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyMoveRotate</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="45"/>
         <source>M&ove and Rotate</source>
         <translation>移動和旋轉(&O)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="171"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="174"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="222"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="225"/>
         <source>Specify reference point</source>
         <translation>指定參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="223"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="226"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="229"/>
         <source>Specify target point</source>
         <translation>指定目標點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="227"/>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="231"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="234"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="230"/>
+        <location filename="../src/actions/rs_actionmodifymoverotate.cpp" line="233"/>
         <source>Enter rotation angle:</source>
         <translation>輸入旋轉角度:</translation>
     </message>
@@ -7696,17 +7767,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRotate</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="44"/>
         <source>&Rotate</source>
         <translation>旋轉(&R)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="125"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="128"/>
         <source>Specify reference point</source>
         <translation>指定參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="126"/>
+        <location filename="../src/actions/rs_actionmodifyrotate.cpp" line="129"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7714,27 +7785,27 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRotate2</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="44"/>
         <source>Rotate T&wo</source>
         <translation>兩點旋轉(&W)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="163"/>
         <source>Specify absolute reference point</source>
         <translation>指定絕對參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="162"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="164"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="165"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="167"/>
         <source>Specify relative reference point</source>
         <translation>指定相對參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="166"/>
+        <location filename="../src/actions/rs_actionmodifyrotate2.cpp" line="168"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7742,38 +7813,38 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyRound</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="46"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="49"/>
         <source>&Round</source>
         <translation>圓角(&R)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="221"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="224"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="292"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="295"/>
         <source>Specify first entity</source>
         <translation>指定第一個物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="293"/>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="297"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="296"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="299"/>
         <source>Specify second entity</source>
         <translation>指定第二個物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="300"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="303"/>
         <source>Enter radius:</source>
         <translation>輸入半徑:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyround.cpp" line="301"/>
+        <location filename="../src/actions/rs_actionmodifyround.cpp" line="304"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -7781,17 +7852,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyScale</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="43"/>
         <source>&Scale</source>
         <translation>縮放(&S)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="119"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="121"/>
         <source>Specify reference point</source>
         <translation>指定參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="120"/>
+        <location filename="../src/actions/rs_actionmodifyscale.cpp" line="122"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -7799,39 +7870,39 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyStretch</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="46"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="49"/>
         <source>&Stretch</source>
         <translation>拉伸(&S)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="195"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="198"/>
         <source>Specify first corner</source>
         <translation>指定第一個頂點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="196"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="199"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="202"/>
         <source>Specify second corner</source>
         <translation>指定第二個頂點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="200"/>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="204"/>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="208"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="211"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="203"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="206"/>
         <source>Specify reference point</source>
         <translation>指定參考點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="207"/>
+        <location filename="../src/actions/rs_actionmodifystretch.cpp" line="210"/>
         <source>Specify target point</source>
         <translation>指定目標點</translation>
     </message>
@@ -7839,44 +7910,44 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyTrim</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="57"/>
         <source>&Trim</source>
         <translation>修剪(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="61"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="64"/>
         <source>&Trim Two</source>
         <translation>複數修剪(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
         <source>Select first trim entity</source>
         <translation>選擇第一個修剪物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="179"/>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="184"/>
         <source>Select limiting entity</source>
         <translation>選取限制物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="182"/>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="191"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="185"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="194"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
         <source>Select second trim entity</source>
         <translation>選取第二個修剪物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="190"/>
+        <location filename="../src/actions/rs_actionmodifytrim.cpp" line="193"/>
         <source>Select entity to trim</source>
         <translation>選取要修剪的物件</translation>
     </message>
@@ -7884,37 +7955,37 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionModifyTrimAmount</name>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="45"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="49"/>
         <source>&Lengthen</source>
         <translation>延長(&L)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="92"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="96"/>
         <source>No entity found. </source>
         <translation>找不到物件。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="95"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
         <source>The chosen Entity is in a block. Please edit the block.</source>
         <translation>選擇的物件在圖塊裡。請編輯此圖塊。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="99"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="103"/>
         <source>The chosen Entity is not an atomic entity or cannot be trimmed.</source>
         <translation>所選物件非原態物件或無法被修剪。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="131"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="135"/>
         <source>Not a valid expression</source>
         <translation>不正確的表示式</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="182"/>
         <source>Select entity to trim or enter distance:</source>
         <translation>選擇要修剪的物件或輸入距離:</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="179"/>
+        <location filename="../src/actions/rs_actionmodifytrimamount.cpp" line="183"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7922,7 +7993,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionOptionsDrawing</name>
     <message>
-        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionoptionsdrawing.cpp" line="44"/>
         <source>Current &Drawing Preferences</source>
         <translation>目前圖面的偏好設定(&D)</translation>
     </message>
@@ -7930,53 +8001,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineAdd</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="44"/>
         <source>&Add node</source>
         <translation>新增節點(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="46"/>
         <source>Add polyline's node</source>
         <translation>新增聚合線的節點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="104"/>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="122"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="107"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="125"/>
         <source>No Entity found.</source>
         <translation>找不到物件。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="108"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="111"/>
         <source>Entity must be a polyline.</source>
         <translation>物件必須為聚合線。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="124"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="127"/>
         <source>Adding point is invalid.</source>
         <translation>新增的點無效。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="135"/>
         <source>Adding point is not on entity.</source>
         <translation>新增的點不在物件上。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="163"/>
         <source>Specify polyline to add nodes</source>
         <translation>選取聚合線以新增節點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="164"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="167"/>
         <source>Specify adding node's point</source>
         <translation>指定新增節點的位罝</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="165"/>
+        <location filename="../src/actions/rs_actionpolylineadd.cpp" line="168"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -7984,53 +8055,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineAppend</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="37"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="40"/>
         <source>A&ppend node</source>
         <translation>添加節點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="42"/>
         <source>Append polyline's node</source>
         <translation>添加聚合線的節點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="88"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
         <source>No Entity found.</source>
         <translation>找不到物件。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="91"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="94"/>
         <source>Entity must be a polyline.</source>
         <translation>物件必須是聚合線。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="108"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="111"/>
         <source>Click somewhere near the beginning or end of existing polyline.</source>
         <translation>點擊現有聚合線靠近起點或終點處。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="184"/>
         <source>Specify the polyline somewhere near the beginning or end point</source>
         <translation>指定現有聚合線靠近起點或終點處</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="185"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="197"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="200"/>
         <source>Specify next point or [%1]</source>
         <translation>指定下一點或 [%1]</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="198"/>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="202"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="205"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="201"/>
+        <location filename="../src/actions/rs_actionpolylineappend.cpp" line="204"/>
         <source>Specify next point</source>
         <translation>指定下一點</translation>
     </message>
@@ -8038,53 +8109,53 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineDel</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="44"/>
         <source>&Delete node</source>
         <translation>刪除節點(&D)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="46"/>
         <source>Delete polyline's node</source>
         <translation>刪除聚合線的節點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="106"/>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="125"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="128"/>
         <source>No Entity found.</source>
         <translation>找不到物件。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="113"/>
         <source>Entity must be a polyline.</source>
         <translation>物件必須是聚合線。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
         <source>Adding point is invalid.</source>
         <translation>添加點無效。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="130"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="133"/>
         <source>Adding point is not on entity.</source>
         <translation>添加的點不在物件上。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="156"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="159"/>
         <source>Specify polyline to delete node</source>
         <translation>指定聚合線以刪除節點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="157"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="160"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="163"/>
         <source>Specify deleting node's point</source>
         <translation>指定刪除節點位置</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="161"/>
+        <location filename="../src/actions/rs_actionpolylinedel.cpp" line="164"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -8092,66 +8163,66 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineDelBetween</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="41"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="44"/>
         <source>Delete &between two nodes</source>
         <translation>刪除兩節點之間</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="46"/>
         <source>Delete between two nodes</source>
         <translation>刪除兩節點之間</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="109"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="134"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="112"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="137"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="150"/>
         <source>No Entity found.</source>
         <translation>找不到物件。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="113"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="116"/>
         <source>Entity must be a polyline.</source>
         <translation>物件必須是聚合線。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="136"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
         <source>Deletinging point is invalid.</source>
         <translation>刪除點無效。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="139"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="142"/>
         <source>Deleting point is not on entity.</source>
         <translation>刪除的點不在物件上。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="155"/>
         <source>Deleteinging point is not on entity.</source>
         <translation>刪除的點不在物件上。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="179"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="182"/>
         <source>Specify polyline to delete between two nodes</source>
         <translation>指定聚合線以刪除兩節點之間</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="180"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="183"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="186"/>
         <source>Specify first node</source>
         <translation>指定第一節點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="184"/>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="191"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="187"/>
+        <location filename="../src/actions/rs_actionpolylinedelbetween.cpp" line="190"/>
         <source>Specify second node</source>
         <translation>指定第二節點</translation>
     </message>
@@ -8159,32 +8230,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineEquidistant</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
         <source>Create &Equidistant Polylines</source>
         <translation>創建等距的聚合線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="46"/>
         <source>Create Equidistant Polylines</source>
         <translation>創建等距的聚合線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="198"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="200"/>
         <source>No Entity found.</source>
         <translation>找不到物件。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="202"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="204"/>
         <source>Entity must be a polyline.</source>
         <translation>物件必須是聚合線。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="256"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="258"/>
         <source>Choose the original polyline</source>
         <translation>選擇原聚合線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="257"/>
+        <location filename="../src/actions/rs_actionpolylineequidistant.cpp" line="259"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -8192,32 +8263,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineSegment</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="43"/>
         <source>Create Polyline from Existing &Segments</source>
         <translation>從現有線段創建聚合線(&S)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="45"/>
         <source>Create Polyline from Existing Segments</source>
         <translation>從現有線段創建聚合線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="250"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
         <source>No Entity found.</source>
         <translation>找不到物件。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="253"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="256"/>
         <source>Entity must be a line or arc.</source>
         <translation>物件必須是線或弧。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="292"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="295"/>
         <source>Choose one of the segments on the original polyline</source>
         <translation>選擇原聚合線上的一條線段</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="293"/>
+        <location filename="../src/actions/rs_actionpolylinesegment.cpp" line="296"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -8225,62 +8296,62 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPolylineTrim</name>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="40"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="44"/>
         <source>&Trim segments</source>
         <translation>修剪線段(&T)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="46"/>
         <source>Trim polyline's segments</source>
         <translation>修剪聚合線的線段</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="106"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="123"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="142"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="110"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="127"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="146"/>
         <source>No Entity found.</source>
         <translation>找不到物件。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="109"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="113"/>
         <source>Entity must be a polyline.</source>
         <translation>物件必須是聚合線。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="125"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="144"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="129"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="148"/>
         <source>Specifying point is invalid.</source>
         <translation>指定點無效。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="128"/>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="147"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="132"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="151"/>
         <source>No Segment found on entity.</source>
         <translation>物件上沒有線段。</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="180"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
         <source>Specify polyline to trim</source>
         <translation>指定要修剪的聚合線</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="184"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
         <source>Specify first segment</source>
         <translation>指定第一線段</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="185"/>
         <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="189"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="193"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="188"/>
+        <location filename="../src/actions/rs_actionpolylinetrim.cpp" line="192"/>
         <source>Specify second segment</source>
         <translation>指定第二線段</translation>
     </message>
@@ -8288,7 +8359,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionPrintPreview</name>
     <message>
-        <location filename="../src/actions/rs_actionprintpreview.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionprintpreview.cpp" line="52"/>
         <source>Print Pre&view</source>
         <translation>預覽列印(&V)</translation>
     </message>
@@ -8296,17 +8367,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectAll</name>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="46"/>
         <source>Select &All</source>
         <translation>全選(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="49"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="52"/>
         <source>Deselect &all</source>
         <translation>全部取消選取(&A)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectall.cpp" line="51"/>
+        <location filename="../src/actions/rs_actionselectall.cpp" line="54"/>
         <source>Ctrl+K</source>
         <translation>Ctrl+K</translation>
     </message>
@@ -8314,12 +8385,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectContour</name>
     <message>
-        <location filename="../src/actions/rs_actionselectcontour.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="46"/>
         <source>(De-)Select &Contour</source>
         <translation>(取消)選擇輪廓(&C)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectcontour.cpp" line="62"/>
+        <location filename="../src/actions/rs_actionselectcontour.cpp" line="65"/>
         <source>Entity must be an Atomic Entity.</source>
         <translation>物件必須是原態物件。</translation>
     </message>
@@ -8327,32 +8398,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectIntersected</name>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="55"/>
         <source>Select Intersected Entities</source>
         <translation>選取交叉的物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="58"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="59"/>
         <source>Deselect Intersected Entities</source>
         <translation>取消選取交叉的物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
         <source>Choose first point of intersection line</source>
         <translation>選擇交叉線的第一個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="149"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="150"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
         <source>Choose second point of intersection line</source>
         <translation>選擇交叉線的第二個點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectintersected.cpp" line="152"/>
+        <location filename="../src/actions/rs_actionselectintersected.cpp" line="153"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -8360,7 +8431,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectInvert</name>
     <message>
-        <location filename="../src/actions/rs_actionselectinvert.cpp" line="38"/>
+        <location filename="../src/actions/rs_actionselectinvert.cpp" line="41"/>
         <source>Invert Selection</source>
         <translation>反向選取</translation>
     </message>
@@ -8368,7 +8439,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectLayer</name>
     <message>
-        <location filename="../src/actions/rs_actionselectlayer.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionselectlayer.cpp" line="44"/>
         <source>(De-)Select Layer</source>
         <translation>(取消)選取圖層</translation>
     </message>
@@ -8376,7 +8447,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectSingle</name>
     <message>
-        <location filename="../src/actions/rs_actionselectsingle.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionselectsingle.cpp" line="44"/>
         <source>Select Entity</source>
         <translation>選取物件</translation>
     </message>
@@ -8384,32 +8455,32 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSelectWindow</name>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="54"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="55"/>
         <source>Select Window</source>
         <translation>框選</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="58"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="59"/>
         <source>Deselect Window</source>
         <translation>框選取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
         <source>Choose first edge</source>
         <translation>選擇第一個邊</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="169"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="170"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="172"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
         <source>Choose second edge</source>
         <translation>選擇第二個邊</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionselectwindow.cpp" line="172"/>
+        <location filename="../src/actions/rs_actionselectwindow.cpp" line="173"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
@@ -8417,17 +8488,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSetRelativeZero</name>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="43"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="44"/>
         <source>Set Relative Zero</source>
         <translation>設定基準點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="93"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
         <source>Set relative Zero</source>
         <translation>設定基準點</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="93"/>
+        <location filename="../src/actions/rs_actionsetrelativezero.cpp" line="94"/>
         <source>Cancel</source>
         <translation>取消</translation>
     </message>
@@ -8435,23 +8506,23 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionSnapIntersectionManual</name>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="50"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="52"/>
         <source>I&ntersection Manually</source>
         <translation>手動貼齊交點(&N)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="178"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="180"/>
         <source>Select first entity</source>
         <translation>選取第一個物件</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="179"/>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="183"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="181"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="185"/>
         <source>Back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="182"/>
+        <location filename="../src/actions/rs_actionsnapintersectionmanual.cpp" line="184"/>
         <source>Select second entity</source>
         <translation>選取第二個物件</translation>
     </message>
@@ -8459,17 +8530,17 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionToolRegenerateDimensions</name>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="44"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="47"/>
         <source>Regenerate Dimension Entities</source>
         <translation>更新標註</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="79"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="82"/>
         <source>Regenerated %1 dimension entities</source>
         <translation>更新 %1 標註</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="81"/>
+        <location filename="../src/actions/rs_actiontoolregeneratedimensions.cpp" line="84"/>
         <source>No dimension entities found</source>
         <translation>找不到標註</translation>
     </message>
@@ -8477,7 +8548,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomAuto</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomauto.cpp" line="47"/>
+        <location filename="../src/actions/rs_actionzoomauto.cpp" line="49"/>
         <source>&Auto Zoom</source>
         <translation>自動縮放(&A)</translation>
     </message>
@@ -8485,12 +8556,12 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomIn</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomin.cpp" line="53"/>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="56"/>
         <source>Zoom &In</source>
         <translation>拉近(&I)</translation>
     </message>
     <message>
-        <location filename="../src/actions/rs_actionzoomin.cpp" line="63"/>
+        <location filename="../src/actions/rs_actionzoomin.cpp" line="66"/>
         <source>Zoom &Out</source>
         <translation>拉遠(&O)</translation>
     </message>
@@ -8498,7 +8569,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomPan</name>
     <message>
-        <location filename="../src/actions/rs_actionzoompan.cpp" line="39"/>
+        <location filename="../src/actions/rs_actionzoompan.cpp" line="40"/>
         <source>&Pan Zoom</source>
         <translation>平移(&P)</translation>
     </message>
@@ -8506,7 +8577,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomPrevious</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="42"/>
+        <location filename="../src/actions/rs_actionzoomprevious.cpp" line="45"/>
         <source>&Previous View</source>
         <translation>上次檢視(&P)</translation>
     </message>
@@ -8514,7 +8585,7 @@ Do you want to replace it?</source>
 <context>
     <name>RS_ActionZoomRedraw</name>
     <message>
-        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="44"/>
+        <location filename="../src/actions/rs_actionzoomredraw.cpp" line="47"/>
         <source>&Redraw</source>
         <translation>重繪(&R)</translation>
     </message>
@@ -8550,944 +8621,944 @@ Do you want to replace it?</source>
 <context>
     <name>RS_Commands</name>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="45"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="39"/>
         <source>point</source>
         <translation>點</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="40"/>
         <source>po</source>
         <translation>po</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="42"/>
         <source>line</source>
         <translation>ç·š</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="43"/>
         <source>ln</source>
         <translation>ln</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="44"/>
         <source>l</source>
         <translation>l</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="52"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="46"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
         <source>polyline</source>
         <translation>聚合線</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="48"/>
         <source>offset</source>
         <translation>偏移複製</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="55"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="49"/>
         <source>o</source>
         <comment>offset</comment>
         <translation>o</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="50"/>
         <source>parallel</source>
         <translation>平行</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="51"/>
         <source>par</source>
         <comment>parallel</comment>
         <translation>par</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="53"/>
         <source>arc</source>
         <translation>弧</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="54"/>
         <source>a</source>
         <translation>a</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="62"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="56"/>
         <source>circle</source>
         <translatorcomment>圓~~沿用自AutoCAD,更簡短。</translatorcomment>
         <translation>圓</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="63"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="57"/>
         <source>ci</source>
         <translation>ci</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="59"/>
         <source>rectangle</source>
         <translation>矩形</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="66"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="60"/>
         <source>rec</source>
         <translation>rec</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="67"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="61"/>
         <source>rectang</source>
         <translation>矩形</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="71"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="423"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="539"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="65"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="416"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="532"/>
         <source>text</source>
         <translation>文字</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="68"/>
         <source>regen</source>
         <translatorcomment>重生~~沿用自AutoCAD</translatorcomment>
         <translation>重生</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="75"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="69"/>
         <source>rg</source>
         <comment>zoom - redraw</comment>
         <translation>rg</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="70"/>
         <source>zr</source>
         <comment>zoom - redraw</comment>
         <translation>zr</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="313"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="72"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
         <source>zw</source>
         <comment>zoom - window</comment>
         <translation>zw</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="80"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="315"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="74"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="308"/>
         <source>za</source>
         <comment>zoom - auto</comment>
         <translation>za</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="76"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="314"/>
         <source>zp</source>
         <comment>zoom - pan</comment>
         <translation>zp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="78"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="316"/>
         <source>zv</source>
         <comment>zoom - previous</comment>
         <translation>zv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="81"/>
         <source>kill</source>
         <translation>kill</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="82"/>
         <source>k</source>
         <translation>k</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="90"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="429"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="549"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="84"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="422"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="542"/>
         <source>undo</source>
         <translation>復原</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="550"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="85"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="543"/>
         <source>u</source>
         <comment>undo</comment>
         <translation>u</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="93"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="87"/>
         <source>redo</source>
         <translatorcomment>重作~~沿用自AutoCAD中文版</translatorcomment>
         <translation>重作</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="88"/>
         <source>r</source>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="298"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="91"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
         <source>da</source>
         <comment>dimension - aligned</comment>
         <translation>da</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="92"/>
         <source>da</source>
         <translation>da</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="300"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="94"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
         <source>dh</source>
         <comment>dimension - horizontal</comment>
         <translation>dh</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="95"/>
         <source>dh</source>
         <translation>dh</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="97"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="297"/>
         <source>dr</source>
         <comment>dimension - linear</comment>
         <translation>dr</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="98"/>
         <source>dr</source>
         <translation>dr</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="106"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="302"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="100"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="295"/>
         <source>dv</source>
         <comment>dimension - vertical</comment>
         <translation>dv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="101"/>
         <source>dv</source>
         <translation>dv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="109"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="306"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="103"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="299"/>
         <source>ld</source>
         <comment>dimension - leader</comment>
         <translation>ld</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="104"/>
         <source>ld</source>
         <translation>ld</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="107"/>
         <source>dimregen</source>
         <translation>dimregen</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="361"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="110"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
         <source>tm</source>
         <comment>modify - multi trim (extend)</comment>
         <translation>tm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="111"/>
         <source>tm</source>
         <translation>tm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="363"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="113"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="356"/>
         <source>xt</source>
         <comment>modify - trim (extend)</comment>
         <translation>xt</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="114"/>
         <source>xt</source>
         <translation>xt</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="365"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="116"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="358"/>
         <source>rm</source>
         <comment>modify - trim</comment>
         <translation>rm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="117"/>
         <source>rm</source>
         <translation>rm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="367"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="119"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="360"/>
         <source>mv</source>
         <comment>modify - move</comment>
         <translation>mv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="120"/>
         <source>mv</source>
         <translation>mv</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="359"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="122"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="352"/>
         <source>ch</source>
         <comment>modify - bevel (chamfer)</comment>
         <translation>ch</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="123"/>
         <source>ch</source>
         <translation>ch</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="369"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="125"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="362"/>
         <source>mi</source>
         <comment>modify - mirror</comment>
         <translation>mi</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="126"/>
         <source>mi</source>
         <translation>mi</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="371"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="128"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="364"/>
         <source>ro</source>
         <comment>modify - rotate</comment>
         <translation>ro</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="129"/>
         <source>ro</source>
         <translation>ro</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="373"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="131"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="366"/>
         <source>sz</source>
         <comment>modify - scale</comment>
         <translation>sz</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="132"/>
         <source>sz</source>
         <translation>sz</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="375"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="134"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="368"/>
         <source>ss</source>
         <comment>modify - stretch</comment>
         <translation>ss</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="135"/>
         <source>ss</source>
         <translation>ss</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="137"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="370"/>
         <source>er</source>
         <comment>modify - delete (erase)</comment>
         <translation>er</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="138"/>
         <source>er</source>
         <translation>er</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="379"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="140"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="372"/>
         <source>oo</source>
         <comment>modify - undo (oops)</comment>
         <translation>oo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="141"/>
         <source>oo</source>
         <translation>oo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="149"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="381"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="143"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="374"/>
         <source>uu</source>
         <comment>modify - redo</comment>
         <translation>uu</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="144"/>
         <source>uu</source>
         <translation>uu</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="152"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="383"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="146"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="376"/>
         <source>xp</source>
         <comment>modify - explode</comment>
         <translation>xp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="147"/>
         <source>xp</source>
         <translation>xp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="328"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="150"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="321"/>
         <source>os</source>
         <comment>snap - none</comment>
         <translation>os</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="151"/>
         <source>os</source>
         <translation>os</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="330"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="153"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="323"/>
         <source>sg</source>
         <comment>snap - grid</comment>
         <translation>sg</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="154"/>
         <source>sg</source>
         <translation>sg</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="332"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="156"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="325"/>
         <source>se</source>
         <comment>snap - end</comment>
         <translation>se</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="157"/>
         <source>se</source>
         <translation>se</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="334"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="159"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="327"/>
         <source>si</source>
         <comment>snap - intersection</comment>
         <translation>si</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="160"/>
         <source>si</source>
         <translation>si</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="336"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="162"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="329"/>
         <source>sn</source>
         <comment>snap - center</comment>
         <translation>sn</translation>
     </message>
     <message>
+        <location filename="../src/cmd/rs_commands.cpp" line="163"/>
         <location filename="../src/cmd/rs_commands.cpp" line="169"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
         <source>sn</source>
         <translation>sn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="338"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="165"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="331"/>
         <source>sm</source>
         <comment>snap - middle</comment>
         <translation>sm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="166"/>
         <source>sm</source>
         <translation>sm</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="174"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="168"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="333"/>
         <source>sn</source>
         <comment>snap - nearest</comment>
         <translation>sn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="177"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="171"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="335"/>
         <source>np</source>
         <comment>snap - nearest point</comment>
         <translation>np</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="178"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="172"/>
         <source>np</source>
         <translation>np</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="181"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="354"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="175"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
         <source>tn</source>
         <comment>Deselect all</comment>
         <translation>tn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="182"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="176"/>
         <source>tn</source>
         <translation>tn</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="244"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="236"/>
         <source>Command: %1</source>
         <translation>指令: %1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="271"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="264"/>
         <source>po</source>
         <comment>point</comment>
         <translation>po</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="273"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="266"/>
         <source>li</source>
         <comment>line</comment>
         <translation>li</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="275"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="268"/>
         <source>pa</source>
         <comment>parallel</comment>
         <translation>pa</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="277"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="270"/>
         <source>re</source>
         <comment>rectangle</comment>
         <translation>re</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="279"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="272"/>
         <source>rp</source>
         <comment>regular polygon</comment>
         <translation>rp</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="281"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="274"/>
         <source>ci</source>
         <comment>circle</comment>
         <translation>ci</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="283"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="276"/>
         <source>c2</source>
         <comment>2 point circle</comment>
         <translation>c2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="285"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="278"/>
         <source>c3</source>
         <comment>3 point circle</comment>
         <translation>c3</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="287"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="280"/>
         <source>ar</source>
         <comment>arc</comment>
         <translation>ar</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="289"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="282"/>
         <source>a3</source>
         <comment>3 point arc</comment>
         <translation>a3</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="291"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="284"/>
         <source>ep</source>
         <comment>ellipse</comment>
         <translation>ep</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
         <source>tx</source>
         <comment>text</comment>
         <translation>tx</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="293"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="286"/>
         <source>mt</source>
         <comment>text</comment>
         <translation>mt</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="311"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="304"/>
         <source>rd</source>
         <comment>redraw</comment>
         <translation>rd</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="317"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="310"/>
         <source>zi</source>
         <comment>zoom - in</comment>
         <translation>zi</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="319"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="312"/>
         <source>zo</source>
         <comment>zoom - out</comment>
         <translation>zo</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="347"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="340"/>
         <source>fr*</source>
         <comment>layers - freeze all</comment>
         <translation>fr*</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="349"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="342"/>
         <source>th*</source>
         <comment>layers - defreeze all</comment>
         <translation>th*</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="384"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="377"/>
         <source>ex</source>
         <comment>modify - explode</comment>
         <translation>ex</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="397"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="455"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="390"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
         <source>angle</source>
         <translation>角度</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="399"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="470"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="392"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="463"/>
         <source>close</source>
         <translation>關閉</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="401"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="394"/>
         <source>chord length</source>
         <translation>弦長</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="403"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="396"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
         <source>columns</source>
         <translation>欄</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="405"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="398"/>
         <source>columnspacing</source>
         <translatorcomment>欄寬~~沿用Excel稱呼</translatorcomment>
         <translation>欄寬</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="407"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="486"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="400"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
         <source>factor</source>
         <translation>係數</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="409"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="402"/>
         <source>length</source>
         <translation>長度</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="411"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="404"/>
         <source>length1</source>
         <translation>長度1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="413"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="406"/>
         <source>length2</source>
         <translation>長度2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="415"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="408"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="506"/>
         <source>number</source>
         <translation>數字</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="417"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="410"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="512"/>
         <source>radius</source>
         <translation>半徑</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="419"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="530"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="412"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
         <source>rows</source>
         <translation>列</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="421"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="414"/>
         <source>rowspacing</source>
         <translation>列高</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="425"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="544"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="418"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="537"/>
         <source>through</source>
         <translation>通過</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="427"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="420"/>
         <source>trim</source>
         <translation>修剪</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="431"/>
-        <location filename="../src/cmd/rs_commands.cpp" line="554"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="424"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="547"/>
         <source>back</source>
         <translation>返回</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="455"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="448"/>
         <source>ang</source>
         <comment>angle</comment>
         <translation>ang</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="456"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="449"/>
         <source>a</source>
         <comment>angle</comment>
         <translation>a</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="460"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
         <source>center</source>
         <translation>中心</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="460"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="453"/>
         <source>cen</source>
         <comment>center</comment>
         <translation>cen</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="461"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="454"/>
         <source>c</source>
         <comment>center</comment>
         <translation>c</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="465"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="458"/>
         <source>length</source>
         <comment>chord length</comment>
         <translation>長度</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="466"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="459"/>
         <source>l</source>
         <comment>chord length</comment>
         <translation>l</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="471"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="464"/>
         <source>c</source>
         <comment>close</comment>
         <translation>c</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="468"/>
         <source>cols</source>
         <comment>columns</comment>
         <translation>cols</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="476"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="469"/>
         <source>c</source>
         <comment>columns</comment>
         <translation>c</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="473"/>
         <source>columnspacing</source>
         <comment>columnspacing for inserts</comment>
         <translation>欄寬</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="481"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="474"/>
         <source>colspacing</source>
         <comment>columnspacing for inserts</comment>
         <translation>欄寬</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="482"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="475"/>
         <source>cs</source>
         <comment>columnspacing for inserts</comment>
         <translation>cs</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="486"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="479"/>
         <source>fact</source>
         <comment>factor</comment>
         <translation>fact</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="487"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="480"/>
         <source>f</source>
         <comment>factor</comment>
         <translation>f</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="491"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
         <source>help</source>
         <translation>說明</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="491"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="484"/>
         <source>?</source>
         <comment>help</comment>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="488"/>
         <source>length</source>
         <comment>length</comment>
         <translation>長度</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="489"/>
         <source>len</source>
         <comment>length</comment>
         <translation>len</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="497"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="490"/>
         <source>l</source>
         <comment>length</comment>
         <translation>l</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="494"/>
         <source>length1</source>
         <comment>length1</comment>
         <translation>長度1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="495"/>
         <source>len1</source>
         <comment>length1</comment>
         <translation>len1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="503"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="496"/>
         <source>l1</source>
         <comment>length1</comment>
         <translation>l1</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="500"/>
         <source>length2</source>
         <comment>length2</comment>
         <translation>長度2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="501"/>
         <source>len2</source>
         <comment>length2</comment>
         <translation>len2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="509"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="502"/>
         <source>l2</source>
         <comment>length2</comment>
         <translation>l2</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="514"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="507"/>
         <source>num</source>
         <comment>number</comment>
         <translation>num</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="515"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="508"/>
         <source>n</source>
         <comment>number</comment>
         <translation>n</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="520"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="513"/>
         <source>r</source>
         <comment>radius</comment>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="524"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="517"/>
         <source>reversed</source>
         <comment>reversed arc</comment>
         <translation>反轉</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="525"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="518"/>
         <source>rev</source>
         <comment>reversed arc</comment>
         <translation>rev</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="526"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="519"/>
         <source>r</source>
         <comment>reversed arc</comment>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="530"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="523"/>
         <source>r</source>
         <comment>rows</comment>
         <translation>r</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="534"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="527"/>
         <source>rowspacing</source>
         <comment>rowspacing for inserts</comment>
         <translation>列高</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="535"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="528"/>
         <source>rs</source>
         <comment>rowspacing for inserts</comment>
         <translation>rs</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="540"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="533"/>
         <source>t</source>
         <comment>text</comment>
         <translation>t</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="545"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="538"/>
         <source>t</source>
         <comment>through</comment>
         <translation>t</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="555"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="548"/>
         <source>b</source>
         <comment>back</comment>
         <translation>b</translation>
     </message>
     <message>
-        <location filename="../src/cmd/rs_commands.cpp" line="568"/>
+        <location filename="../src/cmd/rs_commands.cpp" line="561"/>
         <source>Available commands:</source>
         <translation>可用的指令:</translation>
     </message>

-- 
2D CAD system



More information about the debian-science-commits mailing list