[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>ï¼ä¸å¿ç¹ã®åããå転</translation>
+ <translation type="obsolete">ï¼ä¸å¿ç¹ã®åããå転</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